1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-08 17:54:40 +00:00

Implemented identical phi elimination

This commit is contained in:
jespergravgaard 2018-04-25 01:11:28 +02:00
parent b2f16e2a57
commit 9265592f25
73 changed files with 7528 additions and 7718 deletions

View File

@ -184,6 +184,7 @@ public class Compiler {
optimizations.add(new Pass2AliasElimination(program)); optimizations.add(new Pass2AliasElimination(program));
optimizations.add(new Pass2SelfPhiElimination(program)); optimizations.add(new Pass2SelfPhiElimination(program));
optimizations.add(new Pass2RedundantPhiElimination(program)); optimizations.add(new Pass2RedundantPhiElimination(program));
optimizations.add(new Pass2IdenticalPhiElimination(program));
optimizations.add(new Pass2ConditionalJumpSimplification(program)); optimizations.add(new Pass2ConditionalJumpSimplification(program));
optimizations.add(new Pass2ConditionalAndOrRewriting(program)); optimizations.add(new Pass2ConditionalAndOrRewriting(program));
optimizations.add(new Pass2ConstantIdentification(program)); optimizations.add(new Pass2ConstantIdentification(program));
@ -199,6 +200,10 @@ public class Compiler {
// Constant inlining optimizations - as the last step to ensure that constant identification has been completed // Constant inlining optimizations - as the last step to ensure that constant identification has been completed
List<Pass2SsaOptimization> constantOptimizations = new ArrayList<>(); List<Pass2SsaOptimization> constantOptimizations = new ArrayList<>();
constantOptimizations.add(new Pass2ConstantInlining(program)); constantOptimizations.add(new Pass2ConstantInlining(program));
constantOptimizations.add(new Pass2IdenticalPhiElimination(program));
constantOptimizations.add(new Pass2ConstantIdentification(program));
constantOptimizations.add(new Pass2ConstantAdditionElimination(program));
constantOptimizations.add(new Pass2ConstantIfs(program));
pass2OptimizeSSA(constantOptimizations); pass2OptimizeSSA(constantOptimizations);
} }

View File

@ -0,0 +1,8 @@
lda {z1}+1
cmp #>{c1}
bcc {la1}
bne !+
lda {z1}
cmp #<{c1}
bcc {la1}
!:

View File

@ -19,6 +19,28 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
super(program); super(program);
} }
/**
* Eliminate alias assignments replacing them with the aliassed variable.
*/
@Override
public boolean step() {
final Aliases aliases = findAliases(getProgram());
removeAliasAssignments(aliases);
replaceVariables(aliases.getReplacements(getScope()));
for(AliasSet aliasSet : aliases.getAliasSets()) {
StringBuilder str = new StringBuilder();
str.append(aliasSet.getKeepVar(getScope()).toString(getProgram()));
str.append(" = ");
for(VariableRef var : aliasSet.getEliminateVars(getScope())) {
str.append(var.toString(getProgram()) + " ");
}
getLog().append("Alias " + str);
}
deleteSymbols(aliases.getSymbolsToRemove(getScope()));
return (aliases.size() > 0);
}
public static Aliases findAliases(Program program) { public static Aliases findAliases(Program program) {
Aliases candidates = findAliasesCandidates(program); Aliases candidates = findAliasesCandidates(program);
cleanupCandidates(candidates, program); cleanupCandidates(candidates, program);
@ -131,26 +153,6 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
return aliases; return aliases;
} }
/**
* Eliminate alias assignments replacing them with the aliassed variable.
*/
@Override
public boolean step() {
final Aliases aliases = findAliases(getProgram());
removeAliasAssignments(aliases);
replaceVariables(aliases.getReplacements(getScope()));
for(AliasSet aliasSet : aliases.getAliasSets()) {
StringBuilder str = new StringBuilder();
str.append(aliasSet.getKeepVar(getScope()).toString(getProgram()));
str.append(" = ");
for(VariableRef var : aliasSet.getEliminateVars(getScope())) {
str.append(var.toString(getProgram()) + " ");
}
getLog().append("Alias " + str);
}
deleteSymbols(aliases.getSymbolsToRemove(getScope()));
return (aliases.size() > 0);
}
/** /**
* Remove all assignments that just assign an alias to itself * Remove all assignments that just assign an alias to itself

View File

@ -161,7 +161,7 @@ public class Pass2ConstantAdditionElimination extends Pass2SsaOptimization {
*/ */
private ConstantValue consolidateSubConstants(VariableRef variable) { private ConstantValue consolidateSubConstants(VariableRef variable) {
if(getUsages(variable) > 1) { if(getUsages(variable) > 1) {
getLog().append("Multiple usages for variable. Not optimizing sub-constant " + variable.toString(getProgram())); //getLog().append("Multiple usages for variable. Not optimizing sub-constant " + variable.toString(getProgram()));
return null; return null;
} }
StatementAssignment assignment = getGraph().getAssignment(variable); StatementAssignment assignment = getGraph().getAssignment(variable);

View File

@ -300,6 +300,17 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization {
if(Operators.ADDRESS_OF.equals(assignment.getOperator()) && var.equals(assignment.getrValue2())) { if(Operators.ADDRESS_OF.equals(assignment.getOperator()) && var.equals(assignment.getrValue2())) {
return true; return true;
} }
} else if(statement instanceof StatementPhiBlock) {
for(StatementPhiBlock.PhiVariable phiVariable : ((StatementPhiBlock) statement).getPhiVariables()) {
for(StatementPhiBlock.PhiRValue phiRValue : phiVariable.getValues()) {
if(phiRValue.getrValue() instanceof ConstantVarPointer) {
if(((ConstantVarPointer)phiRValue.getrValue()).getToVar().equals(var)) {
return true;
}
}
}
}
} }
} }
} }

View File

@ -0,0 +1,64 @@
package dk.camelot64.kickc.passes;
import dk.camelot64.kickc.model.ControlFlowBlock;
import dk.camelot64.kickc.model.Program;
import dk.camelot64.kickc.model.statements.Statement;
import dk.camelot64.kickc.model.statements.StatementPhiBlock;
import dk.camelot64.kickc.model.values.RValue;
import dk.camelot64.kickc.model.values.VariableRef;
import java.util.LinkedHashMap;
import java.util.ListIterator;
import java.util.Map;
/** Compiler Pass eliminating phi varialbes where all rValues are the same */
public class Pass2IdenticalPhiElimination extends Pass2SsaOptimization {
public Pass2IdenticalPhiElimination(Program program) {
super(program);
}
/**
* Find phi-variables where all rValues are identical - and eliminate them (by alias-replacing with the passed value)
*/
@Override
public boolean step() {
Map<VariableRef,RValue> phiIdentical = new LinkedHashMap<>();
for(ControlFlowBlock block : getGraph().getAllBlocks()) {
for(Statement statement : block.getStatements()) {
if(statement instanceof StatementPhiBlock) {
StatementPhiBlock statementPhi = (StatementPhiBlock) statement;
ListIterator<StatementPhiBlock.PhiVariable> phiVariableIt = statementPhi.getPhiVariables().listIterator();
while(phiVariableIt.hasNext()) {
StatementPhiBlock.PhiVariable phiVariable = phiVariableIt.next();
RValue rValue = null;
boolean identical = true;
for(StatementPhiBlock.PhiRValue phiRValue : phiVariable.getValues()) {
if(rValue == null) {
rValue = phiRValue.getrValue();
} else {
if(!rValue.equals(phiRValue.getrValue())) {
identical = false;
continue;
}
}
}
if(identical) {
// Found a phi-value with all rValues being identical
phiIdentical.put(phiVariable.getVariable(), rValue);
phiVariableIt.remove();
}
}
}
}
}
replaceVariables(phiIdentical);
for(VariableRef var : phiIdentical.keySet()) {
RValue alias = phiIdentical.get(var);
getLog().append("Identical Phi Values " + var.toString(getProgram()) + " " + alias.toString(getProgram()));
}
deleteSymbols(phiIdentical.keySet());
return phiIdentical.size()>0;
}
}

View File

@ -14,7 +14,7 @@ public class Pass2SelfPhiElimination extends Pass2SsaOptimization {
} }
/** /**
* Eliminate alias assignments replacing them with the aliased variable. * Eliminate phi variables pointing to themselves
*/ */
@Override @Override
public boolean step() { public boolean step() {

View File

@ -44,6 +44,11 @@ public class TestPrograms {
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false); AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
} }
@Test
public void testConstParam() throws IOException, URISyntaxException {
compileAndCompare("const-param");
}
@Test @Test
public void testHelloWorld() throws IOException, URISyntaxException { public void testHelloWorld() throws IOException, URISyntaxException {
compileAndCompare("helloworld"); compileAndCompare("helloworld");

View File

@ -0,0 +1,13 @@
// Test that the compiler optimizes when the same parameter value is passed into a function in all calls
void main() {
byte* screen = $400;
const byte reverse = $80;
screen[0] = sum(reverse, 'c');
screen[1] = sum(reverse, 'm');
screen[2] = sum(reverse, 'l');
}
byte sum(byte a, byte b) {
return a+b;
}

View File

@ -1,11 +1,11 @@
byte* screen = $400; byte* screen = $400;
void main() { void main() {
byte* hello = "hello world!@"; byte* hello = "hello world!@";
print_spaced(screen, hello); print2(screen, hello);
print_spaced(screen+40, hello); print2(screen+80, hello);
} }
void print_spaced(byte* at, byte* msg) { void print2(byte* at, byte* msg) {
byte j=0; byte j=0;
for(byte i=0; msg[i]!='@'; i++) { for(byte i=0; msg[i]!='@'; i++) {
at[j] = msg[i]; at[j] = msg[i];

View File

@ -2899,27 +2899,9 @@ Constant (const word/dword) main::$9 = main::$5|main::$8
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$10 = ((byte))main::$9 Constant (const byte) main::$10 = ((byte))main::$9
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2
Consolidated array index constant in assignment *(lines_x#0+1 + lines::$0) Consolidated array index constant in assignment *(lines_x#0+1 + lines::$0)
Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2
Consolidated array index constant in assignment *(lines_y#0+1 + lines::$1) Consolidated array index constant in assignment *(lines_y#0+1 + lines::$1)
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2
if() condition always true - replacing block destination if(true) goto main::@1 if() condition always true - replacing block destination if(true) goto main::@1
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_xhi#0 + 0) w= *(bitmap_plot_xlo#0 + 0) Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_xhi#0 + 0) w= *(bitmap_plot_xlo#0 + 0)
@ -3084,21 +3066,9 @@ Not aliassing across scopes: bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0
Not aliassing across scopes: bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 Not aliassing across scopes: bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0
Not aliassing across scopes: bitmap_plot::x#3 bitmap_line_ydxd::x#3 Not aliassing across scopes: bitmap_plot::x#3 bitmap_line_ydxd::x#3
Not aliassing across scopes: bitmap_plot::y#3 bitmap_line_ydxd::y#2 Not aliassing across scopes: bitmap_plot::y#3 bitmap_line_ydxd::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Consolidated array index constant in *(bitmap_plot_xhi#0+0) Consolidated array index constant in *(bitmap_plot_xhi#0+0)
Consolidated array index constant in *(bitmap_plot_xlo#0+0) Consolidated array index constant in *(bitmap_plot_xlo#0+0)
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5
Not aliassing across scopes: bitmap_plot::x#4 bitmap_plot::x#1 Not aliassing across scopes: bitmap_plot::x#4 bitmap_plot::x#1
Not aliassing across scopes: bitmap_plot::y#4 bitmap_plot::y#1 Not aliassing across scopes: bitmap_plot::y#4 bitmap_plot::y#1
@ -3170,12 +3140,6 @@ Not aliassing across scopes: bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0
Not aliassing across scopes: bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 Not aliassing across scopes: bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0
Not aliassing across scopes: bitmap_plot::x#3 bitmap_line_ydxd::x#3 Not aliassing across scopes: bitmap_plot::x#3 bitmap_line_ydxd::x#3
Not aliassing across scopes: bitmap_plot::y#3 bitmap_line_ydxd::y#2 Not aliassing across scopes: bitmap_plot::y#3 bitmap_line_ydxd::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) bitmap_init::bits#0 Inlining constant with var siblings (const byte) bitmap_init::bits#0
Inlining constant with var siblings (const byte) bitmap_init::bits#0 Inlining constant with var siblings (const byte) bitmap_init::bits#0

View File

@ -1115,12 +1115,6 @@ Constant (const word/dword) main::$7 = main::$4|main::$6
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$8 = ((byte))main::$7 Constant (const byte) main::$8 = ((byte))main::$7
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) init_plot_tables::yoffs#2
if() condition always true - replacing block destination if(true) goto main::@1 if() condition always true - replacing block destination if(true) goto main::@1
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Removing unused block main::@return Removing unused block main::@return
@ -1134,19 +1128,7 @@ Culled Empty Block (label) init_plot_tables::@6
Culled Empty Block (label) init_screen::@3 Culled Empty Block (label) init_screen::@3
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@5 Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@5
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) init_plot_tables::yoffs#2
Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@5 Not culling empty block because it shares successor with its predecessor. (label) init_plot_tables::@5
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) init_plot_tables::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) init_plot_tables::yoffs#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) plots::i#0 Inlining constant with var siblings (const byte) plots::i#0
Inlining constant with var siblings (const byte) plots::i#0 Inlining constant with var siblings (const byte) plots::i#0

View File

@ -619,14 +619,6 @@ Constant (const byte) bool_not::i#0 = 0
Constant (const byte*) bool_complex::screen#0 = ((byte*))1144 Constant (const byte*) bool_complex::screen#0 = ((byte*))1144
Constant (const byte) bool_complex::i#0 = 0 Constant (const byte) bool_complex::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) bool_and::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_and::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_or::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_or::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_not::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_not::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_complex::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_complex::i#2
Simple Condition (boolean~) bool_and::$0 if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7 Simple Condition (boolean~) bool_and::$0 if((byte) bool_and::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_and::@7
Simple Condition (boolean~) bool_or::$0 if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2 Simple Condition (boolean~) bool_or::$0 if((byte) bool_or::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_or::@2
Simple Condition (boolean~) bool_not::$2 if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4 Simple Condition (boolean~) bool_not::$2 if((byte) bool_not::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto bool_not::@4
@ -638,22 +630,6 @@ Simple Condition (boolean~) bool_complex::$6 if((byte) bool_complex::i#2<(byte/s
Simple Condition (boolean~) bool_complex::$4 if((byte~) bool_complex::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@2 Simple Condition (boolean~) bool_complex::$4 if((byte~) bool_complex::$3==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@2
Simple Condition (boolean~) bool_complex::$8 if((byte~) bool_complex::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4 Simple Condition (boolean~) bool_complex::$8 if((byte~) bool_complex::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
Multiple usages for variable. Not optimizing sub-constant (byte) bool_and::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_and::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_or::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_or::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_not::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_not::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_complex::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_complex::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_and::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_and::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_or::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_or::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_not::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_not::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_complex::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) bool_complex::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) bool_and::i#0 Inlining constant with var siblings (const byte) bool_and::i#0
Inlining constant with var siblings (const byte) bool_and::i#0 Inlining constant with var siblings (const byte) bool_and::i#0

View File

@ -361,10 +361,6 @@ Constant (const byte*) main::$4 = SCREEN#0+main::$3
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::cursor#0 = main::$4+main::x#0 Constant (const byte*) main::cursor#0 = main::$4+main::x#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) main::cursor#1
Multiple usages for variable. Not optimizing sub-constant (byte) main::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) main::cursor#1
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::x#0 Inlining constant with var siblings (const byte) main::x#0
Inlining constant with var siblings (const byte) main::x#0 Inlining constant with var siblings (const byte) main::x#0

View File

@ -346,10 +346,6 @@ Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::e#0 = main::yd#0/2 Constant (const byte) main::e#0 = main::yd#0/2
Constant (const word) main::idx#0 = main::x#0+main::$3 Constant (const word) main::idx#0 = main::x#0+main::$3
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::y#2
Multiple usages for variable. Not optimizing sub-constant (word) main::idx#1
Multiple usages for variable. Not optimizing sub-constant (byte) main::y#2
Multiple usages for variable. Not optimizing sub-constant (word) main::idx#1
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::x#0 Inlining constant with var siblings (const byte) main::x#0
Inlining constant with var siblings (const byte) main::x#0 Inlining constant with var siblings (const byte) main::x#0

View File

@ -2078,7 +2078,6 @@ Constant (const byte*) gfx_init_plane_charset8::gfxa#0 = ((byte*))gfx_init_plane
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$24 = main::$19|main::$23 Constant (const byte) main::$24 = main::$19|main::$23
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
if() condition always true - replacing block destination if(true) goto main::@3 if() condition always true - replacing block destination if(true) goto main::@3
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Eliminating unused constant (const byte) gfx_init_plane_charset8::gfxbCpuBank#1 Eliminating unused constant (const byte) gfx_init_plane_charset8::gfxbCpuBank#1
@ -2095,9 +2094,7 @@ Self Phi Eliminated (byte) gfx_init_plane_charset8::ch#7
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) gfx_init_plane_charset8::ch#7 (byte) gfx_init_plane_charset8::ch#8 Redundant Phi (byte) gfx_init_plane_charset8::ch#7 (byte) gfx_init_plane_charset8::ch#8
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
Not culling empty block because it shares successor with its predecessor. (label) gfx_init_plane_charset8::@5 Not culling empty block because it shares successor with its predecessor. (label) gfx_init_plane_charset8::@5
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#1 Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#1
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0

View File

@ -1726,7 +1726,6 @@ Constant (const byte) main::$22 = main::$21>>2
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$23 = main::$18|main::$22 Constant (const byte) main::$23 = main::$18|main::$22
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
if() condition always true - replacing block destination if(true) goto main::@3 if() condition always true - replacing block destination if(true) goto main::@3
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Removing unused block main::@return Removing unused block main::@return
@ -1737,9 +1736,7 @@ Culled Empty Block (label) main::@6
Culled Empty Block (label) gfx_init_chunky::@7 Culled Empty Block (label) gfx_init_chunky::@7
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_chunky::gfxbCpuBank#4 Not aliassing across scopes: dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_chunky::gfxbCpuBank#4
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
Not aliassing across scopes: dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_chunky::gfxbCpuBank#4 Not aliassing across scopes: dtvSetCpuBankSegment1::cpuBankIdx#1 gfx_init_chunky::gfxbCpuBank#4
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2 Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2 Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2

View File

@ -16173,65 +16173,9 @@ Constant (const string) print_str_lines::str#2 = FORM_TEXT#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const string) print_str_lines::str#1 = FORM_COLS#0 Constant (const string) print_str_lines::str#1 = FORM_COLS#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) print_screen#1
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::keycode#11
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_mode::j#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_init_vic_bitmap::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_init_vic_bitmap::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_init_vic_bitmap::l#2
Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_x#0+1 + gfx_init_vic_bitmap::$2) Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_x#0+1 + gfx_init_vic_bitmap::$2)
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_init_vic_bitmap::l#2
Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_y#0+1 + gfx_init_vic_bitmap::$3) Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_y#0+1 + gfx_init_vic_bitmap::$3)
Multiple usages for variable. Not optimizing sub-constant (byte*) form_set_screen::line#2
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte*) print_screen#1
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::keycode#11
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_mode::j#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_init_vic_bitmap::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_init_vic_bitmap::l#2
Multiple usages for variable. Not optimizing sub-constant (byte*) form_set_screen::line#2
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
if() condition always true - replacing block destination if(true) goto main::@2 if() condition always true - replacing block destination if(true) goto main::@2
Removing PHI-reference to removed block (gfx_mode::@16) in block gfx_mode::@return Removing PHI-reference to removed block (gfx_mode::@16) in block gfx_mode::@return
Removing PHI-reference to removed block (gfx_mode::@16) in block gfx_mode::@return Removing PHI-reference to removed block (gfx_mode::@16) in block gfx_mode::@return
@ -16741,59 +16685,9 @@ Redundant Phi (byte) form_fields_cnt#21 (const byte) form_fields_cnt#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Constant (const byte) form_field_idx#7 = form_fields_cnt#0-1 Constant (const byte) form_field_idx#7 = form_fields_cnt#0-1
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) print_screen#1
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::keycode#11
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Consolidated array index constant in *(bitmap_plot_xhi#0+0) Consolidated array index constant in *(bitmap_plot_xhi#0+0)
Consolidated array index constant in *(bitmap_plot_xlo#0+0) Consolidated array index constant in *(bitmap_plot_xlo#0+0)
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_mode::j#2
Multiple usages for variable. Not optimizing sub-constant (byte*) form_set_screen::line#2
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte*) print_screen#1
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::keycode#11
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_mode::j#2
Multiple usages for variable. Not optimizing sub-constant (byte*) form_set_screen::line#2
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21 Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21
Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5
Not culling empty block because it shares successor with its predecessor. (label) get_plane::@27 Not culling empty block because it shares successor with its predecessor. (label) get_plane::@27
@ -16951,31 +16845,6 @@ Not aliassing across scopes: form_control::field#0 form_field_ptr::return#3
Not aliassing across scopes: keyboard_event_get::return#4 keyboard_event_get::return#2 Not aliassing across scopes: keyboard_event_get::return#4 keyboard_event_get::return#2
Not aliassing across scopes: form_control::key_event#0 keyboard_event_get::return#4 Not aliassing across scopes: form_control::key_event#0 keyboard_event_get::return#4
Not aliassing across scopes: form_field_idx#18 form_field_idx#28 Not aliassing across scopes: form_field_idx#18 form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte*) print_screen#1
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::keycode#11
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_mode::j#2
Multiple usages for variable. Not optimizing sub-constant (byte*) form_set_screen::line#2
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21 Not culling empty block because it shares successor with its predecessor. (label) keyboard_event_scan::@21
Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5
Not culling empty block because it shares successor with its predecessor. (label) get_plane::@27 Not culling empty block because it shares successor with its predecessor. (label) get_plane::@27
@ -17116,31 +16985,6 @@ Not aliassing across scopes: form_control::field#0 form_field_ptr::return#3
Not aliassing across scopes: keyboard_event_get::return#4 keyboard_event_get::return#2 Not aliassing across scopes: keyboard_event_get::return#4 keyboard_event_get::return#2
Not aliassing across scopes: form_control::key_event#0 keyboard_event_get::return#4 Not aliassing across scopes: form_control::key_event#0 keyboard_event_get::return#4
Not aliassing across scopes: form_field_idx#18 form_field_idx#28 Not aliassing across scopes: form_field_idx#18 form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte*) print_screen#1
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::keycode#11
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_events_size#18
Multiple usages for variable. Not optimizing sub-constant (byte) keyboard_event_scan::row#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) gfx_mode::j#2
Multiple usages for variable. Not optimizing sub-constant (byte*) form_set_screen::line#2
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
Multiple usages for variable. Not optimizing sub-constant (byte) form_field_idx#28
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2 Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2 Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2

View File

@ -14238,43 +14238,9 @@ Constant (const string) MENU_TEXT#0 = "C64DTV Graphics Modes CCLHBME@
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const string) print_str_lines::str#1 = MENU_TEXT#0 Constant (const string) print_str_lines::str#1 = MENU_TEXT#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_stdbitmap::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_stdbitmap::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_stdbitmap::l#2
Consolidated array index constant in assignment *(mode_stdbitmap::lines_x#0+1 + mode_stdbitmap::$28) Consolidated array index constant in assignment *(mode_stdbitmap::lines_x#0+1 + mode_stdbitmap::$28)
Multiple usages for variable. Not optimizing sub-constant (byte) mode_stdbitmap::l#2
Consolidated array index constant in assignment *(mode_stdbitmap::lines_y#0+1 + mode_stdbitmap::$29) Consolidated array index constant in assignment *(mode_stdbitmap::lines_y#0+1 + mode_stdbitmap::$29)
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolstdchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolecmchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolmcchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_twoplanebitmap::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred2::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bpppixelcell::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bppchunkybmm::i#2
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_stdbitmap::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_stdbitmap::l#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolstdchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolecmchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolmcchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_twoplanebitmap::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred2::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bpppixelcell::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bppchunkybmm::i#2
if() condition always true - replacing block destination if(true) goto main::@2 if() condition always true - replacing block destination if(true) goto main::@2
Removing PHI-reference to removed block (menu::@3) in block menu::@return Removing PHI-reference to removed block (menu::@3) in block menu::@return
if() condition always true - replacing block destination if(true) goto menu::@4 if() condition always true - replacing block destination if(true) goto menu::@4
@ -14688,37 +14654,9 @@ Redundant Phi (byte) mode_8bpppixelcell::ch#7 (byte) mode_8bpppixelcell::ch#8
Redundant Phi (byte) dtv_control#234 (byte) dtv_control#244 Redundant Phi (byte) dtv_control#234 (byte) dtv_control#244
Redundant Phi (byte) dtv_control#235 (const byte) dtv_control#51 Redundant Phi (byte) dtv_control#235 (const byte) dtv_control#51
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Consolidated array index constant in *(bitmap_plot_xhi#0+0) Consolidated array index constant in *(bitmap_plot_xhi#0+0)
Consolidated array index constant in *(bitmap_plot_xlo#0+0) Consolidated array index constant in *(bitmap_plot_xlo#0+0)
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolstdchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolecmchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolmcchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_twoplanebitmap::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred2::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bpppixelcell::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bppchunkybmm::i#2
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolstdchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolecmchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolmcchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_twoplanebitmap::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred2::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bpppixelcell::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bppchunkybmm::i#2
Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5
Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@1
Not culling empty block because it shares successor with its predecessor. (label) mode_ctrl::@29 Not culling empty block because it shares successor with its predecessor. (label) mode_ctrl::@29
@ -14848,20 +14786,6 @@ Self Phi Eliminated (byte) dtv_control#244
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte) dtv_control#244 (const byte) dtv_control#48 Redundant Phi (byte) dtv_control#244 (const byte) dtv_control#48
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolstdchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolecmchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolmcchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_twoplanebitmap::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred2::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bpppixelcell::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bppchunkybmm::i#2
Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5 Not culling empty block because it shares successor with its predecessor. (label) bitmap_init::@5
Not culling empty block because it shares successor with its predecessor. (label) mode_ctrl::@29 Not culling empty block because it shares successor with its predecessor. (label) mode_ctrl::@29
Not culling empty block because it shares successor with its predecessor. (label) mode_8bpppixelcell::@11 Not culling empty block because it shares successor with its predecessor. (label) mode_8bpppixelcell::@11
@ -14982,20 +14906,6 @@ Not aliassing across scopes: keyboard_key_pressed::return#21 keyboard_key_presse
Not aliassing across scopes: mode_ctrl::$28 keyboard_key_pressed::return#21 Not aliassing across scopes: mode_ctrl::$28 keyboard_key_pressed::return#21
Not aliassing across scopes: dtv_control#17 mode_ctrl::ctrl#14 Not aliassing across scopes: dtv_control#17 mode_ctrl::ctrl#14
Not aliassing across scopes: dtvSetCpuBankSegment1::cpuBankIdx#1 mode_8bppchunkybmm::gfxbCpuBank#4 Not aliassing across scopes: dtvSetCpuBankSegment1::cpuBankIdx#1 mode_8bppchunkybmm::gfxbCpuBank#4
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte) bitmap_init::y#2
Multiple usages for variable. Not optimizing sub-constant (byte*) bitmap_init::yoffs#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolstdchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolecmchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_hicolmcchar::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_twoplanebitmap::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_sixsfred2::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bpppixelcell::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) mode_8bppchunkybmm::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2 Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2 Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2

View File

@ -377,19 +377,9 @@ Constant (const word) w::$0 = w::w1#0-w::w2#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) w::b#0 = ((byte))w::$0 Constant (const byte) w::b#0 = ((byte))w::$0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::b#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::b#2
Multiple usages for variable. Not optimizing sub-constant (byte) w::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) w::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) w::i#2
Eliminating Noop Cast (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2 Eliminating Noop Cast (signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
Eliminating Noop Cast (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0 Eliminating Noop Cast (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
Succesful SSA optimization Pass2NopCastElimination Succesful SSA optimization Pass2NopCastElimination
Multiple usages for variable. Not optimizing sub-constant (byte) main::b#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::b#2
Multiple usages for variable. Not optimizing sub-constant (byte) w::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) w::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) w::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::b#0 Inlining constant with var siblings (const byte) main::b#0
Inlining constant with var siblings (const byte) main::b#0 Inlining constant with var siblings (const byte) main::b#0

View File

@ -3410,11 +3410,7 @@ Constant (const byte*) print_str_at::at#2 = main::$7+20
Constant (const byte*) print_str_at::at#3 = main::$10+30 Constant (const byte*) print_str_at::at#3 = main::$10+30
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Consolidated constant in assignment plot_chargen::$7 Consolidated constant in assignment plot_chargen::$7
Multiple usages for variable. Not optimizing sub-constant (byte*) plot_chargen::chargen#0
Multiple usages for variable. Not optimizing sub-constant (byte*) plot_chargen::sc#1
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte*) plot_chargen::chargen#0
Multiple usages for variable. Not optimizing sub-constant (byte*) plot_chargen::sc#1
if() condition always true - replacing block destination if(true) goto main::@3 if() condition always true - replacing block destination if(true) goto main::@3
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Eliminating unused constant (const byte) main::shift#0 Eliminating unused constant (const byte) main::shift#0
@ -3485,8 +3481,6 @@ Constant (const byte*) plot_chargen::$6 = SCREEN#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) plot_chargen::$7 = plot_chargen::$6+40+1 Constant (const byte*) plot_chargen::$7 = plot_chargen::$6+40+1
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) plot_chargen::chargen#0
Multiple usages for variable. Not optimizing sub-constant (byte*) plot_chargen::sc#1
Not culling empty block because it shares successor with its predecessor. (label) main::@15 Not culling empty block because it shares successor with its predecessor. (label) main::@15
Not culling empty block because it shares successor with its predecessor. (label) main::@16 Not culling empty block because it shares successor with its predecessor. (label) main::@16
Not culling empty block because it shares successor with its predecessor. (label) main::@17 Not culling empty block because it shares successor with its predecessor. (label) main::@17
@ -3522,8 +3516,6 @@ Not aliassing across scopes: plot_chargen::pos#2 plot_chargen::pos#0
Not aliassing across scopes: mul8u::a#1 plot_chargen::pos#2 Not aliassing across scopes: mul8u::a#1 plot_chargen::pos#2
Not aliassing across scopes: mul8u::return#2 mul8u::res#2 Not aliassing across scopes: mul8u::return#2 mul8u::res#2
Not aliassing across scopes: plot_chargen::$8 mul8u::return#2 Not aliassing across scopes: plot_chargen::$8 mul8u::return#2
Multiple usages for variable. Not optimizing sub-constant (byte*) plot_chargen::chargen#0
Multiple usages for variable. Not optimizing sub-constant (byte*) plot_chargen::sc#1
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const word) mul8u::res#0 Inlining constant with var siblings (const word) mul8u::res#0
Inlining constant with var siblings (const word) mul8u::res#0 Inlining constant with var siblings (const word) mul8u::res#0

View File

@ -362,7 +362,6 @@ Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::CHAR_A#0 = CHARGEN#0+8 Constant (const byte*) main::CHAR_A#0 = CHARGEN#0+8
Constant (const byte*) main::sc#0 = SCREEN#0 Constant (const byte*) main::sc#0 = SCREEN#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) main::sc#1
Not culling empty block because it shares successor with its predecessor. (label) main::@4 Not culling empty block because it shares successor with its predecessor. (label) main::@4
Self Phi Eliminated (byte*) main::CHAR_A#1 Self Phi Eliminated (byte*) main::CHAR_A#1
Self Phi Eliminated (byte*) PROCPORT#8 Self Phi Eliminated (byte*) PROCPORT#8
@ -370,9 +369,7 @@ Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::CHAR_A#1 (const byte*) main::CHAR_A#0 Redundant Phi (byte*) main::CHAR_A#1 (const byte*) main::CHAR_A#0
Redundant Phi (byte*) PROCPORT#8 (const byte*) PROCPORT#0 Redundant Phi (byte*) PROCPORT#8 (const byte*) PROCPORT#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Multiple usages for variable. Not optimizing sub-constant (byte*) main::sc#1
Not culling empty block because it shares successor with its predecessor. (label) main::@4 Not culling empty block because it shares successor with its predecessor. (label) main::@4
Multiple usages for variable. Not optimizing sub-constant (byte*) main::sc#1
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::y#0 Inlining constant with var siblings (const byte) main::y#0
Inlining constant with var siblings (const byte) main::y#0 Inlining constant with var siblings (const byte) main::y#0

View File

@ -320,8 +320,6 @@ Constant (const byte) line::x1#0 = 10
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) plot::x#0 = line::x0#0 Constant (const byte) plot::x#0 = line::x0#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
if() condition always true - replacing block destination if(true) goto main::@2 if() condition always true - replacing block destination if(true) goto main::@2
if() condition always true - replacing block destination if((const byte) line::x0#0<(const byte) line::x1#0) goto line::@1 if() condition always true - replacing block destination if((const byte) line::x0#0<(const byte) line::x1#0) goto line::@1
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
@ -336,13 +334,9 @@ Not aliassing across scopes: plot::x#1 line::x#2
Not aliassing across scopes: plot::x#2 plot::x#1 Not aliassing across scopes: plot::x#2 plot::x#1
Redundant Phi (byte) plot::x#2 (byte) plot::x#1 Redundant Phi (byte) plot::x#2 (byte) plot::x#1
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Eliminating unused constant (const byte) plot::x#0 Eliminating unused constant (const byte) plot::x#0
Succesful SSA optimization PassNEliminateUnusedVars Succesful SSA optimization PassNEliminateUnusedVars
Not aliassing across scopes: plot::x#1 line::x#2 Not aliassing across scopes: plot::x#1 line::x#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -0,0 +1,23 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
jsr main
main: {
.label screen = $400
.label reverse = $80
lda #'c'
jsr sum
sta screen+0
lda #'m'
jsr sum
sta screen+1
lda #'l'
jsr sum
sta screen+2
rts
}
sum: {
clc
adc #main.reverse
rts
}

View File

@ -0,0 +1,40 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@2
@2: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @2
[3] phi() [ ] ( )
main: scope:[main] from @2
[4] phi() [ ] ( main:2 [ ] )
[5] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
[6] (byte) sum::return#0 ← (byte) sum::return#3 [ sum::return#0 ] ( main:2 [ sum::return#0 ] )
to:main::@1
main::@1: scope:[main] from main
[7] (byte~) main::$0 ← (byte) sum::return#0 [ main::$0 ] ( main:2 [ main::$0 ] )
[8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ ] ( main:2 [ ] )
[9] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
[10] (byte) sum::return#1 ← (byte) sum::return#3 [ sum::return#1 ] ( main:2 [ sum::return#1 ] )
to:main::@2
main::@2: scope:[main] from main::@1
[11] (byte~) main::$1 ← (byte) sum::return#1 [ main::$1 ] ( main:2 [ main::$1 ] )
[12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] )
[13] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
[14] (byte) sum::return#2 ← (byte) sum::return#3 [ sum::return#2 ] ( main:2 [ sum::return#2 ] )
to:main::@3
main::@3: scope:[main] from main::@2
[15] (byte~) main::$2 ← (byte) sum::return#2 [ main::$2 ] ( main:2 [ main::$2 ] )
[16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@3
[17] return [ ] ( main:2 [ ] )
to:@return
sum: scope:[sum] from main main::@1 main::@2
[18] (byte) sum::b#3 ← phi( main/(byte) 'c' main::@1/(byte) 'm' main::@2/(byte) 'l' ) [ sum::b#3 ] ( main:2::sum:5 [ sum::b#3 ] main:2::sum:9 [ sum::b#3 ] main:2::sum:13 [ sum::b#3 ] )
[19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] )
to:sum::@return
sum::@return: scope:[sum] from sum
[20] return [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] )
to:@return

View File

@ -0,0 +1,735 @@
PARSING src/test/java/dk/camelot64/kickc/test/kc/const-param.kc
// Test that the compiler optimizes when the same parameter value is passed into a function in all calls
void main() {
byte* screen = $400;
const byte reverse = $80;
screen[0] = sum(reverse, 'c');
screen[1] = sum(reverse, 'm');
screen[2] = sum(reverse, 'l');
}
byte sum(byte a, byte b) {
return a+b;
}
SYMBOLS
(label) @1
(label) @2
(label) @begin
(label) @end
(void()) main()
(byte~) main::$0
(byte~) main::$1
(byte~) main::$2
(label) main::@return
(byte) main::reverse
(byte*) main::screen
(byte()) sum((byte) sum::a , (byte) sum::b)
(byte~) sum::$0
(label) sum::@1
(label) sum::@return
(byte) sum::a
(byte) sum::b
(byte) sum::return
Promoting word/signed word/dword/signed dword to byte* in main::screen ← ((byte*)) 1024
INITIAL CONTROL FLOW GRAPH
@begin: scope:[] from
to:@1
main: scope:[main] from
(byte*) main::screen ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte) main::reverse ← (byte/word/signed word/dword/signed dword) 128
(byte~) main::$0 ← call sum (byte) main::reverse (byte) 'c'
*((byte*) main::screen + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
(byte~) main::$1 ← call sum (byte) main::reverse (byte) 'm'
*((byte*) main::screen + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
(byte~) main::$2 ← call sum (byte) main::reverse (byte) 'l'
*((byte*) main::screen + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2
to:main::@return
main::@return: scope:[main] from main
return
to:@return
@1: scope:[] from @begin
to:@2
sum: scope:[sum] from
(byte~) sum::$0 ← (byte) sum::a + (byte) sum::b
(byte) sum::return ← (byte~) sum::$0
to:sum::@return
sum::@return: scope:[sum] from sum sum::@1
(byte) sum::return ← (byte) sum::return
return (byte) sum::return
to:@return
sum::@1: scope:[sum] from
to:sum::@return
@2: scope:[] from @1
call main
to:@end
@end: scope:[] from @2
Removing empty block @1
Removing empty block sum::@1
PROCEDURE MODIFY VARIABLE ANALYSIS
Completing Phi functions...
CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
@begin: scope:[] from
to:@2
main: scope:[main] from @2
(byte*) main::screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte) main::reverse#0 ← (byte/word/signed word/dword/signed dword) 128
(byte) sum::a#0 ← (byte) main::reverse#0
(byte) sum::b#0 ← (byte) 'c'
call sum param-assignment
(byte) sum::return#0 ← (byte) sum::return#4
to:main::@1
main::@1: scope:[main] from main
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 )
(byte) sum::return#5 ← phi( main/(byte) sum::return#0 )
(byte~) main::$0 ← (byte) sum::return#5
*((byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
(byte) sum::a#1 ← (byte) main::reverse#0
(byte) sum::b#1 ← (byte) 'm'
call sum param-assignment
(byte) sum::return#1 ← (byte) sum::return#4
to:main::@2
main::@2: scope:[main] from main::@1
(byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 )
(byte) sum::return#6 ← phi( main::@1/(byte) sum::return#1 )
(byte~) main::$1 ← (byte) sum::return#6
*((byte*) main::screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
(byte) sum::a#2 ← (byte) main::reverse#0
(byte) sum::b#2 ← (byte) 'l'
call sum param-assignment
(byte) sum::return#2 ← (byte) sum::return#4
to:main::@3
main::@3: scope:[main] from main::@2
(byte*) main::screen#3 ← phi( main::@2/(byte*) main::screen#2 )
(byte) sum::return#7 ← phi( main::@2/(byte) sum::return#2 )
(byte~) main::$2 ← (byte) sum::return#7
*((byte*) main::screen#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2
to:main::@return
main::@return: scope:[main] from main::@3
return
to:@return
sum: scope:[sum] from main main::@1 main::@2
(byte) sum::b#3 ← phi( main/(byte) sum::b#0 main::@1/(byte) sum::b#1 main::@2/(byte) sum::b#2 )
(byte) sum::a#3 ← phi( main/(byte) sum::a#0 main::@1/(byte) sum::a#1 main::@2/(byte) sum::a#2 )
(byte~) sum::$0 ← (byte) sum::a#3 + (byte) sum::b#3
(byte) sum::return#3 ← (byte~) sum::$0
to:sum::@return
sum::@return: scope:[sum] from sum
(byte) sum::return#8 ← phi( sum/(byte) sum::return#3 )
(byte) sum::return#4 ← (byte) sum::return#8
return
to:@return
@2: scope:[] from @begin
call main param-assignment
to:@3
@3: scope:[] from @2
to:@end
@end: scope:[] from @3
SYMBOL TABLE SSA
(label) @2
(label) @3
(label) @begin
(label) @end
(void()) main()
(byte~) main::$0
(byte~) main::$1
(byte~) main::$2
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@return
(byte) main::reverse
(byte) main::reverse#0
(byte*) main::screen
(byte*) main::screen#0
(byte*) main::screen#1
(byte*) main::screen#2
(byte*) main::screen#3
(byte()) sum((byte) sum::a , (byte) sum::b)
(byte~) sum::$0
(label) sum::@return
(byte) sum::a
(byte) sum::a#0
(byte) sum::a#1
(byte) sum::a#2
(byte) sum::a#3
(byte) sum::b
(byte) sum::b#0
(byte) sum::b#1
(byte) sum::b#2
(byte) sum::b#3
(byte) sum::return
(byte) sum::return#0
(byte) sum::return#1
(byte) sum::return#2
(byte) sum::return#3
(byte) sum::return#4
(byte) sum::return#5
(byte) sum::return#6
(byte) sum::return#7
(byte) sum::return#8
OPTIMIZING CONTROL FLOW GRAPH
Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: sum::a#0 main::reverse#0
Not aliassing across scopes: sum::return#0 sum::return#4
Not aliassing across scopes: main::$0 sum::return#5
Not aliassing across scopes: sum::a#1 main::reverse#0
Not aliassing across scopes: sum::return#1 sum::return#4
Not aliassing across scopes: main::$1 sum::return#6
Not aliassing across scopes: sum::a#2 main::reverse#0
Not aliassing across scopes: sum::return#2 sum::return#4
Not aliassing across scopes: main::$2 sum::return#7
Not aliassing across scopes: sum::a#3 sum::a#0
Not aliassing across scopes: sum::b#3 sum::b#0
Alias (byte) sum::return#0 = (byte) sum::return#5
Alias (byte*) main::screen#0 = (byte*) main::screen#1 (byte*) main::screen#2 (byte*) main::screen#3
Alias (byte) sum::return#1 = (byte) sum::return#6
Alias (byte) sum::return#2 = (byte) sum::return#7
Alias (byte) sum::return#3 = (byte~) sum::$0 (byte) sum::return#8 (byte) sum::return#4
Succesful SSA optimization Pass2AliasElimination
Not aliassing across scopes: sum::a#0 main::reverse#0
Not aliassing across scopes: sum::return#0 sum::return#3
Not aliassing across scopes: main::$0 sum::return#0
Not aliassing across scopes: sum::a#1 main::reverse#0
Not aliassing across scopes: sum::return#1 sum::return#3
Not aliassing across scopes: main::$1 sum::return#1
Not aliassing across scopes: sum::a#2 main::reverse#0
Not aliassing across scopes: sum::return#2 sum::return#3
Not aliassing across scopes: main::$2 sum::return#2
Not aliassing across scopes: sum::a#3 sum::a#0
Not aliassing across scopes: sum::b#3 sum::b#0
Constant (const byte*) main::screen#0 = ((byte*))1024
Constant (const byte) main::reverse#0 = 128
Constant (const byte) sum::b#0 = 'c'
Constant (const byte) sum::b#1 = 'm'
Constant (const byte) sum::b#2 = 'l'
Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) sum::a#0 = main::reverse#0
Constant (const byte) sum::a#1 = main::reverse#0
Constant (const byte) sum::a#2 = main::reverse#0
Succesful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::screen#0+0)
Consolidated array index constant in *(main::screen#0+1)
Consolidated array index constant in *(main::screen#0+2)
Succesful SSA optimization Pass2ConstantAdditionElimination
Not aliassing across scopes: sum::return#0 sum::return#3
Not aliassing across scopes: main::$0 sum::return#0
Not aliassing across scopes: sum::return#1 sum::return#3
Not aliassing across scopes: main::$1 sum::return#1
Not aliassing across scopes: sum::return#2 sum::return#3
Not aliassing across scopes: main::$2 sum::return#2
OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) sum::b#0
Inlining constant with different constant siblings (const byte) sum::b#0
Inlining constant with different constant siblings (const byte) sum::b#0
Inlining constant with var siblings (const byte) sum::b#1
Inlining constant with different constant siblings (const byte) sum::b#1
Inlining constant with different constant siblings (const byte) sum::b#1
Inlining constant with var siblings (const byte) sum::b#2
Inlining constant with different constant siblings (const byte) sum::b#2
Inlining constant with different constant siblings (const byte) sum::b#2
Inlining constant with var siblings (const byte) sum::a#0
Inlining constant with var siblings (const byte) sum::a#1
Inlining constant with var siblings (const byte) sum::a#2
Constant inlined sum::a#2 = (const byte) main::reverse#0
Constant inlined sum::b#1 = (byte) 'm'
Constant inlined sum::a#1 = (const byte) main::reverse#0
Constant inlined sum::b#0 = (byte) 'c'
Constant inlined sum::b#2 = (byte) 'l'
Constant inlined sum::a#0 = (const byte) main::reverse#0
Succesful SSA optimization Pass2ConstantInlining
Identical Phi Values (byte) sum::a#3 (const byte) main::reverse#0
Succesful SSA optimization Pass2IdenticalPhiElimination
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@3 main::@return sum sum::@return
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@3 main::@return sum sum::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
CALL GRAPH
Calls in [] to main:2
Calls in [main] to sum:5 sum:9 sum:13
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
Created 1 initial phi equivalence classes
Coalesced down to 1 phi equivalence classes
Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@3 main::@return sum sum::@return
Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Propagating live ranges...
Propagating live ranges...
Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
to:@2
@2: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main param-assignment [ ] ( )
to:@end
@end: scope:[] from @2
[3] phi() [ ] ( )
main: scope:[main] from @2
[4] phi() [ ] ( main:2 [ ] )
[5] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
[6] (byte) sum::return#0 ← (byte) sum::return#3 [ sum::return#0 ] ( main:2 [ sum::return#0 ] )
to:main::@1
main::@1: scope:[main] from main
[7] (byte~) main::$0 ← (byte) sum::return#0 [ main::$0 ] ( main:2 [ main::$0 ] )
[8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ ] ( main:2 [ ] )
[9] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
[10] (byte) sum::return#1 ← (byte) sum::return#3 [ sum::return#1 ] ( main:2 [ sum::return#1 ] )
to:main::@2
main::@2: scope:[main] from main::@1
[11] (byte~) main::$1 ← (byte) sum::return#1 [ main::$1 ] ( main:2 [ main::$1 ] )
[12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] )
[13] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
[14] (byte) sum::return#2 ← (byte) sum::return#3 [ sum::return#2 ] ( main:2 [ sum::return#2 ] )
to:main::@3
main::@3: scope:[main] from main::@2
[15] (byte~) main::$2 ← (byte) sum::return#2 [ main::$2 ] ( main:2 [ main::$2 ] )
[16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@3
[17] return [ ] ( main:2 [ ] )
to:@return
sum: scope:[sum] from main main::@1 main::@2
[18] (byte) sum::b#3 ← phi( main/(byte) 'c' main::@1/(byte) 'm' main::@2/(byte) 'l' ) [ sum::b#3 ] ( main:2::sum:5 [ sum::b#3 ] main:2::sum:9 [ sum::b#3 ] main:2::sum:13 [ sum::b#3 ] )
[19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] )
to:sum::@return
sum::@return: scope:[sum] from sum
[20] return [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] )
to:@return
DOMINATORS
@begin dominated by @begin
@2 dominated by @2 @begin
@end dominated by @2 @begin @end
main dominated by @2 @begin main
main::@1 dominated by @2 @begin main::@1 main
main::@2 dominated by @2 @begin main::@1 main::@2 main
main::@3 dominated by @2 @begin main::@1 main::@2 main main::@3
main::@return dominated by main::@return @2 @begin main::@1 main::@2 main main::@3
sum dominated by @2 @begin main sum
sum::@return dominated by @2 @begin main sum sum::@return
NATURAL LOOPS
NATURAL LOOPS WITH DEPTH
Found 0 loops in scope []
Found 0 loops in scope [main]
Found 0 loops in scope [sum]
VARIABLE REGISTER WEIGHTS
(void()) main()
(byte~) main::$0 4.0
(byte~) main::$1 4.0
(byte~) main::$2 4.0
(byte) main::reverse
(byte*) main::screen
(byte()) sum((byte) sum::a , (byte) sum::b)
(byte) sum::a
(byte) sum::b
(byte) sum::b#3 2.0
(byte) sum::return
(byte) sum::return#0 4.0
(byte) sum::return#1 4.0
(byte) sum::return#2 4.0
(byte) sum::return#3 1.6
Initial phi equivalence classes
[ sum::b#3 ]
Added variable sum::return#0 to zero page equivalence class [ sum::return#0 ]
Added variable main::$0 to zero page equivalence class [ main::$0 ]
Added variable sum::return#1 to zero page equivalence class [ sum::return#1 ]
Added variable main::$1 to zero page equivalence class [ main::$1 ]
Added variable sum::return#2 to zero page equivalence class [ sum::return#2 ]
Added variable main::$2 to zero page equivalence class [ main::$2 ]
Added variable sum::return#3 to zero page equivalence class [ sum::return#3 ]
Complete equivalence classes
[ sum::b#3 ]
[ sum::return#0 ]
[ main::$0 ]
[ sum::return#1 ]
[ main::$1 ]
[ sum::return#2 ]
[ main::$2 ]
[ sum::return#3 ]
Allocated zp ZP_BYTE:2 [ sum::b#3 ]
Allocated zp ZP_BYTE:3 [ sum::return#0 ]
Allocated zp ZP_BYTE:4 [ main::$0 ]
Allocated zp ZP_BYTE:5 [ sum::return#1 ]
Allocated zp ZP_BYTE:6 [ main::$1 ]
Allocated zp ZP_BYTE:7 [ sum::return#2 ]
Allocated zp ZP_BYTE:8 [ main::$2 ]
Allocated zp ZP_BYTE:9 [ sum::return#3 ]
INITIAL ASM
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @2 [phi:@begin->@2]
b2_from_bbegin:
jmp b2
//SEG4 @2
b2:
//SEG5 [2] call main param-assignment [ ] ( )
//SEG6 [4] phi from @2 to main [phi:@2->main]
main_from_b2:
jsr main
//SEG7 [3] phi from @2 to @end [phi:@2->@end]
bend_from_b2:
jmp bend
//SEG8 @end
bend:
//SEG9 main
main: {
.label screen = $400
.label reverse = $80
.label _0 = 4
.label _1 = 6
.label _2 = 8
//SEG10 [5] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
//SEG11 [18] phi from main to sum [phi:main->sum]
sum_from_main:
//SEG12 [18] phi (byte) sum::b#3 = (byte) 'c' [phi:main->sum#0] -- vbuz1=vbuc1
lda #'c'
sta sum.b
jsr sum
//SEG13 [6] (byte) sum::return#0 ← (byte) sum::return#3 [ sum::return#0 ] ( main:2 [ sum::return#0 ] ) -- vbuz1=vbuz2
lda sum.return_3
sta sum.return
jmp b1
//SEG14 main::@1
b1:
//SEG15 [7] (byte~) main::$0 ← (byte) sum::return#0 [ main::$0 ] ( main:2 [ main::$0 ] ) -- vbuz1=vbuz2
lda sum.return
sta _0
//SEG16 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuz1
lda _0
sta screen+0
//SEG17 [9] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
//SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum]
sum_from_b1:
//SEG19 [18] phi (byte) sum::b#3 = (byte) 'm' [phi:main::@1->sum#0] -- vbuz1=vbuc1
lda #'m'
sta sum.b
jsr sum
//SEG20 [10] (byte) sum::return#1 ← (byte) sum::return#3 [ sum::return#1 ] ( main:2 [ sum::return#1 ] ) -- vbuz1=vbuz2
lda sum.return_3
sta sum.return_1
jmp b2
//SEG21 main::@2
b2:
//SEG22 [11] (byte~) main::$1 ← (byte) sum::return#1 [ main::$1 ] ( main:2 [ main::$1 ] ) -- vbuz1=vbuz2
lda sum.return_1
sta _1
//SEG23 [12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuz1
lda _1
sta screen+1
//SEG24 [13] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
//SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum]
sum_from_b2:
//SEG26 [18] phi (byte) sum::b#3 = (byte) 'l' [phi:main::@2->sum#0] -- vbuz1=vbuc1
lda #'l'
sta sum.b
jsr sum
//SEG27 [14] (byte) sum::return#2 ← (byte) sum::return#3 [ sum::return#2 ] ( main:2 [ sum::return#2 ] ) -- vbuz1=vbuz2
lda sum.return_3
sta sum.return_2
jmp b3
//SEG28 main::@3
b3:
//SEG29 [15] (byte~) main::$2 ← (byte) sum::return#2 [ main::$2 ] ( main:2 [ main::$2 ] ) -- vbuz1=vbuz2
lda sum.return_2
sta _2
//SEG30 [16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuz1
lda _2
sta screen+2
jmp breturn
//SEG31 main::@return
breturn:
//SEG32 [17] return [ ] ( main:2 [ ] )
rts
}
//SEG33 sum
sum: {
.label return = 3
.label return_1 = 5
.label return_2 = 7
.label return_3 = 9
.label b = 2
//SEG34 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] ) -- vbuz1=vbuc1_plus_vbuz2
lda #main.reverse
clc
adc b
sta return_3
jmp breturn
//SEG35 sum::@return
breturn:
//SEG36 [20] return [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] )
rts
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ sum::b#3 ] : zp ZP_BYTE:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:3 [ sum::return#0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:4 [ main::$0 ] : zp ZP_BYTE:4 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:5 [ sum::return#1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:6 [ main::$1 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:7 [ sum::return#2 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:8 [ main::$2 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:9 [ sum::return#3 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [sum] 4: zp ZP_BYTE:3 [ sum::return#0 ] 4: zp ZP_BYTE:5 [ sum::return#1 ] 4: zp ZP_BYTE:7 [ sum::return#2 ] 2: zp ZP_BYTE:2 [ sum::b#3 ] 1.6: zp ZP_BYTE:9 [ sum::return#3 ]
Uplift Scope [main] 4: zp ZP_BYTE:4 [ main::$0 ] 4: zp ZP_BYTE:6 [ main::$1 ] 4: zp ZP_BYTE:8 [ main::$2 ]
Uplift Scope []
Uplifting [sum] best 109 combination reg byte a [ sum::return#0 ] reg byte a [ sum::return#1 ] reg byte a [ sum::return#2 ] reg byte a [ sum::b#3 ] zp ZP_BYTE:9 [ sum::return#3 ]
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [main] best 91 combination reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ]
Uplifting [] best 91 combination
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ sum::return#3 ]
Uplifting [sum] best 79 combination reg byte a [ sum::return#3 ]
ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @2 [phi:@begin->@2]
b2_from_bbegin:
jmp b2
//SEG4 @2
b2:
//SEG5 [2] call main param-assignment [ ] ( )
//SEG6 [4] phi from @2 to main [phi:@2->main]
main_from_b2:
jsr main
//SEG7 [3] phi from @2 to @end [phi:@2->@end]
bend_from_b2:
jmp bend
//SEG8 @end
bend:
//SEG9 main
main: {
.label screen = $400
.label reverse = $80
//SEG10 [5] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
//SEG11 [18] phi from main to sum [phi:main->sum]
sum_from_main:
//SEG12 [18] phi (byte) sum::b#3 = (byte) 'c' [phi:main->sum#0] -- vbuaa=vbuc1
lda #'c'
jsr sum
//SEG13 [6] (byte) sum::return#0 ← (byte) sum::return#3 [ sum::return#0 ] ( main:2 [ sum::return#0 ] )
// (byte) sum::return#0 = (byte) sum::return#3 // register copy reg byte a
jmp b1
//SEG14 main::@1
b1:
//SEG15 [7] (byte~) main::$0 ← (byte) sum::return#0 [ main::$0 ] ( main:2 [ main::$0 ] )
// (byte~) main::$0 = (byte) sum::return#0 // register copy reg byte a
//SEG16 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa
sta screen+0
//SEG17 [9] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
//SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum]
sum_from_b1:
//SEG19 [18] phi (byte) sum::b#3 = (byte) 'm' [phi:main::@1->sum#0] -- vbuaa=vbuc1
lda #'m'
jsr sum
//SEG20 [10] (byte) sum::return#1 ← (byte) sum::return#3 [ sum::return#1 ] ( main:2 [ sum::return#1 ] )
// (byte) sum::return#1 = (byte) sum::return#3 // register copy reg byte a
jmp b2
//SEG21 main::@2
b2:
//SEG22 [11] (byte~) main::$1 ← (byte) sum::return#1 [ main::$1 ] ( main:2 [ main::$1 ] )
// (byte~) main::$1 = (byte) sum::return#1 // register copy reg byte a
//SEG23 [12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa
sta screen+1
//SEG24 [13] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
//SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum]
sum_from_b2:
//SEG26 [18] phi (byte) sum::b#3 = (byte) 'l' [phi:main::@2->sum#0] -- vbuaa=vbuc1
lda #'l'
jsr sum
//SEG27 [14] (byte) sum::return#2 ← (byte) sum::return#3 [ sum::return#2 ] ( main:2 [ sum::return#2 ] )
// (byte) sum::return#2 = (byte) sum::return#3 // register copy reg byte a
jmp b3
//SEG28 main::@3
b3:
//SEG29 [15] (byte~) main::$2 ← (byte) sum::return#2 [ main::$2 ] ( main:2 [ main::$2 ] )
// (byte~) main::$2 = (byte) sum::return#2 // register copy reg byte a
//SEG30 [16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa
sta screen+2
jmp breturn
//SEG31 main::@return
breturn:
//SEG32 [17] return [ ] ( main:2 [ ] )
rts
}
//SEG33 sum
sum: {
//SEG34 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] ) -- vbuaa=vbuc1_plus_vbuaa
clc
adc #main.reverse
jmp breturn
//SEG35 sum::@return
breturn:
//SEG36 [20] return [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] )
rts
}
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b2
Removing instruction jmp bend
Removing instruction jmp b1
Removing instruction jmp b2
Removing instruction jmp b3
Removing instruction jmp breturn
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Removing instruction bbegin:
Removing instruction b2_from_bbegin:
Removing instruction main_from_b2:
Removing instruction bend_from_b2:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b2:
Removing instruction bend:
Removing instruction sum_from_main:
Removing instruction b1:
Removing instruction sum_from_b1:
Removing instruction b2:
Removing instruction sum_from_b2:
Removing instruction b3:
Removing instruction breturn:
Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination
FINAL SYMBOL TABLE
(label) @2
(label) @begin
(label) @end
(void()) main()
(byte~) main::$0 reg byte a 4.0
(byte~) main::$1 reg byte a 4.0
(byte~) main::$2 reg byte a 4.0
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@return
(byte) main::reverse
(const byte) main::reverse#0 reverse = (byte/word/signed word/dword/signed dword) 128
(byte*) main::screen
(const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024
(byte()) sum((byte) sum::a , (byte) sum::b)
(label) sum::@return
(byte) sum::a
(byte) sum::b
(byte) sum::b#3 reg byte a 2.0
(byte) sum::return
(byte) sum::return#0 reg byte a 4.0
(byte) sum::return#1 reg byte a 4.0
(byte) sum::return#2 reg byte a 4.0
(byte) sum::return#3 reg byte a 1.6
reg byte a [ sum::b#3 ]
reg byte a [ sum::return#0 ]
reg byte a [ main::$0 ]
reg byte a [ sum::return#1 ]
reg byte a [ main::$1 ]
reg byte a [ sum::return#2 ]
reg byte a [ main::$2 ]
reg byte a [ sum::return#3 ]
FINAL ASSEMBLER
Score: 58
//SEG0 Basic Upstart
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
//SEG1 Global Constants & labels
//SEG2 @begin
//SEG3 [1] phi from @begin to @2 [phi:@begin->@2]
//SEG4 @2
//SEG5 [2] call main param-assignment [ ] ( )
//SEG6 [4] phi from @2 to main [phi:@2->main]
jsr main
//SEG7 [3] phi from @2 to @end [phi:@2->@end]
//SEG8 @end
//SEG9 main
main: {
.label screen = $400
.label reverse = $80
//SEG10 [5] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
//SEG11 [18] phi from main to sum [phi:main->sum]
//SEG12 [18] phi (byte) sum::b#3 = (byte) 'c' [phi:main->sum#0] -- vbuaa=vbuc1
lda #'c'
jsr sum
//SEG13 [6] (byte) sum::return#0 ← (byte) sum::return#3 [ sum::return#0 ] ( main:2 [ sum::return#0 ] )
// (byte) sum::return#0 = (byte) sum::return#3 // register copy reg byte a
//SEG14 main::@1
//SEG15 [7] (byte~) main::$0 ← (byte) sum::return#0 [ main::$0 ] ( main:2 [ main::$0 ] )
// (byte~) main::$0 = (byte) sum::return#0 // register copy reg byte a
//SEG16 [8] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa
sta screen+0
//SEG17 [9] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
//SEG18 [18] phi from main::@1 to sum [phi:main::@1->sum]
//SEG19 [18] phi (byte) sum::b#3 = (byte) 'm' [phi:main::@1->sum#0] -- vbuaa=vbuc1
lda #'m'
jsr sum
//SEG20 [10] (byte) sum::return#1 ← (byte) sum::return#3 [ sum::return#1 ] ( main:2 [ sum::return#1 ] )
// (byte) sum::return#1 = (byte) sum::return#3 // register copy reg byte a
//SEG21 main::@2
//SEG22 [11] (byte~) main::$1 ← (byte) sum::return#1 [ main::$1 ] ( main:2 [ main::$1 ] )
// (byte~) main::$1 = (byte) sum::return#1 // register copy reg byte a
//SEG23 [12] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa
sta screen+1
//SEG24 [13] call sum param-assignment [ sum::return#3 ] ( main:2 [ sum::return#3 ] )
//SEG25 [18] phi from main::@2 to sum [phi:main::@2->sum]
//SEG26 [18] phi (byte) sum::b#3 = (byte) 'l' [phi:main::@2->sum#0] -- vbuaa=vbuc1
lda #'l'
jsr sum
//SEG27 [14] (byte) sum::return#2 ← (byte) sum::return#3 [ sum::return#2 ] ( main:2 [ sum::return#2 ] )
// (byte) sum::return#2 = (byte) sum::return#3 // register copy reg byte a
//SEG28 main::@3
//SEG29 [15] (byte~) main::$2 ← (byte) sum::return#2 [ main::$2 ] ( main:2 [ main::$2 ] )
// (byte~) main::$2 = (byte) sum::return#2 // register copy reg byte a
//SEG30 [16] *((const byte*) main::screen#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa
sta screen+2
//SEG31 main::@return
//SEG32 [17] return [ ] ( main:2 [ ] )
rts
}
//SEG33 sum
sum: {
//SEG34 [19] (byte) sum::return#3 ← (const byte) main::reverse#0 + (byte) sum::b#3 [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] ) -- vbuaa=vbuc1_plus_vbuaa
clc
adc #main.reverse
//SEG35 sum::@return
//SEG36 [20] return [ sum::return#3 ] ( main:2::sum:5 [ sum::return#3 ] main:2::sum:9 [ sum::return#3 ] main:2::sum:13 [ sum::return#3 ] )
rts
}

View File

@ -0,0 +1,34 @@
(label) @2
(label) @begin
(label) @end
(void()) main()
(byte~) main::$0 reg byte a 4.0
(byte~) main::$1 reg byte a 4.0
(byte~) main::$2 reg byte a 4.0
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@return
(byte) main::reverse
(const byte) main::reverse#0 reverse = (byte/word/signed word/dword/signed dword) 128
(byte*) main::screen
(const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024
(byte()) sum((byte) sum::a , (byte) sum::b)
(label) sum::@return
(byte) sum::a
(byte) sum::b
(byte) sum::b#3 reg byte a 2.0
(byte) sum::return
(byte) sum::return#0 reg byte a 4.0
(byte) sum::return#1 reg byte a 4.0
(byte) sum::return#2 reg byte a 4.0
(byte) sum::return#3 reg byte a 1.6
reg byte a [ sum::b#3 ]
reg byte a [ sum::return#0 ]
reg byte a [ main::$0 ]
reg byte a [ sum::return#1 ]
reg byte a [ main::$1 ]
reg byte a [ sum::return#2 ]
reg byte a [ main::$2 ]
reg byte a [ sum::return#3 ]

View File

@ -132,10 +132,6 @@ Constant (const dword) main::a#0 = 4000000000
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte*) main::SCREEN#0 = ((byte*))1024 Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -117,13 +117,9 @@ Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(fibs#0+0) Consolidated array index constant in *(fibs#0+0)
Consolidated array index constant in *(fibs#0+1) Consolidated array index constant in *(fibs#0+1)
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Consolidated array index constant in assignment *(fibs#0+1 + main::$1) Consolidated array index constant in assignment *(fibs#0+1 + main::$1)
Consolidated array index constant in assignment *(fibs#0+2 + main::$0) Consolidated array index constant in assignment *(fibs#0+2 + main::$0)
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2
Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$1 Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$1

View File

@ -662,11 +662,8 @@ Constant (const byte) plot::i#0 = 0
Constant (const byte) plot::y#0 = 16 Constant (const byte) plot::y#0 = 16
Constant (const byte) plot::x#0 = 0 Constant (const byte) plot::x#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#6
Consolidated constant in assignment plot::line#0 Consolidated constant in assignment plot::line#0
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2
if() condition always true - replacing block destination if(true) goto main::@1 if() condition always true - replacing block destination if(true) goto main::@1
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Removing unused block main::@return Removing unused block main::@return
@ -683,7 +680,6 @@ Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) RASTER#1 (byte*) RASTER#3 Redundant Phi (byte*) RASTER#1 (byte*) RASTER#3
Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#7 Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#7
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2
Not aliassing identity: RASTER#3 RASTER#3 Not aliassing identity: RASTER#3 RASTER#3
Not aliassing identity: SCREEN#7 SCREEN#7 Not aliassing identity: SCREEN#7 SCREEN#7
Not aliassing across scopes: plot::$1 SCREEN#7 Not aliassing across scopes: plot::$1 SCREEN#7
@ -697,11 +693,8 @@ Constant (const byte*) plot::$1 = SCREEN#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) plot::line#0 = plot::$1+plot::$0+12 Constant (const byte*) plot::line#0 = plot::$1+plot::$0+12
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2
Culled Empty Block (label) main::@1 Culled Empty Block (label) main::@1
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::c#0 Inlining constant with var siblings (const byte) main::c#0
Inlining constant with var siblings (const byte) main::c#0 Inlining constant with var siblings (const byte) main::c#0

View File

@ -121,8 +121,6 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -119,10 +119,6 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -183,14 +183,8 @@ Constant (const byte*) SCREEN2#0 = ((byte*))1280
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 100 Constant (const byte) main::j#0 = 100
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
Culled Empty Block (label) main::@3 Culled Empty Block (label) main::@3
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -766,19 +766,7 @@ Constant (const byte*) main::charset4#0 = CHARSET4#0
Constant (const byte) main::bits_gen#2 = main::bits_gen#0+1 Constant (const byte) main::bits_gen#2 = main::bits_gen#0+1
Constant (const byte*) main::$38 = CHARGEN#0+2048 Constant (const byte*) main::$38 = CHARGEN#0+2048
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) main::chargen#10
Multiple usages for variable. Not optimizing sub-constant (byte) main::bits_gen#1
Multiple usages for variable. Not optimizing sub-constant (byte) main::bits_gen#14
Multiple usages for variable. Not optimizing sub-constant (byte*) main::chargen#10
Multiple usages for variable. Not optimizing sub-constant (byte) main::bits_gen#16
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Not culling empty block because it shares successor with its predecessor. (label) main::@7 Not culling empty block because it shares successor with its predecessor. (label) main::@7
Multiple usages for variable. Not optimizing sub-constant (byte*) main::chargen#10
Multiple usages for variable. Not optimizing sub-constant (byte) main::bits_gen#1
Multiple usages for variable. Not optimizing sub-constant (byte) main::bits_gen#14
Multiple usages for variable. Not optimizing sub-constant (byte*) main::chargen#10
Multiple usages for variable. Not optimizing sub-constant (byte) main::bits_gen#16
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::bits_gen#0 Inlining constant with var siblings (const byte) main::bits_gen#0
Inlining constant with var siblings (const byte) main::bits_gen#0 Inlining constant with var siblings (const byte) main::bits_gen#0

View File

@ -5,47 +5,29 @@
jsr main jsr main
main: { main: {
lda #<screen lda #<screen
sta print_spaced.at sta print2.at
lda #>screen lda #>screen
sta print_spaced.at+1 sta print2.at+1
lda #<hello jsr print2
sta print_spaced.msg lda #<screen+$50
lda #>hello sta print2.at
sta print_spaced.msg+1 lda #>screen+$50
jsr print_spaced sta print2.at+1
lda #<screen+$28 jsr print2
sta print_spaced.at
lda #>screen+$28
sta print_spaced.at+1
lda #<hello
sta print_spaced.msg
lda #>hello
sta print_spaced.msg+1
jsr print_spaced
rts rts
hello: .text "hello world!@" hello: .text "hello world!@"
} }
print_spaced: { print2: {
.label j = 6 .label at = 2
.label msg = 2 ldy #0
.label at = 4 ldx #0
lda #0
sta j
tax
b1: b1:
txa lda main.hello,x
tay
lda (msg),y
ldy j
sta (at),y sta (at),y
tya iny
clc iny
adc #2
sta j
inx inx
txa lda main.hello,x
tay
lda (msg),y
cmp #'@' cmp #'@'
bne b1 bne b1
rts rts

View File

@ -9,27 +9,26 @@
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @2 main: scope:[main] from @2
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call print_spaced param-assignment [ ] ( main:2 [ ] ) [5] call print2 param-assignment [ ] ( main:2 [ ] )
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1: scope:[main] from main
[6] phi() [ ] ( main:2 [ ] ) [6] phi() [ ] ( main:2 [ ] )
[7] call print_spaced param-assignment [ ] ( main:2 [ ] ) [7] call print2 param-assignment [ ] ( main:2 [ ] )
to:main::@return to:main::@return
main::@return: scope:[main] from main::@1 main::@return: scope:[main] from main::@1
[8] return [ ] ( main:2 [ ] ) [8] return [ ] ( main:2 [ ] )
to:@return to:@return
print_spaced: scope:[print_spaced] from main main::@1 print2: scope:[print2] from main main::@1
[9] (byte*) print_spaced::at#3 ← phi( main/(const byte*) screen#0 main::@1/(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 ) [ print_spaced::msg#3 print_spaced::at#3 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 ] ) [9] (byte*) print2::at#3 ← phi( main/(const byte*) screen#0 main::@1/(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 ) [ print2::at#3 ] ( main:2::print2:5 [ print2::at#3 ] main:2::print2:7 [ print2::at#3 ] )
[9] (byte*) print_spaced::msg#3 ← phi( main/(const string) main::hello#0 main::@1/(const string) main::hello#0 ) [ print_spaced::msg#3 print_spaced::at#3 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 ] ) to:print2::@1
to:print_spaced::@1 print2::@1: scope:[print2] from print2 print2::@1
print_spaced::@1: scope:[print_spaced] from print_spaced print_spaced::@1 [10] (byte) print2::j#2 ← phi( print2/(byte/signed byte/word/signed word/dword/signed dword) 0 print2::@1/(byte) print2::j#1 ) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] )
[10] (byte) print_spaced::j#2 ← phi( print_spaced/(byte/signed byte/word/signed word/dword/signed dword) 0 print_spaced::@1/(byte) print_spaced::j#1 ) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) [10] (byte) print2::i#2 ← phi( print2/(byte/signed byte/word/signed word/dword/signed dword) 0 print2::@1/(byte) print2::i#1 ) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] )
[10] (byte) print_spaced::i#2 ← phi( print_spaced/(byte/signed byte/word/signed word/dword/signed dword) 0 print_spaced::@1/(byte) print_spaced::i#1 ) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] )
[11] *((byte*) print_spaced::at#3 + (byte) print_spaced::j#2) ← *((byte*) print_spaced::msg#3 + (byte) print_spaced::i#2) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print2::at#3 print2::i#2 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#1 ] )
[12] (byte) print_spaced::j#1 ← (byte) print_spaced::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ) [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] )
[13] (byte) print_spaced::i#1 ← ++ (byte) print_spaced::i#2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] )
[14] if(*((byte*) print_spaced::msg#3 + (byte) print_spaced::i#1)!=(byte) '@') goto print_spaced::@1 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) to:print2::@return
to:print_spaced::@return print2::@return: scope:[print2] from print2::@1
print_spaced::@return: scope:[print_spaced] from print_spaced::@1 [15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] )
[15] return [ ] ( main:2::print_spaced:5 [ ] main:2::print_spaced:7 [ ] )
to:@return to:@return

View File

@ -2,11 +2,11 @@ PARSING src/test/java/dk/camelot64/kickc/test/kc/helloworld2.kc
byte* screen = $400; byte* screen = $400;
void main() { void main() {
byte* hello = "hello world!@"; byte* hello = "hello world!@";
print_spaced(screen, hello); print2(screen, hello);
print_spaced(screen+40, hello); print2(screen+80, hello);
} }
void print_spaced(byte* at, byte* msg) { void print2(byte* at, byte* msg) {
byte j=0; byte j=0;
for(byte i=0; msg[i]!='@'; i++) { for(byte i=0; msg[i]!='@'; i++) {
at[j] = msg[i]; at[j] = msg[i];
@ -14,7 +14,7 @@ void print_spaced(byte* at, byte* msg) {
} }
} }
Adding pre/post-modifier (byte) print_spaced::i ← ++ (byte) print_spaced::i Adding pre/post-modifier (byte) print2::i ← ++ (byte) print2::i
SYMBOLS SYMBOLS
(label) @1 (label) @1
(label) @2 (label) @2
@ -26,16 +26,16 @@ SYMBOLS
(void~) main::$2 (void~) main::$2
(label) main::@return (label) main::@return
(byte*) main::hello (byte*) main::hello
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg) (void()) print2((byte*) print2::at , (byte*) print2::msg)
(byte/signed word/word/dword/signed dword~) print_spaced::$0 (byte/signed word/word/dword/signed dword~) print2::$0
(boolean~) print_spaced::$1 (boolean~) print2::$1
(label) print_spaced::@1 (label) print2::@1
(label) print_spaced::@2 (label) print2::@2
(label) print_spaced::@return (label) print2::@return
(byte*) print_spaced::at (byte*) print2::at
(byte) print_spaced::i (byte) print2::i
(byte) print_spaced::j (byte) print2::j
(byte*) print_spaced::msg (byte*) print2::msg
(byte*) screen (byte*) screen
Promoting word/signed word/dword/signed dword to byte* in screen ← ((byte*)) 1024 Promoting word/signed word/dword/signed dword to byte* in screen ← ((byte*)) 1024
@ -45,30 +45,30 @@ INITIAL CONTROL FLOW GRAPH
to:@1 to:@1
main: scope:[main] from main: scope:[main] from
(byte*) main::hello ← (string) "hello world!@" (byte*) main::hello ← (string) "hello world!@"
(void~) main::$0 ← call print_spaced (byte*) screen (byte*) main::hello (void~) main::$0 ← call print2 (byte*) screen (byte*) main::hello
(byte*~) main::$1 ← (byte*) screen + (byte/signed byte/word/signed word/dword/signed dword) 40 (byte*~) main::$1 ← (byte*) screen + (byte/signed byte/word/signed word/dword/signed dword) 80
(void~) main::$2 ← call print_spaced (byte*~) main::$1 (byte*) main::hello (void~) main::$2 ← call print2 (byte*~) main::$1 (byte*) main::hello
to:main::@return to:main::@return
main::@return: scope:[main] from main main::@return: scope:[main] from main
return return
to:@return to:@return
@1: scope:[] from @begin @1: scope:[] from @begin
to:@2 to:@2
print_spaced: scope:[print_spaced] from print2: scope:[print2] from
(byte) print_spaced::j ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) print2::j ← (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) print_spaced::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) print2::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:print_spaced::@1 to:print2::@1
print_spaced::@1: scope:[print_spaced] from print_spaced print_spaced::@1 print2::@1: scope:[print2] from print2 print2::@1
*((byte*) print_spaced::at + (byte) print_spaced::j) ← *((byte*) print_spaced::msg + (byte) print_spaced::i) *((byte*) print2::at + (byte) print2::j) ← *((byte*) print2::msg + (byte) print2::i)
(byte/signed word/word/dword/signed dword~) print_spaced::$0 ← (byte) print_spaced::j + (byte/signed byte/word/signed word/dword/signed dword) 2 (byte/signed word/word/dword/signed dword~) print2::$0 ← (byte) print2::j + (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) print_spaced::j ← (byte/signed word/word/dword/signed dword~) print_spaced::$0 (byte) print2::j ← (byte/signed word/word/dword/signed dword~) print2::$0
(byte) print_spaced::i ← ++ (byte) print_spaced::i (byte) print2::i ← ++ (byte) print2::i
(boolean~) print_spaced::$1 ← *((byte*) print_spaced::msg + (byte) print_spaced::i) != (byte) '@' (boolean~) print2::$1 ← *((byte*) print2::msg + (byte) print2::i) != (byte) '@'
if((boolean~) print_spaced::$1) goto print_spaced::@1 if((boolean~) print2::$1) goto print2::@1
to:print_spaced::@2 to:print2::@2
print_spaced::@2: scope:[print_spaced] from print_spaced::@1 print2::@2: scope:[print2] from print2::@1
to:print_spaced::@return to:print2::@return
print_spaced::@return: scope:[print_spaced] from print_spaced::@2 print2::@return: scope:[print2] from print2::@2
return return
to:@return to:@return
@2: scope:[] from @1 @2: scope:[] from @1
@ -80,7 +80,7 @@ Eliminating unused variable - keeping the call (void~) main::$0
Eliminating unused variable - keeping the call (void~) main::$2 Eliminating unused variable - keeping the call (void~) main::$2
Creating constant string variable for inline (const string) main::$3 "hello world!@" Creating constant string variable for inline (const string) main::$3 "hello world!@"
Removing empty block @1 Removing empty block @1
Removing empty block print_spaced::@2 Removing empty block print2::@2
PROCEDURE MODIFY VARIABLE ANALYSIS PROCEDURE MODIFY VARIABLE ANALYSIS
Completing Phi functions... Completing Phi functions...
@ -93,42 +93,42 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) screen#1 ← phi( @2/(byte*) screen#3 ) (byte*) screen#1 ← phi( @2/(byte*) screen#3 )
(byte*) main::hello#0 ← (const string) main::$3 (byte*) main::hello#0 ← (const string) main::$3
(byte*) print_spaced::at#0 ← (byte*) screen#1 (byte*) print2::at#0 ← (byte*) screen#1
(byte*) print_spaced::msg#0 ← (byte*) main::hello#0 (byte*) print2::msg#0 ← (byte*) main::hello#0
call print_spaced param-assignment call print2 param-assignment
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1: scope:[main] from main
(byte*) main::hello#1 ← phi( main/(byte*) main::hello#0 ) (byte*) main::hello#1 ← phi( main/(byte*) main::hello#0 )
(byte*) screen#2 ← phi( main/(byte*) screen#1 ) (byte*) screen#2 ← phi( main/(byte*) screen#1 )
(byte*~) main::$1 ← (byte*) screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 40 (byte*~) main::$1 ← (byte*) screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 80
(byte*) print_spaced::at#1 ← (byte*~) main::$1 (byte*) print2::at#1 ← (byte*~) main::$1
(byte*) print_spaced::msg#1 ← (byte*) main::hello#1 (byte*) print2::msg#1 ← (byte*) main::hello#1
call print_spaced param-assignment call print2 param-assignment
to:main::@2 to:main::@2
main::@2: scope:[main] from main::@1 main::@2: scope:[main] from main::@1
to:main::@return to:main::@return
main::@return: scope:[main] from main::@2 main::@return: scope:[main] from main::@2
return return
to:@return to:@return
print_spaced: scope:[print_spaced] from main main::@1 print2: scope:[print2] from main main::@1
(byte*) print_spaced::at#3 ← phi( main/(byte*) print_spaced::at#0 main::@1/(byte*) print_spaced::at#1 ) (byte*) print2::at#3 ← phi( main/(byte*) print2::at#0 main::@1/(byte*) print2::at#1 )
(byte*) print_spaced::msg#3 ← phi( main/(byte*) print_spaced::msg#0 main::@1/(byte*) print_spaced::msg#1 ) (byte*) print2::msg#3 ← phi( main/(byte*) print2::msg#0 main::@1/(byte*) print2::msg#1 )
(byte) print_spaced::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) print2::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) print_spaced::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) print2::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:print_spaced::@1 to:print2::@1
print_spaced::@1: scope:[print_spaced] from print_spaced print_spaced::@1 print2::@1: scope:[print2] from print2 print2::@1
(byte) print_spaced::j#2 ← phi( print_spaced/(byte) print_spaced::j#0 print_spaced::@1/(byte) print_spaced::j#1 ) (byte) print2::j#2 ← phi( print2/(byte) print2::j#0 print2::@1/(byte) print2::j#1 )
(byte*) print_spaced::at#2 ← phi( print_spaced/(byte*) print_spaced::at#3 print_spaced::@1/(byte*) print_spaced::at#2 ) (byte*) print2::at#2 ← phi( print2/(byte*) print2::at#3 print2::@1/(byte*) print2::at#2 )
(byte) print_spaced::i#2 ← phi( print_spaced/(byte) print_spaced::i#0 print_spaced::@1/(byte) print_spaced::i#1 ) (byte) print2::i#2 ← phi( print2/(byte) print2::i#0 print2::@1/(byte) print2::i#1 )
(byte*) print_spaced::msg#2 ← phi( print_spaced/(byte*) print_spaced::msg#3 print_spaced::@1/(byte*) print_spaced::msg#2 ) (byte*) print2::msg#2 ← phi( print2/(byte*) print2::msg#3 print2::@1/(byte*) print2::msg#2 )
*((byte*) print_spaced::at#2 + (byte) print_spaced::j#2) ← *((byte*) print_spaced::msg#2 + (byte) print_spaced::i#2) *((byte*) print2::at#2 + (byte) print2::j#2) ← *((byte*) print2::msg#2 + (byte) print2::i#2)
(byte/signed word/word/dword/signed dword~) print_spaced::$0 ← (byte) print_spaced::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 (byte/signed word/word/dword/signed dword~) print2::$0 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) print_spaced::j#1 ← (byte/signed word/word/dword/signed dword~) print_spaced::$0 (byte) print2::j#1 ← (byte/signed word/word/dword/signed dword~) print2::$0
(byte) print_spaced::i#1 ← ++ (byte) print_spaced::i#2 (byte) print2::i#1 ← ++ (byte) print2::i#2
(boolean~) print_spaced::$1 ← *((byte*) print_spaced::msg#2 + (byte) print_spaced::i#1) != (byte) '@' (boolean~) print2::$1 ← *((byte*) print2::msg#2 + (byte) print2::i#1) != (byte) '@'
if((boolean~) print_spaced::$1) goto print_spaced::@1 if((boolean~) print2::$1) goto print2::@1
to:print_spaced::@return to:print2::@return
print_spaced::@return: scope:[print_spaced] from print_spaced::@1 print2::@return: scope:[print2] from print2::@1
return return
to:@return to:@return
@2: scope:[] from @begin @2: scope:[] from @begin
@ -153,29 +153,29 @@ SYMBOL TABLE SSA
(byte*) main::hello (byte*) main::hello
(byte*) main::hello#0 (byte*) main::hello#0
(byte*) main::hello#1 (byte*) main::hello#1
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg) (void()) print2((byte*) print2::at , (byte*) print2::msg)
(byte/signed word/word/dword/signed dword~) print_spaced::$0 (byte/signed word/word/dword/signed dword~) print2::$0
(boolean~) print_spaced::$1 (boolean~) print2::$1
(label) print_spaced::@1 (label) print2::@1
(label) print_spaced::@return (label) print2::@return
(byte*) print_spaced::at (byte*) print2::at
(byte*) print_spaced::at#0 (byte*) print2::at#0
(byte*) print_spaced::at#1 (byte*) print2::at#1
(byte*) print_spaced::at#2 (byte*) print2::at#2
(byte*) print_spaced::at#3 (byte*) print2::at#3
(byte) print_spaced::i (byte) print2::i
(byte) print_spaced::i#0 (byte) print2::i#0
(byte) print_spaced::i#1 (byte) print2::i#1
(byte) print_spaced::i#2 (byte) print2::i#2
(byte) print_spaced::j (byte) print2::j
(byte) print_spaced::j#0 (byte) print2::j#0
(byte) print_spaced::j#1 (byte) print2::j#1
(byte) print_spaced::j#2 (byte) print2::j#2
(byte*) print_spaced::msg (byte*) print2::msg
(byte*) print_spaced::msg#0 (byte*) print2::msg#0
(byte*) print_spaced::msg#1 (byte*) print2::msg#1
(byte*) print_spaced::msg#2 (byte*) print2::msg#2
(byte*) print_spaced::msg#3 (byte*) print2::msg#3
(byte*) screen (byte*) screen
(byte*) screen#0 (byte*) screen#0
(byte*) screen#1 (byte*) screen#1
@ -187,63 +187,65 @@ Culled Empty Block (label) main::@2
Culled Empty Block (label) @3 Culled Empty Block (label) @3
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: screen#1 screen#3 Not aliassing across scopes: screen#1 screen#3
Not aliassing across scopes: print_spaced::at#0 screen#1 Not aliassing across scopes: print2::at#0 screen#1
Not aliassing across scopes: print_spaced::msg#0 main::hello#0 Not aliassing across scopes: print2::msg#0 main::hello#0
Not aliassing across scopes: print_spaced::msg#1 main::hello#1 Not aliassing across scopes: print2::msg#1 main::hello#1
Not aliassing across scopes: print_spaced::msg#3 print_spaced::msg#0 Not aliassing across scopes: print2::msg#3 print2::msg#0
Not aliassing across scopes: print_spaced::at#3 print_spaced::at#0 Not aliassing across scopes: print2::at#3 print2::at#0
Alias (byte*) screen#1 = (byte*) screen#2 Alias (byte*) screen#1 = (byte*) screen#2
Alias (byte*) main::hello#0 = (byte*) main::hello#1 Alias (byte*) main::hello#0 = (byte*) main::hello#1
Alias (byte*) print_spaced::at#1 = (byte*~) main::$1 Alias (byte*) print2::at#1 = (byte*~) main::$1
Alias (byte) print_spaced::j#1 = (byte/signed word/word/dword/signed dword~) print_spaced::$0 Alias (byte) print2::j#1 = (byte/signed word/word/dword/signed dword~) print2::$0
Alias (byte*) screen#0 = (byte*) screen#3 Alias (byte*) screen#0 = (byte*) screen#3
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
Not aliassing across scopes: screen#1 screen#0 Not aliassing across scopes: screen#1 screen#0
Not aliassing across scopes: print_spaced::at#0 screen#1 Not aliassing across scopes: print2::at#0 screen#1
Not aliassing across scopes: print_spaced::msg#0 main::hello#0 Not aliassing across scopes: print2::msg#0 main::hello#0
Not aliassing across scopes: print_spaced::msg#1 main::hello#0 Not aliassing across scopes: print2::msg#1 main::hello#0
Not aliassing across scopes: print_spaced::msg#3 print_spaced::msg#0 Not aliassing across scopes: print2::msg#3 print2::msg#0
Not aliassing across scopes: print_spaced::at#3 print_spaced::at#0 Not aliassing across scopes: print2::at#3 print2::at#0
Self Phi Eliminated (byte*) print_spaced::msg#2 Self Phi Eliminated (byte*) print2::msg#2
Self Phi Eliminated (byte*) print_spaced::at#2 Self Phi Eliminated (byte*) print2::at#2
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) screen#1 (byte*) screen#0 Redundant Phi (byte*) screen#1 (byte*) screen#0
Redundant Phi (byte*) print_spaced::msg#2 (byte*) print_spaced::msg#3 Redundant Phi (byte*) print2::msg#2 (byte*) print2::msg#3
Redundant Phi (byte*) print_spaced::at#2 (byte*) print_spaced::at#3 Redundant Phi (byte*) print2::at#2 (byte*) print2::at#3
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Simple Condition (boolean~) print_spaced::$1 if(*((byte*) print_spaced::msg#3 + (byte) print_spaced::i#1)!=(byte) '@') goto print_spaced::@1 Simple Condition (boolean~) print2::$1 if(*((byte*) print2::msg#3 + (byte) print2::i#1)!=(byte) '@') goto print2::@1
Succesful SSA optimization Pass2ConditionalJumpSimplification Succesful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) screen#0 = ((byte*))1024 Constant (const byte*) screen#0 = ((byte*))1024
Constant (const string) main::hello#0 = main::$3 Constant (const string) main::hello#0 = main::$3
Constant (const byte) print_spaced::j#0 = 0 Constant (const byte) print2::j#0 = 0
Constant (const byte) print_spaced::i#0 = 0 Constant (const byte) print2::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_spaced::at#0 = screen#0 Constant (const byte*) print2::at#0 = screen#0
Constant (const string) print_spaced::msg#0 = main::hello#0 Constant (const string) print2::msg#0 = main::hello#0
Constant (const byte*) print_spaced::at#1 = screen#0+40 Constant (const byte*) print2::at#1 = screen#0+80
Constant (const string) print_spaced::msg#1 = main::hello#0 Constant (const string) print2::msg#1 = main::hello#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) print_spaced::j#0 Inlining constant with var siblings (const byte) print2::j#0
Inlining constant with var siblings (const byte) print_spaced::j#0 Inlining constant with var siblings (const byte) print2::j#0
Inlining constant with var siblings (const byte) print_spaced::i#0 Inlining constant with var siblings (const byte) print2::i#0
Inlining constant with var siblings (const byte) print_spaced::i#0 Inlining constant with var siblings (const byte) print2::i#0
Inlining constant with var siblings (const byte*) print_spaced::at#0 Inlining constant with var siblings (const byte*) print2::at#0
Inlining constant with different constant siblings (const byte*) print_spaced::at#0 Inlining constant with different constant siblings (const byte*) print2::at#0
Inlining constant with var siblings (const string) print_spaced::msg#0 Inlining constant with var siblings (const string) print2::msg#0
Inlining constant with var siblings (const byte*) print_spaced::at#1 Inlining constant with var siblings (const byte*) print2::at#1
Inlining constant with var siblings (const string) print_spaced::msg#1 Inlining constant with var siblings (const string) print2::msg#1
Constant inlined print_spaced::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print2::msg#1 = (const string) main::hello#0
Constant inlined print_spaced::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print2::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_spaced::at#0 = (const byte*) screen#0 Constant inlined print2::msg#0 = (const string) main::hello#0
Constant inlined print_spaced::at#1 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined print2::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print2::at#1 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80
Constant inlined main::$3 = (const string) main::hello#0 Constant inlined main::$3 = (const string) main::hello#0
Constant inlined print_spaced::msg#1 = (const string) main::hello#0 Constant inlined print2::at#0 = (const byte*) screen#0
Constant inlined print_spaced::msg#0 = (const string) main::hello#0
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @2 @end main main::@1 main::@return print_spaced print_spaced::@1 print_spaced::@return Identical Phi Values (byte*) print2::msg#3 (const string) main::hello#0
Added new block during phi lifting print_spaced::@3(between print_spaced::@1 and print_spaced::@1) Succesful SSA optimization Pass2IdenticalPhiElimination
Block Sequence Planned @begin @2 @end main main::@1 main::@return print_spaced print_spaced::@1 print_spaced::@return print_spaced::@3 Block Sequence Planned @begin @2 @end main main::@1 main::@return print2 print2::@1 print2::@return
Added new block during phi lifting print2::@3(between print2::@1 and print2::@1)
Block Sequence Planned @begin @2 @end main main::@1 main::@return print2 print2::@1 print2::@return print2::@3
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2 Adding NOP phi() at start of @2
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
@ -251,7 +253,7 @@ Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@1
CALL GRAPH CALL GRAPH
Calls in [] to main:2 Calls in [] to main:2
Calls in [main] to print_spaced:5 print_spaced:7 Calls in [main] to print2:5 print2:7
Propagating live ranges... Propagating live ranges...
Propagating live ranges... Propagating live ranges...
@ -260,12 +262,12 @@ Propagating live ranges...
Propagating live ranges... Propagating live ranges...
Propagating live ranges... Propagating live ranges...
Propagating live ranges... Propagating live ranges...
Created 4 initial phi equivalence classes Created 3 initial phi equivalence classes
Coalesced [16] print_spaced::i#3 ← print_spaced::i#1 Coalesced [16] print2::i#3 ← print2::i#1
Coalesced [17] print_spaced::j#3 ← print_spaced::j#1 Coalesced [17] print2::j#3 ← print2::j#1
Coalesced down to 4 phi equivalence classes Coalesced down to 3 phi equivalence classes
Culled Empty Block (label) print_spaced::@3 Culled Empty Block (label) print2::@3
Block Sequence Planned @begin @2 @end main main::@1 main::@return print_spaced print_spaced::@1 print_spaced::@return Block Sequence Planned @begin @2 @end main main::@1 main::@return print2 print2::@1 print2::@return
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @2 Adding NOP phi() at start of @2
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
@ -289,29 +291,28 @@ FINAL CONTROL FLOW GRAPH
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @2 main: scope:[main] from @2
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call print_spaced param-assignment [ ] ( main:2 [ ] ) [5] call print2 param-assignment [ ] ( main:2 [ ] )
to:main::@1 to:main::@1
main::@1: scope:[main] from main main::@1: scope:[main] from main
[6] phi() [ ] ( main:2 [ ] ) [6] phi() [ ] ( main:2 [ ] )
[7] call print_spaced param-assignment [ ] ( main:2 [ ] ) [7] call print2 param-assignment [ ] ( main:2 [ ] )
to:main::@return to:main::@return
main::@return: scope:[main] from main::@1 main::@return: scope:[main] from main::@1
[8] return [ ] ( main:2 [ ] ) [8] return [ ] ( main:2 [ ] )
to:@return to:@return
print_spaced: scope:[print_spaced] from main main::@1 print2: scope:[print2] from main main::@1
[9] (byte*) print_spaced::at#3 ← phi( main/(const byte*) screen#0 main::@1/(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 ) [ print_spaced::msg#3 print_spaced::at#3 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 ] ) [9] (byte*) print2::at#3 ← phi( main/(const byte*) screen#0 main::@1/(const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 ) [ print2::at#3 ] ( main:2::print2:5 [ print2::at#3 ] main:2::print2:7 [ print2::at#3 ] )
[9] (byte*) print_spaced::msg#3 ← phi( main/(const string) main::hello#0 main::@1/(const string) main::hello#0 ) [ print_spaced::msg#3 print_spaced::at#3 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 ] ) to:print2::@1
to:print_spaced::@1 print2::@1: scope:[print2] from print2 print2::@1
print_spaced::@1: scope:[print_spaced] from print_spaced print_spaced::@1 [10] (byte) print2::j#2 ← phi( print2/(byte/signed byte/word/signed word/dword/signed dword) 0 print2::@1/(byte) print2::j#1 ) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] )
[10] (byte) print_spaced::j#2 ← phi( print_spaced/(byte/signed byte/word/signed word/dword/signed dword) 0 print_spaced::@1/(byte) print_spaced::j#1 ) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) [10] (byte) print2::i#2 ← phi( print2/(byte/signed byte/word/signed word/dword/signed dword) 0 print2::@1/(byte) print2::i#1 ) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] )
[10] (byte) print_spaced::i#2 ← phi( print_spaced/(byte/signed byte/word/signed word/dword/signed dword) 0 print_spaced::@1/(byte) print_spaced::i#1 ) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] )
[11] *((byte*) print_spaced::at#3 + (byte) print_spaced::j#2) ← *((byte*) print_spaced::msg#3 + (byte) print_spaced::i#2) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print2::at#3 print2::i#2 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#1 ] )
[12] (byte) print_spaced::j#1 ← (byte) print_spaced::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ) [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] )
[13] (byte) print_spaced::i#1 ← ++ (byte) print_spaced::i#2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] )
[14] if(*((byte*) print_spaced::msg#3 + (byte) print_spaced::i#1)!=(byte) '@') goto print_spaced::@1 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) to:print2::@return
to:print_spaced::@return print2::@return: scope:[print2] from print2::@1
print_spaced::@return: scope:[print_spaced] from print_spaced::@1 [15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] )
[15] return [ ] ( main:2::print_spaced:5 [ ] main:2::print_spaced:7 [ ] )
to:@return to:@return
DOMINATORS DOMINATORS
@ -321,53 +322,49 @@ DOMINATORS
main dominated by @2 @begin main main dominated by @2 @begin main
main::@1 dominated by @2 @begin main::@1 main main::@1 dominated by @2 @begin main::@1 main
main::@return dominated by main::@return @2 @begin main::@1 main main::@return dominated by main::@return @2 @begin main::@1 main
print_spaced dominated by @2 @begin print_spaced main print2 dominated by @2 @begin print2 main
print_spaced::@1 dominated by @2 @begin print_spaced print_spaced::@1 main print2::@1 dominated by @2 @begin print2 print2::@1 main
print_spaced::@return dominated by @2 @begin print_spaced print_spaced::@1 print_spaced::@return main print2::@return dominated by @2 @begin print2 print2::@1 main print2::@return
NATURAL LOOPS NATURAL LOOPS
Found back edge: Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: null Found back edge: Loop head: print2::@1 tails: print2::@1 blocks: null
Populated: Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: print_spaced::@1 Populated: Loop head: print2::@1 tails: print2::@1 blocks: print2::@1
Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: print_spaced::@1 Loop head: print2::@1 tails: print2::@1 blocks: print2::@1
NATURAL LOOPS WITH DEPTH NATURAL LOOPS WITH DEPTH
Found 0 loops in scope [] Found 0 loops in scope []
Found 0 loops in scope [main] Found 0 loops in scope [main]
Found 1 loops in scope [print_spaced] Found 1 loops in scope [print2]
Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: print_spaced::@1 Loop head: print2::@1 tails: print2::@1 blocks: print2::@1
Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: print_spaced::@1 depth: 1 Loop head: print2::@1 tails: print2::@1 blocks: print2::@1 depth: 1
VARIABLE REGISTER WEIGHTS VARIABLE REGISTER WEIGHTS
(void()) main() (void()) main()
(byte*) main::hello (byte*) main::hello
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg) (void()) print2((byte*) print2::at , (byte*) print2::msg)
(byte*) print_spaced::at (byte*) print2::at
(byte*) print_spaced::at#3 1.8333333333333333 (byte*) print2::at#3 1.8333333333333333
(byte) print_spaced::i (byte) print2::i
(byte) print_spaced::i#1 16.5 (byte) print2::i#1 16.5
(byte) print_spaced::i#2 11.0 (byte) print2::i#2 11.0
(byte) print_spaced::j (byte) print2::j
(byte) print_spaced::j#1 7.333333333333333 (byte) print2::j#1 7.333333333333333
(byte) print_spaced::j#2 16.5 (byte) print2::j#2 16.5
(byte*) print_spaced::msg (byte*) print2::msg
(byte*) print_spaced::msg#3 3.6666666666666665
(byte*) screen (byte*) screen
Initial phi equivalence classes Initial phi equivalence classes
[ print_spaced::msg#3 ] [ print2::at#3 ]
[ print_spaced::at#3 ] [ print2::i#2 print2::i#1 ]
[ print_spaced::i#2 print_spaced::i#1 ] [ print2::j#2 print2::j#1 ]
[ print_spaced::j#2 print_spaced::j#1 ]
Complete equivalence classes Complete equivalence classes
[ print_spaced::msg#3 ] [ print2::at#3 ]
[ print_spaced::at#3 ] [ print2::i#2 print2::i#1 ]
[ print_spaced::i#2 print_spaced::i#1 ] [ print2::j#2 print2::j#1 ]
[ print_spaced::j#2 print_spaced::j#1 ] Allocated zp ZP_WORD:2 [ print2::at#3 ]
Allocated zp ZP_WORD:2 [ print_spaced::msg#3 ] Allocated zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ]
Allocated zp ZP_WORD:4 [ print_spaced::at#3 ] Allocated zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ]
Allocated zp ZP_BYTE:6 [ print_spaced::i#2 print_spaced::i#1 ]
Allocated zp ZP_BYTE:7 [ print_spaced::j#2 print_spaced::j#1 ]
INITIAL ASM INITIAL ASM
//SEG0 Basic Upstart //SEG0 Basic Upstart
@ -394,126 +391,100 @@ bend_from_b2:
bend: bend:
//SEG9 main //SEG9 main
main: { main: {
//SEG10 [5] call print_spaced param-assignment [ ] ( main:2 [ ] ) //SEG10 [5] call print2 param-assignment [ ] ( main:2 [ ] )
//SEG11 [9] phi from main to print_spaced [phi:main->print_spaced] //SEG11 [9] phi from main to print2 [phi:main->print2]
print_spaced_from_main: print2_from_main:
//SEG12 [9] phi (byte*) print_spaced::at#3 = (const byte*) screen#0 [phi:main->print_spaced#0] -- pbuz1=pbuc1 //SEG12 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1
lda #<screen lda #<screen
sta print_spaced.at sta print2.at
lda #>screen lda #>screen
sta print_spaced.at+1 sta print2.at+1
//SEG13 [9] phi (byte*) print_spaced::msg#3 = (const string) main::hello#0 [phi:main->print_spaced#1] -- pbuz1=pbuc1 jsr print2
lda #<hello //SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
sta print_spaced.msg
lda #>hello
sta print_spaced.msg+1
jsr print_spaced
//SEG14 [6] phi from main to main::@1 [phi:main->main::@1]
b1_from_main: b1_from_main:
jmp b1 jmp b1
//SEG15 main::@1 //SEG14 main::@1
b1: b1:
//SEG16 [7] call print_spaced param-assignment [ ] ( main:2 [ ] ) //SEG15 [7] call print2 param-assignment [ ] ( main:2 [ ] )
//SEG17 [9] phi from main::@1 to print_spaced [phi:main::@1->print_spaced] //SEG16 [9] phi from main::@1 to print2 [phi:main::@1->print2]
print_spaced_from_b1: print2_from_b1:
//SEG18 [9] phi (byte*) print_spaced::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:main::@1->print_spaced#0] -- pbuz1=pbuc1 //SEG17 [9] phi (byte*) print2::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 [phi:main::@1->print2#0] -- pbuz1=pbuc1
lda #<screen+$28 lda #<screen+$50
sta print_spaced.at sta print2.at
lda #>screen+$28 lda #>screen+$50
sta print_spaced.at+1 sta print2.at+1
//SEG19 [9] phi (byte*) print_spaced::msg#3 = (const string) main::hello#0 [phi:main::@1->print_spaced#1] -- pbuz1=pbuc1 jsr print2
lda #<hello
sta print_spaced.msg
lda #>hello
sta print_spaced.msg+1
jsr print_spaced
jmp breturn jmp breturn
//SEG20 main::@return //SEG18 main::@return
breturn: breturn:
//SEG21 [8] return [ ] ( main:2 [ ] ) //SEG19 [8] return [ ] ( main:2 [ ] )
rts rts
hello: .text "hello world!@" hello: .text "hello world!@"
} }
//SEG22 print_spaced //SEG20 print2
print_spaced: { print2: {
.label j = 7 .label j = 5
.label i = 6 .label i = 4
.label msg = 2 .label at = 2
.label at = 4 //SEG21 [10] phi from print2 to print2::@1 [phi:print2->print2::@1]
//SEG23 [10] phi from print_spaced to print_spaced::@1 [phi:print_spaced->print_spaced::@1] b1_from_print2:
b1_from_print_spaced: //SEG22 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuz1=vbuc1
//SEG24 [10] phi (byte) print_spaced::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print_spaced->print_spaced::@1#0] -- vbuz1=vbuc1
lda #0 lda #0
sta j sta j
//SEG25 [10] phi (byte) print_spaced::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print_spaced->print_spaced::@1#1] -- vbuz1=vbuc1 //SEG23 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuz1=vbuc1
lda #0 lda #0
sta i sta i
jmp b1 jmp b1
//SEG26 [10] phi from print_spaced::@1 to print_spaced::@1 [phi:print_spaced::@1->print_spaced::@1] //SEG24 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1]
b1_from_b1: b1_from_b1:
//SEG27 [10] phi (byte) print_spaced::j#2 = (byte) print_spaced::j#1 [phi:print_spaced::@1->print_spaced::@1#0] -- register_copy //SEG25 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy
//SEG28 [10] phi (byte) print_spaced::i#2 = (byte) print_spaced::i#1 [phi:print_spaced::@1->print_spaced::@1#1] -- register_copy //SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy
jmp b1 jmp b1
//SEG29 print_spaced::@1 //SEG27 print2::@1
b1: b1:
//SEG30 [11] *((byte*) print_spaced::at#3 + (byte) print_spaced::j#2) ← *((byte*) print_spaced::msg#3 + (byte) print_spaced::i#2) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) -- pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz4 //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3
ldy j
sty $ff
ldy i ldy i
lda (msg),y lda main.hello,y
ldy $ff ldy j
sta (at),y sta (at),y
//SEG31 [12] (byte) print_spaced::j#1 ← (byte) print_spaced::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ) -- vbuz1=vbuz1_plus_2 //SEG29 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print2::at#3 print2::i#2 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#1 ] ) -- vbuz1=vbuz1_plus_2
lda j lda j
clc clc
adc #2 adc #2
sta j sta j
//SEG32 [13] (byte) print_spaced::i#1 ← ++ (byte) print_spaced::i#2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) -- vbuz1=_inc_vbuz1 //SEG30 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- vbuz1=_inc_vbuz1
inc i inc i
//SEG33 [14] if(*((byte*) print_spaced::msg#3 + (byte) print_spaced::i#1)!=(byte) '@') goto print_spaced::@1 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) -- pbuz1_derefidx_vbuz2_neq_vbuc1_then_la1 //SEG31 [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
ldy i ldy i
lda (msg),y lda main.hello,y
cmp #'@' cmp #'@'
bne b1_from_b1 bne b1_from_b1
jmp breturn jmp breturn
//SEG34 print_spaced::@return //SEG32 print2::@return
breturn: breturn:
//SEG35 [15] return [ ] ( main:2::print_spaced:5 [ ] main:2::print_spaced:7 [ ] ) //SEG33 [15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] )
rts rts
} }
REGISTER UPLIFT POTENTIAL REGISTERS REGISTER UPLIFT POTENTIAL REGISTERS
Potential register analysis [11] *(print_spaced::at#3 + print_spaced::j#2) ← *(print_spaced::msg#3 + print_spaced::i#2) missing fragment pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuaa allocation: zp ZP_WORD:2 [ print_spaced::msg#3 ] zp ZP_WORD:4 [ print_spaced::at#3 ] reg byte x [ print_spaced::j#2 print_spaced::j#1 ] reg byte a [ print_spaced::i#2 print_spaced::i#1 ] Statement [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) always clobbers reg byte a
Potential register analysis [11] *(print_spaced::at#3 + print_spaced::j#2) ← *(print_spaced::msg#3 + print_spaced::i#2) missing fragment pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy allocation: zp ZP_WORD:2 [ print_spaced::msg#3 ] zp ZP_WORD:4 [ print_spaced::at#3 ] reg byte a [ print_spaced::j#2 print_spaced::j#1 ] reg byte y [ print_spaced::i#2 print_spaced::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ]
Potential register analysis [11] *(print_spaced::at#3 + print_spaced::j#2) ← *(print_spaced::msg#3 + print_spaced::i#2) missing fragment pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuyy allocation: zp ZP_WORD:2 [ print_spaced::msg#3 ] zp ZP_WORD:4 [ print_spaced::at#3 ] reg byte x [ print_spaced::j#2 print_spaced::j#1 ] reg byte y [ print_spaced::i#2 print_spaced::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ]
MISSING FRAGMENTS Statement [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) always clobbers reg byte a
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuaa Statement [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) always clobbers reg byte a
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy Statement [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) always clobbers reg byte a
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuyy Potential registers zp ZP_WORD:2 [ print2::at#3 ] : zp ZP_WORD:2 ,
Statement [11] *((byte*) print_spaced::at#3 + (byte) print_spaced::j#2) ← *((byte*) print_spaced::msg#3 + (byte) print_spaced::i#2) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) always clobbers reg byte a reg byte y Potential registers zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y ,
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ print_spaced::i#2 print_spaced::i#1 ] Potential registers zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y ,
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ print_spaced::i#2 print_spaced::i#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ print_spaced::j#2 print_spaced::j#1 ]
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:7 [ print_spaced::j#2 print_spaced::j#1 ]
Statement [14] if(*((byte*) print_spaced::msg#3 + (byte) print_spaced::i#1)!=(byte) '@') goto print_spaced::@1 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) always clobbers reg byte a reg byte y
Statement [11] *((byte*) print_spaced::at#3 + (byte) print_spaced::j#2) ← *((byte*) print_spaced::msg#3 + (byte) print_spaced::i#2) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) always clobbers reg byte a reg byte y
Statement [14] if(*((byte*) print_spaced::msg#3 + (byte) print_spaced::i#1)!=(byte) '@') goto print_spaced::@1 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) always clobbers reg byte a reg byte y
Potential registers zp ZP_WORD:2 [ print_spaced::msg#3 ] : zp ZP_WORD:2 ,
Potential registers zp ZP_WORD:4 [ print_spaced::at#3 ] : zp ZP_WORD:4 ,
Potential registers zp ZP_BYTE:6 [ print_spaced::i#2 print_spaced::i#1 ] : zp ZP_BYTE:6 , reg byte x ,
Potential registers zp ZP_BYTE:7 [ print_spaced::j#2 print_spaced::j#1 ] : zp ZP_BYTE:7 , reg byte x ,
REGISTER UPLIFT SCOPES REGISTER UPLIFT SCOPES
Uplift Scope [print_spaced] 27.5: zp ZP_BYTE:6 [ print_spaced::i#2 print_spaced::i#1 ] 23.83: zp ZP_BYTE:7 [ print_spaced::j#2 print_spaced::j#1 ] 3.67: zp ZP_WORD:2 [ print_spaced::msg#3 ] 1.83: zp ZP_WORD:4 [ print_spaced::at#3 ] Uplift Scope [print2] 27.5: zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ] 23.83: zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ] 1.83: zp ZP_WORD:2 [ print2::at#3 ]
Uplift Scope [main] Uplift Scope [main]
Uplift Scope [] Uplift Scope []
Uplifting [print_spaced] best 687 combination reg byte x [ print_spaced::i#2 print_spaced::i#1 ] zp ZP_BYTE:7 [ print_spaced::j#2 print_spaced::j#1 ] zp ZP_WORD:2 [ print_spaced::msg#3 ] zp ZP_WORD:4 [ print_spaced::at#3 ] Uplifting [print2] best 447 combination reg byte x [ print2::i#2 print2::i#1 ] reg byte y [ print2::j#2 print2::j#1 ] zp ZP_WORD:2 [ print2::at#3 ]
Uplifting [main] best 687 combination Uplifting [main] best 447 combination
Uplifting [] best 687 combination Uplifting [] best 447 combination
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ print_spaced::j#2 print_spaced::j#1 ]
Uplifting [print_spaced] best 687 combination zp ZP_BYTE:7 [ print_spaced::j#2 print_spaced::j#1 ]
Allocated (was zp ZP_BYTE:7) zp ZP_BYTE:6 [ print_spaced::j#2 print_spaced::j#1 ]
ASSEMBLER BEFORE OPTIMIZATION ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart //SEG0 Basic Upstart
@ -540,89 +511,69 @@ bend_from_b2:
bend: bend:
//SEG9 main //SEG9 main
main: { main: {
//SEG10 [5] call print_spaced param-assignment [ ] ( main:2 [ ] ) //SEG10 [5] call print2 param-assignment [ ] ( main:2 [ ] )
//SEG11 [9] phi from main to print_spaced [phi:main->print_spaced] //SEG11 [9] phi from main to print2 [phi:main->print2]
print_spaced_from_main: print2_from_main:
//SEG12 [9] phi (byte*) print_spaced::at#3 = (const byte*) screen#0 [phi:main->print_spaced#0] -- pbuz1=pbuc1 //SEG12 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1
lda #<screen lda #<screen
sta print_spaced.at sta print2.at
lda #>screen lda #>screen
sta print_spaced.at+1 sta print2.at+1
//SEG13 [9] phi (byte*) print_spaced::msg#3 = (const string) main::hello#0 [phi:main->print_spaced#1] -- pbuz1=pbuc1 jsr print2
lda #<hello //SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
sta print_spaced.msg
lda #>hello
sta print_spaced.msg+1
jsr print_spaced
//SEG14 [6] phi from main to main::@1 [phi:main->main::@1]
b1_from_main: b1_from_main:
jmp b1 jmp b1
//SEG15 main::@1 //SEG14 main::@1
b1: b1:
//SEG16 [7] call print_spaced param-assignment [ ] ( main:2 [ ] ) //SEG15 [7] call print2 param-assignment [ ] ( main:2 [ ] )
//SEG17 [9] phi from main::@1 to print_spaced [phi:main::@1->print_spaced] //SEG16 [9] phi from main::@1 to print2 [phi:main::@1->print2]
print_spaced_from_b1: print2_from_b1:
//SEG18 [9] phi (byte*) print_spaced::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:main::@1->print_spaced#0] -- pbuz1=pbuc1 //SEG17 [9] phi (byte*) print2::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 [phi:main::@1->print2#0] -- pbuz1=pbuc1
lda #<screen+$28 lda #<screen+$50
sta print_spaced.at sta print2.at
lda #>screen+$28 lda #>screen+$50
sta print_spaced.at+1 sta print2.at+1
//SEG19 [9] phi (byte*) print_spaced::msg#3 = (const string) main::hello#0 [phi:main::@1->print_spaced#1] -- pbuz1=pbuc1 jsr print2
lda #<hello
sta print_spaced.msg
lda #>hello
sta print_spaced.msg+1
jsr print_spaced
jmp breturn jmp breturn
//SEG20 main::@return //SEG18 main::@return
breturn: breturn:
//SEG21 [8] return [ ] ( main:2 [ ] ) //SEG19 [8] return [ ] ( main:2 [ ] )
rts rts
hello: .text "hello world!@" hello: .text "hello world!@"
} }
//SEG22 print_spaced //SEG20 print2
print_spaced: { print2: {
.label j = 6 .label at = 2
.label msg = 2 //SEG21 [10] phi from print2 to print2::@1 [phi:print2->print2::@1]
.label at = 4 b1_from_print2:
//SEG23 [10] phi from print_spaced to print_spaced::@1 [phi:print_spaced->print_spaced::@1] //SEG22 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuyy=vbuc1
b1_from_print_spaced: ldy #0
//SEG24 [10] phi (byte) print_spaced::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print_spaced->print_spaced::@1#0] -- vbuz1=vbuc1 //SEG23 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuxx=vbuc1
lda #0
sta j
//SEG25 [10] phi (byte) print_spaced::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print_spaced->print_spaced::@1#1] -- vbuxx=vbuc1
ldx #0 ldx #0
jmp b1 jmp b1
//SEG26 [10] phi from print_spaced::@1 to print_spaced::@1 [phi:print_spaced::@1->print_spaced::@1] //SEG24 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1]
b1_from_b1: b1_from_b1:
//SEG27 [10] phi (byte) print_spaced::j#2 = (byte) print_spaced::j#1 [phi:print_spaced::@1->print_spaced::@1#0] -- register_copy //SEG25 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy
//SEG28 [10] phi (byte) print_spaced::i#2 = (byte) print_spaced::i#1 [phi:print_spaced::@1->print_spaced::@1#1] -- register_copy //SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy
jmp b1 jmp b1
//SEG29 print_spaced::@1 //SEG27 print2::@1
b1: b1:
//SEG30 [11] *((byte*) print_spaced::at#3 + (byte) print_spaced::j#2) ← *((byte*) print_spaced::msg#3 + (byte) print_spaced::i#2) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) -- pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuxx //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx
txa lda main.hello,x
tay
lda (msg),y
ldy j
sta (at),y sta (at),y
//SEG31 [12] (byte) print_spaced::j#1 ← (byte) print_spaced::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ) -- vbuz1=vbuz1_plus_2 //SEG29 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print2::at#3 print2::i#2 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#1 ] ) -- vbuyy=vbuyy_plus_2
lda j iny
clc iny
adc #2 //SEG30 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- vbuxx=_inc_vbuxx
sta j
//SEG32 [13] (byte) print_spaced::i#1 ← ++ (byte) print_spaced::i#2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) -- vbuxx=_inc_vbuxx
inx inx
//SEG33 [14] if(*((byte*) print_spaced::msg#3 + (byte) print_spaced::i#1)!=(byte) '@') goto print_spaced::@1 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) -- pbuz1_derefidx_vbuxx_neq_vbuc1_then_la1 //SEG31 [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1
txa lda main.hello,x
tay
lda (msg),y
cmp #'@' cmp #'@'
bne b1_from_b1 bne b1_from_b1
jmp breturn jmp breturn
//SEG34 print_spaced::@return //SEG32 print2::@return
breturn: breturn:
//SEG35 [15] return [ ] ( main:2::print_spaced:5 [ ] main:2::print_spaced:7 [ ] ) //SEG33 [15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] )
rts rts
} }
@ -634,23 +585,21 @@ Removing instruction jmp breturn
Removing instruction jmp b1 Removing instruction jmp b1
Removing instruction jmp breturn Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination Succesful ASM optimization Pass5NextJumpElimination
Replacing instruction ldx #0 with TAX
Replacing instruction lda j with TYA
Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1
Removing instruction bbegin: Removing instruction bbegin:
Removing instruction b2_from_bbegin: Removing instruction b2_from_bbegin:
Removing instruction main_from_b2: Removing instruction main_from_b2:
Removing instruction bend_from_b2: Removing instruction bend_from_b2:
Removing instruction b1_from_main: Removing instruction b1_from_main:
Removing instruction print_spaced_from_b1: Removing instruction print2_from_b1:
Removing instruction b1_from_b1: Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b2: Removing instruction b2:
Removing instruction bend: Removing instruction bend:
Removing instruction print_spaced_from_main: Removing instruction print2_from_main:
Removing instruction b1: Removing instruction b1:
Removing instruction breturn: Removing instruction breturn:
Removing instruction b1_from_print_spaced: Removing instruction b1_from_print2:
Removing instruction breturn: Removing instruction breturn:
Succesful ASM optimization Pass5UnusedLabelElimination Succesful ASM optimization Pass5UnusedLabelElimination
Removing instruction jmp b1 Removing instruction jmp b1
@ -665,30 +614,28 @@ FINAL SYMBOL TABLE
(label) main::@return (label) main::@return
(byte*) main::hello (byte*) main::hello
(const string) main::hello#0 hello = (string) "hello world!@" (const string) main::hello#0 hello = (string) "hello world!@"
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg) (void()) print2((byte*) print2::at , (byte*) print2::msg)
(label) print_spaced::@1 (label) print2::@1
(label) print_spaced::@return (label) print2::@return
(byte*) print_spaced::at (byte*) print2::at
(byte*) print_spaced::at#3 at zp ZP_WORD:4 1.8333333333333333 (byte*) print2::at#3 at zp ZP_WORD:2 1.8333333333333333
(byte) print_spaced::i (byte) print2::i
(byte) print_spaced::i#1 reg byte x 16.5 (byte) print2::i#1 reg byte x 16.5
(byte) print_spaced::i#2 reg byte x 11.0 (byte) print2::i#2 reg byte x 11.0
(byte) print_spaced::j (byte) print2::j
(byte) print_spaced::j#1 j zp ZP_BYTE:6 7.333333333333333 (byte) print2::j#1 reg byte y 7.333333333333333
(byte) print_spaced::j#2 j zp ZP_BYTE:6 16.5 (byte) print2::j#2 reg byte y 16.5
(byte*) print_spaced::msg (byte*) print2::msg
(byte*) print_spaced::msg#3 msg zp ZP_WORD:2 3.6666666666666665
(byte*) screen (byte*) screen
(const byte*) screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024 (const byte*) screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024
zp ZP_WORD:2 [ print_spaced::msg#3 ] zp ZP_WORD:2 [ print2::at#3 ]
zp ZP_WORD:4 [ print_spaced::at#3 ] reg byte x [ print2::i#2 print2::i#1 ]
reg byte x [ print_spaced::i#2 print_spaced::i#1 ] reg byte y [ print2::j#2 print2::j#1 ]
zp ZP_BYTE:6 [ print_spaced::j#2 print_spaced::j#1 ]
FINAL ASSEMBLER FINAL ASSEMBLER
Score: 575 Score: 345
//SEG0 Basic Upstart //SEG0 Basic Upstart
.pc = $801 "Basic" .pc = $801 "Basic"
@ -706,76 +653,56 @@ Score: 575
//SEG8 @end //SEG8 @end
//SEG9 main //SEG9 main
main: { main: {
//SEG10 [5] call print_spaced param-assignment [ ] ( main:2 [ ] ) //SEG10 [5] call print2 param-assignment [ ] ( main:2 [ ] )
//SEG11 [9] phi from main to print_spaced [phi:main->print_spaced] //SEG11 [9] phi from main to print2 [phi:main->print2]
//SEG12 [9] phi (byte*) print_spaced::at#3 = (const byte*) screen#0 [phi:main->print_spaced#0] -- pbuz1=pbuc1 //SEG12 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1
lda #<screen lda #<screen
sta print_spaced.at sta print2.at
lda #>screen lda #>screen
sta print_spaced.at+1 sta print2.at+1
//SEG13 [9] phi (byte*) print_spaced::msg#3 = (const string) main::hello#0 [phi:main->print_spaced#1] -- pbuz1=pbuc1 jsr print2
lda #<hello //SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
sta print_spaced.msg //SEG14 main::@1
lda #>hello //SEG15 [7] call print2 param-assignment [ ] ( main:2 [ ] )
sta print_spaced.msg+1 //SEG16 [9] phi from main::@1 to print2 [phi:main::@1->print2]
jsr print_spaced //SEG17 [9] phi (byte*) print2::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 [phi:main::@1->print2#0] -- pbuz1=pbuc1
//SEG14 [6] phi from main to main::@1 [phi:main->main::@1] lda #<screen+$50
//SEG15 main::@1 sta print2.at
//SEG16 [7] call print_spaced param-assignment [ ] ( main:2 [ ] ) lda #>screen+$50
//SEG17 [9] phi from main::@1 to print_spaced [phi:main::@1->print_spaced] sta print2.at+1
//SEG18 [9] phi (byte*) print_spaced::at#3 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40 [phi:main::@1->print_spaced#0] -- pbuz1=pbuc1 jsr print2
lda #<screen+$28 //SEG18 main::@return
sta print_spaced.at //SEG19 [8] return [ ] ( main:2 [ ] )
lda #>screen+$28
sta print_spaced.at+1
//SEG19 [9] phi (byte*) print_spaced::msg#3 = (const string) main::hello#0 [phi:main::@1->print_spaced#1] -- pbuz1=pbuc1
lda #<hello
sta print_spaced.msg
lda #>hello
sta print_spaced.msg+1
jsr print_spaced
//SEG20 main::@return
//SEG21 [8] return [ ] ( main:2 [ ] )
rts rts
hello: .text "hello world!@" hello: .text "hello world!@"
} }
//SEG22 print_spaced //SEG20 print2
print_spaced: { print2: {
.label j = 6 .label at = 2
.label msg = 2 //SEG21 [10] phi from print2 to print2::@1 [phi:print2->print2::@1]
.label at = 4 //SEG22 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuyy=vbuc1
//SEG23 [10] phi from print_spaced to print_spaced::@1 [phi:print_spaced->print_spaced::@1] ldy #0
//SEG24 [10] phi (byte) print_spaced::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print_spaced->print_spaced::@1#0] -- vbuz1=vbuc1 //SEG23 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuxx=vbuc1
lda #0 ldx #0
sta j //SEG24 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1]
//SEG25 [10] phi (byte) print_spaced::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print_spaced->print_spaced::@1#1] -- vbuxx=vbuc1 //SEG25 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy
tax //SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy
//SEG26 [10] phi from print_spaced::@1 to print_spaced::@1 [phi:print_spaced::@1->print_spaced::@1] //SEG27 print2::@1
//SEG27 [10] phi (byte) print_spaced::j#2 = (byte) print_spaced::j#1 [phi:print_spaced::@1->print_spaced::@1#0] -- register_copy
//SEG28 [10] phi (byte) print_spaced::i#2 = (byte) print_spaced::i#1 [phi:print_spaced::@1->print_spaced::@1#1] -- register_copy
//SEG29 print_spaced::@1
b1: b1:
//SEG30 [11] *((byte*) print_spaced::at#3 + (byte) print_spaced::j#2) ← *((byte*) print_spaced::msg#3 + (byte) print_spaced::i#2) [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#2 ] ) -- pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuxx //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx
txa lda main.hello,x
tay
lda (msg),y
ldy j
sta (at),y sta (at),y
//SEG31 [12] (byte) print_spaced::j#1 ← (byte) print_spaced::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#2 print_spaced::j#1 ] ) -- vbuz1=vbuz1_plus_2 //SEG29 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print2::at#3 print2::i#2 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#1 ] ) -- vbuyy=vbuyy_plus_2
tya iny
clc iny
adc #2 //SEG30 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- vbuxx=_inc_vbuxx
sta j
//SEG32 [13] (byte) print_spaced::i#1 ← ++ (byte) print_spaced::i#2 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) -- vbuxx=_inc_vbuxx
inx inx
//SEG33 [14] if(*((byte*) print_spaced::msg#3 + (byte) print_spaced::i#1)!=(byte) '@') goto print_spaced::@1 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ( main:2::print_spaced:5 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] main:2::print_spaced:7 [ print_spaced::msg#3 print_spaced::at#3 print_spaced::i#1 print_spaced::j#1 ] ) -- pbuz1_derefidx_vbuxx_neq_vbuc1_then_la1 //SEG31 [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1
txa lda main.hello,x
tay
lda (msg),y
cmp #'@' cmp #'@'
bne b1 bne b1
//SEG34 print_spaced::@return //SEG32 print2::@return
//SEG35 [15] return [ ] ( main:2::print_spaced:5 [ ] main:2::print_spaced:7 [ ] ) //SEG33 [15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] )
rts rts
} }

View File

@ -6,23 +6,21 @@
(label) main::@return (label) main::@return
(byte*) main::hello (byte*) main::hello
(const string) main::hello#0 hello = (string) "hello world!@" (const string) main::hello#0 hello = (string) "hello world!@"
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg) (void()) print2((byte*) print2::at , (byte*) print2::msg)
(label) print_spaced::@1 (label) print2::@1
(label) print_spaced::@return (label) print2::@return
(byte*) print_spaced::at (byte*) print2::at
(byte*) print_spaced::at#3 at zp ZP_WORD:4 1.8333333333333333 (byte*) print2::at#3 at zp ZP_WORD:2 1.8333333333333333
(byte) print_spaced::i (byte) print2::i
(byte) print_spaced::i#1 reg byte x 16.5 (byte) print2::i#1 reg byte x 16.5
(byte) print_spaced::i#2 reg byte x 11.0 (byte) print2::i#2 reg byte x 11.0
(byte) print_spaced::j (byte) print2::j
(byte) print_spaced::j#1 j zp ZP_BYTE:6 7.333333333333333 (byte) print2::j#1 reg byte y 7.333333333333333
(byte) print_spaced::j#2 j zp ZP_BYTE:6 16.5 (byte) print2::j#2 reg byte y 16.5
(byte*) print_spaced::msg (byte*) print2::msg
(byte*) print_spaced::msg#3 msg zp ZP_WORD:2 3.6666666666666665
(byte*) screen (byte*) screen
(const byte*) screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024 (const byte*) screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024
zp ZP_WORD:2 [ print_spaced::msg#3 ] zp ZP_WORD:2 [ print2::at#3 ]
zp ZP_WORD:4 [ print_spaced::at#3 ] reg byte x [ print2::i#2 print2::i#1 ]
reg byte x [ print_spaced::i#2 print_spaced::i#1 ] reg byte y [ print2::j#2 print2::j#1 ]
zp ZP_BYTE:6 [ print_spaced::j#2 print_spaced::j#1 ]

View File

@ -112,10 +112,6 @@ Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) main::$0 = SCREEN#0+80 Constant (const byte*) main::$0 = SCREEN#0+80
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::a#0
Multiple usages for variable. Not optimizing sub-constant (byte) main::a#0
Multiple usages for variable. Not optimizing sub-constant (byte) main::a#0
Multiple usages for variable. Not optimizing sub-constant (byte) main::a#0
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0

View File

@ -110,22 +110,11 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::buf#0 = ((byte*))4352 Constant (const byte*) main::buf#0 = ((byte*))4352
Constant (const byte) main::i#0 = 5 Constant (const byte) main::i#0 = 5
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Consolidated constant in assignment main::$1 Consolidated constant in assignment main::$1
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2
Alias (byte) main::i#2 = (byte~) main::$0 Alias (byte) main::i#2 = (byte~) main::$0
Succesful SSA optimization Pass2AliasElimination Succesful SSA optimization Pass2AliasElimination
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -1,7 +1,7 @@
.pc = $801 "Basic" .pc = $801 "Basic"
:BasicUpstart(main) :BasicUpstart(main)
.pc = $80d "Program" .pc = $80d "Program"
.label rem16u = $11 .label rem16u = $f
.label print_char_cursor = 7 .label print_char_cursor = 7
.label print_line_cursor = 3 .label print_line_cursor = 3
jsr main jsr main
@ -11,10 +11,6 @@ main: {
sta lin16u_gen.lintab sta lin16u_gen.lintab
lda #>lintab1 lda #>lintab1
sta lin16u_gen.lintab+1 sta lin16u_gen.lintab+1
lda #<$14
sta lin16u_gen.length
lda #>$14
sta lin16u_gen.length+1
lda #<$22d lda #<$22d
sta lin16u_gen.min sta lin16u_gen.min
lda #>$22d lda #>$22d
@ -28,10 +24,6 @@ main: {
sta lin16u_gen.lintab sta lin16u_gen.lintab
lda #>lintab2 lda #>lintab2
sta lin16u_gen.lintab+1 sta lin16u_gen.lintab+1
lda #<$14
sta lin16u_gen.length
lda #>$14
sta lin16u_gen.length+1
lda #<$79cb lda #<$79cb
sta lin16u_gen.min sta lin16u_gen.min
lda #>$79cb lda #>$79cb
@ -45,10 +37,6 @@ main: {
sta lin16u_gen.lintab sta lin16u_gen.lintab
lda #>lintab3 lda #>lintab3
sta lin16u_gen.lintab+1 sta lin16u_gen.lintab+1
lda #<$14
sta lin16u_gen.length
lda #>$14
sta lin16u_gen.length+1
lda #<0 lda #<0
sta lin16u_gen.min sta lin16u_gen.min
sta lin16u_gen.min+1 sta lin16u_gen.min+1
@ -295,15 +283,14 @@ print_cls: {
lin16u_gen: { lin16u_gen: {
.label _5 = 5 .label _5 = 5
.label ampl = 3 .label ampl = 3
.label stepi = $15 .label stepi = $13
.label stepf = $13 .label stepf = $11
.label step = $17 .label step = $15
.label val = 9 .label val = 9
.label lintab = $d .label lintab = 7
.label i = 3 .label i = 3
.label max = 3 .label max = 3
.label min = 5 .label min = 5
.label length = 7
lda ampl lda ampl
sec sec
sbc min sbc min
@ -311,12 +298,9 @@ lin16u_gen: {
lda ampl+1 lda ampl+1
sbc min+1 sbc min+1
sta ampl+1 sta ampl+1
lda length lda #<$14-1
sec
sbc #1
sta divr16u.divisor sta divr16u.divisor
lda length+1 lda #>$14-1
sbc #0
sta divr16u.divisor+1 sta divr16u.divisor+1
lda #<0 lda #<0
sta divr16u.rem sta divr16u.rem
@ -326,12 +310,9 @@ lin16u_gen: {
sta stepi sta stepi
lda divr16u.return+1 lda divr16u.return+1
sta stepi+1 sta stepi+1
lda length lda #<$14-1
sec
sbc #1
sta divr16u.divisor sta divr16u.divisor
lda length+1 lda #>$14-1
sbc #0
sta divr16u.divisor+1 sta divr16u.divisor+1
lda #<0 lda #<0
sta divr16u.dividend sta divr16u.dividend
@ -391,21 +372,21 @@ lin16u_gen: {
inc i+1 inc i+1
!: !:
lda i+1 lda i+1
cmp length+1 cmp #>$14
bcc b1 bcc b1
bne !+ bne !+
lda i lda i
cmp length cmp #<$14
bcc b1 bcc b1
!: !:
rts rts
} }
divr16u: { divr16u: {
.label rem = $11 .label rem = $f
.label dividend = 3 .label dividend = 3
.label quotient = $13 .label quotient = $11
.label return = $13 .label return = $11
.label divisor = $f .label divisor = $d
ldx #0 ldx #0
txa txa
sta quotient sta quotient

View File

@ -197,79 +197,76 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
[96] return [ ] ( main:2::print_cls:11 [ ] ) [96] return [ ] ( main:2::print_cls:11 [ ] )
to:@return to:@return
lin16u_gen: scope:[lin16u_gen] from main main::@3 main::@4 lin16u_gen: scope:[lin16u_gen] from main main::@3 main::@4
[97] (word*) lin16u_gen::lintab#5 ← phi( main/(const word[20]) main::lintab1#0 main::@3/(const word[20]) main::lintab2#0 main::@4/(const word[20]) main::lintab3#0 ) [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:7 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:9 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] ) [97] (word*) lin16u_gen::lintab#5 ← phi( main/(const word[20]) main::lintab1#0 main::@3/(const word[20]) main::lintab2#0 main::@4/(const word[20]) main::lintab3#0 ) [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:7 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:9 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] )
[97] (word) lin16u_gen::length#3 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 20 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 20 main::@4/(byte/signed byte/word/signed word/dword/signed dword) 20 ) [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:7 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:9 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] ) [97] (word) lin16u_gen::min#3 ← phi( main/(word/signed word/dword/signed dword) 557 main::@3/(word/signed word/dword/signed dword) 31179 main::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:7 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:9 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] )
[97] (word) lin16u_gen::min#3 ← phi( main/(word/signed word/dword/signed dword) 557 main::@3/(word/signed word/dword/signed dword) 31179 main::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:7 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:9 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] ) [97] (word) lin16u_gen::max#3 ← phi( main/(word/signed word/dword/signed dword) 29793 main::@3/(word/dword/signed dword) 63361 main::@4/(word/signed word/dword/signed dword) 25736 ) [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:7 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:9 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::lintab#5 ] )
[97] (word) lin16u_gen::max#3 ← phi( main/(word/signed word/dword/signed dword) 29793 main::@3/(word/dword/signed dword) 63361 main::@4/(word/signed word/dword/signed dword) 25736 ) [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:7 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] main:2::lin16u_gen:9 [ lin16u_gen::max#3 lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 ] ) [98] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 ] )
[98] (word) lin16u_gen::ampl#0 ← (word) lin16u_gen::max#3 - (word) lin16u_gen::min#3 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 ] ) [99] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::dividend#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::dividend#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::dividend#1 ] )
[99] (word) divr16u::divisor#0 ← (word) lin16u_gen::length#3 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 divr16u::divisor#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 divr16u::divisor#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 divr16u::divisor#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::ampl#0 divr16u::divisor#0 ] ) [100] call divr16u param-assignment [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] )
[100] (word) divr16u::dividend#1 ← (word) lin16u_gen::ampl#0 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#0 divr16u::dividend#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#0 divr16u::dividend#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#0 divr16u::dividend#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#0 divr16u::dividend#1 ] ) [101] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#2 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#2 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#2 rem16u#1 ] )
[101] call divr16u param-assignment [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] )
[102] (word) divr16u::return#2 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#2 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#2 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#2 rem16u#1 ] )
to:lin16u_gen::@3 to:lin16u_gen::@3
lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen
[103] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 rem16u#1 ] ) [102] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 rem16u#1 ] )
[104] (word) divr16u::divisor#1 ← (word) lin16u_gen::length#3 - (byte/signed byte/word/signed word/dword/signed dword) 1 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#1 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#1 rem16u#1 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#1 rem16u#1 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#1 rem16u#1 ] ) [103] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#4 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#4 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#4 ] )
[105] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#1 divr16u::rem#4 ] ) [104] call divr16u param-assignment [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 lin16u_gen::stepi#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 lin16u_gen::stepi#0 ] )
[106] call divr16u param-assignment [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 lin16u_gen::stepi#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 lin16u_gen::stepi#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 lin16u_gen::stepi#0 ] ) [105] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#3 ] )
[107] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#3 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#3 ] )
to:lin16u_gen::@4 to:lin16u_gen::@4
lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3 lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3
[108] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ) [106] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] )
[109] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::step#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::step#0 ] ) [107] (dword) lin16u_gen::step#0 ← (word) lin16u_gen::stepi#0 dw= (word) lin16u_gen::stepf#0 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::step#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::step#0 ] main:2::lin16u_gen:7 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::step#0 ] main:2::lin16u_gen:9 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::step#0 ] )
[110] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 [ lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::step#0 lin16u_gen::val#0 ] ) [108] (dword) lin16u_gen::val#0 ← (word) lin16u_gen::min#3 dw= (byte/signed byte/word/signed word/dword/signed dword) 0 [ lin16u_gen::lintab#5 lin16u_gen::step#0 lin16u_gen::val#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::lintab#5 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:7 [ lin16u_gen::lintab#5 lin16u_gen::step#0 lin16u_gen::val#0 ] main:2::lin16u_gen:9 [ lin16u_gen::lintab#5 lin16u_gen::step#0 lin16u_gen::val#0 ] )
to:lin16u_gen::@1 to:lin16u_gen::@1
lin16u_gen::@1: scope:[lin16u_gen] from lin16u_gen::@1 lin16u_gen::@4 lin16u_gen::@1: scope:[lin16u_gen] from lin16u_gen::@1 lin16u_gen::@4
[111] (word) lin16u_gen::i#2 ← phi( lin16u_gen::@1/(word) lin16u_gen::i#1 lin16u_gen::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ) [109] (word) lin16u_gen::i#2 ← phi( lin16u_gen::@1/(word) lin16u_gen::i#1 lin16u_gen::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] )
[111] (word*) lin16u_gen::lintab#4 ← phi( lin16u_gen::@1/(word*) lin16u_gen::lintab#3 lin16u_gen::@4/(word*) lin16u_gen::lintab#5 ) [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ) [109] (word*) lin16u_gen::lintab#4 ← phi( lin16u_gen::@1/(word*) lin16u_gen::lintab#3 lin16u_gen::@4/(word*) lin16u_gen::lintab#5 ) [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] )
[111] (dword) lin16u_gen::val#2 ← phi( lin16u_gen::@1/(dword) lin16u_gen::val#1 lin16u_gen::@4/(dword) lin16u_gen::val#0 ) [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ) [109] (dword) lin16u_gen::val#2 ← phi( lin16u_gen::@1/(dword) lin16u_gen::val#1 lin16u_gen::@4/(dword) lin16u_gen::val#0 ) [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] )
[112] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::$5 ] ) [110] (word~) lin16u_gen::$5 ← > (dword) lin16u_gen::val#2 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::$5 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::$5 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::$5 ] )
[113] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ) [111] *((word*) lin16u_gen::lintab#4) ← (word~) lin16u_gen::$5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::val#2 lin16u_gen::lintab#4 lin16u_gen::i#2 ] )
[114] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::val#1 ] ) [112] (dword) lin16u_gen::val#1 ← (dword) lin16u_gen::val#2 + (dword) lin16u_gen::step#0 [ lin16u_gen::step#0 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::val#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::val#1 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::lintab#4 lin16u_gen::i#2 lin16u_gen::val#1 ] )
[115] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ) [113] (word*) lin16u_gen::lintab#3 ← (word*) lin16u_gen::lintab#4 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::i#2 lin16u_gen::val#1 lin16u_gen::lintab#3 ] )
[116] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] ) [114] (word) lin16u_gen::i#1 ← ++ (word) lin16u_gen::i#2 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] )
[117] if((word) lin16u_gen::i#1<(word) lin16u_gen::length#3) goto lin16u_gen::@1 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] main:2::lin16u_gen:9 [ lin16u_gen::length#3 lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] ) [115] if((word) lin16u_gen::i#1<(byte/signed byte/word/signed word/dword/signed dword) 20) goto lin16u_gen::@1 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] main:2::lin16u_gen:7 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] main:2::lin16u_gen:9 [ lin16u_gen::step#0 lin16u_gen::val#1 lin16u_gen::lintab#3 lin16u_gen::i#1 ] )
to:lin16u_gen::@return to:lin16u_gen::@return
lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1 lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1
[118] return [ ] ( main:2::lin16u_gen:5 [ ] main:2::lin16u_gen:7 [ ] main:2::lin16u_gen:9 [ ] ) [116] return [ ] ( main:2::lin16u_gen:5 [ ] main:2::lin16u_gen:7 [ ] main:2::lin16u_gen:9 [ ] )
to:@return to:@return
divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3 divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3
[119] (word) divr16u::divisor#6 ← phi( lin16u_gen/(word) divr16u::divisor#0 lin16u_gen::@3/(word) divr16u::divisor#1 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) [117] (word) divr16u::divisor#6 ← phi( lin16u_gen/(byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 lin16u_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 20-(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
[119] (word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) [117] (word) divr16u::dividend#5 ← phi( lin16u_gen/(word) divr16u::dividend#1 lin16u_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
[119] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) [117] (word) divr16u::rem#10 ← phi( lin16u_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 lin16u_gen::@3/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
to:divr16u::@1 to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[120] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [118] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[120] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [118] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[120] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [118] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[120] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [118] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[121] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) [119] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[122] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) [120] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[123] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) [121] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[124] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) [122] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
to:divr16u::@4 to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1 divr16u::@4: scope:[divr16u] from divr16u::@1
[125] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) [123] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
to:divr16u::@2 to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[126] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ) [124] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
[127] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) [125] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
[128] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) [126] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
[129] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) [127] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
to:divr16u::@5 to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2 divr16u::@5: scope:[divr16u] from divr16u::@2
[130] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) [128] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
[131] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) [129] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
to:divr16u::@3 to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[132] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) [130] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[132] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) [130] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[133] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) [131] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
[134] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) [132] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
to:divr16u::@6 to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3 divr16u::@6: scope:[divr16u] from divr16u::@3
[135] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) [133] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] )
to:divr16u::@return to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6 divr16u::@return: scope:[divr16u] from divr16u::@6
[136] return [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:101 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:106 [ lin16u_gen::min#3 lin16u_gen::length#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] ) [134] return [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:100 [ lin16u_gen::min#3 lin16u_gen::lintab#5 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:7::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:9::divr16u:104 [ lin16u_gen::min#3 lin16u_gen::lintab#5 lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] )
to:@return to:@return

File diff suppressed because it is too large Load Diff

View File

@ -17,29 +17,27 @@
(word) divr16u::dividend#3 dividend zp ZP_WORD:3 5.0 (word) divr16u::dividend#3 dividend zp ZP_WORD:3 5.0
(word) divr16u::dividend#5 dividend zp ZP_WORD:3 4.0 (word) divr16u::dividend#5 dividend zp ZP_WORD:3 4.0
(word) divr16u::divisor (word) divr16u::divisor
(word) divr16u::divisor#0 divisor zp ZP_WORD:15 2.0 (word) divr16u::divisor#6 divisor zp ZP_WORD:13 1.375
(word) divr16u::divisor#1 divisor zp ZP_WORD:15 2.0
(word) divr16u::divisor#6 divisor zp ZP_WORD:15 1.625
(byte) divr16u::i (byte) divr16u::i
(byte) divr16u::i#1 reg byte x 16.5 (byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923 (byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient (word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:19 16.5 (word) divr16u::quotient#1 quotient zp ZP_WORD:17 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:19 11.0 (word) divr16u::quotient#2 quotient zp ZP_WORD:17 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:19 2.75 (word) divr16u::quotient#3 quotient zp ZP_WORD:17 2.75
(word) divr16u::rem (word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:17 8.25 (word) divr16u::rem#0 rem zp ZP_WORD:15 8.25
(word) divr16u::rem#1 rem zp ZP_WORD:17 22.0 (word) divr16u::rem#1 rem zp ZP_WORD:15 22.0
(word) divr16u::rem#10 rem zp ZP_WORD:17 4.0 (word) divr16u::rem#10 rem zp ZP_WORD:15 4.0
(word) divr16u::rem#11 rem zp ZP_WORD:17 11.666666666666666 (word) divr16u::rem#11 rem zp ZP_WORD:15 11.666666666666666
(word) divr16u::rem#2 rem zp ZP_WORD:17 22.0 (word) divr16u::rem#2 rem zp ZP_WORD:15 22.0
(word) divr16u::rem#4 rem zp ZP_WORD:17 4.0 (word) divr16u::rem#4 rem zp ZP_WORD:15 4.0
(word) divr16u::rem#5 rem zp ZP_WORD:17 24.0 (word) divr16u::rem#5 rem zp ZP_WORD:15 24.0
(word) divr16u::rem#6 rem zp ZP_WORD:17 11.0 (word) divr16u::rem#6 rem zp ZP_WORD:15 11.0
(word) divr16u::return (word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:19 5.285714285714286 (word) divr16u::return#0 return zp ZP_WORD:17 5.285714285714286
(word) divr16u::return#2 return zp ZP_WORD:19 4.0 (word) divr16u::return#2 return zp ZP_WORD:17 4.0
(word) divr16u::return#3 return zp ZP_WORD:19 4.0 (word) divr16u::return#3 return zp ZP_WORD:17 4.0
(void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length) (void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length)
(word~) lin16u_gen::$5 $5 zp ZP_WORD:5 22.0 (word~) lin16u_gen::$5 $5 zp ZP_WORD:5 22.0
(label) lin16u_gen::@1 (label) lin16u_gen::@1
@ -47,26 +45,25 @@
(label) lin16u_gen::@4 (label) lin16u_gen::@4
(label) lin16u_gen::@return (label) lin16u_gen::@return
(word) lin16u_gen::ampl (word) lin16u_gen::ampl
(word) lin16u_gen::ampl#0 ampl zp ZP_WORD:3 2.0 (word) lin16u_gen::ampl#0 ampl zp ZP_WORD:3 4.0
(word) lin16u_gen::i (word) lin16u_gen::i
(word) lin16u_gen::i#1 i zp ZP_WORD:3 16.5 (word) lin16u_gen::i#1 i zp ZP_WORD:3 16.5
(word) lin16u_gen::i#2 i zp ZP_WORD:3 4.4 (word) lin16u_gen::i#2 i zp ZP_WORD:3 4.4
(word) lin16u_gen::length (word) lin16u_gen::length
(word) lin16u_gen::length#3 length zp ZP_WORD:7 0.7142857142857143
(word*) lin16u_gen::lintab (word*) lin16u_gen::lintab
(word*) lin16u_gen::lintab#3 lintab zp ZP_WORD:13 7.333333333333333 (word*) lin16u_gen::lintab#3 lintab zp ZP_WORD:7 7.333333333333333
(word*) lin16u_gen::lintab#4 lintab zp ZP_WORD:13 8.75 (word*) lin16u_gen::lintab#4 lintab zp ZP_WORD:7 8.75
(word*) lin16u_gen::lintab#5 lintab zp ZP_WORD:13 0.14285714285714285 (word*) lin16u_gen::lintab#5 lintab zp ZP_WORD:7 0.16666666666666666
(word) lin16u_gen::max (word) lin16u_gen::max
(word) lin16u_gen::max#3 max zp ZP_WORD:3 2.0 (word) lin16u_gen::max#3 max zp ZP_WORD:3 2.0
(word) lin16u_gen::min (word) lin16u_gen::min
(word) lin16u_gen::min#3 min zp ZP_WORD:5 0.3076923076923077 (word) lin16u_gen::min#3 min zp ZP_WORD:5 0.36363636363636365
(dword) lin16u_gen::step (dword) lin16u_gen::step
(dword) lin16u_gen::step#0 step zp ZP_DWORD:23 1.4444444444444446 (dword) lin16u_gen::step#0 step zp ZP_DWORD:21 1.4444444444444446
(word) lin16u_gen::stepf (word) lin16u_gen::stepf
(word) lin16u_gen::stepf#0 stepf zp ZP_WORD:19 4.0 (word) lin16u_gen::stepf#0 stepf zp ZP_WORD:17 4.0
(word) lin16u_gen::stepi (word) lin16u_gen::stepi
(word) lin16u_gen::stepi#0 stepi zp ZP_WORD:21 0.6666666666666666 (word) lin16u_gen::stepi#0 stepi zp ZP_WORD:19 0.8
(dword) lin16u_gen::val (dword) lin16u_gen::val
(dword) lin16u_gen::val#0 val zp ZP_DWORD:9 4.0 (dword) lin16u_gen::val#0 val zp ZP_DWORD:9 4.0
(dword) lin16u_gen::val#1 val zp ZP_DWORD:9 5.5 (dword) lin16u_gen::val#1 val zp ZP_DWORD:9 5.5
@ -175,23 +172,22 @@
(word) print_word::w#4 w zp ZP_WORD:5 22.0 (word) print_word::w#4 w zp ZP_WORD:5 22.0
(word) print_word::w#5 w zp ZP_WORD:5 22.0 (word) print_word::w#5 w zp ZP_WORD:5 22.0
(word) rem16u (word) rem16u
(word) rem16u#1 rem16u zp ZP_WORD:17 0.6666666666666666 (word) rem16u#1 rem16u zp ZP_WORD:15 0.8
zp ZP_BYTE:2 [ main::i#10 main::i#1 ] zp ZP_BYTE:2 [ main::i#10 main::i#1 ]
zp ZP_WORD:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 lin16u_gen::i#2 lin16u_gen::i#1 ] zp ZP_WORD:3 [ print_line_cursor#11 print_line_cursor#21 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::max#3 lin16u_gen::ampl#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#0 lin16u_gen::i#2 lin16u_gen::i#1 ]
zp ZP_WORD:5 [ print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 print_str::str#10 print_str::str#12 print_str::str#0 lin16u_gen::min#3 lin16u_gen::$5 ] zp ZP_WORD:5 [ print_word::w#10 print_word::w#3 print_word::w#4 print_word::w#5 print_str::str#10 print_str::str#12 print_str::str#0 lin16u_gen::min#3 lin16u_gen::$5 ]
reg byte x [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte x [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
zp ZP_WORD:7 [ print_char_cursor#86 print_char_cursor#50 print_char_cursor#81 print_char_cursor#91 print_char_cursor#2 print_char_cursor#11 print_char_cursor#100 print_char_cursor#1 lin16u_gen::length#3 ] zp ZP_WORD:7 [ print_char_cursor#86 print_char_cursor#50 print_char_cursor#81 print_char_cursor#91 print_char_cursor#2 print_char_cursor#11 print_char_cursor#100 print_char_cursor#1 lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#5 ]
zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ] zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 lin16u_gen::val#0 ]
zp ZP_WORD:13 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#5 ] zp ZP_WORD:13 [ divr16u::divisor#6 ]
zp ZP_WORD:15 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 ] zp ZP_WORD:15 [ 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 ]
zp ZP_WORD:17 [ 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 ] zp ZP_WORD:17 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ]
zp ZP_WORD:19 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte a [ print_byte::$0 ] reg byte a [ print_byte::$0 ]
reg byte a [ print_byte::$2 ] reg byte a [ print_byte::$2 ]
zp ZP_WORD:21 [ lin16u_gen::stepi#0 ] zp ZP_WORD:19 [ lin16u_gen::stepi#0 ]
zp ZP_DWORD:23 [ lin16u_gen::step#0 ] zp ZP_DWORD:21 [ lin16u_gen::step#0 ]
reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ] reg byte a [ divr16u::$2 ]

View File

@ -190,15 +190,9 @@ Constant (const string) str#0 = "bc"+"d"+'e'
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(SCREEN#0+0) Consolidated array index constant in *(SCREEN#0+0)
Consolidated array index constant in *(SCREEN#0+2) Consolidated array index constant in *(SCREEN#0+2)
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Consolidated array index constant in assignment *(SCREEN#0+4 + main::$0) Consolidated array index constant in assignment *(SCREEN#0+4 + main::$0)
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Consolidated array index constant in assignment *(SCREEN#0+9 + main::$1) Consolidated array index constant in assignment *(SCREEN#0+9 + main::$1)
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2
Eliminating unused constant (const string) $2 Eliminating unused constant (const string) $2

View File

@ -363,8 +363,6 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte*) main::SCREEN#0 = ((byte*))1024 Constant (const byte*) main::SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -728,10 +728,6 @@ Constant (const byte) long1::i#0 = 0
Constant (const byte*) long2::SCREEN#0 = ((byte*))1024 Constant (const byte*) long2::SCREEN#0 = ((byte*))1024
Constant (const byte) long2::i#0 = 0 Constant (const byte) long2::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) long1::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) long2::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) long1::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) long2::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) long1::i#0 Inlining constant with var siblings (const byte) long1::i#0
Inlining constant with var siblings (const byte) long1::i#0 Inlining constant with var siblings (const byte) long1::i#0

View File

@ -151,11 +151,8 @@ Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 255 Constant (const byte) main::j#0 = 255
Constant (const byte) main::i#2 = 0 Constant (const byte) main::i#2 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#4
Culled Empty Block (label) main::@3 Culled Empty Block (label) main::@3
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#4
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#4
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -497,7 +497,6 @@ Constant (const word/dword) main::$9 = main::$6|main::$8
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte) main::$10 = ((byte))main::$9 Constant (const byte) main::$10 = ((byte))main::$9
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) main::charset#2
Not aliassing across scopes: gen_char3::dst#0 main::charset#2 Not aliassing across scopes: gen_char3::dst#0 main::charset#2
Not aliassing across scopes: gen_char3::spec#4 gen_char3::spec#0 Not aliassing across scopes: gen_char3::spec#4 gen_char3::spec#0
Not aliassing across scopes: gen_char3::dst#5 gen_char3::dst#0 Not aliassing across scopes: gen_char3::dst#5 gen_char3::dst#0
@ -505,10 +504,8 @@ Self Phi Eliminated (byte*) gen_char3::dst#5
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) gen_char3::dst#5 (byte*) gen_char3::dst#0 Redundant Phi (byte*) gen_char3::dst#5 (byte*) gen_char3::dst#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Multiple usages for variable. Not optimizing sub-constant (byte*) main::charset#2
Not aliassing across scopes: gen_char3::dst#0 main::charset#2 Not aliassing across scopes: gen_char3::dst#0 main::charset#2
Not aliassing across scopes: gen_char3::spec#4 gen_char3::spec#0 Not aliassing across scopes: gen_char3::spec#4 gen_char3::spec#0
Multiple usages for variable. Not optimizing sub-constant (byte*) main::charset#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::c#0 Inlining constant with var siblings (const byte) main::c#0
Inlining constant with var siblings (const byte) main::c#0 Inlining constant with var siblings (const byte) main::c#0

View File

@ -289,7 +289,6 @@ Constant (const byte*) SCREEN#0 = ((byte*))1024
Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#0 = 0
Constant (const byte) main::j#0 = 10 Constant (const byte) main::j#0 = 10
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) line::l#2
Culled Empty Block (label) main::@3 Culled Empty Block (label) main::@3
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: line::l#0 main::i#2 Not aliassing across scopes: line::l#0 main::i#2
@ -297,13 +296,11 @@ Not aliassing across scopes: line::l#1 main::j#2
Not aliassing across scopes: line::l#2 line::l#0 Not aliassing across scopes: line::l#2 line::l#0
Not aliassing across scopes: plot::x#0 line::l#2 Not aliassing across scopes: plot::x#0 line::l#2
Not aliassing across scopes: plot::x#2 plot::x#0 Not aliassing across scopes: plot::x#2 plot::x#0
Multiple usages for variable. Not optimizing sub-constant (byte) line::l#2
Not aliassing across scopes: line::l#0 main::i#2 Not aliassing across scopes: line::l#0 main::i#2
Not aliassing across scopes: line::l#1 main::j#2 Not aliassing across scopes: line::l#1 main::j#2
Not aliassing across scopes: line::l#2 line::l#0 Not aliassing across scopes: line::l#2 line::l#0
Not aliassing across scopes: plot::x#0 line::l#2 Not aliassing across scopes: plot::x#0 line::l#2
Not aliassing across scopes: plot::x#2 plot::x#0 Not aliassing across scopes: plot::x#2 plot::x#0
Multiple usages for variable. Not optimizing sub-constant (byte) line::l#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -286,14 +286,6 @@ Constant (const byte*) main::$8 = main::screen#0+160
Constant (const byte*) main::$10 = main::screen#0+200 Constant (const byte*) main::$10 = main::screen#0+200
Constant (const byte*) main::$17 = ((byte*))main::$16 Constant (const byte*) main::$17 = ((byte*))main::$16
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -688,12 +688,9 @@ Constant (const byte*) main::line#0 = SCREEN#0+40
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+1000 Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+1000
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Consolidated array index constant in assignment *(main::line#0+1 + main::$6) Consolidated array index constant in assignment *(main::line#0+1 + main::$6)
Consolidated array index constant in *(main::line#0+39) Consolidated array index constant in *(main::line#0+39)
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
if() condition always true - replacing block destination if(true) goto main::@1 if() condition always true - replacing block destination if(true) goto main::@1
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::i#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::i#2

View File

@ -1756,57 +1756,8 @@ Constant (const byte*) fillscreen::screen#0 = SCREEN#0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+1000 Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+1000
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Consolidated constant in assignment scroll_bit::sc#0 Consolidated constant in assignment scroll_bit::sc#0
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
if() condition always true - replacing block destination if(true) goto main::@1 if() condition always true - replacing block destination if(true) goto main::@1
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Removing unused block main::@return Removing unused block main::@return
@ -1877,39 +1828,15 @@ Constant (const byte*) scroll_hard::$38 = SCREEN#0+scroll_hard::$37
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) scroll_bit::sc#0 = scroll_bit::$7+40+39 Constant (const byte*) scroll_bit::sc#0 = scroll_bit::$7+40+39
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Consolidated array index constant in assignment *(scroll_hard::$3+1 + scroll_hard::$4) Consolidated array index constant in assignment *(scroll_hard::$3+1 + scroll_hard::$4)
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Consolidated array index constant in assignment *(scroll_hard::$8+1 + scroll_hard::$9) Consolidated array index constant in assignment *(scroll_hard::$8+1 + scroll_hard::$9)
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Consolidated array index constant in assignment *(scroll_hard::$13+1 + scroll_hard::$14) Consolidated array index constant in assignment *(scroll_hard::$13+1 + scroll_hard::$14)
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Consolidated array index constant in assignment *(scroll_hard::$18+1 + scroll_hard::$19) Consolidated array index constant in assignment *(scroll_hard::$18+1 + scroll_hard::$19)
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Consolidated array index constant in assignment *(scroll_hard::$23+1 + scroll_hard::$24) Consolidated array index constant in assignment *(scroll_hard::$23+1 + scroll_hard::$24)
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Consolidated array index constant in assignment *(scroll_hard::$28+1 + scroll_hard::$29) Consolidated array index constant in assignment *(scroll_hard::$28+1 + scroll_hard::$29)
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Consolidated array index constant in assignment *(scroll_hard::$33+1 + scroll_hard::$34) Consolidated array index constant in assignment *(scroll_hard::$33+1 + scroll_hard::$34)
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Consolidated array index constant in assignment *(scroll_hard::$38+1 + scroll_hard::$39) Consolidated array index constant in assignment *(scroll_hard::$38+1 + scroll_hard::$39)
Succesful SSA optimization Pass2ConstantAdditionElimination Succesful SSA optimization Pass2ConstantAdditionElimination
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) scroll_hard::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) scroll_hard::$4 ← (byte) scroll_hard::i#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) scroll_hard::$4 ← (byte) scroll_hard::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) scroll_hard::$9 ← (byte) scroll_hard::i#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) scroll_hard::$9 ← (byte) scroll_hard::i#2
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) scroll_hard::$14 ← (byte) scroll_hard::i#2 Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) scroll_hard::$14 ← (byte) scroll_hard::i#2

View File

@ -233,10 +233,6 @@ gen_sintab: {
lda #>f_amp lda #>f_amp
sta setMEMtoFAC.mem+1 sta setMEMtoFAC.mem+1
jsr setMEMtoFAC jsr setMEMtoFAC
lda #<f_min
sta addMEMtoFAC.mem
lda #>f_min
sta addMEMtoFAC.mem+1
jsr addMEMtoFAC jsr addMEMtoFAC
lda #<f_min lda #<f_min
sta setMEMtoFAC.mem sta setMEMtoFAC.mem
@ -278,10 +274,6 @@ gen_sintab: {
lda #>f_amp lda #>f_amp
sta mulFACbyMEM.mem+1 sta mulFACbyMEM.mem+1
jsr mulFACbyMEM jsr mulFACbyMEM
lda #<f_min
sta addMEMtoFAC.mem
lda #>f_min
sta addMEMtoFAC.mem+1
jsr addMEMtoFAC jsr addMEMtoFAC
jsr getFAC jsr getFAC
lda _23 lda _23
@ -331,7 +323,10 @@ getFAC: {
rts rts
} }
addMEMtoFAC: { addMEMtoFAC: {
.label mem = $c lda #<gen_sintab.f_min
sta prepareMEM.mem
lda #>gen_sintab.f_min
sta prepareMEM.mem+1
jsr prepareMEM jsr prepareMEM
lda $fe lda $fe
ldy $ff ldy $ff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -31,7 +31,6 @@
(label) addMEMtoFAC::@1 (label) addMEMtoFAC::@1
(label) addMEMtoFAC::@return (label) addMEMtoFAC::@return
(byte*) addMEMtoFAC::mem (byte*) addMEMtoFAC::mem
(byte*) addMEMtoFAC::mem#2 mem zp ZP_WORD:12 2.0
(void()) anim() (void()) anim()
(byte~) anim::$2 $2 zp ZP_BYTE:5 101.0 (byte~) anim::$2 $2 zp ZP_BYTE:5 101.0
(byte~) anim::$3 reg byte a 202.0 (byte~) anim::$3 reg byte a 202.0
@ -248,11 +247,10 @@
(label) prepareMEM::@return (label) prepareMEM::@return
(byte*) prepareMEM::mem (byte*) prepareMEM::mem
(byte*) prepareMEM::mem#1 mem zp ZP_WORD:12 4.0 (byte*) prepareMEM::mem#1 mem zp ZP_WORD:12 4.0
(byte*) prepareMEM::mem#2 mem zp ZP_WORD:12 4.0
(byte*) prepareMEM::mem#3 mem zp ZP_WORD:12 4.0 (byte*) prepareMEM::mem#3 mem zp ZP_WORD:12 4.0
(byte*) prepareMEM::mem#4 mem zp ZP_WORD:12 4.0 (byte*) prepareMEM::mem#4 mem zp ZP_WORD:12 4.0
(byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 4.666666666666666 (byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 3.9999999999999996
(byte*~) prepareMEM::mem#9 mem zp ZP_WORD:12 4.0 (byte*~) prepareMEM::mem#8 mem zp ZP_WORD:12 4.0
(byte*) progress_cursor (byte*) progress_cursor
(byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0 (byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0
(byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335 (byte*) progress_cursor#11 progress_cursor zp ZP_WORD:10 2.8333333333333335
@ -321,7 +319,7 @@ reg byte x [ init::i#2 init::i#1 ]
zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 anim::x#0 ] zp ZP_WORD:8 [ clear_screen::sc#2 clear_screen::sc#1 gen_sintab::sintab#12 gen_sprites::spr#2 gen_sprites::spr#1 anim::x#0 ]
reg byte x [ gen_sintab::max#2 ] reg byte x [ gen_sintab::max#2 ]
zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ] zp ZP_WORD:10 [ progress_cursor#34 progress_init::line#2 progress_cursor#11 progress_cursor#10 gen_chargen_sprite::sprite#3 gen_chargen_sprite::sprite#10 gen_chargen_sprite::sprite#11 gen_chargen_sprite::sprite#0 gen_chargen_sprite::sprite#2 gen_chargen_sprite::sprite#4 gen_chargen_sprite::sprite#1 ]
zp ZP_WORD:12 [ addMEMtoFAC::mem#2 prepareMEM::mem#5 prepareMEM::mem#2 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#9 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ] zp ZP_WORD:12 [ prepareMEM::mem#5 prepareMEM::mem#3 prepareMEM::mem#4 prepareMEM::mem#8 prepareMEM::mem#1 mulFACbyMEM::mem#2 divMEMbyFAC::mem#2 setFAC::w#5 setFAC::w#0 setFAC::w#3 setFAC::w#4 setFAC::w#1 setMEMtoFAC::mem#5 getFAC::return#2 gen_sintab::$23 getFAC::return#0 gen_chargen_sprite::$0 gen_chargen_sprite::$1 gen_chargen_sprite::chargen#0 ]
reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ] reg byte y [ gen_chargen_sprite::s_gen_cnt#3 gen_chargen_sprite::s_gen_cnt#4 gen_chargen_sprite::s_gen_cnt#5 gen_chargen_sprite::s_gen_cnt#1 ]
reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ] reg byte x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
reg byte y [ place_sprites::j#2 place_sprites::j#1 ] reg byte y [ place_sprites::j#2 place_sprites::j#1 ]

View File

@ -5,7 +5,7 @@
.const PI_u4f28 = $3243f6a9 .const PI_u4f28 = $3243f6a9
.const PI_HALF_u4f28 = $1921fb54 .const PI_HALF_u4f28 = $1921fb54
.label print_line_cursor = $400 .label print_line_cursor = $400
.label rem16u = 4 .label rem16u = 2
.label print_char_cursor = 8 .label print_char_cursor = 8
jsr main jsr main
main: { main: {
@ -481,13 +481,9 @@ mul16u: {
jmp b1 jmp b1
} }
div32u16u: { div32u16u: {
.label quotient_hi = $13 .label quotient_hi = 8
.label quotient_lo = 8 .label quotient_lo = 6
.label return = $1b .label return = $1b
lda #<main.wavelength
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28>>$10 lda #<PI2_u4f28>>$10
sta divr16u.dividend sta divr16u.dividend
lda #>PI2_u4f28>>$10 lda #>PI2_u4f28>>$10
@ -500,10 +496,6 @@ div32u16u: {
sta quotient_hi sta quotient_hi
lda divr16u.return+1 lda divr16u.return+1
sta quotient_hi+1 sta quotient_hi+1
lda #<main.wavelength
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28&$ffff lda #<PI2_u4f28&$ffff
sta divr16u.dividend sta divr16u.dividend
lda #>PI2_u4f28&$ffff lda #>PI2_u4f28&$ffff
@ -520,11 +512,10 @@ div32u16u: {
rts rts
} }
divr16u: { divr16u: {
.label rem = 4 .label rem = 2
.label dividend = 6 .label dividend = 4
.label quotient = 8 .label quotient = 6
.label return = 8 .label return = 6
.label divisor = 2
ldx #0 ldx #0
txa txa
sta quotient sta quotient
@ -545,11 +536,11 @@ divr16u: {
asl quotient asl quotient
rol quotient+1 rol quotient+1
lda rem+1 lda rem+1
cmp divisor+1 cmp #>main.wavelength
bcc b3 bcc b3
bne !+ bne !+
lda rem lda rem
cmp divisor cmp #<main.wavelength
bcc b3 bcc b3
!: !:
inc quotient inc quotient
@ -558,10 +549,10 @@ divr16u: {
!: !:
lda rem lda rem
sec sec
sbc divisor sbc #<main.wavelength
sta rem sta rem
lda rem+1 lda rem+1
sbc divisor+1 sbc #>main.wavelength
sta rem+1 sta rem+1
b3: b3:
inx inx

View File

@ -279,38 +279,37 @@ div32u16u::@return: scope:[div32u16u] from div32u16u::@3
[141] return [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::return#0 ] ) [141] return [ div32u16u::return#0 ] ( main:2::sin16s_gen:5::div32u16u:59 [ div32u16u::return#0 ] )
to:@return to:@return
divr16u: scope:[divr16u] from div32u16u div32u16u::@2 divr16u: scope:[divr16u] from div32u16u div32u16u::@2
[142] (word) divr16u::divisor#6 ← phi( div32u16u/(const word) main::wavelength#0 div32u16u::@2/(const word) main::wavelength#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) [142] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#10 divr16u::dividend#5 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] )
[142] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) [142] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] )
[142] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
to:divr16u::@1 to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[143] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [143] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[143] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [143] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[143] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [143] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[143] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [143] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[144] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) [144] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[145] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) [145] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[146] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) [146] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[147] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) [147] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
to:divr16u::@4 to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1 divr16u::@4: scope:[divr16u] from divr16u::@1
[148] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) [148] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
to:divr16u::@2 to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[149] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ) [149] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
[150] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) [150] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
[151] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) [151] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
[152] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) [152] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
to:divr16u::@5 to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2 divr16u::@5: scope:[divr16u] from divr16u::@2
[153] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) [153] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
[154] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) [154] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
to:divr16u::@3 to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[155] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) [155] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[155] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) [155] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[156] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) [156] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
[157] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) [157] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
to:divr16u::@6 to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3 divr16u::@6: scope:[divr16u] from divr16u::@3
[158] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) [158] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5::div32u16u:59::divr16u:133 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:59::divr16u:137 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] )

File diff suppressed because it is too large Load Diff

View File

@ -15,9 +15,9 @@
(word) div32u16u::divisor (word) div32u16u::divisor
(dword) div32u16u::quotient (dword) div32u16u::quotient
(word) div32u16u::quotient_hi (word) div32u16u::quotient_hi
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:19 0.8 (word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:8 0.8
(word) div32u16u::quotient_lo (word) div32u16u::quotient_lo
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:8 4.0 (word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:6 4.0
(dword) div32u16u::return (dword) div32u16u::return
(dword) div32u16u::return#0 return zp ZP_DWORD:27 1.3333333333333333 (dword) div32u16u::return#0 return zp ZP_DWORD:27 1.3333333333333333
(dword) div32u16u::return#2 return zp ZP_DWORD:27 4.0 (dword) div32u16u::return#2 return zp ZP_DWORD:27 4.0
@ -32,31 +32,30 @@
(label) divr16u::@6 (label) divr16u::@6
(label) divr16u::@return (label) divr16u::@return
(word) divr16u::dividend (word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp ZP_WORD:6 2.75 (word) divr16u::dividend#0 dividend zp ZP_WORD:4 2.75
(word) divr16u::dividend#3 dividend zp ZP_WORD:6 5.0 (word) divr16u::dividend#3 dividend zp ZP_WORD:4 5.0
(word) divr16u::dividend#5 dividend zp ZP_WORD:6 2.0 (word) divr16u::dividend#5 dividend zp ZP_WORD:4 2.0
(word) divr16u::divisor (word) divr16u::divisor
(word) divr16u::divisor#6 divisor zp ZP_WORD:2 1.375
(byte) divr16u::i (byte) divr16u::i
(byte) divr16u::i#1 reg byte x 16.5 (byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923 (byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient (word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:8 16.5 (word) divr16u::quotient#1 quotient zp ZP_WORD:6 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:8 11.0 (word) divr16u::quotient#2 quotient zp ZP_WORD:6 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:8 2.75 (word) divr16u::quotient#3 quotient zp ZP_WORD:6 2.75
(word) divr16u::rem (word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:4 8.25 (word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
(word) divr16u::rem#1 rem zp ZP_WORD:4 22.0 (word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
(word) divr16u::rem#10 rem zp ZP_WORD:4 4.0 (word) divr16u::rem#10 rem zp ZP_WORD:2 4.0
(word) divr16u::rem#11 rem zp ZP_WORD:4 11.666666666666666 (word) divr16u::rem#11 rem zp ZP_WORD:2 11.666666666666666
(word) divr16u::rem#2 rem zp ZP_WORD:4 22.0 (word) divr16u::rem#2 rem zp ZP_WORD:2 22.0
(word) divr16u::rem#4 rem zp ZP_WORD:4 4.0 (word) divr16u::rem#4 rem zp ZP_WORD:2 4.0
(word) divr16u::rem#5 rem zp ZP_WORD:4 24.0 (word) divr16u::rem#5 rem zp ZP_WORD:2 24.0
(word) divr16u::rem#6 rem zp ZP_WORD:4 11.0 (word) divr16u::rem#6 rem zp ZP_WORD:2 11.0
(word) divr16u::return (word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:8 5.285714285714286 (word) divr16u::return#0 return zp ZP_WORD:6 5.285714285714286
(word) divr16u::return#2 return zp ZP_WORD:8 4.0 (word) divr16u::return#2 return zp ZP_WORD:6 4.0
(word) divr16u::return#3 return zp ZP_WORD:8 4.0 (word) divr16u::return#3 return zp ZP_WORD:6 4.0
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
@ -184,7 +183,7 @@
(label) print_word::@return (label) print_word::@return
(word) print_word::w (word) print_word::w
(word) rem16u (word) rem16u
(word) rem16u#1 rem16u zp ZP_WORD:4 0.8 (word) rem16u#1 rem16u zp ZP_WORD:2 0.8
(signed word()) sin16s((dword) sin16s::x) (signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$6 $6 zp ZP_DWORD:15 4.0 (dword~) sin16s::$6 $6 zp ZP_DWORD:15 4.0
(label) sin16s::@1 (label) sin16s::@1
@ -250,16 +249,16 @@
(dword) sin16s_gen::x#1 x zp ZP_DWORD:10 7.333333333333333 (dword) sin16s_gen::x#1 x zp ZP_DWORD:10 7.333333333333333
(dword) sin16s_gen::x#2 x zp ZP_DWORD:10 4.714285714285714 (dword) sin16s_gen::x#2 x zp ZP_DWORD:10 4.714285714285714
zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 divr16u::divisor#6 ] zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::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 ]
zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16s_gen::i#2 sin16s_gen::i#1 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 ] zp ZP_WORD:4 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16s_gen::i#2 sin16s_gen::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_WORD:6 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ]
reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:8 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 ] zp ZP_WORD:8 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 div32u16u::quotient_hi#0 ]
zp ZP_DWORD:10 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_DWORD:10 [ sin16s_gen::x#2 sin16s_gen::x#1 ]
zp ZP_BYTE:14 [ sin16s::isUpper#2 ] zp ZP_BYTE:14 [ sin16s::isUpper#2 ]
zp ZP_DWORD:15 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] zp ZP_DWORD:15 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ]
zp ZP_WORD:19 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 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 div32u16u::quotient_hi#0 ] zp ZP_WORD:19 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 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 ]
reg byte x [ mulu16_sel::select#5 ] reg byte x [ mulu16_sel::select#5 ]
zp ZP_WORD:21 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_WORD:21 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
zp ZP_DWORD:23 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] zp ZP_DWORD:23 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]

View File

@ -7,7 +7,7 @@
.const PI_u4f12 = $3244 .const PI_u4f12 = $3244
.const PI_HALF_u4f12 = $1922 .const PI_HALF_u4f12 = $1922
.label print_line_cursor = $400 .label print_line_cursor = $400
.label rem16u = 4 .label rem16u = 2
.label print_char_cursor = $b .label print_char_cursor = $b
jsr main jsr main
main: { main: {
@ -181,18 +181,6 @@ sin16s_genb: {
.label sintab = 2 .label sintab = 2
.label x = $d .label x = $d
.label i = 4 .label i = 4
lda #<main.wavelength
sta div32u16u.divisor
lda #>main.wavelength
sta div32u16u.divisor+1
lda #<PI2_u4f28
sta div32u16u.dividend
lda #>PI2_u4f28
sta div32u16u.dividend+1
lda #<PI2_u4f28>>$10
sta div32u16u.dividend+2
lda #>PI2_u4f28>>$10
sta div32u16u.dividend+3
jsr div32u16u jsr div32u16u
lda #<0 lda #<0
sta i sta i
@ -474,14 +462,12 @@ mul16u: {
jmp b1 jmp b1
} }
div32u16u: { div32u16u: {
.label quotient_hi = $b .label quotient_hi = 8
.label quotient_lo = 8 .label quotient_lo = 6
.label return = $1d .label return = $1d
.label dividend = $d lda #<PI2_u4f28>>$10
.label divisor = 2
lda dividend+2
sta divr16u.dividend sta divr16u.dividend
lda dividend+3 lda #>PI2_u4f28>>$10
sta divr16u.dividend+1 sta divr16u.dividend+1
lda #<0 lda #<0
sta divr16u.rem sta divr16u.rem
@ -491,9 +477,9 @@ div32u16u: {
sta quotient_hi sta quotient_hi
lda divr16u.return+1 lda divr16u.return+1
sta quotient_hi+1 sta quotient_hi+1
lda dividend lda #<PI2_u4f28&$ffff
sta divr16u.dividend sta divr16u.dividend
lda dividend+1 lda #>PI2_u4f28&$ffff
sta divr16u.dividend+1 sta divr16u.dividend+1
jsr divr16u jsr divr16u
lda quotient_hi lda quotient_hi
@ -507,11 +493,10 @@ div32u16u: {
rts rts
} }
divr16u: { divr16u: {
.label rem = 4 .label rem = 2
.label dividend = 6 .label dividend = 4
.label quotient = 8 .label quotient = 6
.label return = 8 .label return = 6
.label divisor = 2
ldx #0 ldx #0
txa txa
sta quotient sta quotient
@ -532,11 +517,11 @@ divr16u: {
asl quotient asl quotient
rol quotient+1 rol quotient+1
lda rem+1 lda rem+1
cmp divisor+1 cmp #>main.wavelength
bcc b3 bcc b3
bne !+ bne !+
lda rem lda rem
cmp divisor cmp #<main.wavelength
bcc b3 bcc b3
!: !:
inc quotient inc quotient
@ -545,10 +530,10 @@ divr16u: {
!: !:
lda rem lda rem
sec sec
sbc divisor sbc #<main.wavelength
sta rem sta rem
lda rem+1 lda rem+1
sbc divisor+1 sbc #>main.wavelength
sta rem+1 sta rem+1
b3: b3:
inx inx
@ -562,18 +547,6 @@ sin16s_gen: {
.label sintab = 2 .label sintab = 2
.label x = $d .label x = $d
.label i = 4 .label i = 4
lda #<main.wavelength
sta div32u16u.divisor
lda #>main.wavelength
sta div32u16u.divisor+1
lda #<PI2_u4f28
sta div32u16u.dividend
lda #>PI2_u4f28
sta div32u16u.dividend+1
lda #<PI2_u4f28>>$10
sta div32u16u.dividend+2
lda #>PI2_u4f28>>$10
sta div32u16u.dividend+3
jsr div32u16u jsr div32u16u
lda #<0 lda #<0
sta i sta i

View File

@ -227,202 +227,196 @@ sin16sb::@15: scope:[sin16sb] from sin16sb::@12
[115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#5 ] ) [115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#5 ] )
to:sin16sb::@3 to:sin16sb::@3
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 sin16sb::@10 sin16sb::@11 sin16sb::@2 sin16sb::@8 sin16sb::@9 mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 sin16sb::@10 sin16sb::@11 sin16sb::@2 sin16sb::@8 sin16sb::@9
[116] (byte) mulu16_sel::select#10 ← 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 sin16sb::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16sb::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ) [116] (byte) mulu16_sel::select#10 ← 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 sin16sb::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16sb::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] )
[116] (word) mulu16_sel::v2#10 ← 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 sin16sb::@10/(word) mulu16_sel::v2#8 sin16sb::@11/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@8/(word) mulu16_sel::v2#6 sin16sb::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ) [116] (word) mulu16_sel::v2#10 ← 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 sin16sb::@10/(word) mulu16_sel::v2#8 sin16sb::@11/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@8/(word) mulu16_sel::v2#6 sin16sb::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] )
[116] (word) mulu16_sel::v1#10 ← 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 sin16sb::@10/(word) mulu16_sel::v1#8 sin16sb::@11/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@8/(word) mulu16_sel::v1#6 sin16sb::@9/(word) mulu16_sel::v1#7 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ) [116] (word) mulu16_sel::v1#10 ← 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 sin16sb::@10/(word) mulu16_sel::v1#8 sin16sb::@11/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@8/(word) mulu16_sel::v1#6 sin16sb::@9/(word) mulu16_sel::v1#7 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] )
[117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ) [117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] )
[118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ) [118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] )
[119] call mul16u param-assignment [ mulu16_sel::select#10 mul16u::res#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] ) [119] call mul16u param-assignment [ mulu16_sel::select#10 mul16u::res#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] )
[120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] ) [120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] )
to:mulu16_sel::@2 to:mulu16_sel::@2
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
[121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] ) [121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] )
[122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] ) [122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] )
[123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] ) [123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] )
to:mulu16_sel::@return to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2 mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
[124] return [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] ) [124] return [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] )
to:@return to:@return
mul16u: scope:[mul16u] from mulu16_sel mul16u: scope:[mul16u] from mulu16_sel
[125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] ) [125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] )
to:mul16u::@1 to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
[126] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) [126] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
[126] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) [126] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
[126] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@4/(word) mul16u::a#0 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) [126] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@4/(word) mul16u::a#0 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
[127] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) [127] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
to:mul16u::@return to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1 mul16u::@return: scope:[mul16u] from mul16u::@1
[128] return [ mul16u::res#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] ) [128] return [ mul16u::res#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] )
to:@return to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1 mul16u::@2: scope:[mul16u] from mul16u::@1
[129] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ) [129] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] )
[130] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ) [130] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
to:mul16u::@7 to:mul16u::@7
mul16u::@7: scope:[mul16u] from mul16u::@2 mul16u::@7: scope:[mul16u] from mul16u::@2
[131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ) [131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] )
to:mul16u::@4 to:mul16u::@4
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
[132] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) [ mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ) [132] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) [ mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] )
[133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) [133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] )
[134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:192::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:201::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:207::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:173::mulu16_sel:212::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) [134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:188::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:193::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:197::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:203::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:169::mulu16_sel:208::mul16u:119 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] )
to:mul16u::@1 to:mul16u::@1
div32u16u: scope:[div32u16u] from sin16s_gen sin16s_genb div32u16u: scope:[div32u16u] from sin16s_gen sin16s_genb
[135] (word) div32u16u::divisor#2 ← phi( sin16s_gen/(const word) main::wavelength#0 sin16s_genb/(const word) main::wavelength#0 ) [ div32u16u::dividend#2 div32u16u::divisor#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::dividend#2 div32u16u::divisor#2 ] ) [135] phi() [ ] ( main:2::sin16s_genb:7::div32u16u:63 [ ] main:2::sin16s_gen:5::div32u16u:164 [ ] )
[135] (dword) div32u16u::dividend#2 ← phi( sin16s_gen/(const dword) PI2_u4f28#0 sin16s_genb/(const dword) PI2_u4f28#0 ) [ div32u16u::dividend#2 div32u16u::divisor#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::dividend#2 div32u16u::divisor#2 ] ) [136] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:164 [ divr16u::return#0 rem16u#1 ] )
[136] (word) divr16u::dividend#1 ← > (dword) div32u16u::dividend#2 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 ] ) [137] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::return#2 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:164 [ divr16u::return#2 rem16u#1 ] )
[137] (word) divr16u::divisor#0 ← (word) div32u16u::divisor#2 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 divr16u::divisor#0 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 divr16u::divisor#0 ] )
[138] call divr16u param-assignment [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 rem16u#1 ] )
[139] (word) divr16u::return#2 ← (word) divr16u::return#0 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#2 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#2 rem16u#1 ] )
to:div32u16u::@2 to:div32u16u::@2
div32u16u::@2: scope:[div32u16u] from div32u16u div32u16u::@2: scope:[div32u16u] from div32u16u
[140] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::dividend#2 div32u16u::divisor#2 div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 div32u16u::quotient_hi#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::dividend#2 div32u16u::divisor#2 div32u16u::quotient_hi#0 rem16u#1 ] ) [138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:164 [ div32u16u::quotient_hi#0 rem16u#1 ] )
[141] (word) divr16u::dividend#2 ← < (dword) div32u16u::dividend#2 [ div32u16u::divisor#2 div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::divisor#2 div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::divisor#2 div32u16u::quotient_hi#0 divr16u::dividend#2 rem16u#1 ] ) [139] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:164 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] )
[142] (word) divr16u::divisor#1 ← (word) div32u16u::divisor#2 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 rem16u#1 ] ) [140] call divr16u param-assignment [ divr16u::return#0 div32u16u::quotient_hi#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::return#0 div32u16u::quotient_hi#0 ] main:2::sin16s_gen:5::div32u16u:164 [ divr16u::return#0 div32u16u::quotient_hi#0 ] )
[143] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ) [141] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:164 [ div32u16u::quotient_hi#0 divr16u::return#3 ] )
[144] call divr16u param-assignment [ divr16u::return#0 div32u16u::quotient_hi#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::return#0 div32u16u::quotient_hi#0 ] main:2::sin16s_gen:5::div32u16u:168 [ divr16u::return#0 div32u16u::quotient_hi#0 ] )
[145] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::quotient_hi#0 divr16u::return#3 ] )
to:div32u16u::@3 to:div32u16u::@3
div32u16u::@3: scope:[div32u16u] from div32u16u::@2 div32u16u::@3: scope:[div32u16u] from div32u16u::@2
[146] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ) [142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:164 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] )
[147] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::return#0 ] ) [143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:164 [ div32u16u::return#0 ] )
to:div32u16u::@return to:div32u16u::@return
div32u16u::@return: scope:[div32u16u] from div32u16u::@3 div32u16u::@return: scope:[div32u16u] from div32u16u::@3
[148] return [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:168 [ div32u16u::return#0 ] ) [144] return [ div32u16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::return#0 ] main:2::sin16s_gen:5::div32u16u:164 [ div32u16u::return#0 ] )
to:@return to:@return
divr16u: scope:[divr16u] from div32u16u div32u16u::@2 divr16u: scope:[divr16u] from div32u16u div32u16u::@2
[149] (word) divr16u::divisor#6 ← phi( div32u16u/(word) divr16u::divisor#0 div32u16u::@2/(word) divr16u::divisor#1 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) [145] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#10 divr16u::dividend#5 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] )
[149] (word) divr16u::dividend#5 ← phi( div32u16u/(word) divr16u::dividend#1 div32u16u::@2/(word) divr16u::dividend#2 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) [145] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] )
[149] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
to:divr16u::@1 to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[150] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [146] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[150] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [146] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[150] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [146] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[150] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) [146] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[151] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) [147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[152] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) [148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[153] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) [149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[154] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) [150] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
to:divr16u::@4 to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1 divr16u::@4: scope:[divr16u] from divr16u::@1
[155] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) [151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
to:divr16u::@2 to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[156] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ) [152] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
[157] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ) [153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
[158] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) [154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
[159] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ) [155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
to:divr16u::@5 to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2 divr16u::@5: scope:[divr16u] from divr16u::@2
[160] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ) [156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
[161] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) [157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
to:divr16u::@3 to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[162] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) [158] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[162] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ) [158] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[163] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) [159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
[164] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ) [160] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
to:divr16u::@6 to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3 divr16u::@6: scope:[divr16u] from divr16u::@3
[165] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) [161] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] )
to:divr16u::@return to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6 divr16u::@return: scope:[divr16u] from divr16u::@6
[166] return [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:168::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] ) [162] return [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:136 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:136 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:5::div32u16u:164::divr16u:140 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] )
to:@return to:@return
sin16s_gen: scope:[sin16s_gen] from main sin16s_gen: scope:[sin16s_gen] from main
[167] phi() [ ] ( main:2::sin16s_gen:5 [ ] ) [163] phi() [ ] ( main:2::sin16s_gen:5 [ ] )
[168] call div32u16u param-assignment [ div32u16u::return#0 ] ( main:2::sin16s_gen:5 [ div32u16u::return#0 ] ) [164] call div32u16u param-assignment [ div32u16u::return#0 ] ( main:2::sin16s_gen:5 [ div32u16u::return#0 ] )
[169] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] ) [165] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] )
to:sin16s_gen::@3 to:sin16s_gen::@3
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen
[170] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) [166] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] )
to:sin16s_gen::@1 to:sin16s_gen::@1
sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4
[171] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(word) sin16s_gen::i#1 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) [167] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(word) sin16s_gen::i#1 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
[171] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@3/(const signed word[120]) main::sintab1#0 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#0 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) [167] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@3/(const signed word[120]) main::sintab1#0 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#0 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
[171] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(dword) sin16s_gen::x#1 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) [167] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(dword) sin16s_gen::x#1 ) [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
[172] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] )
[173] call sin16s param-assignment [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ) [169] call sin16s param-assignment [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] )
[174] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ) [170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] )
to:sin16s_gen::@4 to:sin16s_gen::@4
sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1
[175] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ) [171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] )
[176] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ) [172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
[177] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ) [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] )
[178] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ) [174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] )
[179] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) [175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] )
[180] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ) [176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] )
to:sin16s_gen::@return to:sin16s_gen::@return
sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4 sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4
[181] return [ ] ( main:2::sin16s_gen:5 [ ] ) [177] return [ ] ( main:2::sin16s_gen:5 [ ] )
to:@return to:@return
sin16s: scope:[sin16s] from sin16s_gen::@1 sin16s: scope:[sin16s] from sin16s_gen::@1
[182] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ) [178] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] )
to:sin16s::@4 to:sin16s::@4
sin16s::@4: scope:[sin16s] from sin16s sin16s::@4: scope:[sin16s] from sin16s
[183] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] ) [179] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] )
to:sin16s::@1 to:sin16s::@1
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4 sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
[184] (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 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) [180] (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 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
[184] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) [180] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
[185] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] ) [181] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
to:sin16s::@5 to:sin16s::@5
sin16s::@5: scope:[sin16s] from sin16s::@1 sin16s::@5: scope:[sin16s] from sin16s::@1
[186] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] ) [182] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] )
to:sin16s::@2 to:sin16s::@2
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5 sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
[187] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) [ sin16s::isUpper#2 sin16s::x#6 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#6 ] ) [183] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) [ sin16s::isUpper#2 sin16s::x#6 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#6 ] )
[188] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$6 ] ) [184] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$6 ] )
[189] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] ) [185] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] )
[190] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ) [186] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] )
[191] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ) [187] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] )
[192] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ) [188] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] )
[193] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ) [189] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] )
to:sin16s::@8 to:sin16s::@8
sin16s::@8: scope:[sin16s] from sin16s::@2 sin16s::@8: scope:[sin16s] from sin16s::@2
[194] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ) [190] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] )
[195] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ) [191] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] )
[196] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ) [192] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] )
[197] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ) [193] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] )
[198] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ) [194] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] )
to:sin16s::@9 to:sin16s::@9
sin16s::@9: scope:[sin16s] from sin16s::@8 sin16s::@9: scope:[sin16s] from sin16s::@8
[199] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) [195] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
[200] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) [196] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
[201] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ) [197] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
[202] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ) [198] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] )
to:sin16s::@10 to:sin16s::@10
sin16s::@10: scope:[sin16s] from sin16s::@9 sin16s::@10: scope:[sin16s] from sin16s::@9
[203] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ) [199] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] )
[204] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ) [200] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] )
[205] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) [201] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
[206] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) [202] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
[207] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) [203] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
[208] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ) [204] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] )
to:sin16s::@11 to:sin16s::@11
sin16s::@11: scope:[sin16s] from sin16s::@10 sin16s::@11: scope:[sin16s] from sin16s::@10
[209] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ) [205] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] )
[210] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ) [206] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
[211] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ) [207] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] )
[212] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::usinx#0 ] ) [208] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::usinx#0 ] )
[213] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ) [209] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] )
to:sin16s::@12 to:sin16s::@12
sin16s::@12: scope:[sin16s] from sin16s::@11 sin16s::@12: scope:[sin16s] from sin16s::@11
[214] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ) [210] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] )
[215] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ) [211] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] )
[216] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] ) [212] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] )
[217] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 [ sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::usinx#1 ] ) [213] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 [ sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::usinx#1 ] )
to:sin16s::@6 to:sin16s::@6
sin16s::@6: scope:[sin16s] from sin16s::@12 sin16s::@6: scope:[sin16s] from sin16s::@12
[218] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] ) [214] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] )
to:sin16s::@3 to:sin16s::@3
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6 sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
[219] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) [ sin16s::return#1 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ) [215] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) [ sin16s::return#1 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] )
to:sin16s::@return to:sin16s::@return
sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@return: scope:[sin16s] from sin16s::@3
[220] return [ sin16s::return#1 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ) [216] return [ sin16s::return#1 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] )
to:@return to:@return
sin16s::@15: scope:[sin16s] from sin16s::@12 sin16s::@15: scope:[sin16s] from sin16s::@12
[221] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:173 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] ) [217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:169 [ sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] )
to:sin16s::@3 to:sin16s::@3

File diff suppressed because it is too large Load Diff

View File

@ -16,14 +16,12 @@
(label) div32u16u::@3 (label) div32u16u::@3
(label) div32u16u::@return (label) div32u16u::@return
(dword) div32u16u::dividend (dword) div32u16u::dividend
(dword) div32u16u::dividend#2 dividend zp ZP_DWORD:13 0.6666666666666666
(word) div32u16u::divisor (word) div32u16u::divisor
(word) div32u16u::divisor#2 divisor zp ZP_WORD:2 0.5714285714285714
(dword) div32u16u::quotient (dword) div32u16u::quotient
(word) div32u16u::quotient_hi (word) div32u16u::quotient_hi
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:11 0.5714285714285714 (word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:8 0.8
(word) div32u16u::quotient_lo (word) div32u16u::quotient_lo
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:8 4.0 (word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:6 4.0
(dword) div32u16u::return (dword) div32u16u::return
(dword) div32u16u::return#0 return zp ZP_DWORD:29 1.5 (dword) div32u16u::return#0 return zp ZP_DWORD:29 1.5
(dword) div32u16u::return#2 return zp ZP_DWORD:29 4.0 (dword) div32u16u::return#2 return zp ZP_DWORD:29 4.0
@ -39,35 +37,30 @@
(label) divr16u::@6 (label) divr16u::@6
(label) divr16u::@return (label) divr16u::@return
(word) divr16u::dividend (word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp ZP_WORD:6 2.75 (word) divr16u::dividend#0 dividend zp ZP_WORD:4 2.75
(word) divr16u::dividend#1 dividend zp ZP_WORD:6 2.0 (word) divr16u::dividend#3 dividend zp ZP_WORD:4 5.0
(word) divr16u::dividend#2 dividend zp ZP_WORD:6 1.3333333333333333 (word) divr16u::dividend#5 dividend zp ZP_WORD:4 2.0
(word) divr16u::dividend#3 dividend zp ZP_WORD:6 5.0
(word) divr16u::dividend#5 dividend zp ZP_WORD:6 6.0
(word) divr16u::divisor (word) divr16u::divisor
(word) divr16u::divisor#0 divisor zp ZP_WORD:2 4.0
(word) divr16u::divisor#1 divisor zp ZP_WORD:2 2.0
(word) divr16u::divisor#6 divisor zp ZP_WORD:2 1.625
(byte) divr16u::i (byte) divr16u::i
(byte) divr16u::i#1 reg byte x 16.5 (byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923 (byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient (word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:8 16.5 (word) divr16u::quotient#1 quotient zp ZP_WORD:6 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:8 11.0 (word) divr16u::quotient#2 quotient zp ZP_WORD:6 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:8 2.75 (word) divr16u::quotient#3 quotient zp ZP_WORD:6 2.75
(word) divr16u::rem (word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:4 8.25 (word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
(word) divr16u::rem#1 rem zp ZP_WORD:4 22.0 (word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
(word) divr16u::rem#10 rem zp ZP_WORD:4 4.0 (word) divr16u::rem#10 rem zp ZP_WORD:2 4.0
(word) divr16u::rem#11 rem zp ZP_WORD:4 11.666666666666666 (word) divr16u::rem#11 rem zp ZP_WORD:2 11.666666666666666
(word) divr16u::rem#2 rem zp ZP_WORD:4 22.0 (word) divr16u::rem#2 rem zp ZP_WORD:2 22.0
(word) divr16u::rem#4 rem zp ZP_WORD:4 4.0 (word) divr16u::rem#4 rem zp ZP_WORD:2 4.0
(word) divr16u::rem#5 rem zp ZP_WORD:4 24.0 (word) divr16u::rem#5 rem zp ZP_WORD:2 24.0
(word) divr16u::rem#6 rem zp ZP_WORD:4 11.0 (word) divr16u::rem#6 rem zp ZP_WORD:2 11.0
(word) divr16u::return (word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:8 5.285714285714286 (word) divr16u::return#0 return zp ZP_WORD:6 5.285714285714286
(word) divr16u::return#2 return zp ZP_WORD:8 4.0 (word) divr16u::return#2 return zp ZP_WORD:6 4.0
(word) divr16u::return#3 return zp ZP_WORD:8 4.0 (word) divr16u::return#3 return zp ZP_WORD:6 4.0
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
@ -218,7 +211,7 @@
(label) print_word::@return (label) print_word::@return
(word) print_word::w (word) print_word::w
(word) rem16u (word) rem16u
(word) rem16u#1 rem16u zp ZP_WORD:4 0.5714285714285714 (word) rem16u#1 rem16u zp ZP_WORD:2 0.8
(signed word()) sin16s((dword) sin16s::x) (signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$6 $6 zp ZP_DWORD:21 4.0 (dword~) sin16s::$6 $6 zp ZP_DWORD:21 4.0
(label) sin16s::@1 (label) sin16s::@1
@ -347,15 +340,15 @@
(word) sin16sb::x5_128 (word) sin16sb::x5_128
(word) sin16sb::x5_128#0 x5_128 zp ZP_WORD:17 4.0 (word) sin16sb::x5_128#0 x5_128 zp ZP_WORD:17 4.0
zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_genb::sintab#2 sin16s_genb::sintab#0 div32u16u::divisor#2 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ] zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_genb::sintab#2 sin16s_genb::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 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ]
zp ZP_WORD:4 [ main::st2#2 main::st2#1 sin16s_genb::i#2 sin16s_genb::i#1 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 sin16s_gen::i#2 sin16s_gen::i#1 ] zp ZP_WORD:4 [ main::st2#2 main::st2#1 sin16s_genb::i#2 sin16s_genb::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 sin16s_gen::i#2 sin16s_gen::i#1 ]
reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i#2 main::i#1 ]
zp ZP_WORD:6 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 sin16sb::x1#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 ] zp ZP_WORD:6 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 sin16sb::x1#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 ]
zp ZP_WORD:8 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 sin16sb::usinx#1 sin16sb::return#0 sin16s_genb::$2 sin16sb::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 sin16s::x1#0 ] zp ZP_WORD:8 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 sin16sb::usinx#1 sin16sb::return#0 sin16s_genb::$2 sin16sb::usinx#0 div32u16u::quotient_hi#0 sin16s::x1#0 ]
zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 sin16sb::isUpper#2 sin16s::isUpper#2 ] zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 sin16sb::isUpper#2 sin16s::isUpper#2 ]
reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 sin16sb::x3#0 sin16s::x3#0 sin16sb::x2#0 sin16sb::x4#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#19 mulu16_sel::return#10 mulu16_sel::return#0 mulu16_sel::return#1 mulu16_sel::return#15 div32u16u::quotient_hi#0 ] zp ZP_WORD:11 [ print_char_cursor#33 print_char_cursor#46 print_char_cursor#43 print_char_cursor#51 print_char_cursor#48 print_char_cursor#49 print_char_cursor#2 print_char_cursor#12 print_char_cursor#1 mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 sin16sb::x3#0 sin16s::x3#0 sin16sb::x2#0 sin16sb::x4#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#19 mulu16_sel::return#10 mulu16_sel::return#0 mulu16_sel::return#1 mulu16_sel::return#15 ]
zp ZP_DWORD:13 [ sin16s_genb::x#2 sin16s_genb::x#1 div32u16u::dividend#2 sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_DWORD:13 [ sin16s_genb::x#2 sin16s_genb::x#1 sin16s_gen::x#2 sin16s_gen::x#1 ]
zp ZP_WORD:17 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 mul16u::b#0 mulu16_sel::return#18 mulu16_sel::return#17 mulu16_sel::return#20 sin16sb::x3_6#0 mulu16_sel::return#11 sin16sb::x5#0 mulu16_sel::return#14 sin16s::x3_6#0 mulu16_sel::return#16 sin16s::x5#0 sin16sb::x5_128#0 sin16s::x5_128#0 ] zp ZP_WORD:17 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 mul16u::b#0 mulu16_sel::return#18 mulu16_sel::return#17 mulu16_sel::return#20 sin16sb::x3_6#0 mulu16_sel::return#11 sin16sb::x5#0 mulu16_sel::return#14 sin16s::x3_6#0 mulu16_sel::return#16 sin16s::x5#0 sin16sb::x5_128#0 sin16s::x5_128#0 ]
reg byte x [ mulu16_sel::select#10 ] reg byte x [ mulu16_sel::select#10 ]
zp ZP_WORD:19 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ] zp ZP_WORD:19 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ]

View File

@ -8,7 +8,7 @@
.const PI_u4f12 = $3244 .const PI_u4f12 = $3244
.const PI_HALF_u4f12 = $1922 .const PI_HALF_u4f12 = $1922
.label print_line_cursor = $400 .label print_line_cursor = $400
.label rem16u = 5 .label rem16u = 2
.label print_char_cursor = 5 .label print_char_cursor = 5
jsr main jsr main
main: { main: {
@ -482,13 +482,9 @@ mul16u: {
jmp b1 jmp b1
} }
div32u16u: { div32u16u: {
.label quotient_hi = $13 .label quotient_hi = $11
.label quotient_lo = $11 .label quotient_lo = $f
.label return = $1c .label return = $1c
lda #<main.wavelength
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28>>$10 lda #<PI2_u4f28>>$10
sta divr16u.dividend sta divr16u.dividend
lda #>PI2_u4f28>>$10 lda #>PI2_u4f28>>$10
@ -501,10 +497,6 @@ div32u16u: {
sta quotient_hi sta quotient_hi
lda divr16u.return+1 lda divr16u.return+1
sta quotient_hi+1 sta quotient_hi+1
lda #<main.wavelength
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f28&$ffff lda #<PI2_u4f28&$ffff
sta divr16u.dividend sta divr16u.dividend
lda #>PI2_u4f28&$ffff lda #>PI2_u4f28&$ffff
@ -521,11 +513,10 @@ div32u16u: {
rts rts
} }
divr16u: { divr16u: {
.label rem = 5 .label rem = 2
.label dividend = $f .label dividend = 5
.label quotient = $11 .label quotient = $f
.label return = $11 .label return = $f
.label divisor = 2
ldx #0 ldx #0
txa txa
sta quotient sta quotient
@ -546,11 +537,11 @@ divr16u: {
asl quotient asl quotient
rol quotient+1 rol quotient+1
lda rem+1 lda rem+1
cmp divisor+1 cmp #>main.wavelength
bcc b3 bcc b3
bne !+ bne !+
lda rem lda rem
cmp divisor cmp #<main.wavelength
bcc b3 bcc b3
!: !:
inc quotient inc quotient
@ -559,10 +550,10 @@ divr16u: {
!: !:
lda rem lda rem
sec sec
sbc divisor sbc #<main.wavelength
sta rem sta rem
lda rem+1 lda rem+1
sbc divisor+1 sbc #>main.wavelength
sta rem+1 sta rem+1
b3: b3:
inx inx
@ -571,10 +562,10 @@ divr16u: {
rts rts
} }
sin8s_gen: { sin8s_gen: {
.label step = $11 .label step = $f
.label sintab = 5 .label sintab = 5
.label x = 2 .label x = 2
.label i = $f .label i = $11
jsr div16u jsr div16u
lda #<0 lda #<0
sta i sta i
@ -777,11 +768,7 @@ mul8u: {
jmp b1 jmp b1
} }
div16u: { div16u: {
.label return = $11 .label return = $f
lda #<main.wavelength
sta divr16u.divisor
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f12 lda #<PI2_u4f12
sta divr16u.dividend sta divr16u.dividend
lda #>PI2_u4f12 lda #>PI2_u4f12

View File

@ -276,38 +276,37 @@ div32u16u::@return: scope:[div32u16u] from div32u16u::@3
[143] return [ div32u16u::return#0 ] ( main:2::sin16s_gen:7::div32u16u:61 [ div32u16u::return#0 ] ) [143] return [ div32u16u::return#0 ] ( main:2::sin16s_gen:7::div32u16u:61 [ div32u16u::return#0 ] )
to:@return to:@return
divr16u: scope:[divr16u] from div16u div32u16u div32u16u::@2 divr16u: scope:[divr16u] from div16u div32u16u div32u16u::@2
[144] (word) divr16u::divisor#7 ← phi( div16u/(const word) main::wavelength#0 div32u16u/(const word) main::wavelength#0 div32u16u::@2/(const word) main::wavelength#0 ) [ divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] ) [144] (word) divr16u::dividend#6 ← phi( div16u/(const word) PI2_u4f12#0 div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#11 divr16u::dividend#6 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::rem#11 divr16u::dividend#6 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::dividend#6 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::rem#11 divr16u::dividend#6 ] )
[144] (word) divr16u::dividend#6 ← phi( div16u/(const word) PI2_u4f12#0 div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] ) [144] (word) divr16u::rem#11 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#5 ) [ divr16u::rem#11 divr16u::dividend#6 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::rem#11 divr16u::dividend#6 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::dividend#6 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::rem#11 divr16u::dividend#6 ] )
[144] (word) divr16u::rem#11 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#5 ) [ divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::rem#11 divr16u::dividend#6 divr16u::divisor#7 ] )
to:divr16u::@1 to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[145] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ) [145] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] )
[145] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ) [145] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] )
[145] (word) divr16u::dividend#4 ← phi( divr16u/(word) divr16u::dividend#6 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ) [145] (word) divr16u::dividend#4 ← phi( divr16u/(word) divr16u::dividend#6 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] )
[145] (word) divr16u::rem#6 ← phi( divr16u/(word) divr16u::rem#11 divr16u::@3/(word) divr16u::rem#10 ) [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ) [145] (word) divr16u::rem#6 ← phi( divr16u/(word) divr16u::rem#11 divr16u::@3/(word) divr16u::rem#10 ) [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::rem#6 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 ] )
[146] (word) divr16u::rem#0 ← (word) divr16u::rem#6 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) [146] (word) divr16u::rem#0 ← (word) divr16u::rem#6 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[147] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ) [147] (byte~) divr16u::$1 ← > (word) divr16u::dividend#4 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[148] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ) [148] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[149] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ) [149] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
to:divr16u::@4 to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1 divr16u::@4: scope:[divr16u] from divr16u::@1
[150] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ) [150] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
to:divr16u::@2 to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4 divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[151] (word) divr16u::rem#7 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#7 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#7 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#7 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#7 ] ) [151] (word) divr16u::rem#7 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#7 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#7 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#7 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::dividend#4 divr16u::quotient#3 divr16u::i#2 divr16u::rem#7 ] )
[152] (word) divr16u::dividend#0 ← (word) divr16u::dividend#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#7 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 ] ) [152] (word) divr16u::dividend#0 ← (word) divr16u::dividend#4 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 ] )
[153] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ) [153] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] )
[154] if((word) divr16u::rem#7<(word) divr16u::divisor#7) goto divr16u::@3 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ) [154] if((word) divr16u::rem#7<(const word) main::wavelength#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#1 ] )
to:divr16u::@5 to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2 divr16u::@5: scope:[divr16u] from divr16u::@2
[155] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#2 ] ) [155] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#7 divr16u::quotient#2 ] )
[156] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (word) divr16u::divisor#7 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::divisor#7 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ) [156] (word) divr16u::rem#2 ← (word) divr16u::rem#7 - (const word) main::wavelength#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
to:divr16u::@3 to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5 divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[157] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::divisor#7 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 divr16u::divisor#7 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#7 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 divr16u::divisor#7 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ) [157] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] )
[157] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#7 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::divisor#7 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 divr16u::divisor#7 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#7 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 divr16u::divisor#7 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ) [157] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#7 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 divr16u::i#2 divr16u::rem#10 divr16u::dividend#0 ] )
[158] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::divisor#7 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 divr16u::divisor#7 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#7 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 divr16u::divisor#7 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) [158] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] )
[159] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::divisor#7 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 divr16u::divisor#7 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::divisor#7 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 divr16u::divisor#7 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ) [159] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 divr16u::rem#10 divr16u::dividend#0 divr16u::i#1 ] )
to:divr16u::@6 to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3 divr16u::@6: scope:[divr16u] from divr16u::@3
[160] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 rem16u#1 ] ) [160] (word) rem16u#1 ← (word) divr16u::rem#10 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:7::div32u16u:61::divr16u:135 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen:7::div32u16u:61::divr16u:139 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] main:2::sin8s_gen:5::div16u:163::divr16u:240 [ divr16u::return#0 rem16u#1 ] )

File diff suppressed because it is too large Load Diff

View File

@ -19,8 +19,8 @@
(word) div16u::dividend (word) div16u::dividend
(word) div16u::divisor (word) div16u::divisor
(word) div16u::return (word) div16u::return
(word) div16u::return#0 return zp ZP_WORD:17 1.3333333333333333 (word) div16u::return#0 return zp ZP_WORD:15 1.3333333333333333
(word) div16u::return#2 return zp ZP_WORD:17 4.0 (word) div16u::return#2 return zp ZP_WORD:15 4.0
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor) (dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@2 (label) div32u16u::@2
(label) div32u16u::@3 (label) div32u16u::@3
@ -29,9 +29,9 @@
(word) div32u16u::divisor (word) div32u16u::divisor
(dword) div32u16u::quotient (dword) div32u16u::quotient
(word) div32u16u::quotient_hi (word) div32u16u::quotient_hi
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:19 0.8 (word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:17 0.8
(word) div32u16u::quotient_lo (word) div32u16u::quotient_lo
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:17 4.0 (word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:15 4.0
(dword) div32u16u::return (dword) div32u16u::return
(dword) div32u16u::return#0 return zp ZP_DWORD:28 1.3333333333333333 (dword) div32u16u::return#0 return zp ZP_DWORD:28 1.3333333333333333
(dword) div32u16u::return#2 return zp ZP_DWORD:28 4.0 (dword) div32u16u::return#2 return zp ZP_DWORD:28 4.0
@ -46,32 +46,31 @@
(label) divr16u::@6 (label) divr16u::@6
(label) divr16u::@return (label) divr16u::@return
(word) divr16u::dividend (word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp ZP_WORD:15 2.75 (word) divr16u::dividend#0 dividend zp ZP_WORD:5 2.75
(word) divr16u::dividend#4 dividend zp ZP_WORD:15 5.0 (word) divr16u::dividend#4 dividend zp ZP_WORD:5 5.0
(word) divr16u::dividend#6 dividend zp ZP_WORD:15 2.0 (word) divr16u::dividend#6 dividend zp ZP_WORD:5 2.0
(word) divr16u::divisor (word) divr16u::divisor
(word) divr16u::divisor#7 divisor zp ZP_WORD:2 1.375
(byte) divr16u::i (byte) divr16u::i
(byte) divr16u::i#1 reg byte x 16.5 (byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923 (byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient (word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:17 16.5 (word) divr16u::quotient#1 quotient zp ZP_WORD:15 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:17 11.0 (word) divr16u::quotient#2 quotient zp ZP_WORD:15 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:17 2.75 (word) divr16u::quotient#3 quotient zp ZP_WORD:15 2.75
(word) divr16u::rem (word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:5 8.25 (word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
(word) divr16u::rem#1 rem zp ZP_WORD:5 22.0 (word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
(word) divr16u::rem#10 rem zp ZP_WORD:5 11.666666666666666 (word) divr16u::rem#10 rem zp ZP_WORD:2 11.666666666666666
(word) divr16u::rem#11 rem zp ZP_WORD:5 4.0 (word) divr16u::rem#11 rem zp ZP_WORD:2 4.0
(word) divr16u::rem#2 rem zp ZP_WORD:5 22.0 (word) divr16u::rem#2 rem zp ZP_WORD:2 22.0
(word) divr16u::rem#5 rem zp ZP_WORD:5 4.0 (word) divr16u::rem#5 rem zp ZP_WORD:2 4.0
(word) divr16u::rem#6 rem zp ZP_WORD:5 24.0 (word) divr16u::rem#6 rem zp ZP_WORD:2 24.0
(word) divr16u::rem#7 rem zp ZP_WORD:5 11.0 (word) divr16u::rem#7 rem zp ZP_WORD:2 11.0
(word) divr16u::return (word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:17 4.875 (word) divr16u::return#0 return zp ZP_WORD:15 4.875
(word) divr16u::return#2 return zp ZP_WORD:17 4.0 (word) divr16u::return#2 return zp ZP_WORD:15 4.0
(word) divr16u::return#3 return zp ZP_WORD:17 4.0 (word) divr16u::return#3 return zp ZP_WORD:15 4.0
(word) divr16u::return#4 return zp ZP_WORD:17 4.0 (word) divr16u::return#4 return zp ZP_WORD:15 4.0
(void()) main() (void()) main()
(word~) main::$3 $3 zp ZP_WORD:2 22.0 (word~) main::$3 $3 zp ZP_WORD:2 22.0
(word~) main::$4 $4 zp ZP_WORD:2 22.0 (word~) main::$4 $4 zp ZP_WORD:2 22.0
@ -252,7 +251,7 @@
(byte*) print_str::str#3 str zp ZP_WORD:2 101.5 (byte*) print_str::str#3 str zp ZP_WORD:2 101.5
(byte*) print_str::str#5 str zp ZP_WORD:2 2.0 (byte*) print_str::str#5 str zp ZP_WORD:2 2.0
(word) rem16u (word) rem16u
(word) rem16u#1 rem16u zp ZP_WORD:5 0.8 (word) rem16u#1 rem16u zp ZP_WORD:2 0.8
(signed word()) sin16s((dword) sin16s::x) (signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$6 $6 zp ZP_DWORD:11 4.0 (dword~) sin16s::$6 $6 zp ZP_DWORD:11 4.0
(label) sin16s::@1 (label) sin16s::@1
@ -376,28 +375,28 @@
(label) sin8s_gen::@4 (label) sin8s_gen::@4
(label) sin8s_gen::@return (label) sin8s_gen::@return
(word) sin8s_gen::i (word) sin8s_gen::i
(word) sin8s_gen::i#1 i zp ZP_WORD:15 16.5 (word) sin8s_gen::i#1 i zp ZP_WORD:17 16.5
(word) sin8s_gen::i#2 i zp ZP_WORD:15 2.75 (word) sin8s_gen::i#2 i zp ZP_WORD:17 2.75
(signed byte*) sin8s_gen::sintab (signed byte*) sin8s_gen::sintab
(signed byte*) sin8s_gen::sintab#0 sintab zp ZP_WORD:5 5.5 (signed byte*) sin8s_gen::sintab#0 sintab zp ZP_WORD:5 5.5
(signed byte*) sin8s_gen::sintab#2 sintab zp ZP_WORD:5 5.5 (signed byte*) sin8s_gen::sintab#2 sintab zp ZP_WORD:5 5.5
(word) sin8s_gen::step (word) sin8s_gen::step
(word) sin8s_gen::step#0 step zp ZP_WORD:17 1.1818181818181819 (word) sin8s_gen::step#0 step zp ZP_WORD:15 1.1818181818181819
(word) sin8s_gen::wavelength (word) sin8s_gen::wavelength
(word) sin8s_gen::x (word) sin8s_gen::x
(word) sin8s_gen::x#1 x zp ZP_WORD:2 7.333333333333333 (word) sin8s_gen::x#1 x zp ZP_WORD:2 7.333333333333333
(word) sin8s_gen::x#2 x zp ZP_WORD:2 4.714285714285714 (word) sin8s_gen::x#2 x zp ZP_WORD:2 4.714285714285714
reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i#2 main::i#1 ]
zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 divr16u::divisor#7 sin8s_gen::x#2 sin8s_gen::x#1 main::$3 main::$4 main::$5 ] zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 print_cls::sc#2 print_cls::sc#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 sin8s_gen::x#2 sin8s_gen::x#1 main::$3 main::$4 main::$5 ]
zp ZP_BYTE:4 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 main::sd#0 main::sb#0 sin16s::isUpper#2 sin8s::isUpper#10 ] zp ZP_BYTE:4 [ print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 main::sd#0 main::sb#0 sin16s::isUpper#2 sin8s::isUpper#10 ]
reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ]
zp ZP_WORD:5 [ print_char_cursor#27 print_char_cursor#37 print_char_cursor#44 print_char_cursor#41 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 sin16s_gen::i#2 sin16s_gen::i#1 divr16u::rem#6 divr16u::rem#11 divr16u::rem#5 divr16u::rem#10 divr16u::rem#7 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 sin8s_gen::sintab#2 sin8s_gen::sintab#0 ] zp ZP_WORD:5 [ print_char_cursor#27 print_char_cursor#37 print_char_cursor#44 print_char_cursor#41 print_char_cursor#42 print_char_cursor#19 print_char_cursor#10 print_char_cursor#1 sin16s_gen::i#2 sin16s_gen::i#1 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin8s_gen::sintab#2 sin8s_gen::sintab#0 ]
zp ZP_DWORD:7 [ sin16s_gen::x#2 sin16s_gen::x#1 ] zp ZP_DWORD:7 [ sin16s_gen::x#2 sin16s_gen::x#1 ]
zp ZP_DWORD:11 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ] zp ZP_DWORD:11 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 ]
zp ZP_WORD:15 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 divr16u::dividend#4 divr16u::dividend#6 divr16u::dividend#0 sin8s_gen::i#2 sin8s_gen::i#1 main::sw#0 ] zp ZP_WORD:15 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 div32u16u::quotient_lo#0 div16u::return#2 sin8s_gen::step#0 div16u::return#0 main::sw#0 ]
zp ZP_WORD:17 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 divr16u::return#4 divr16u::return#2 div32u16u::quotient_lo#0 div16u::return#2 sin8s_gen::step#0 div16u::return#0 ] zp ZP_WORD:17 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 sin8s_gen::i#2 sin8s_gen::i#1 div32u16u::quotient_hi#0 ]
zp ZP_WORD:19 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$6 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 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 div32u16u::quotient_hi#0 ] zp ZP_WORD:19 [ mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mul16u::b#0 sin8s::x#6 sin8s::x#4 sin8s::x#0 sin8s::x#1 sin8s::x#2 sin8s::$6 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#2 mulu8_sel::$0 mulu8_sel::$1 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 ]
reg byte x [ mulu16_sel::select#5 ] reg byte x [ mulu16_sel::select#5 ]
zp ZP_WORD:21 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ] zp ZP_WORD:21 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
zp ZP_DWORD:23 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] zp ZP_DWORD:23 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]

View File

@ -3477,7 +3477,6 @@ Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::a#10
if() condition always true - replacing block destination if(true) goto main::@22 if() condition always true - replacing block destination if(true) goto main::@22
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Removing unused block main::@return Removing unused block main::@return
@ -3599,7 +3598,6 @@ Not aliassing across scopes: print_byte::b#0 printu::a#20
Not aliassing across scopes: print_str::str#1 printu::op#20 Not aliassing across scopes: print_str::str#1 printu::op#20
Not aliassing across scopes: print_byte::b#1 printu::b#20 Not aliassing across scopes: print_byte::b#1 printu::b#20
Not aliassing across scopes: print_char::ch#4 printu::res#20 Not aliassing across scopes: print_char::ch#4 printu::res#20
Multiple usages for variable. Not optimizing sub-constant (byte) main::a#10
Not culling empty block because it shares successor with its predecessor. (label) main::@23 Not culling empty block because it shares successor with its predecessor. (label) main::@23
Not culling empty block because it shares successor with its predecessor. (label) main::@24 Not culling empty block because it shares successor with its predecessor. (label) main::@24
Not culling empty block because it shares successor with its predecessor. (label) main::@25 Not culling empty block because it shares successor with its predecessor. (label) main::@25
@ -3687,7 +3685,6 @@ Not aliassing across scopes: print_byte::b#0 printu::a#20
Not aliassing across scopes: print_str::str#1 printu::op#20 Not aliassing across scopes: print_str::str#1 printu::op#20
Not aliassing across scopes: print_byte::b#1 printu::b#20 Not aliassing across scopes: print_byte::b#1 printu::b#20
Not aliassing across scopes: print_char::ch#4 printu::res#20 Not aliassing across scopes: print_char::ch#4 printu::res#20
Multiple usages for variable. Not optimizing sub-constant (byte) main::a#10
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) print_char::ch#2 Inlining constant with var siblings (const byte) print_char::ch#2
Inlining constant with var siblings (const byte) print_char::ch#2 Inlining constant with var siblings (const byte) print_char::ch#2

View File

@ -2060,7 +2060,6 @@ Constant (const byte) main::ch#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 } Constant (const byte[]) keyboard_char_keycodes#0 = { KEY_AT#0, KEY_A#0, KEY_B#0, KEY_C#0, KEY_D#0, KEY_E#0, KEY_F#0, KEY_G#0, KEY_H#0, KEY_I#0, KEY_J#0, KEY_K#0, KEY_L#0, KEY_M#0, KEY_N#0, KEY_O#0, KEY_P#0, KEY_Q#0, KEY_R#0, KEY_S#0, KEY_T#0, KEY_U#0, KEY_V#0, KEY_W#0, KEY_X#0, KEY_Y#0, KEY_Z#0, 63, KEY_POUND#0, 63, KEY_ARROW_UP#0, KEY_ARROW_LEFT#0, KEY_SPACE#0, 63, 63, 63, 63, 63, 63, 63, 63, 63, KEY_ASTERISK#0, KEY_PLUS#0, KEY_COMMA#0, KEY_MINUS#0, KEY_DOT#0, KEY_SLASH#0, KEY_0#0, KEY_1#0, KEY_2#0, KEY_3#0, KEY_4#0, KEY_5#0, KEY_6#0, KEY_7#0, KEY_8#0, KEY_9#0, KEY_COLON#0, KEY_SEMICOLON#0, 63, KEY_EQUALS#0, 63, 63 }
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte*) main::screen#1
if() condition always true - replacing block destination if(true) goto main::@5 if() condition always true - replacing block destination if(true) goto main::@5
Succesful SSA optimization Pass2ConstantIfs Succesful SSA optimization Pass2ConstantIfs
Removing unused block main::@return Removing unused block main::@return
@ -2082,7 +2081,6 @@ Not aliassing across scopes: main::key#0 keyboard_get_keycode::return#2
Not aliassing across scopes: keyboard_key_pressed::key#0 main::key#0 Not aliassing across scopes: keyboard_key_pressed::key#0 main::key#0
Not aliassing across scopes: keyboard_key_pressed::return#2 keyboard_key_pressed::return#0 Not aliassing across scopes: keyboard_key_pressed::return#2 keyboard_key_pressed::return#0
Not aliassing across scopes: main::$15 keyboard_key_pressed::return#2 Not aliassing across scopes: main::$15 keyboard_key_pressed::return#2
Multiple usages for variable. Not optimizing sub-constant (byte*) main::screen#1
Not aliassing across scopes: keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0 Not aliassing across scopes: keyboard_matrix_read::rowid#2 keyboard_matrix_read::rowid#0
Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_key_pressed::rowidx#0 Not aliassing across scopes: keyboard_matrix_read::rowid#0 keyboard_key_pressed::rowidx#0
Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#0 Not aliassing across scopes: keyboard_matrix_read::return#2 keyboard_matrix_read::return#0
@ -2096,7 +2094,6 @@ Not aliassing across scopes: main::key#0 keyboard_get_keycode::return#2
Not aliassing across scopes: keyboard_key_pressed::key#0 main::key#0 Not aliassing across scopes: keyboard_key_pressed::key#0 main::key#0
Not aliassing across scopes: keyboard_key_pressed::return#2 keyboard_key_pressed::return#0 Not aliassing across scopes: keyboard_key_pressed::return#2 keyboard_key_pressed::return#0
Not aliassing across scopes: main::$15 keyboard_key_pressed::return#2 Not aliassing across scopes: main::$15 keyboard_key_pressed::return#2
Multiple usages for variable. Not optimizing sub-constant (byte*) main::screen#1
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte*) main::sc#0 Inlining constant with var siblings (const byte*) main::sc#0
Inlining constant with var siblings (const byte*) main::sc#0 Inlining constant with var siblings (const byte*) main::sc#0

View File

@ -361,24 +361,12 @@ Constant (const byte) main::i#0 = 0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Constant (const byte*) SCREEN2#0 = ((byte*))$0 Constant (const byte*) SCREEN2#0 = ((byte*))$0
Succesful SSA optimization Pass2ConstantIdentification Succesful SSA optimization Pass2ConstantIdentification
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Not aliassing across scopes: sum::a#0 main::i#2 Not aliassing across scopes: sum::a#0 main::i#2
Not aliassing across scopes: sum::return#0 sum::return#1 Not aliassing across scopes: sum::return#0 sum::return#1
Not aliassing across scopes: main::$2 sum::return#0 Not aliassing across scopes: main::$2 sum::return#0
Not aliassing across scopes: sum2::a#0 main::i#2 Not aliassing across scopes: sum2::a#0 main::i#2
Not aliassing across scopes: sum2::return#0 sum2::return#1 Not aliassing across scopes: sum2::return#0 sum2::return#1
Not aliassing across scopes: main::$5 sum2::return#0 Not aliassing across scopes: main::$5 sum2::return#0
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0
Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0

View File

@ -237,8 +237,6 @@ Self Phi Eliminated (byte*) main::zpptr#3
Succesful SSA optimization Pass2SelfPhiElimination Succesful SSA optimization Pass2SelfPhiElimination
Redundant Phi (byte*) main::zpptr#3 (const byte*) main::zpptr#0 Redundant Phi (byte*) main::zpptr#3 (const byte*) main::zpptr#0
Succesful SSA optimization Pass2RedundantPhiElimination Succesful SSA optimization Pass2RedundantPhiElimination
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#4
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#4
OPTIMIZING CONTROL FLOW GRAPH OPTIMIZING CONTROL FLOW GRAPH
Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0
Inlining constant with var siblings (const byte) main::j#0 Inlining constant with var siblings (const byte) main::j#0