mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-14 23:04:57 +00:00
Implemented identical phi elimination
This commit is contained in:
parent
b2f16e2a57
commit
9265592f25
@ -184,6 +184,7 @@ public class Compiler {
|
||||
optimizations.add(new Pass2AliasElimination(program));
|
||||
optimizations.add(new Pass2SelfPhiElimination(program));
|
||||
optimizations.add(new Pass2RedundantPhiElimination(program));
|
||||
optimizations.add(new Pass2IdenticalPhiElimination(program));
|
||||
optimizations.add(new Pass2ConditionalJumpSimplification(program));
|
||||
optimizations.add(new Pass2ConditionalAndOrRewriting(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
|
||||
List<Pass2SsaOptimization> constantOptimizations = new ArrayList<>();
|
||||
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);
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,8 @@
|
||||
lda {z1}+1
|
||||
cmp #>{c1}
|
||||
bcc {la1}
|
||||
bne !+
|
||||
lda {z1}
|
||||
cmp #<{c1}
|
||||
bcc {la1}
|
||||
!:
|
@ -19,6 +19,28 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
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) {
|
||||
Aliases candidates = findAliasesCandidates(program);
|
||||
cleanupCandidates(candidates, program);
|
||||
@ -131,26 +153,6 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
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
|
||||
|
@ -161,7 +161,7 @@ public class Pass2ConstantAdditionElimination extends Pass2SsaOptimization {
|
||||
*/
|
||||
private ConstantValue consolidateSubConstants(VariableRef variable) {
|
||||
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;
|
||||
}
|
||||
StatementAssignment assignment = getGraph().getAssignment(variable);
|
||||
|
@ -300,6 +300,17 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization {
|
||||
if(Operators.ADDRESS_OF.equals(assignment.getOperator()) && var.equals(assignment.getrValue2())) {
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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
|
||||
public boolean step() {
|
||||
|
@ -44,6 +44,11 @@ public class TestPrograms {
|
||||
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConstParam() throws IOException, URISyntaxException {
|
||||
compileAndCompare("const-param");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHelloWorld() throws IOException, URISyntaxException {
|
||||
compileAndCompare("helloworld");
|
||||
|
13
src/test/java/dk/camelot64/kickc/test/kc/const-param.kc
Normal file
13
src/test/java/dk/camelot64/kickc/test/kc/const-param.kc
Normal 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;
|
||||
}
|
@ -1,11 +1,11 @@
|
||||
byte* screen = $400;
|
||||
void main() {
|
||||
byte* hello = "hello world!@";
|
||||
print_spaced(screen, hello);
|
||||
print_spaced(screen+40, hello);
|
||||
print2(screen, hello);
|
||||
print2(screen+80, hello);
|
||||
}
|
||||
|
||||
void print_spaced(byte* at, byte* msg) {
|
||||
void print2(byte* at, byte* msg) {
|
||||
byte j=0;
|
||||
for(byte i=0; msg[i]!='@'; i++) {
|
||||
at[j] = msg[i];
|
||||
|
@ -2899,27 +2899,9 @@ Constant (const word/dword) main::$9 = main::$5|main::$8
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::$10 = ((byte))main::$9
|
||||
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)
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte) lines::l#2
|
||||
Consolidated array index constant in assignment *(lines_y#0+1 + lines::$1)
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
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_plot::x#3 bitmap_line_ydxd::x#3
|
||||
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_xlo#0+0)
|
||||
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 aliassing across scopes: bitmap_plot::x#4 bitmap_plot::x#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_plot::x#3 bitmap_line_ydxd::x#3
|
||||
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
|
||||
Inlining constant with var siblings (const byte) bitmap_init::bits#0
|
||||
Inlining constant with var siblings (const byte) bitmap_init::bits#0
|
||||
|
@ -1115,12 +1115,6 @@ Constant (const word/dword) main::$7 = main::$4|main::$6
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::$8 = ((byte))main::$7
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
@ -1134,19 +1128,7 @@ Culled Empty Block (label) init_plot_tables::@6
|
||||
Culled Empty Block (label) init_screen::@3
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
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
|
||||
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
|
||||
Inlining constant with var siblings (const byte) plots::i#0
|
||||
Inlining constant with var siblings (const byte) plots::i#0
|
||||
|
@ -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::i#0 = 0
|
||||
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_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
|
||||
@ -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::$8 if((byte~) bool_complex::$7==(byte/signed byte/word/signed word/dword/signed dword) 0) goto bool_complex::@4
|
||||
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
|
||||
Inlining constant with var siblings (const byte) bool_and::i#0
|
||||
Inlining constant with var siblings (const byte) bool_and::i#0
|
||||
|
@ -361,10 +361,6 @@ Constant (const byte*) main::$4 = SCREEN#0+main::$3
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) main::cursor#0 = main::$4+main::x#0
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::x#0
|
||||
Inlining constant with var siblings (const byte) main::x#0
|
||||
|
@ -346,10 +346,6 @@ Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::e#0 = main::yd#0/2
|
||||
Constant (const word) main::idx#0 = main::x#0+main::$3
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::x#0
|
||||
Inlining constant with var siblings (const byte) main::x#0
|
||||
|
@ -2078,7 +2078,6 @@ Constant (const byte*) gfx_init_plane_charset8::gfxa#0 = ((byte*))gfx_init_plane
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::$24 = main::$19|main::$23
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
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
|
||||
Redundant Phi (byte) gfx_init_plane_charset8::ch#7 (byte) gfx_init_plane_charset8::ch#8
|
||||
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
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#1
|
||||
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0
|
||||
|
@ -1726,7 +1726,6 @@ Constant (const byte) main::$22 = main::$21>>2
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::$23 = main::$18|main::$22
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
@ -1737,9 +1736,7 @@ Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) gfx_init_chunky::@7
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
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
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte) main::j#2
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
|
||||
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
|
||||
|
@ -16173,65 +16173,9 @@ Constant (const string) print_str_lines::str#2 = FORM_TEXT#0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const string) print_str_lines::str#1 = FORM_COLS#0
|
||||
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)
|
||||
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)
|
||||
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
|
||||
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
|
||||
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
|
||||
Constant (const byte) form_field_idx#7 = form_fields_cnt#0-1
|
||||
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_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
|
||||
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) bitmap_init::@5
|
||||
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: form_control::key_event#0 keyboard_event_get::return#4
|
||||
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) bitmap_init::@5
|
||||
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: form_control::key_event#0 keyboard_event_get::return#4
|
||||
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
|
||||
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
|
||||
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
|
||||
|
@ -14238,43 +14238,9 @@ Constant (const string) MENU_TEXT#0 = "C64DTV Graphics Modes CCLHBME@
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const string) print_str_lines::str#1 = MENU_TEXT#0
|
||||
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)
|
||||
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)
|
||||
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
|
||||
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
|
||||
Removing PHI-reference to removed block (menu::@3) in block menu::@return
|
||||
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#235 (const byte) dtv_control#51
|
||||
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_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
|
||||
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
|
||||
Culled Empty Block (label) main::@1
|
||||
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
|
||||
Redundant Phi (byte) dtv_control#244 (const byte) dtv_control#48
|
||||
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) mode_ctrl::@29
|
||||
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: dtv_control#17 mode_ctrl::ctrl#14
|
||||
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
|
||||
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
|
||||
Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#2
|
||||
|
@ -377,19 +377,9 @@ Constant (const word) w::$0 = w::w1#0-w::w2#0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) w::b#0 = ((byte))w::$0
|
||||
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 (byte~) main::$3 ← ((byte)) (signed byte) main::sb#0
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::b#0
|
||||
Inlining constant with var siblings (const byte) main::b#0
|
||||
|
@ -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
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
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
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
Eliminating unused constant (const byte) main::shift#0
|
||||
@ -3485,8 +3481,6 @@ Constant (const byte*) plot_chargen::$6 = SCREEN#0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) plot_chargen::$7 = plot_chargen::$6+40+1
|
||||
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::@16
|
||||
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::return#2 mul8u::res#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
|
||||
Inlining constant with var siblings (const word) mul8u::res#0
|
||||
Inlining constant with var siblings (const word) mul8u::res#0
|
||||
|
@ -362,7 +362,6 @@ Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) main::CHAR_A#0 = CHARGEN#0+8
|
||||
Constant (const byte*) main::sc#0 = SCREEN#0
|
||||
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
|
||||
Self Phi Eliminated (byte*) main::CHAR_A#1
|
||||
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*) PROCPORT#8 (const byte*) PROCPORT#0
|
||||
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
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte*) main::sc#1
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Inlining constant with var siblings (const byte) main::y#0
|
||||
Inlining constant with var siblings (const byte) main::y#0
|
||||
|
@ -320,8 +320,6 @@ Constant (const byte) line::x1#0 = 10
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) plot::x#0 = line::x0#0
|
||||
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((const byte) line::x0#0<(const byte) line::x1#0) goto line::@1
|
||||
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
|
||||
Redundant Phi (byte) plot::x#2 (byte) plot::x#1
|
||||
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
|
||||
Succesful SSA optimization PassNEliminateUnusedVars
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
23
src/test/java/dk/camelot64/kickc/test/ref/const-param.asm
Normal file
23
src/test/java/dk/camelot64/kickc/test/ref/const-param.asm
Normal 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
|
||||
}
|
40
src/test/java/dk/camelot64/kickc/test/ref/const-param.cfg
Normal file
40
src/test/java/dk/camelot64/kickc/test/ref/const-param.cfg
Normal 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
|
735
src/test/java/dk/camelot64/kickc/test/ref/const-param.log
Normal file
735
src/test/java/dk/camelot64/kickc/test/ref/const-param.log
Normal 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
|
||||
}
|
||||
|
34
src/test/java/dk/camelot64/kickc/test/ref/const-param.sym
Normal file
34
src/test/java/dk/camelot64/kickc/test/ref/const-param.sym
Normal 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 ]
|
@ -132,10 +132,6 @@ Constant (const dword) main::a#0 = 4000000000
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -117,13 +117,9 @@ Constant (const byte) main::i#0 = 0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated array index constant in *(fibs#0+0)
|
||||
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+2 + main::$0)
|
||||
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::$1 ← (byte) main::i#2
|
||||
Alias (byte) main::i#2 = (byte~) main::$0 (byte~) main::$1
|
||||
|
@ -662,11 +662,8 @@ Constant (const byte) plot::i#0 = 0
|
||||
Constant (const byte) plot::y#0 = 16
|
||||
Constant (const byte) plot::x#0 = 0
|
||||
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
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
@ -683,7 +680,6 @@ Succesful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) RASTER#1 (byte*) RASTER#3
|
||||
Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#7
|
||||
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: SCREEN#7 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
|
||||
Constant (const byte*) plot::line#0 = plot::$1+plot::$0+12
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte) prepare::i#2
|
||||
Culled Empty Block (label) main::@1
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::c#0
|
||||
Inlining constant with var siblings (const byte) main::c#0
|
||||
|
@ -121,8 +121,6 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))1024
|
||||
Constant (const byte) main::i#0 = 0
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -119,10 +119,6 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))1024
|
||||
Constant (const byte) main::i#0 = 0
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -183,14 +183,8 @@ Constant (const byte*) SCREEN2#0 = ((byte*))1280
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Constant (const byte) main::j#0 = 100
|
||||
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
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -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::$38 = CHARGEN#0+2048
|
||||
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
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::bits_gen#0
|
||||
Inlining constant with var siblings (const byte) main::bits_gen#0
|
||||
|
@ -5,47 +5,29 @@
|
||||
jsr main
|
||||
main: {
|
||||
lda #<screen
|
||||
sta print_spaced.at
|
||||
sta print2.at
|
||||
lda #>screen
|
||||
sta print_spaced.at+1
|
||||
lda #<hello
|
||||
sta print_spaced.msg
|
||||
lda #>hello
|
||||
sta print_spaced.msg+1
|
||||
jsr print_spaced
|
||||
lda #<screen+$28
|
||||
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
|
||||
sta print2.at+1
|
||||
jsr print2
|
||||
lda #<screen+$50
|
||||
sta print2.at
|
||||
lda #>screen+$50
|
||||
sta print2.at+1
|
||||
jsr print2
|
||||
rts
|
||||
hello: .text "hello world!@"
|
||||
}
|
||||
print_spaced: {
|
||||
.label j = 6
|
||||
.label msg = 2
|
||||
.label at = 4
|
||||
lda #0
|
||||
sta j
|
||||
tax
|
||||
print2: {
|
||||
.label at = 2
|
||||
ldy #0
|
||||
ldx #0
|
||||
b1:
|
||||
txa
|
||||
tay
|
||||
lda (msg),y
|
||||
ldy j
|
||||
lda main.hello,x
|
||||
sta (at),y
|
||||
tya
|
||||
clc
|
||||
adc #2
|
||||
sta j
|
||||
iny
|
||||
iny
|
||||
inx
|
||||
txa
|
||||
tay
|
||||
lda (msg),y
|
||||
lda main.hello,x
|
||||
cmp #'@'
|
||||
bne b1
|
||||
rts
|
||||
|
@ -9,27 +9,26 @@
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @2
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
[5] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
[6] phi() [ ] ( main:2 [ ] )
|
||||
[7] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
[7] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
[8] return [ ] ( main:2 [ ] )
|
||||
to:@return
|
||||
print_spaced: scope:[print_spaced] 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*) 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:print_spaced::@1
|
||||
print_spaced::@1: scope:[print_spaced] from print_spaced print_spaced::@1
|
||||
[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) 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*) 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) 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) 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(*((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:print_spaced::@return
|
||||
print_spaced::@return: scope:[print_spaced] from print_spaced::@1
|
||||
[15] return [ ] ( main:2::print_spaced:5 [ ] main:2::print_spaced:7 [ ] )
|
||||
print2: scope:[print2] from main main::@1
|
||||
[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 ] )
|
||||
to:print2::@1
|
||||
print2::@1: scope:[print2] from print2 print2::@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) 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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
to:print2::@return
|
||||
print2::@return: scope:[print2] from print2::@1
|
||||
[15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] )
|
||||
to:@return
|
||||
|
@ -2,11 +2,11 @@ PARSING src/test/java/dk/camelot64/kickc/test/kc/helloworld2.kc
|
||||
byte* screen = $400;
|
||||
void main() {
|
||||
byte* hello = "hello world!@";
|
||||
print_spaced(screen, hello);
|
||||
print_spaced(screen+40, hello);
|
||||
print2(screen, hello);
|
||||
print2(screen+80, hello);
|
||||
}
|
||||
|
||||
void print_spaced(byte* at, byte* msg) {
|
||||
void print2(byte* at, byte* msg) {
|
||||
byte j=0;
|
||||
for(byte i=0; msg[i]!='@'; 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
|
||||
(label) @1
|
||||
(label) @2
|
||||
@ -26,16 +26,16 @@ SYMBOLS
|
||||
(void~) main::$2
|
||||
(label) main::@return
|
||||
(byte*) main::hello
|
||||
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg)
|
||||
(byte/signed word/word/dword/signed dword~) print_spaced::$0
|
||||
(boolean~) print_spaced::$1
|
||||
(label) print_spaced::@1
|
||||
(label) print_spaced::@2
|
||||
(label) print_spaced::@return
|
||||
(byte*) print_spaced::at
|
||||
(byte) print_spaced::i
|
||||
(byte) print_spaced::j
|
||||
(byte*) print_spaced::msg
|
||||
(void()) print2((byte*) print2::at , (byte*) print2::msg)
|
||||
(byte/signed word/word/dword/signed dword~) print2::$0
|
||||
(boolean~) print2::$1
|
||||
(label) print2::@1
|
||||
(label) print2::@2
|
||||
(label) print2::@return
|
||||
(byte*) print2::at
|
||||
(byte) print2::i
|
||||
(byte) print2::j
|
||||
(byte*) print2::msg
|
||||
(byte*) screen
|
||||
|
||||
Promoting word/signed word/dword/signed dword to byte* in screen ← ((byte*)) 1024
|
||||
@ -45,30 +45,30 @@ INITIAL CONTROL FLOW GRAPH
|
||||
to:@1
|
||||
main: scope:[main] from
|
||||
(byte*) main::hello ← (string) "hello world!@"
|
||||
(void~) main::$0 ← call print_spaced (byte*) screen (byte*) main::hello
|
||||
(byte*~) main::$1 ← (byte*) screen + (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
(void~) main::$2 ← call print_spaced (byte*~) main::$1 (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) 80
|
||||
(void~) main::$2 ← call print2 (byte*~) main::$1 (byte*) main::hello
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
to:@2
|
||||
print_spaced: scope:[print_spaced] from
|
||||
(byte) print_spaced::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
|
||||
to:print_spaced::@1
|
||||
print_spaced::@1: scope:[print_spaced] from print_spaced print_spaced::@1
|
||||
*((byte*) print_spaced::at + (byte) print_spaced::j) ← *((byte*) print_spaced::msg + (byte) print_spaced::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) print_spaced::j ← (byte/signed word/word/dword/signed dword~) print_spaced::$0
|
||||
(byte) print_spaced::i ← ++ (byte) print_spaced::i
|
||||
(boolean~) print_spaced::$1 ← *((byte*) print_spaced::msg + (byte) print_spaced::i) != (byte) '@'
|
||||
if((boolean~) print_spaced::$1) goto print_spaced::@1
|
||||
to:print_spaced::@2
|
||||
print_spaced::@2: scope:[print_spaced] from print_spaced::@1
|
||||
to:print_spaced::@return
|
||||
print_spaced::@return: scope:[print_spaced] from print_spaced::@2
|
||||
print2: scope:[print2] from
|
||||
(byte) print2::j ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) print2::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:print2::@1
|
||||
print2::@1: scope:[print2] from print2 print2::@1
|
||||
*((byte*) print2::at + (byte) print2::j) ← *((byte*) print2::msg + (byte) print2::i)
|
||||
(byte/signed word/word/dword/signed dword~) print2::$0 ← (byte) print2::j + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) print2::j ← (byte/signed word/word/dword/signed dword~) print2::$0
|
||||
(byte) print2::i ← ++ (byte) print2::i
|
||||
(boolean~) print2::$1 ← *((byte*) print2::msg + (byte) print2::i) != (byte) '@'
|
||||
if((boolean~) print2::$1) goto print2::@1
|
||||
to:print2::@2
|
||||
print2::@2: scope:[print2] from print2::@1
|
||||
to:print2::@return
|
||||
print2::@return: scope:[print2] from print2::@2
|
||||
return
|
||||
to:@return
|
||||
@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
|
||||
Creating constant string variable for inline (const string) main::$3 "hello world!@"
|
||||
Removing empty block @1
|
||||
Removing empty block print_spaced::@2
|
||||
Removing empty block print2::@2
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
|
||||
Completing Phi functions...
|
||||
@ -93,42 +93,42 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
main: scope:[main] from @2
|
||||
(byte*) screen#1 ← phi( @2/(byte*) screen#3 )
|
||||
(byte*) main::hello#0 ← (const string) main::$3
|
||||
(byte*) print_spaced::at#0 ← (byte*) screen#1
|
||||
(byte*) print_spaced::msg#0 ← (byte*) main::hello#0
|
||||
call print_spaced param-assignment
|
||||
(byte*) print2::at#0 ← (byte*) screen#1
|
||||
(byte*) print2::msg#0 ← (byte*) main::hello#0
|
||||
call print2 param-assignment
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) main::hello#1 ← phi( main/(byte*) main::hello#0 )
|
||||
(byte*) screen#2 ← phi( main/(byte*) screen#1 )
|
||||
(byte*~) main::$1 ← (byte*) screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
(byte*) print_spaced::at#1 ← (byte*~) main::$1
|
||||
(byte*) print_spaced::msg#1 ← (byte*) main::hello#1
|
||||
call print_spaced param-assignment
|
||||
(byte*~) main::$1 ← (byte*) screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 80
|
||||
(byte*) print2::at#1 ← (byte*~) main::$1
|
||||
(byte*) print2::msg#1 ← (byte*) main::hello#1
|
||||
call print2 param-assignment
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
print_spaced: scope:[print_spaced] from main main::@1
|
||||
(byte*) print_spaced::at#3 ← phi( main/(byte*) print_spaced::at#0 main::@1/(byte*) print_spaced::at#1 )
|
||||
(byte*) print_spaced::msg#3 ← phi( main/(byte*) print_spaced::msg#0 main::@1/(byte*) print_spaced::msg#1 )
|
||||
(byte) print_spaced::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
|
||||
to:print_spaced::@1
|
||||
print_spaced::@1: scope:[print_spaced] from print_spaced print_spaced::@1
|
||||
(byte) print_spaced::j#2 ← phi( print_spaced/(byte) print_spaced::j#0 print_spaced::@1/(byte) print_spaced::j#1 )
|
||||
(byte*) print_spaced::at#2 ← phi( print_spaced/(byte*) print_spaced::at#3 print_spaced::@1/(byte*) print_spaced::at#2 )
|
||||
(byte) print_spaced::i#2 ← phi( print_spaced/(byte) print_spaced::i#0 print_spaced::@1/(byte) print_spaced::i#1 )
|
||||
(byte*) print_spaced::msg#2 ← phi( print_spaced/(byte*) print_spaced::msg#3 print_spaced::@1/(byte*) print_spaced::msg#2 )
|
||||
*((byte*) print_spaced::at#2 + (byte) print_spaced::j#2) ← *((byte*) print_spaced::msg#2 + (byte) print_spaced::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) print_spaced::j#1 ← (byte/signed word/word/dword/signed dword~) print_spaced::$0
|
||||
(byte) print_spaced::i#1 ← ++ (byte) print_spaced::i#2
|
||||
(boolean~) print_spaced::$1 ← *((byte*) print_spaced::msg#2 + (byte) print_spaced::i#1) != (byte) '@'
|
||||
if((boolean~) print_spaced::$1) goto print_spaced::@1
|
||||
to:print_spaced::@return
|
||||
print_spaced::@return: scope:[print_spaced] from print_spaced::@1
|
||||
print2: scope:[print2] from main main::@1
|
||||
(byte*) print2::at#3 ← phi( main/(byte*) print2::at#0 main::@1/(byte*) print2::at#1 )
|
||||
(byte*) print2::msg#3 ← phi( main/(byte*) print2::msg#0 main::@1/(byte*) print2::msg#1 )
|
||||
(byte) print2::j#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:print2::@1
|
||||
print2::@1: scope:[print2] from print2 print2::@1
|
||||
(byte) print2::j#2 ← phi( print2/(byte) print2::j#0 print2::@1/(byte) print2::j#1 )
|
||||
(byte*) print2::at#2 ← phi( print2/(byte*) print2::at#3 print2::@1/(byte*) print2::at#2 )
|
||||
(byte) print2::i#2 ← phi( print2/(byte) print2::i#0 print2::@1/(byte) print2::i#1 )
|
||||
(byte*) print2::msg#2 ← phi( print2/(byte*) print2::msg#3 print2::@1/(byte*) print2::msg#2 )
|
||||
*((byte*) print2::at#2 + (byte) print2::j#2) ← *((byte*) print2::msg#2 + (byte) print2::i#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) print2::j#1 ← (byte/signed word/word/dword/signed dword~) print2::$0
|
||||
(byte) print2::i#1 ← ++ (byte) print2::i#2
|
||||
(boolean~) print2::$1 ← *((byte*) print2::msg#2 + (byte) print2::i#1) != (byte) '@'
|
||||
if((boolean~) print2::$1) goto print2::@1
|
||||
to:print2::@return
|
||||
print2::@return: scope:[print2] from print2::@1
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
@ -153,29 +153,29 @@ SYMBOL TABLE SSA
|
||||
(byte*) main::hello
|
||||
(byte*) main::hello#0
|
||||
(byte*) main::hello#1
|
||||
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg)
|
||||
(byte/signed word/word/dword/signed dword~) print_spaced::$0
|
||||
(boolean~) print_spaced::$1
|
||||
(label) print_spaced::@1
|
||||
(label) print_spaced::@return
|
||||
(byte*) print_spaced::at
|
||||
(byte*) print_spaced::at#0
|
||||
(byte*) print_spaced::at#1
|
||||
(byte*) print_spaced::at#2
|
||||
(byte*) print_spaced::at#3
|
||||
(byte) print_spaced::i
|
||||
(byte) print_spaced::i#0
|
||||
(byte) print_spaced::i#1
|
||||
(byte) print_spaced::i#2
|
||||
(byte) print_spaced::j
|
||||
(byte) print_spaced::j#0
|
||||
(byte) print_spaced::j#1
|
||||
(byte) print_spaced::j#2
|
||||
(byte*) print_spaced::msg
|
||||
(byte*) print_spaced::msg#0
|
||||
(byte*) print_spaced::msg#1
|
||||
(byte*) print_spaced::msg#2
|
||||
(byte*) print_spaced::msg#3
|
||||
(void()) print2((byte*) print2::at , (byte*) print2::msg)
|
||||
(byte/signed word/word/dword/signed dword~) print2::$0
|
||||
(boolean~) print2::$1
|
||||
(label) print2::@1
|
||||
(label) print2::@return
|
||||
(byte*) print2::at
|
||||
(byte*) print2::at#0
|
||||
(byte*) print2::at#1
|
||||
(byte*) print2::at#2
|
||||
(byte*) print2::at#3
|
||||
(byte) print2::i
|
||||
(byte) print2::i#0
|
||||
(byte) print2::i#1
|
||||
(byte) print2::i#2
|
||||
(byte) print2::j
|
||||
(byte) print2::j#0
|
||||
(byte) print2::j#1
|
||||
(byte) print2::j#2
|
||||
(byte*) print2::msg
|
||||
(byte*) print2::msg#0
|
||||
(byte*) print2::msg#1
|
||||
(byte*) print2::msg#2
|
||||
(byte*) print2::msg#3
|
||||
(byte*) screen
|
||||
(byte*) screen#0
|
||||
(byte*) screen#1
|
||||
@ -187,63 +187,65 @@ Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) @3
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Not aliassing across scopes: screen#1 screen#3
|
||||
Not aliassing across scopes: print_spaced::at#0 screen#1
|
||||
Not aliassing across scopes: print_spaced::msg#0 main::hello#0
|
||||
Not aliassing across scopes: print_spaced::msg#1 main::hello#1
|
||||
Not aliassing across scopes: print_spaced::msg#3 print_spaced::msg#0
|
||||
Not aliassing across scopes: print_spaced::at#3 print_spaced::at#0
|
||||
Not aliassing across scopes: print2::at#0 screen#1
|
||||
Not aliassing across scopes: print2::msg#0 main::hello#0
|
||||
Not aliassing across scopes: print2::msg#1 main::hello#1
|
||||
Not aliassing across scopes: print2::msg#3 print2::msg#0
|
||||
Not aliassing across scopes: print2::at#3 print2::at#0
|
||||
Alias (byte*) screen#1 = (byte*) screen#2
|
||||
Alias (byte*) main::hello#0 = (byte*) main::hello#1
|
||||
Alias (byte*) print_spaced::at#1 = (byte*~) main::$1
|
||||
Alias (byte) print_spaced::j#1 = (byte/signed word/word/dword/signed dword~) print_spaced::$0
|
||||
Alias (byte*) print2::at#1 = (byte*~) main::$1
|
||||
Alias (byte) print2::j#1 = (byte/signed word/word/dword/signed dword~) print2::$0
|
||||
Alias (byte*) screen#0 = (byte*) screen#3
|
||||
Succesful SSA optimization Pass2AliasElimination
|
||||
Not aliassing across scopes: screen#1 screen#0
|
||||
Not aliassing across scopes: print_spaced::at#0 screen#1
|
||||
Not aliassing across scopes: print_spaced::msg#0 main::hello#0
|
||||
Not aliassing across scopes: print_spaced::msg#1 main::hello#0
|
||||
Not aliassing across scopes: print_spaced::msg#3 print_spaced::msg#0
|
||||
Not aliassing across scopes: print_spaced::at#3 print_spaced::at#0
|
||||
Self Phi Eliminated (byte*) print_spaced::msg#2
|
||||
Self Phi Eliminated (byte*) print_spaced::at#2
|
||||
Not aliassing across scopes: print2::at#0 screen#1
|
||||
Not aliassing across scopes: print2::msg#0 main::hello#0
|
||||
Not aliassing across scopes: print2::msg#1 main::hello#0
|
||||
Not aliassing across scopes: print2::msg#3 print2::msg#0
|
||||
Not aliassing across scopes: print2::at#3 print2::at#0
|
||||
Self Phi Eliminated (byte*) print2::msg#2
|
||||
Self Phi Eliminated (byte*) print2::at#2
|
||||
Succesful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) screen#1 (byte*) screen#0
|
||||
Redundant Phi (byte*) print_spaced::msg#2 (byte*) print_spaced::msg#3
|
||||
Redundant Phi (byte*) print_spaced::at#2 (byte*) print_spaced::at#3
|
||||
Redundant Phi (byte*) print2::msg#2 (byte*) print2::msg#3
|
||||
Redundant Phi (byte*) print2::at#2 (byte*) print2::at#3
|
||||
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
|
||||
Constant (const byte*) screen#0 = ((byte*))1024
|
||||
Constant (const string) main::hello#0 = main::$3
|
||||
Constant (const byte) print_spaced::j#0 = 0
|
||||
Constant (const byte) print_spaced::i#0 = 0
|
||||
Constant (const byte) print2::j#0 = 0
|
||||
Constant (const byte) print2::i#0 = 0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) print_spaced::at#0 = screen#0
|
||||
Constant (const string) print_spaced::msg#0 = main::hello#0
|
||||
Constant (const byte*) print_spaced::at#1 = screen#0+40
|
||||
Constant (const string) print_spaced::msg#1 = main::hello#0
|
||||
Constant (const byte*) print2::at#0 = screen#0
|
||||
Constant (const string) print2::msg#0 = main::hello#0
|
||||
Constant (const byte*) print2::at#1 = screen#0+80
|
||||
Constant (const string) print2::msg#1 = main::hello#0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Inlining constant with var siblings (const byte) print_spaced::j#0
|
||||
Inlining constant with var siblings (const byte) print_spaced::j#0
|
||||
Inlining constant with var siblings (const byte) print_spaced::i#0
|
||||
Inlining constant with var siblings (const byte) print_spaced::i#0
|
||||
Inlining constant with var siblings (const byte*) print_spaced::at#0
|
||||
Inlining constant with different constant siblings (const byte*) print_spaced::at#0
|
||||
Inlining constant with var siblings (const string) print_spaced::msg#0
|
||||
Inlining constant with var siblings (const byte*) print_spaced::at#1
|
||||
Inlining constant with var siblings (const string) print_spaced::msg#1
|
||||
Constant inlined print_spaced::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined print_spaced::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined print_spaced::at#0 = (const byte*) screen#0
|
||||
Constant inlined print_spaced::at#1 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
Inlining constant with var siblings (const byte) print2::j#0
|
||||
Inlining constant with var siblings (const byte) print2::j#0
|
||||
Inlining constant with var siblings (const byte) print2::i#0
|
||||
Inlining constant with var siblings (const byte) print2::i#0
|
||||
Inlining constant with var siblings (const byte*) print2::at#0
|
||||
Inlining constant with different constant siblings (const byte*) print2::at#0
|
||||
Inlining constant with var siblings (const string) print2::msg#0
|
||||
Inlining constant with var siblings (const byte*) print2::at#1
|
||||
Inlining constant with var siblings (const string) print2::msg#1
|
||||
Constant inlined print2::msg#1 = (const string) main::hello#0
|
||||
Constant inlined print2::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined print2::msg#0 = (const string) main::hello#0
|
||||
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 print_spaced::msg#1 = (const string) main::hello#0
|
||||
Constant inlined print_spaced::msg#0 = (const string) main::hello#0
|
||||
Constant inlined print2::at#0 = (const byte*) screen#0
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @2 @end main main::@1 main::@return print_spaced print_spaced::@1 print_spaced::@return
|
||||
Added new block during phi lifting print_spaced::@3(between print_spaced::@1 and print_spaced::@1)
|
||||
Block Sequence Planned @begin @2 @end main main::@1 main::@return print_spaced print_spaced::@1 print_spaced::@return print_spaced::@3
|
||||
Identical Phi Values (byte*) print2::msg#3 (const string) main::hello#0
|
||||
Succesful SSA optimization Pass2IdenticalPhiElimination
|
||||
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 @2
|
||||
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
|
||||
CALL GRAPH
|
||||
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...
|
||||
@ -260,12 +262,12 @@ Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Propagating live ranges...
|
||||
Created 4 initial phi equivalence classes
|
||||
Coalesced [16] print_spaced::i#3 ← print_spaced::i#1
|
||||
Coalesced [17] print_spaced::j#3 ← print_spaced::j#1
|
||||
Coalesced down to 4 phi equivalence classes
|
||||
Culled Empty Block (label) print_spaced::@3
|
||||
Block Sequence Planned @begin @2 @end main main::@1 main::@return print_spaced print_spaced::@1 print_spaced::@return
|
||||
Created 3 initial phi equivalence classes
|
||||
Coalesced [16] print2::i#3 ← print2::i#1
|
||||
Coalesced [17] print2::j#3 ← print2::j#1
|
||||
Coalesced down to 3 phi equivalence classes
|
||||
Culled Empty Block (label) print2::@3
|
||||
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 @2
|
||||
Adding NOP phi() at start of @end
|
||||
@ -289,29 +291,28 @@ FINAL CONTROL FLOW GRAPH
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @2
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
[5] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
[6] phi() [ ] ( main:2 [ ] )
|
||||
[7] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
[7] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
[8] return [ ] ( main:2 [ ] )
|
||||
to:@return
|
||||
print_spaced: scope:[print_spaced] 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*) 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:print_spaced::@1
|
||||
print_spaced::@1: scope:[print_spaced] from print_spaced print_spaced::@1
|
||||
[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) 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*) 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) 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) 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(*((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:print_spaced::@return
|
||||
print_spaced::@return: scope:[print_spaced] from print_spaced::@1
|
||||
[15] return [ ] ( main:2::print_spaced:5 [ ] main:2::print_spaced:7 [ ] )
|
||||
print2: scope:[print2] from main main::@1
|
||||
[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 ] )
|
||||
to:print2::@1
|
||||
print2::@1: scope:[print2] from print2 print2::@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) 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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
to:print2::@return
|
||||
print2::@return: scope:[print2] from print2::@1
|
||||
[15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] )
|
||||
to:@return
|
||||
|
||||
DOMINATORS
|
||||
@ -321,53 +322,49 @@ DOMINATORS
|
||||
main dominated by @2 @begin main
|
||||
main::@1 dominated by @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
|
||||
print_spaced::@1 dominated by @2 @begin print_spaced print_spaced::@1 main
|
||||
print_spaced::@return dominated by @2 @begin print_spaced print_spaced::@1 print_spaced::@return main
|
||||
print2 dominated by @2 @begin print2 main
|
||||
print2::@1 dominated by @2 @begin print2 print2::@1 main
|
||||
print2::@return dominated by @2 @begin print2 print2::@1 main print2::@return
|
||||
|
||||
NATURAL LOOPS
|
||||
Found back edge: Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: null
|
||||
Populated: Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: print_spaced::@1
|
||||
Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: print_spaced::@1
|
||||
Found back edge: Loop head: print2::@1 tails: print2::@1 blocks: null
|
||||
Populated: Loop head: print2::@1 tails: print2::@1 blocks: print2::@1
|
||||
Loop head: print2::@1 tails: print2::@1 blocks: print2::@1
|
||||
|
||||
NATURAL LOOPS WITH DEPTH
|
||||
Found 0 loops in scope []
|
||||
Found 0 loops in scope [main]
|
||||
Found 1 loops in scope [print_spaced]
|
||||
Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: print_spaced::@1
|
||||
Loop head: print_spaced::@1 tails: print_spaced::@1 blocks: print_spaced::@1 depth: 1
|
||||
Found 1 loops in scope [print2]
|
||||
Loop head: print2::@1 tails: print2::@1 blocks: print2::@1
|
||||
Loop head: print2::@1 tails: print2::@1 blocks: print2::@1 depth: 1
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte*) main::hello
|
||||
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg)
|
||||
(byte*) print_spaced::at
|
||||
(byte*) print_spaced::at#3 1.8333333333333333
|
||||
(byte) print_spaced::i
|
||||
(byte) print_spaced::i#1 16.5
|
||||
(byte) print_spaced::i#2 11.0
|
||||
(byte) print_spaced::j
|
||||
(byte) print_spaced::j#1 7.333333333333333
|
||||
(byte) print_spaced::j#2 16.5
|
||||
(byte*) print_spaced::msg
|
||||
(byte*) print_spaced::msg#3 3.6666666666666665
|
||||
(void()) print2((byte*) print2::at , (byte*) print2::msg)
|
||||
(byte*) print2::at
|
||||
(byte*) print2::at#3 1.8333333333333333
|
||||
(byte) print2::i
|
||||
(byte) print2::i#1 16.5
|
||||
(byte) print2::i#2 11.0
|
||||
(byte) print2::j
|
||||
(byte) print2::j#1 7.333333333333333
|
||||
(byte) print2::j#2 16.5
|
||||
(byte*) print2::msg
|
||||
(byte*) screen
|
||||
|
||||
Initial phi equivalence classes
|
||||
[ print_spaced::msg#3 ]
|
||||
[ print_spaced::at#3 ]
|
||||
[ print_spaced::i#2 print_spaced::i#1 ]
|
||||
[ print_spaced::j#2 print_spaced::j#1 ]
|
||||
[ print2::at#3 ]
|
||||
[ print2::i#2 print2::i#1 ]
|
||||
[ print2::j#2 print2::j#1 ]
|
||||
Complete equivalence classes
|
||||
[ print_spaced::msg#3 ]
|
||||
[ print_spaced::at#3 ]
|
||||
[ print_spaced::i#2 print_spaced::i#1 ]
|
||||
[ print_spaced::j#2 print_spaced::j#1 ]
|
||||
Allocated zp ZP_WORD:2 [ print_spaced::msg#3 ]
|
||||
Allocated zp ZP_WORD:4 [ print_spaced::at#3 ]
|
||||
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 ]
|
||||
[ print2::at#3 ]
|
||||
[ print2::i#2 print2::i#1 ]
|
||||
[ print2::j#2 print2::j#1 ]
|
||||
Allocated zp ZP_WORD:2 [ print2::at#3 ]
|
||||
Allocated zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ]
|
||||
Allocated zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ]
|
||||
|
||||
INITIAL ASM
|
||||
//SEG0 Basic Upstart
|
||||
@ -394,126 +391,100 @@ bend_from_b2:
|
||||
bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
//SEG10 [5] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG11 [9] phi from main to print_spaced [phi:main->print_spaced]
|
||||
print_spaced_from_main:
|
||||
//SEG12 [9] phi (byte*) print_spaced::at#3 = (const byte*) screen#0 [phi:main->print_spaced#0] -- pbuz1=pbuc1
|
||||
//SEG10 [5] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG11 [9] phi from main to print2 [phi:main->print2]
|
||||
print2_from_main:
|
||||
//SEG12 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1
|
||||
lda #<screen
|
||||
sta print_spaced.at
|
||||
sta print2.at
|
||||
lda #>screen
|
||||
sta print_spaced.at+1
|
||||
//SEG13 [9] phi (byte*) print_spaced::msg#3 = (const string) main::hello#0 [phi:main->print_spaced#1] -- pbuz1=pbuc1
|
||||
lda #<hello
|
||||
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]
|
||||
sta print2.at+1
|
||||
jsr print2
|
||||
//SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
jmp b1
|
||||
//SEG15 main::@1
|
||||
//SEG14 main::@1
|
||||
b1:
|
||||
//SEG16 [7] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG17 [9] phi from main::@1 to print_spaced [phi:main::@1->print_spaced]
|
||||
print_spaced_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
|
||||
lda #<screen+$28
|
||||
sta print_spaced.at
|
||||
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
|
||||
//SEG15 [7] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG16 [9] phi from main::@1 to print2 [phi:main::@1->print2]
|
||||
print2_from_b1:
|
||||
//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+$50
|
||||
sta print2.at
|
||||
lda #>screen+$50
|
||||
sta print2.at+1
|
||||
jsr print2
|
||||
jmp breturn
|
||||
//SEG20 main::@return
|
||||
//SEG18 main::@return
|
||||
breturn:
|
||||
//SEG21 [8] return [ ] ( main:2 [ ] )
|
||||
//SEG19 [8] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
hello: .text "hello world!@"
|
||||
}
|
||||
//SEG22 print_spaced
|
||||
print_spaced: {
|
||||
.label j = 7
|
||||
.label i = 6
|
||||
.label msg = 2
|
||||
.label at = 4
|
||||
//SEG23 [10] phi from print_spaced to print_spaced::@1 [phi:print_spaced->print_spaced::@1]
|
||||
b1_from_print_spaced:
|
||||
//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
|
||||
//SEG20 print2
|
||||
print2: {
|
||||
.label j = 5
|
||||
.label i = 4
|
||||
.label at = 2
|
||||
//SEG21 [10] phi from print2 to print2::@1 [phi:print2->print2::@1]
|
||||
b1_from_print2:
|
||||
//SEG22 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuz1=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] -- 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
|
||||
sta i
|
||||
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:
|
||||
//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
|
||||
//SEG25 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy
|
||||
//SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy
|
||||
jmp b1
|
||||
//SEG29 print_spaced::@1
|
||||
//SEG27 print2::@1
|
||||
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
|
||||
ldy j
|
||||
sty $ff
|
||||
//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 i
|
||||
lda (msg),y
|
||||
ldy $ff
|
||||
lda main.hello,y
|
||||
ldy j
|
||||
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
|
||||
clc
|
||||
adc #2
|
||||
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
|
||||
//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
|
||||
lda (msg),y
|
||||
lda main.hello,y
|
||||
cmp #'@'
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG34 print_spaced::@return
|
||||
//SEG32 print2::@return
|
||||
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
|
||||
}
|
||||
|
||||
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 ]
|
||||
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 ]
|
||||
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 ]
|
||||
MISSING FRAGMENTS
|
||||
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuaa
|
||||
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy
|
||||
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuyy
|
||||
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
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ print_spaced::i#2 print_spaced::i#1 ]
|
||||
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 ,
|
||||
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
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ]
|
||||
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
|
||||
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
|
||||
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
|
||||
Potential registers zp ZP_WORD:2 [ print2::at#3 ] : zp ZP_WORD:2 ,
|
||||
Potential registers zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y ,
|
||||
|
||||
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 []
|
||||
|
||||
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 [main] best 687 combination
|
||||
Uplifting [] best 687 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 ]
|
||||
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 447 combination
|
||||
Uplifting [] best 447 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 Basic Upstart
|
||||
@ -540,89 +511,69 @@ bend_from_b2:
|
||||
bend:
|
||||
//SEG9 main
|
||||
main: {
|
||||
//SEG10 [5] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG11 [9] phi from main to print_spaced [phi:main->print_spaced]
|
||||
print_spaced_from_main:
|
||||
//SEG12 [9] phi (byte*) print_spaced::at#3 = (const byte*) screen#0 [phi:main->print_spaced#0] -- pbuz1=pbuc1
|
||||
//SEG10 [5] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG11 [9] phi from main to print2 [phi:main->print2]
|
||||
print2_from_main:
|
||||
//SEG12 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1
|
||||
lda #<screen
|
||||
sta print_spaced.at
|
||||
sta print2.at
|
||||
lda #>screen
|
||||
sta print_spaced.at+1
|
||||
//SEG13 [9] phi (byte*) print_spaced::msg#3 = (const string) main::hello#0 [phi:main->print_spaced#1] -- pbuz1=pbuc1
|
||||
lda #<hello
|
||||
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]
|
||||
sta print2.at+1
|
||||
jsr print2
|
||||
//SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
jmp b1
|
||||
//SEG15 main::@1
|
||||
//SEG14 main::@1
|
||||
b1:
|
||||
//SEG16 [7] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG17 [9] phi from main::@1 to print_spaced [phi:main::@1->print_spaced]
|
||||
print_spaced_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
|
||||
lda #<screen+$28
|
||||
sta print_spaced.at
|
||||
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
|
||||
//SEG15 [7] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG16 [9] phi from main::@1 to print2 [phi:main::@1->print2]
|
||||
print2_from_b1:
|
||||
//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+$50
|
||||
sta print2.at
|
||||
lda #>screen+$50
|
||||
sta print2.at+1
|
||||
jsr print2
|
||||
jmp breturn
|
||||
//SEG20 main::@return
|
||||
//SEG18 main::@return
|
||||
breturn:
|
||||
//SEG21 [8] return [ ] ( main:2 [ ] )
|
||||
//SEG19 [8] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
hello: .text "hello world!@"
|
||||
}
|
||||
//SEG22 print_spaced
|
||||
print_spaced: {
|
||||
.label j = 6
|
||||
.label msg = 2
|
||||
.label at = 4
|
||||
//SEG23 [10] phi from print_spaced to print_spaced::@1 [phi:print_spaced->print_spaced::@1]
|
||||
b1_from_print_spaced:
|
||||
//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
|
||||
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
|
||||
//SEG20 print2
|
||||
print2: {
|
||||
.label at = 2
|
||||
//SEG21 [10] phi from print2 to print2::@1 [phi:print2->print2::@1]
|
||||
b1_from_print2:
|
||||
//SEG22 [10] phi (byte) print2::j#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#0] -- vbuyy=vbuc1
|
||||
ldy #0
|
||||
//SEG23 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
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:
|
||||
//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
|
||||
//SEG25 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy
|
||||
//SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy
|
||||
jmp b1
|
||||
//SEG29 print_spaced::@1
|
||||
//SEG27 print2::@1
|
||||
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
|
||||
txa
|
||||
tay
|
||||
lda (msg),y
|
||||
ldy j
|
||||
//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
|
||||
lda main.hello,x
|
||||
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
|
||||
lda j
|
||||
clc
|
||||
adc #2
|
||||
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
|
||||
//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
|
||||
iny
|
||||
iny
|
||||
//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
|
||||
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
|
||||
txa
|
||||
tay
|
||||
lda (msg),y
|
||||
//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
|
||||
lda main.hello,x
|
||||
cmp #'@'
|
||||
bne b1_from_b1
|
||||
jmp breturn
|
||||
//SEG34 print_spaced::@return
|
||||
//SEG32 print2::@return
|
||||
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
|
||||
}
|
||||
|
||||
@ -634,23 +585,21 @@ Removing instruction jmp breturn
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing instruction ldx #0 with TAX
|
||||
Replacing instruction lda j with TYA
|
||||
Replacing label b1_from_b1 with b1
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b2_from_bbegin:
|
||||
Removing instruction main_from_b2:
|
||||
Removing instruction bend_from_b2:
|
||||
Removing instruction b1_from_main:
|
||||
Removing instruction print_spaced_from_b1:
|
||||
Removing instruction print2_from_b1:
|
||||
Removing instruction b1_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b2:
|
||||
Removing instruction bend:
|
||||
Removing instruction print_spaced_from_main:
|
||||
Removing instruction print2_from_main:
|
||||
Removing instruction b1:
|
||||
Removing instruction breturn:
|
||||
Removing instruction b1_from_print_spaced:
|
||||
Removing instruction b1_from_print2:
|
||||
Removing instruction breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
Removing instruction jmp b1
|
||||
@ -665,30 +614,28 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@return
|
||||
(byte*) main::hello
|
||||
(const string) main::hello#0 hello = (string) "hello world!@"
|
||||
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg)
|
||||
(label) print_spaced::@1
|
||||
(label) print_spaced::@return
|
||||
(byte*) print_spaced::at
|
||||
(byte*) print_spaced::at#3 at zp ZP_WORD:4 1.8333333333333333
|
||||
(byte) print_spaced::i
|
||||
(byte) print_spaced::i#1 reg byte x 16.5
|
||||
(byte) print_spaced::i#2 reg byte x 11.0
|
||||
(byte) print_spaced::j
|
||||
(byte) print_spaced::j#1 j zp ZP_BYTE:6 7.333333333333333
|
||||
(byte) print_spaced::j#2 j zp ZP_BYTE:6 16.5
|
||||
(byte*) print_spaced::msg
|
||||
(byte*) print_spaced::msg#3 msg zp ZP_WORD:2 3.6666666666666665
|
||||
(void()) print2((byte*) print2::at , (byte*) print2::msg)
|
||||
(label) print2::@1
|
||||
(label) print2::@return
|
||||
(byte*) print2::at
|
||||
(byte*) print2::at#3 at zp ZP_WORD:2 1.8333333333333333
|
||||
(byte) print2::i
|
||||
(byte) print2::i#1 reg byte x 16.5
|
||||
(byte) print2::i#2 reg byte x 11.0
|
||||
(byte) print2::j
|
||||
(byte) print2::j#1 reg byte y 7.333333333333333
|
||||
(byte) print2::j#2 reg byte y 16.5
|
||||
(byte*) print2::msg
|
||||
(byte*) screen
|
||||
(const byte*) screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
|
||||
zp ZP_WORD:2 [ print_spaced::msg#3 ]
|
||||
zp ZP_WORD:4 [ print_spaced::at#3 ]
|
||||
reg byte x [ print_spaced::i#2 print_spaced::i#1 ]
|
||||
zp ZP_BYTE:6 [ print_spaced::j#2 print_spaced::j#1 ]
|
||||
zp ZP_WORD:2 [ print2::at#3 ]
|
||||
reg byte x [ print2::i#2 print2::i#1 ]
|
||||
reg byte y [ print2::j#2 print2::j#1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 575
|
||||
Score: 345
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
@ -706,76 +653,56 @@ Score: 575
|
||||
//SEG8 @end
|
||||
//SEG9 main
|
||||
main: {
|
||||
//SEG10 [5] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG11 [9] phi from main to print_spaced [phi:main->print_spaced]
|
||||
//SEG12 [9] phi (byte*) print_spaced::at#3 = (const byte*) screen#0 [phi:main->print_spaced#0] -- pbuz1=pbuc1
|
||||
//SEG10 [5] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG11 [9] phi from main to print2 [phi:main->print2]
|
||||
//SEG12 [9] phi (byte*) print2::at#3 = (const byte*) screen#0 [phi:main->print2#0] -- pbuz1=pbuc1
|
||||
lda #<screen
|
||||
sta print_spaced.at
|
||||
sta print2.at
|
||||
lda #>screen
|
||||
sta print_spaced.at+1
|
||||
//SEG13 [9] phi (byte*) print_spaced::msg#3 = (const string) main::hello#0 [phi:main->print_spaced#1] -- pbuz1=pbuc1
|
||||
lda #<hello
|
||||
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]
|
||||
//SEG15 main::@1
|
||||
//SEG16 [7] call print_spaced param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG17 [9] phi from main::@1 to print_spaced [phi:main::@1->print_spaced]
|
||||
//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
|
||||
lda #<screen+$28
|
||||
sta print_spaced.at
|
||||
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 [ ] )
|
||||
sta print2.at+1
|
||||
jsr print2
|
||||
//SEG13 [6] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG14 main::@1
|
||||
//SEG15 [7] call print2 param-assignment [ ] ( main:2 [ ] )
|
||||
//SEG16 [9] phi from main::@1 to print2 [phi:main::@1->print2]
|
||||
//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+$50
|
||||
sta print2.at
|
||||
lda #>screen+$50
|
||||
sta print2.at+1
|
||||
jsr print2
|
||||
//SEG18 main::@return
|
||||
//SEG19 [8] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
hello: .text "hello world!@"
|
||||
}
|
||||
//SEG22 print_spaced
|
||||
print_spaced: {
|
||||
.label j = 6
|
||||
.label msg = 2
|
||||
.label at = 4
|
||||
//SEG23 [10] phi from print_spaced to print_spaced::@1 [phi:print_spaced->print_spaced::@1]
|
||||
//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
|
||||
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
|
||||
tax
|
||||
//SEG26 [10] phi from print_spaced::@1 to print_spaced::@1 [phi:print_spaced::@1->print_spaced::@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
|
||||
//SEG20 print2
|
||||
print2: {
|
||||
.label at = 2
|
||||
//SEG21 [10] phi from print2 to print2::@1 [phi:print2->print2::@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
|
||||
ldy #0
|
||||
//SEG23 [10] phi (byte) print2::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:print2->print2::@1#1] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG24 [10] phi from print2::@1 to print2::@1 [phi:print2::@1->print2::@1]
|
||||
//SEG25 [10] phi (byte) print2::j#2 = (byte) print2::j#1 [phi:print2::@1->print2::@1#0] -- register_copy
|
||||
//SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy
|
||||
//SEG27 print2::@1
|
||||
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
|
||||
txa
|
||||
tay
|
||||
lda (msg),y
|
||||
ldy j
|
||||
//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
|
||||
lda main.hello,x
|
||||
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
|
||||
tya
|
||||
clc
|
||||
adc #2
|
||||
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
|
||||
//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
|
||||
iny
|
||||
iny
|
||||
//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
|
||||
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
|
||||
txa
|
||||
tay
|
||||
lda (msg),y
|
||||
//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
|
||||
lda main.hello,x
|
||||
cmp #'@'
|
||||
bne b1
|
||||
//SEG34 print_spaced::@return
|
||||
//SEG35 [15] return [ ] ( main:2::print_spaced:5 [ ] main:2::print_spaced:7 [ ] )
|
||||
//SEG32 print2::@return
|
||||
//SEG33 [15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] )
|
||||
rts
|
||||
}
|
||||
|
||||
|
@ -6,23 +6,21 @@
|
||||
(label) main::@return
|
||||
(byte*) main::hello
|
||||
(const string) main::hello#0 hello = (string) "hello world!@"
|
||||
(void()) print_spaced((byte*) print_spaced::at , (byte*) print_spaced::msg)
|
||||
(label) print_spaced::@1
|
||||
(label) print_spaced::@return
|
||||
(byte*) print_spaced::at
|
||||
(byte*) print_spaced::at#3 at zp ZP_WORD:4 1.8333333333333333
|
||||
(byte) print_spaced::i
|
||||
(byte) print_spaced::i#1 reg byte x 16.5
|
||||
(byte) print_spaced::i#2 reg byte x 11.0
|
||||
(byte) print_spaced::j
|
||||
(byte) print_spaced::j#1 j zp ZP_BYTE:6 7.333333333333333
|
||||
(byte) print_spaced::j#2 j zp ZP_BYTE:6 16.5
|
||||
(byte*) print_spaced::msg
|
||||
(byte*) print_spaced::msg#3 msg zp ZP_WORD:2 3.6666666666666665
|
||||
(void()) print2((byte*) print2::at , (byte*) print2::msg)
|
||||
(label) print2::@1
|
||||
(label) print2::@return
|
||||
(byte*) print2::at
|
||||
(byte*) print2::at#3 at zp ZP_WORD:2 1.8333333333333333
|
||||
(byte) print2::i
|
||||
(byte) print2::i#1 reg byte x 16.5
|
||||
(byte) print2::i#2 reg byte x 11.0
|
||||
(byte) print2::j
|
||||
(byte) print2::j#1 reg byte y 7.333333333333333
|
||||
(byte) print2::j#2 reg byte y 16.5
|
||||
(byte*) print2::msg
|
||||
(byte*) screen
|
||||
(const byte*) screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
|
||||
zp ZP_WORD:2 [ print_spaced::msg#3 ]
|
||||
zp ZP_WORD:4 [ print_spaced::at#3 ]
|
||||
reg byte x [ print_spaced::i#2 print_spaced::i#1 ]
|
||||
zp ZP_BYTE:6 [ print_spaced::j#2 print_spaced::j#1 ]
|
||||
zp ZP_WORD:2 [ print2::at#3 ]
|
||||
reg byte x [ print2::i#2 print2::i#1 ]
|
||||
reg byte y [ print2::j#2 print2::j#1 ]
|
||||
|
@ -112,10 +112,6 @@ Constant (const byte) main::i#0 = 0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) main::$0 = SCREEN#0+80
|
||||
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
|
||||
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
|
||||
|
@ -110,22 +110,11 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::buf#0 = ((byte*))4352
|
||||
Constant (const byte) main::i#0 = 5
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
|
||||
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
|
||||
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
|
||||
Alias (byte) main::i#2 = (byte~) main::$0
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -1,7 +1,7 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label rem16u = $11
|
||||
.label rem16u = $f
|
||||
.label print_char_cursor = 7
|
||||
.label print_line_cursor = 3
|
||||
jsr main
|
||||
@ -11,10 +11,6 @@ main: {
|
||||
sta lin16u_gen.lintab
|
||||
lda #>lintab1
|
||||
sta lin16u_gen.lintab+1
|
||||
lda #<$14
|
||||
sta lin16u_gen.length
|
||||
lda #>$14
|
||||
sta lin16u_gen.length+1
|
||||
lda #<$22d
|
||||
sta lin16u_gen.min
|
||||
lda #>$22d
|
||||
@ -28,10 +24,6 @@ main: {
|
||||
sta lin16u_gen.lintab
|
||||
lda #>lintab2
|
||||
sta lin16u_gen.lintab+1
|
||||
lda #<$14
|
||||
sta lin16u_gen.length
|
||||
lda #>$14
|
||||
sta lin16u_gen.length+1
|
||||
lda #<$79cb
|
||||
sta lin16u_gen.min
|
||||
lda #>$79cb
|
||||
@ -45,10 +37,6 @@ main: {
|
||||
sta lin16u_gen.lintab
|
||||
lda #>lintab3
|
||||
sta lin16u_gen.lintab+1
|
||||
lda #<$14
|
||||
sta lin16u_gen.length
|
||||
lda #>$14
|
||||
sta lin16u_gen.length+1
|
||||
lda #<0
|
||||
sta lin16u_gen.min
|
||||
sta lin16u_gen.min+1
|
||||
@ -295,15 +283,14 @@ print_cls: {
|
||||
lin16u_gen: {
|
||||
.label _5 = 5
|
||||
.label ampl = 3
|
||||
.label stepi = $15
|
||||
.label stepf = $13
|
||||
.label step = $17
|
||||
.label stepi = $13
|
||||
.label stepf = $11
|
||||
.label step = $15
|
||||
.label val = 9
|
||||
.label lintab = $d
|
||||
.label lintab = 7
|
||||
.label i = 3
|
||||
.label max = 3
|
||||
.label min = 5
|
||||
.label length = 7
|
||||
lda ampl
|
||||
sec
|
||||
sbc min
|
||||
@ -311,12 +298,9 @@ lin16u_gen: {
|
||||
lda ampl+1
|
||||
sbc min+1
|
||||
sta ampl+1
|
||||
lda length
|
||||
sec
|
||||
sbc #1
|
||||
lda #<$14-1
|
||||
sta divr16u.divisor
|
||||
lda length+1
|
||||
sbc #0
|
||||
lda #>$14-1
|
||||
sta divr16u.divisor+1
|
||||
lda #<0
|
||||
sta divr16u.rem
|
||||
@ -326,12 +310,9 @@ lin16u_gen: {
|
||||
sta stepi
|
||||
lda divr16u.return+1
|
||||
sta stepi+1
|
||||
lda length
|
||||
sec
|
||||
sbc #1
|
||||
lda #<$14-1
|
||||
sta divr16u.divisor
|
||||
lda length+1
|
||||
sbc #0
|
||||
lda #>$14-1
|
||||
sta divr16u.divisor+1
|
||||
lda #<0
|
||||
sta divr16u.dividend
|
||||
@ -391,21 +372,21 @@ lin16u_gen: {
|
||||
inc i+1
|
||||
!:
|
||||
lda i+1
|
||||
cmp length+1
|
||||
cmp #>$14
|
||||
bcc b1
|
||||
bne !+
|
||||
lda i
|
||||
cmp length
|
||||
cmp #<$14
|
||||
bcc b1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
divr16u: {
|
||||
.label rem = $11
|
||||
.label rem = $f
|
||||
.label dividend = 3
|
||||
.label quotient = $13
|
||||
.label return = $13
|
||||
.label divisor = $f
|
||||
.label quotient = $11
|
||||
.label return = $11
|
||||
.label divisor = $d
|
||||
ldx #0
|
||||
txa
|
||||
sta quotient
|
||||
|
@ -197,79 +197,76 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[96] return [ ] ( main:2::print_cls:11 [ ] )
|
||||
to:@return
|
||||
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::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::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::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::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::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] (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] 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 ] )
|
||||
[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::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::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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
to:lin16u_gen::@3
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
to:lin16u_gen::@4
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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::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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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
|
||||
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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -17,29 +17,27 @@
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:3 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:3 4.0
|
||||
(word) divr16u::divisor
|
||||
(word) divr16u::divisor#0 divisor zp ZP_WORD:15 2.0
|
||||
(word) divr16u::divisor#1 divisor zp ZP_WORD:15 2.0
|
||||
(word) divr16u::divisor#6 divisor zp ZP_WORD:15 1.625
|
||||
(word) divr16u::divisor#6 divisor zp ZP_WORD:13 1.375
|
||||
(byte) divr16u::i
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:19 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:19 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:19 2.75
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:17 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:17 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:17 2.75
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:17 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:17 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:17 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:17 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:17 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:17 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:17 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:17 11.0
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:15 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:15 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:15 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:15 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:15 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:15 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:15 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:15 11.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp ZP_WORD:19 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:19 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:19 4.0
|
||||
(word) divr16u::return#0 return zp ZP_WORD:17 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:17 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)
|
||||
(word~) lin16u_gen::$5 $5 zp ZP_WORD:5 22.0
|
||||
(label) lin16u_gen::@1
|
||||
@ -47,26 +45,25 @@
|
||||
(label) lin16u_gen::@4
|
||||
(label) lin16u_gen::@return
|
||||
(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#1 i zp ZP_WORD:3 16.5
|
||||
(word) lin16u_gen::i#2 i zp ZP_WORD:3 4.4
|
||||
(word) lin16u_gen::length
|
||||
(word) lin16u_gen::length#3 length zp ZP_WORD:7 0.7142857142857143
|
||||
(word*) lin16u_gen::lintab
|
||||
(word*) lin16u_gen::lintab#3 lintab zp ZP_WORD:13 7.333333333333333
|
||||
(word*) lin16u_gen::lintab#4 lintab zp ZP_WORD:13 8.75
|
||||
(word*) lin16u_gen::lintab#5 lintab zp ZP_WORD:13 0.14285714285714285
|
||||
(word*) lin16u_gen::lintab#3 lintab zp ZP_WORD:7 7.333333333333333
|
||||
(word*) lin16u_gen::lintab#4 lintab zp ZP_WORD:7 8.75
|
||||
(word*) lin16u_gen::lintab#5 lintab zp ZP_WORD:7 0.16666666666666666
|
||||
(word) lin16u_gen::max
|
||||
(word) lin16u_gen::max#3 max zp ZP_WORD:3 2.0
|
||||
(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#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#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#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#0 val zp ZP_DWORD:9 4.0
|
||||
(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#5 w zp ZP_WORD:5 22.0
|
||||
(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_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 ]
|
||||
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 ]
|
||||
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_WORD:13 [ lin16u_gen::lintab#4 lin16u_gen::lintab#3 lin16u_gen::lintab#5 ]
|
||||
zp ZP_WORD:15 [ divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#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:19 [ 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:13 [ divr16u::divisor#6 ]
|
||||
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::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 a [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$2 ]
|
||||
zp ZP_WORD:21 [ lin16u_gen::stepi#0 ]
|
||||
zp ZP_DWORD:23 [ lin16u_gen::step#0 ]
|
||||
zp ZP_WORD:19 [ lin16u_gen::stepi#0 ]
|
||||
zp ZP_DWORD:21 [ lin16u_gen::step#0 ]
|
||||
reg byte a [ divr16u::$1 ]
|
||||
reg byte a [ divr16u::$2 ]
|
||||
|
@ -190,15 +190,9 @@ Constant (const string) str#0 = "bc"+"d"+'e'
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated array index constant in *(SCREEN#0+0)
|
||||
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)
|
||||
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)
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
|
||||
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::$1 ← (byte) main::i#2
|
||||
Eliminating unused constant (const string) $2
|
||||
|
@ -363,8 +363,6 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
|
||||
Constant (const byte) main::i#0 = 0
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -728,10 +728,6 @@ Constant (const byte) long1::i#0 = 0
|
||||
Constant (const byte*) long2::SCREEN#0 = ((byte*))1024
|
||||
Constant (const byte) long2::i#0 = 0
|
||||
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
|
||||
Inlining constant with var siblings (const byte) long1::i#0
|
||||
Inlining constant with var siblings (const byte) long1::i#0
|
||||
|
@ -151,11 +151,8 @@ Constant (const byte) main::i#0 = 0
|
||||
Constant (const byte) main::j#0 = 255
|
||||
Constant (const byte) main::i#2 = 0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#4
|
||||
Culled Empty Block (label) main::@3
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -497,7 +497,6 @@ Constant (const word/dword) main::$9 = main::$6|main::$8
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::$10 = ((byte))main::$9
|
||||
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::spec#4 gen_char3::spec#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
|
||||
Redundant Phi (byte*) gen_char3::dst#5 (byte*) gen_char3::dst#0
|
||||
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::spec#4 gen_char3::spec#0
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte*) main::charset#2
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Inlining constant with var siblings (const byte) main::c#0
|
||||
Inlining constant with var siblings (const byte) main::c#0
|
||||
|
@ -289,7 +289,6 @@ Constant (const byte*) SCREEN#0 = ((byte*))1024
|
||||
Constant (const byte) main::i#0 = 0
|
||||
Constant (const byte) main::j#0 = 10
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte) line::l#2
|
||||
Culled Empty Block (label) main::@3
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
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: plot::x#0 line::l#2
|
||||
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#1 main::j#2
|
||||
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#2 plot::x#0
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte) line::l#2
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -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::$17 = ((byte*))main::$16
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -688,12 +688,9 @@ Constant (const byte*) main::line#0 = SCREEN#0+40
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+1000
|
||||
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 *(main::line#0+39)
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
Inferred type updated to byte in (byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::i#2
|
||||
|
@ -1756,57 +1756,8 @@ Constant (const byte*) fillscreen::screen#0 = SCREEN#0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+1000
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Multiple usages for variable. Not optimizing sub-constant (byte*) SCREEN#17
|
||||
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
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
@ -1877,39 +1828,15 @@ Constant (const byte*) scroll_hard::$38 = SCREEN#0+scroll_hard::$37
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) scroll_bit::sc#0 = scroll_bit::$7+40+39
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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::$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
|
||||
|
@ -233,10 +233,6 @@ gen_sintab: {
|
||||
lda #>f_amp
|
||||
sta setMEMtoFAC.mem+1
|
||||
jsr setMEMtoFAC
|
||||
lda #<f_min
|
||||
sta addMEMtoFAC.mem
|
||||
lda #>f_min
|
||||
sta addMEMtoFAC.mem+1
|
||||
jsr addMEMtoFAC
|
||||
lda #<f_min
|
||||
sta setMEMtoFAC.mem
|
||||
@ -278,10 +274,6 @@ gen_sintab: {
|
||||
lda #>f_amp
|
||||
sta mulFACbyMEM.mem+1
|
||||
jsr mulFACbyMEM
|
||||
lda #<f_min
|
||||
sta addMEMtoFAC.mem
|
||||
lda #>f_min
|
||||
sta addMEMtoFAC.mem+1
|
||||
jsr addMEMtoFAC
|
||||
jsr getFAC
|
||||
lda _23
|
||||
@ -331,7 +323,10 @@ getFAC: {
|
||||
rts
|
||||
}
|
||||
addMEMtoFAC: {
|
||||
.label mem = $c
|
||||
lda #<gen_sintab.f_min
|
||||
sta prepareMEM.mem
|
||||
lda #>gen_sintab.f_min
|
||||
sta prepareMEM.mem+1
|
||||
jsr prepareMEM
|
||||
lda $fe
|
||||
ldy $ff
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -31,7 +31,6 @@
|
||||
(label) addMEMtoFAC::@1
|
||||
(label) addMEMtoFAC::@return
|
||||
(byte*) addMEMtoFAC::mem
|
||||
(byte*) addMEMtoFAC::mem#2 mem zp ZP_WORD:12 2.0
|
||||
(void()) anim()
|
||||
(byte~) anim::$2 $2 zp ZP_BYTE:5 101.0
|
||||
(byte~) anim::$3 reg byte a 202.0
|
||||
@ -248,11 +247,10 @@
|
||||
(label) prepareMEM::@return
|
||||
(byte*) prepareMEM::mem
|
||||
(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#4 mem zp ZP_WORD:12 4.0
|
||||
(byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 4.666666666666666
|
||||
(byte*~) prepareMEM::mem#9 mem zp ZP_WORD:12 4.0
|
||||
(byte*) prepareMEM::mem#5 mem zp ZP_WORD:12 3.9999999999999996
|
||||
(byte*~) prepareMEM::mem#8 mem zp ZP_WORD:12 4.0
|
||||
(byte*) progress_cursor
|
||||
(byte*) progress_cursor#10 progress_cursor zp ZP_WORD:10 4.0
|
||||
(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 ]
|
||||
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: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 x [ gen_chargen_sprite::b#2 gen_chargen_sprite::b#1 ]
|
||||
reg byte y [ place_sprites::j#2 place_sprites::j#1 ]
|
||||
|
@ -5,7 +5,7 @@
|
||||
.const PI_u4f28 = $3243f6a9
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.label print_line_cursor = $400
|
||||
.label rem16u = 4
|
||||
.label rem16u = 2
|
||||
.label print_char_cursor = 8
|
||||
jsr main
|
||||
main: {
|
||||
@ -481,13 +481,9 @@ mul16u: {
|
||||
jmp b1
|
||||
}
|
||||
div32u16u: {
|
||||
.label quotient_hi = $13
|
||||
.label quotient_lo = 8
|
||||
.label quotient_hi = 8
|
||||
.label quotient_lo = 6
|
||||
.label return = $1b
|
||||
lda #<main.wavelength
|
||||
sta divr16u.divisor
|
||||
lda #>main.wavelength
|
||||
sta divr16u.divisor+1
|
||||
lda #<PI2_u4f28>>$10
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f28>>$10
|
||||
@ -500,10 +496,6 @@ div32u16u: {
|
||||
sta quotient_hi
|
||||
lda divr16u.return+1
|
||||
sta quotient_hi+1
|
||||
lda #<main.wavelength
|
||||
sta divr16u.divisor
|
||||
lda #>main.wavelength
|
||||
sta divr16u.divisor+1
|
||||
lda #<PI2_u4f28&$ffff
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f28&$ffff
|
||||
@ -520,11 +512,10 @@ div32u16u: {
|
||||
rts
|
||||
}
|
||||
divr16u: {
|
||||
.label rem = 4
|
||||
.label dividend = 6
|
||||
.label quotient = 8
|
||||
.label return = 8
|
||||
.label divisor = 2
|
||||
.label rem = 2
|
||||
.label dividend = 4
|
||||
.label quotient = 6
|
||||
.label return = 6
|
||||
ldx #0
|
||||
txa
|
||||
sta quotient
|
||||
@ -545,11 +536,11 @@ divr16u: {
|
||||
asl quotient
|
||||
rol quotient+1
|
||||
lda rem+1
|
||||
cmp divisor+1
|
||||
cmp #>main.wavelength
|
||||
bcc b3
|
||||
bne !+
|
||||
lda rem
|
||||
cmp divisor
|
||||
cmp #<main.wavelength
|
||||
bcc b3
|
||||
!:
|
||||
inc quotient
|
||||
@ -558,10 +549,10 @@ divr16u: {
|
||||
!:
|
||||
lda rem
|
||||
sec
|
||||
sbc divisor
|
||||
sbc #<main.wavelength
|
||||
sta rem
|
||||
lda rem+1
|
||||
sbc divisor+1
|
||||
sbc #>main.wavelength
|
||||
sta rem+1
|
||||
b3:
|
||||
inx
|
||||
|
@ -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 ] )
|
||||
to:@return
|
||||
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 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 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::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 ] )
|
||||
to:divr16u::@1
|
||||
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] (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::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::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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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::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::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::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::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::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::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::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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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::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::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<(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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 - (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
|
||||
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::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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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::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::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::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
|
||||
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 ] )
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -15,9 +15,9 @@
|
||||
(word) div32u16u::divisor
|
||||
(dword) div32u16u::quotient
|
||||
(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#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#0 return zp ZP_DWORD:27 1.3333333333333333
|
||||
(dword) div32u16u::return#2 return zp ZP_DWORD:27 4.0
|
||||
@ -32,31 +32,30 @@
|
||||
(label) divr16u::@6
|
||||
(label) divr16u::@return
|
||||
(word) divr16u::dividend
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:6 2.75
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:6 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:6 2.0
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:4 2.75
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:4 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:4 2.0
|
||||
(word) divr16u::divisor
|
||||
(word) divr16u::divisor#6 divisor zp ZP_WORD:2 1.375
|
||||
(byte) divr16u::i
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:8 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:8 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:8 2.75
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:6 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:6 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:6 2.75
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:4 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:4 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:4 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:4 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:4 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:4 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:4 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:4 11.0
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:2 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:2 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:2 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:2 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:2 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:2 11.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp ZP_WORD:8 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:8 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:8 4.0
|
||||
(word) divr16u::return#0 return zp ZP_WORD:6 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:6 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:6 4.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
@ -184,7 +183,7 @@
|
||||
(label) print_word::@return
|
||||
(word) print_word::w
|
||||
(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)
|
||||
(dword~) sin16s::$6 $6 zp ZP_DWORD:15 4.0
|
||||
(label) sin16s::@1
|
||||
@ -250,16 +249,16 @@
|
||||
(dword) sin16s_gen::x#1 x zp ZP_DWORD:10 7.333333333333333
|
||||
(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: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: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: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::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 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_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_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 ]
|
||||
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 ]
|
||||
|
@ -7,7 +7,7 @@
|
||||
.const PI_u4f12 = $3244
|
||||
.const PI_HALF_u4f12 = $1922
|
||||
.label print_line_cursor = $400
|
||||
.label rem16u = 4
|
||||
.label rem16u = 2
|
||||
.label print_char_cursor = $b
|
||||
jsr main
|
||||
main: {
|
||||
@ -181,18 +181,6 @@ sin16s_genb: {
|
||||
.label sintab = 2
|
||||
.label x = $d
|
||||
.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
|
||||
lda #<0
|
||||
sta i
|
||||
@ -474,14 +462,12 @@ mul16u: {
|
||||
jmp b1
|
||||
}
|
||||
div32u16u: {
|
||||
.label quotient_hi = $b
|
||||
.label quotient_lo = 8
|
||||
.label quotient_hi = 8
|
||||
.label quotient_lo = 6
|
||||
.label return = $1d
|
||||
.label dividend = $d
|
||||
.label divisor = 2
|
||||
lda dividend+2
|
||||
lda #<PI2_u4f28>>$10
|
||||
sta divr16u.dividend
|
||||
lda dividend+3
|
||||
lda #>PI2_u4f28>>$10
|
||||
sta divr16u.dividend+1
|
||||
lda #<0
|
||||
sta divr16u.rem
|
||||
@ -491,9 +477,9 @@ div32u16u: {
|
||||
sta quotient_hi
|
||||
lda divr16u.return+1
|
||||
sta quotient_hi+1
|
||||
lda dividend
|
||||
lda #<PI2_u4f28&$ffff
|
||||
sta divr16u.dividend
|
||||
lda dividend+1
|
||||
lda #>PI2_u4f28&$ffff
|
||||
sta divr16u.dividend+1
|
||||
jsr divr16u
|
||||
lda quotient_hi
|
||||
@ -507,11 +493,10 @@ div32u16u: {
|
||||
rts
|
||||
}
|
||||
divr16u: {
|
||||
.label rem = 4
|
||||
.label dividend = 6
|
||||
.label quotient = 8
|
||||
.label return = 8
|
||||
.label divisor = 2
|
||||
.label rem = 2
|
||||
.label dividend = 4
|
||||
.label quotient = 6
|
||||
.label return = 6
|
||||
ldx #0
|
||||
txa
|
||||
sta quotient
|
||||
@ -532,11 +517,11 @@ divr16u: {
|
||||
asl quotient
|
||||
rol quotient+1
|
||||
lda rem+1
|
||||
cmp divisor+1
|
||||
cmp #>main.wavelength
|
||||
bcc b3
|
||||
bne !+
|
||||
lda rem
|
||||
cmp divisor
|
||||
cmp #<main.wavelength
|
||||
bcc b3
|
||||
!:
|
||||
inc quotient
|
||||
@ -545,10 +530,10 @@ divr16u: {
|
||||
!:
|
||||
lda rem
|
||||
sec
|
||||
sbc divisor
|
||||
sbc #<main.wavelength
|
||||
sta rem
|
||||
lda rem+1
|
||||
sbc divisor+1
|
||||
sbc #>main.wavelength
|
||||
sta rem+1
|
||||
b3:
|
||||
inx
|
||||
@ -562,18 +547,6 @@ sin16s_gen: {
|
||||
.label sintab = 2
|
||||
.label x = $d
|
||||
.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
|
||||
lda #<0
|
||||
sta i
|
||||
|
@ -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 ] )
|
||||
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
|
||||
[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] (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::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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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: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: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: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: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: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: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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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: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: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
|
||||
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
|
||||
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
|
||||
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::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] (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 ] )
|
||||
[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 ] )
|
||||
[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: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: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: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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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: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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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: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: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
|
||||
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] (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] (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::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 ] )
|
||||
[135] phi() [ ] ( main:2::sin16s_genb:7::div32u16u:63 [ ] main:2::sin16s_gen:5::div32u16u:164 [ ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
to:div32u16u::@2
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
to:div32u16u::@3
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
to:divr16u::@1
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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
|
||||
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
|
||||
sin16s_gen: scope:[sin16s_gen] from main
|
||||
[167] phi() [ ] ( main:2::sin16s_gen:5 [ ] )
|
||||
[168] 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 ] )
|
||||
[163] phi() [ ] ( main:2::sin16s_gen:5 [ ] )
|
||||
[164] call div32u16u param-assignment [ div32u16u::return#0 ] ( main:2::sin16s_gen:5 [ div32u16u::return#0 ] )
|
||||
[165] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ div32u16u::return#2 ] )
|
||||
to:sin16s_gen::@3
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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
|
||||
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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -16,14 +16,12 @@
|
||||
(label) div32u16u::@3
|
||||
(label) div32u16u::@return
|
||||
(dword) div32u16u::dividend
|
||||
(dword) div32u16u::dividend#2 dividend zp ZP_DWORD:13 0.6666666666666666
|
||||
(word) div32u16u::divisor
|
||||
(word) div32u16u::divisor#2 divisor zp ZP_WORD:2 0.5714285714285714
|
||||
(dword) div32u16u::quotient
|
||||
(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#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#0 return zp ZP_DWORD:29 1.5
|
||||
(dword) div32u16u::return#2 return zp ZP_DWORD:29 4.0
|
||||
@ -39,35 +37,30 @@
|
||||
(label) divr16u::@6
|
||||
(label) divr16u::@return
|
||||
(word) divr16u::dividend
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:6 2.75
|
||||
(word) divr16u::dividend#1 dividend zp ZP_WORD:6 2.0
|
||||
(word) divr16u::dividend#2 dividend zp ZP_WORD:6 1.3333333333333333
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:6 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:6 6.0
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:4 2.75
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:4 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:4 2.0
|
||||
(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#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:8 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:8 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:8 2.75
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:6 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:6 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:6 2.75
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:4 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:4 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:4 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:4 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:4 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:4 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:4 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:4 11.0
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:2 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:2 11.666666666666666
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:2 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:2 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:2 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:2 11.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp ZP_WORD:8 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:8 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:8 4.0
|
||||
(word) divr16u::return#0 return zp ZP_WORD:6 5.285714285714286
|
||||
(word) divr16u::return#2 return zp ZP_WORD:6 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:6 4.0
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
@ -218,7 +211,7 @@
|
||||
(label) print_word::@return
|
||||
(word) print_word::w
|
||||
(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)
|
||||
(dword~) sin16s::$6 $6 zp ZP_DWORD:21 4.0
|
||||
(label) sin16s::@1
|
||||
@ -347,15 +340,15 @@
|
||||
(word) sin16sb::x5_128
|
||||
(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: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: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::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 ]
|
||||
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: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: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 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 ]
|
||||
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_DWORD:13 [ sin16s_genb::x#2 sin16s_genb::x#1 div32u16u::dividend#2 sin16s_gen::x#2 sin16s_gen::x#1 ]
|
||||
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 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 ]
|
||||
reg byte x [ mulu16_sel::select#10 ]
|
||||
zp ZP_WORD:19 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
|
||||
|
@ -8,7 +8,7 @@
|
||||
.const PI_u4f12 = $3244
|
||||
.const PI_HALF_u4f12 = $1922
|
||||
.label print_line_cursor = $400
|
||||
.label rem16u = 5
|
||||
.label rem16u = 2
|
||||
.label print_char_cursor = 5
|
||||
jsr main
|
||||
main: {
|
||||
@ -482,13 +482,9 @@ mul16u: {
|
||||
jmp b1
|
||||
}
|
||||
div32u16u: {
|
||||
.label quotient_hi = $13
|
||||
.label quotient_lo = $11
|
||||
.label quotient_hi = $11
|
||||
.label quotient_lo = $f
|
||||
.label return = $1c
|
||||
lda #<main.wavelength
|
||||
sta divr16u.divisor
|
||||
lda #>main.wavelength
|
||||
sta divr16u.divisor+1
|
||||
lda #<PI2_u4f28>>$10
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f28>>$10
|
||||
@ -501,10 +497,6 @@ div32u16u: {
|
||||
sta quotient_hi
|
||||
lda divr16u.return+1
|
||||
sta quotient_hi+1
|
||||
lda #<main.wavelength
|
||||
sta divr16u.divisor
|
||||
lda #>main.wavelength
|
||||
sta divr16u.divisor+1
|
||||
lda #<PI2_u4f28&$ffff
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f28&$ffff
|
||||
@ -521,11 +513,10 @@ div32u16u: {
|
||||
rts
|
||||
}
|
||||
divr16u: {
|
||||
.label rem = 5
|
||||
.label dividend = $f
|
||||
.label quotient = $11
|
||||
.label return = $11
|
||||
.label divisor = 2
|
||||
.label rem = 2
|
||||
.label dividend = 5
|
||||
.label quotient = $f
|
||||
.label return = $f
|
||||
ldx #0
|
||||
txa
|
||||
sta quotient
|
||||
@ -546,11 +537,11 @@ divr16u: {
|
||||
asl quotient
|
||||
rol quotient+1
|
||||
lda rem+1
|
||||
cmp divisor+1
|
||||
cmp #>main.wavelength
|
||||
bcc b3
|
||||
bne !+
|
||||
lda rem
|
||||
cmp divisor
|
||||
cmp #<main.wavelength
|
||||
bcc b3
|
||||
!:
|
||||
inc quotient
|
||||
@ -559,10 +550,10 @@ divr16u: {
|
||||
!:
|
||||
lda rem
|
||||
sec
|
||||
sbc divisor
|
||||
sbc #<main.wavelength
|
||||
sta rem
|
||||
lda rem+1
|
||||
sbc divisor+1
|
||||
sbc #>main.wavelength
|
||||
sta rem+1
|
||||
b3:
|
||||
inx
|
||||
@ -571,10 +562,10 @@ divr16u: {
|
||||
rts
|
||||
}
|
||||
sin8s_gen: {
|
||||
.label step = $11
|
||||
.label step = $f
|
||||
.label sintab = 5
|
||||
.label x = 2
|
||||
.label i = $f
|
||||
.label i = $11
|
||||
jsr div16u
|
||||
lda #<0
|
||||
sta i
|
||||
@ -777,11 +768,7 @@ mul8u: {
|
||||
jmp b1
|
||||
}
|
||||
div16u: {
|
||||
.label return = $11
|
||||
lda #<main.wavelength
|
||||
sta divr16u.divisor
|
||||
lda #>main.wavelength
|
||||
sta divr16u.divisor+1
|
||||
.label return = $f
|
||||
lda #<PI2_u4f12
|
||||
sta divr16u.dividend
|
||||
lda #>PI2_u4f12
|
||||
|
@ -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 ] )
|
||||
to:@return
|
||||
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 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 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::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 ] )
|
||||
to:divr16u::@1
|
||||
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] (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::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::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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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::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::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::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::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::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::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::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
|
||||
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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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::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::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<(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
|
||||
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 ] )
|
||||
[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 ] )
|
||||
[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 - (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
|
||||
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::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 ] )
|
||||
[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 ] )
|
||||
[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 ] )
|
||||
[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::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::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::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
|
||||
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 ] )
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -19,8 +19,8 @@
|
||||
(word) div16u::dividend
|
||||
(word) div16u::divisor
|
||||
(word) div16u::return
|
||||
(word) div16u::return#0 return zp ZP_WORD:17 1.3333333333333333
|
||||
(word) div16u::return#2 return zp ZP_WORD:17 4.0
|
||||
(word) div16u::return#0 return zp ZP_WORD:15 1.3333333333333333
|
||||
(word) div16u::return#2 return zp ZP_WORD:15 4.0
|
||||
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
||||
(label) div32u16u::@2
|
||||
(label) div32u16u::@3
|
||||
@ -29,9 +29,9 @@
|
||||
(word) div32u16u::divisor
|
||||
(dword) div32u16u::quotient
|
||||
(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#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#0 return zp ZP_DWORD:28 1.3333333333333333
|
||||
(dword) div32u16u::return#2 return zp ZP_DWORD:28 4.0
|
||||
@ -46,32 +46,31 @@
|
||||
(label) divr16u::@6
|
||||
(label) divr16u::@return
|
||||
(word) divr16u::dividend
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:15 2.75
|
||||
(word) divr16u::dividend#4 dividend zp ZP_WORD:15 5.0
|
||||
(word) divr16u::dividend#6 dividend zp ZP_WORD:15 2.0
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:5 2.75
|
||||
(word) divr16u::dividend#4 dividend zp ZP_WORD:5 5.0
|
||||
(word) divr16u::dividend#6 dividend zp ZP_WORD:5 2.0
|
||||
(word) divr16u::divisor
|
||||
(word) divr16u::divisor#7 divisor zp ZP_WORD:2 1.375
|
||||
(byte) divr16u::i
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:17 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:17 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:17 2.75
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:15 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:15 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:15 2.75
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:5 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:5 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:5 11.666666666666666
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:5 4.0
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:5 22.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:5 4.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:5 24.0
|
||||
(word) divr16u::rem#7 rem zp ZP_WORD:5 11.0
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:2 11.666666666666666
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:2 4.0
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:2 22.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:2 4.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:2 24.0
|
||||
(word) divr16u::rem#7 rem zp ZP_WORD:2 11.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp ZP_WORD:17 4.875
|
||||
(word) divr16u::return#2 return zp ZP_WORD:17 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:17 4.0
|
||||
(word) divr16u::return#4 return zp ZP_WORD:17 4.0
|
||||
(word) divr16u::return#0 return zp ZP_WORD:15 4.875
|
||||
(word) divr16u::return#2 return zp ZP_WORD:15 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:15 4.0
|
||||
(word) divr16u::return#4 return zp ZP_WORD:15 4.0
|
||||
(void()) main()
|
||||
(word~) main::$3 $3 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#5 str zp ZP_WORD:2 2.0
|
||||
(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)
|
||||
(dword~) sin16s::$6 $6 zp ZP_DWORD:11 4.0
|
||||
(label) sin16s::@1
|
||||
@ -376,28 +375,28 @@
|
||||
(label) sin8s_gen::@4
|
||||
(label) sin8s_gen::@return
|
||||
(word) sin8s_gen::i
|
||||
(word) sin8s_gen::i#1 i zp ZP_WORD:15 16.5
|
||||
(word) sin8s_gen::i#2 i zp ZP_WORD:15 2.75
|
||||
(word) sin8s_gen::i#1 i zp ZP_WORD:17 16.5
|
||||
(word) sin8s_gen::i#2 i zp ZP_WORD:17 2.75
|
||||
(signed byte*) sin8s_gen::sintab
|
||||
(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
|
||||
(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::x
|
||||
(word) sin8s_gen::x#1 x zp ZP_WORD:2 7.333333333333333
|
||||
(word) sin8s_gen::x#2 x zp ZP_WORD:2 4.714285714285714
|
||||
|
||||
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 ]
|
||||
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: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: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: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: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 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 ]
|
||||
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_DWORD:23 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
|
@ -3477,7 +3477,6 @@ Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) print_cls::sc#0 = print_line_cursor#0
|
||||
Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
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_byte::b#1 printu::b#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::@24
|
||||
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_byte::b#1 printu::b#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
|
||||
Inlining constant with var siblings (const byte) print_char::ch#2
|
||||
Inlining constant with var siblings (const byte) print_char::ch#2
|
||||
|
@ -2060,7 +2060,6 @@ Constant (const byte) main::ch#0 = 0
|
||||
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 }
|
||||
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
|
||||
Succesful SSA optimization Pass2ConstantIfs
|
||||
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::return#2 keyboard_key_pressed::return#0
|
||||
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#0 keyboard_key_pressed::rowidx#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::return#2 keyboard_key_pressed::return#0
|
||||
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
|
||||
Inlining constant with var siblings (const byte*) main::sc#0
|
||||
Inlining constant with var siblings (const byte*) main::sc#0
|
||||
|
@ -361,24 +361,12 @@ Constant (const byte) main::i#0 = 0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) SCREEN2#0 = ((byte*))$0
|
||||
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::return#0 sum::return#1
|
||||
Not aliassing across scopes: main::$2 sum::return#0
|
||||
Not aliassing across scopes: sum2::a#0 main::i#2
|
||||
Not aliassing across scopes: sum2::return#0 sum2::return#1
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -237,8 +237,6 @@ Self Phi Eliminated (byte*) main::zpptr#3
|
||||
Succesful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) main::zpptr#3 (const byte*) main::zpptr#0
|
||||
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
|
||||
Inlining constant with var siblings (const byte) main::j#0
|
||||
Inlining constant with var siblings (const byte) main::j#0
|
||||
|
Loading…
Reference in New Issue
Block a user