mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-08 17:54:40 +00:00
Optimized line table generator. Improved const identification in phi-values.
This commit is contained in:
parent
0478bc7404
commit
b5dfef7368
@ -115,7 +115,7 @@ public class Pass4CodeGeneration {
|
|||||||
if(constantVar.getType() instanceof SymbolTypePointer) {
|
if(constantVar.getType() instanceof SymbolTypePointer) {
|
||||||
// Must use a label for pointers
|
// Must use a label for pointers
|
||||||
asm.addLabelDecl(asmName.replace("#", "_").replace("$", "_"), asmConstant);
|
asm.addLabelDecl(asmName.replace("#", "_").replace("$", "_"), asmConstant);
|
||||||
} else if(SymbolType.isInteger(constantVar.getType()) && constantVar.getRef().getScopeDepth()>0) {
|
} else if(SymbolType.isInteger(constantVar.getType()) && constantVar.getRef().getScopeDepth() > 0) {
|
||||||
// Use label for integers referenced in other scope - to allow cross-scope referencing
|
// Use label for integers referenced in other scope - to allow cross-scope referencing
|
||||||
if(useLabelForConst(scopeRef, constantVar)) {
|
if(useLabelForConst(scopeRef, constantVar)) {
|
||||||
// Use label for integers referenced in other scope - to allow cross-scope referencing
|
// Use label for integers referenced in other scope - to allow cross-scope referencing
|
||||||
@ -145,7 +145,7 @@ public class Pass4CodeGeneration {
|
|||||||
private boolean useLabelForConst(ScopeRef scopeRef, ConstantVar constantVar) {
|
private boolean useLabelForConst(ScopeRef scopeRef, ConstantVar constantVar) {
|
||||||
boolean useLabel = false;
|
boolean useLabel = false;
|
||||||
Collection<Integer> constRefStatements = program.getVariableReferenceInfos().getConstRefStatements(constantVar.getRef());
|
Collection<Integer> constRefStatements = program.getVariableReferenceInfos().getConstRefStatements(constantVar.getRef());
|
||||||
if(constRefStatements!=null) {
|
if(constRefStatements != null) {
|
||||||
for(Integer constRefStmtIdx : constRefStatements) {
|
for(Integer constRefStmtIdx : constRefStatements) {
|
||||||
ScopeRef refScope = program.getStatementInfos().getBlock(constRefStmtIdx).getScope();
|
ScopeRef refScope = program.getStatementInfos().getBlock(constRefStmtIdx).getScope();
|
||||||
if(!refScope.equals(scopeRef)) {
|
if(!refScope.equals(scopeRef)) {
|
||||||
@ -155,22 +155,26 @@ public class Pass4CodeGeneration {
|
|||||||
boolean found = false;
|
boolean found = false;
|
||||||
for(StatementPhiBlock.PhiVariable phiVariable : ((StatementPhiBlock) statement).getPhiVariables()) {
|
for(StatementPhiBlock.PhiVariable phiVariable : ((StatementPhiBlock) statement).getPhiVariables()) {
|
||||||
for(StatementPhiBlock.PhiRValue phiRValue : phiVariable.getValues()) {
|
for(StatementPhiBlock.PhiRValue phiRValue : phiVariable.getValues()) {
|
||||||
if(phiRValue.getrValue().equals(constantVar.getRef())) {
|
RValue phiRRValue = phiRValue.getrValue();
|
||||||
found = true;
|
Collection<ConstantRef> phiRValueConstRefs = PassNVariableReferenceInfos.getReferencedConsts(phiRRValue);
|
||||||
// Found the constant
|
for(ConstantRef phiRValueConstRef : phiRValueConstRefs) {
|
||||||
LabelRef pred = phiRValue.getPredecessor();
|
if(phiRValueConstRef.equals(constantVar.getRef())) {
|
||||||
ControlFlowBlock predBlock = program.getGraph().getBlock(pred);
|
found = true;
|
||||||
ScopeRef predScope = predBlock.getScope();
|
// Found the constant
|
||||||
if(!predScope.equals(scopeRef)) {
|
LabelRef pred = phiRValue.getPredecessor();
|
||||||
// Scopes in PHI RValue differs from const scope - generate label
|
ControlFlowBlock predBlock = program.getGraph().getBlock(pred);
|
||||||
useLabel = true;
|
ScopeRef predScope = predBlock.getScope();
|
||||||
|
if(!predScope.equals(scopeRef)) {
|
||||||
|
// Scopes in PHI RValue differs from const scope - generate label
|
||||||
|
useLabel = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!found ) {
|
if(!found) {
|
||||||
// PHI-reference is complex - generate label
|
// PHI-reference is complex - generate label
|
||||||
program.getLog().append("Warning: Complex PHI-value using constant. Using .label as fallback. "+statement);
|
program.getLog().append("Warning: Complex PHI-value using constant. Using .label as fallback. " + statement);
|
||||||
useLabel = true;
|
useLabel = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -181,7 +185,7 @@ public class Pass4CodeGeneration {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Collection<ConstantRef> constRefConsts = program.getVariableReferenceInfos().getConstRefConsts(constantVar.getRef());
|
Collection<ConstantRef> constRefConsts = program.getVariableReferenceInfos().getConstRefConsts(constantVar.getRef());
|
||||||
if(constRefConsts!=null) {
|
if(constRefConsts != null) {
|
||||||
for(ConstantRef constRefConst : constRefConsts) {
|
for(ConstantRef constRefConst : constRefConsts) {
|
||||||
ConstantVar refConst = program.getScope().getConstant(constRefConst);
|
ConstantVar refConst = program.getScope().getConstant(constRefConst);
|
||||||
if(!refConst.getScope().getRef().equals(scopeRef)) {
|
if(!refConst.getScope().getRef().equals(scopeRef)) {
|
||||||
@ -283,7 +287,7 @@ public class Pass4CodeGeneration {
|
|||||||
try {
|
try {
|
||||||
generateStatementAsm(asm, block, statement, aluState, true);
|
generateStatementAsm(asm, block, statement, aluState, true);
|
||||||
} catch(AsmFragmentTemplateSynthesizer.UnknownFragmentException e) {
|
} catch(AsmFragmentTemplateSynthesizer.UnknownFragmentException e) {
|
||||||
throw new CompileError("Unknown fragment for statement "+statement.toString(program, false), e);
|
throw new CompileError("Unknown fragment for statement " + statement.toString(program, false), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ void main() {
|
|||||||
// length - the number of points in a total sinus wavelength (the size of the table)
|
// length - the number of points in a total sinus wavelength (the size of the table)
|
||||||
void lin16u_gen(word min, word max, word* lintab, word length) {
|
void lin16u_gen(word min, word max, word* lintab, word length) {
|
||||||
word ampl = max-min;
|
word ampl = max-min;
|
||||||
word stepi = div16u(ampl, length-1);
|
word stepi = divr16u(ampl, length-1, 0);
|
||||||
word stepf = divr16u(0, length-1, rem16u);
|
word stepf = divr16u(0, length-1, rem16u);
|
||||||
dword step = { stepi, stepf };
|
dword step = { stepi, stepf };
|
||||||
dword val = { min, 0 };
|
dword val = { min, 0 };
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
:BasicUpstart(main)
|
:BasicUpstart(main)
|
||||||
.pc = $80d "Program"
|
.pc = $80d "Program"
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
|
.label rem16u = 5
|
||||||
.label char_cursor = 5
|
.label char_cursor = 5
|
||||||
.label line_cursor = 3
|
.label line_cursor = 3
|
||||||
.label rem16u = 5
|
|
||||||
jsr main
|
jsr main
|
||||||
main: {
|
main: {
|
||||||
.label i = 2
|
.label i = 2
|
||||||
@ -153,8 +153,8 @@ print_cls: {
|
|||||||
lin16u_gen: {
|
lin16u_gen: {
|
||||||
.const min = $22d
|
.const min = $22d
|
||||||
.const max = $7461
|
.const max = $7461
|
||||||
.label length = $14
|
.const length = $14
|
||||||
.label ampl = max-min
|
.const ampl = max-min
|
||||||
.label _5 = 7
|
.label _5 = 7
|
||||||
.label stepi = $f
|
.label stepi = $f
|
||||||
.label stepf = $d
|
.label stepf = $d
|
||||||
@ -162,10 +162,21 @@ lin16u_gen: {
|
|||||||
.label val = 9
|
.label val = 9
|
||||||
.label lintab = 3
|
.label lintab = 3
|
||||||
.label i = 5
|
.label i = 5
|
||||||
jsr div16u
|
lda #<length-1
|
||||||
lda div16u.return
|
sta divr16u.divisor
|
||||||
|
lda #>length-1
|
||||||
|
sta divr16u.divisor+1
|
||||||
|
lda #<ampl
|
||||||
|
sta divr16u.dividend
|
||||||
|
lda #>ampl
|
||||||
|
sta divr16u.dividend+1
|
||||||
|
lda #<0
|
||||||
|
sta divr16u.rem
|
||||||
|
sta divr16u.rem+1
|
||||||
|
jsr divr16u
|
||||||
|
lda divr16u.return
|
||||||
sta stepi
|
sta stepi
|
||||||
lda div16u.return+1
|
lda divr16u.return+1
|
||||||
sta stepi+1
|
sta stepi+1
|
||||||
lda #<length-1
|
lda #<length-1
|
||||||
sta divr16u.divisor
|
sta divr16u.divisor
|
||||||
@ -244,10 +255,10 @@ lin16u_gen: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
divr16u: {
|
divr16u: {
|
||||||
.label return = $d
|
|
||||||
.label rem = 5
|
.label rem = 5
|
||||||
.label dividend = 7
|
.label dividend = 7
|
||||||
.label quotient = $d
|
.label quotient = $d
|
||||||
|
.label return = $d
|
||||||
.label divisor = 3
|
.label divisor = 3
|
||||||
ldx #0
|
ldx #0
|
||||||
txa
|
txa
|
||||||
@ -293,20 +304,3 @@ divr16u: {
|
|||||||
bne b1
|
bne b1
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
div16u: {
|
|
||||||
.const divisor = lin16u_gen.length-1
|
|
||||||
.label return = $d
|
|
||||||
lda #<divisor
|
|
||||||
sta divr16u.divisor
|
|
||||||
lda #>divisor
|
|
||||||
sta divr16u.divisor+1
|
|
||||||
lda #<lin16u_gen.ampl
|
|
||||||
sta divr16u.dividend
|
|
||||||
lda #>lin16u_gen.ampl
|
|
||||||
sta divr16u.dividend+1
|
|
||||||
lda #<0
|
|
||||||
sta divr16u.rem
|
|
||||||
sta divr16u.rem+1
|
|
||||||
jsr divr16u
|
|
||||||
rts
|
|
||||||
}
|
|
||||||
|
@ -120,14 +120,14 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
|
|||||||
to:@return
|
to:@return
|
||||||
lin16u_gen: scope:[lin16u_gen] from main
|
lin16u_gen: scope:[lin16u_gen] from main
|
||||||
[56] phi() [ ] ( main:2::lin16u_gen:5 [ ] )
|
[56] phi() [ ] ( main:2::lin16u_gen:5 [ ] )
|
||||||
[57] call div16u param-assignment [ div16u::return#0 rem16u#13 ] ( main:2::lin16u_gen:5 [ div16u::return#0 rem16u#13 ] )
|
[57] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#0 rem16u#1 ] )
|
||||||
[58] (word) div16u::return#2 ← (word) div16u::return#0 [ div16u::return#2 rem16u#13 ] ( main:2::lin16u_gen:5 [ div16u::return#2 rem16u#13 ] )
|
[58] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::lin16u_gen:5 [ divr16u::return#2 rem16u#1 ] )
|
||||||
to:lin16u_gen::@3
|
to:lin16u_gen::@3
|
||||||
lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen
|
lin16u_gen::@3: scope:[lin16u_gen] from lin16u_gen
|
||||||
[59] (word) lin16u_gen::stepi#0 ← (word) div16u::return#2 [ lin16u_gen::stepi#0 rem16u#13 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 rem16u#13 ] )
|
[59] (word) lin16u_gen::stepi#0 ← (word) divr16u::return#2 [ lin16u_gen::stepi#0 rem16u#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 rem16u#1 ] )
|
||||||
[60] (word) divr16u::rem#4 ← (word) rem16u#13 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::rem#4 ] )
|
[60] (word) divr16u::rem#4 ← (word) rem16u#1 [ lin16u_gen::stepi#0 divr16u::rem#4 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::rem#4 ] )
|
||||||
[61] call divr16u param-assignment [ lin16u_gen::stepi#0 divr16u::return#1 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#1 ] )
|
[61] call divr16u param-assignment [ divr16u::return#0 lin16u_gen::stepi#0 ] ( main:2::lin16u_gen:5 [ divr16u::return#0 lin16u_gen::stepi#0 ] )
|
||||||
[62] (word) divr16u::return#3 ← (word) divr16u::return#1 [ lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#3 ] )
|
[62] (word) divr16u::return#3 ← (word) divr16u::return#0 [ lin16u_gen::stepi#0 divr16u::return#3 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 divr16u::return#3 ] )
|
||||||
to:lin16u_gen::@4
|
to:lin16u_gen::@4
|
||||||
lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3
|
lin16u_gen::@4: scope:[lin16u_gen] from lin16u_gen::@3
|
||||||
[63] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] )
|
[63] (word) lin16u_gen::stepf#0 ← (word) divr16u::return#3 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] ( main:2::lin16u_gen:5 [ lin16u_gen::stepi#0 lin16u_gen::stepf#0 ] )
|
||||||
@ -147,54 +147,43 @@ lin16u_gen::@1: scope:[lin16u_gen] from lin16u_gen::@1 lin16u_gen::@4
|
|||||||
lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1
|
lin16u_gen::@return: scope:[lin16u_gen] from lin16u_gen::@1
|
||||||
[72] return [ ] ( main:2::lin16u_gen:5 [ ] )
|
[72] return [ ] ( main:2::lin16u_gen:5 [ ] )
|
||||||
to:@return
|
to:@return
|
||||||
divr16u: scope:[divr16u] from div16u lin16u_gen::@3
|
divr16u: scope:[divr16u] from lin16u_gen lin16u_gen::@3
|
||||||
[73] (word) divr16u::divisor#6 ← phi( div16u/(const word) div16u::divisor#0 lin16u_gen::@3/(const word) lin16u_gen::length#0-(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:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
|
[73] (word) divr16u::divisor#6 ← phi( lin16u_gen/(const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1 lin16u_gen::@3/(const word) lin16u_gen::length#0-(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:57 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
|
||||||
[73] (word) divr16u::dividend#5 ← phi( div16u/(const word) lin16u_gen::ampl#0 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:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
|
[73] (word) divr16u::dividend#5 ← phi( lin16u_gen/(const word) lin16u_gen::ampl#0 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:57 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
|
||||||
[73] (word) divr16u::rem#10 ← phi( div16u/(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:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
|
[73] (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:57 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
|
||||||
to:divr16u::@1
|
to:divr16u::@1
|
||||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||||
[74] (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:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
[74] (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:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||||
[74] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
[74] (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:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||||
[74] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
[74] (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:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||||
[74] (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:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
[74] (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:57 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||||
[75] (word) divr16u::rem#1 ← (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#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
|
[75] (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:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
|
||||||
[76] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 divr16u::$1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 divr16u::$1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 divr16u::$1 ] )
|
[76] (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:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
|
||||||
[77] (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#1 divr16u::$2 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 divr16u::$2 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 divr16u::$2 ] )
|
[77] (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:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
|
||||||
[78] 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#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
|
[78] 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:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
|
||||||
to:divr16u::@4
|
to:divr16u::@4
|
||||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||||
[79] (word) divr16u::rem#2 ← (word) divr16u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#2 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#2 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#2 ] )
|
[79] (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:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
|
||||||
to:divr16u::@2
|
to:divr16u::@2
|
||||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||||
[80] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#1 divr16u::@4/(word) divr16u::rem#2 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
|
[80] (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:57 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
|
||||||
[81] (word) divr16u::dividend#1 ← (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#1 divr16u::rem#6 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 ] )
|
[81] (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:57 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
|
||||||
[82] (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#1 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 divr16u::quotient#1 ] )
|
[82] (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:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
|
||||||
[83] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 divr16u::quotient#1 ] )
|
[83] 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:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
|
||||||
to:divr16u::@5
|
to:divr16u::@5
|
||||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||||
[84] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::rem#6 divr16u::quotient#2 ] )
|
[84] (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:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
|
||||||
[85] (word) divr16u::rem#3 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::quotient#2 divr16u::rem#3 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::quotient#2 divr16u::rem#3 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#1 divr16u::quotient#2 divr16u::rem#3 ] )
|
[85] (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:57 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
|
||||||
to:divr16u::@3
|
to:divr16u::@3
|
||||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||||
[86] (word) divr16u::return#1 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#1 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#1 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::return#1 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#1 ] )
|
[86] (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:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
|
||||||
[86] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#3 ) [ divr16u::return#1 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#1 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::return#1 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#1 ] )
|
[86] (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:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
|
||||||
[87] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#1 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#1 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#1 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#1 divr16u::i#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::return#1 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#1 divr16u::i#1 ] )
|
[87] (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:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
|
||||||
[88] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#1 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#1 divr16u::i#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#1 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#1 divr16u::i#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ divr16u::return#1 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#1 divr16u::i#1 ] )
|
[88] 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:57 [ divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 divr16u::divisor#6 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
|
||||||
to:divr16u::@6
|
to:divr16u::@6
|
||||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||||
[89] (word) rem16u#13 ← (word) divr16u::rem#11 [ rem16u#13 divr16u::return#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 rem16u#13 divr16u::return#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ rem16u#13 divr16u::return#1 ] )
|
[89] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] )
|
||||||
to:divr16u::@return
|
to:divr16u::@return
|
||||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||||
[90] return [ rem16u#13 divr16u::return#1 ] ( main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 rem16u#13 divr16u::return#1 ] main:2::lin16u_gen:5::div16u:57::divr16u:92 [ rem16u#13 divr16u::return#1 ] )
|
[90] return [ divr16u::return#0 rem16u#1 ] ( main:2::lin16u_gen:5::divr16u:57 [ divr16u::return#0 rem16u#1 ] main:2::lin16u_gen:5::divr16u:61 [ lin16u_gen::stepi#0 divr16u::return#0 rem16u#1 ] )
|
||||||
to:@return
|
|
||||||
div16u: scope:[div16u] from lin16u_gen
|
|
||||||
[91] phi() [ ] ( main:2::lin16u_gen:5::div16u:57 [ ] )
|
|
||||||
[92] call divr16u param-assignment [ rem16u#13 divr16u::return#1 ] ( main:2::lin16u_gen:5::div16u:57 [ rem16u#13 divr16u::return#1 ] )
|
|
||||||
[93] (word) divr16u::return#0 ← (word) divr16u::return#1 [ rem16u#13 divr16u::return#0 ] ( main:2::lin16u_gen:5::div16u:57 [ rem16u#13 divr16u::return#0 ] )
|
|
||||||
to:div16u::@2
|
|
||||||
div16u::@2: scope:[div16u] from div16u
|
|
||||||
[94] (word) div16u::return#0 ← (word) divr16u::return#0 [ div16u::return#0 rem16u#13 ] ( main:2::lin16u_gen:5::div16u:57 [ div16u::return#0 rem16u#13 ] )
|
|
||||||
to:div16u::@return
|
|
||||||
div16u::@return: scope:[div16u] from div16u::@2
|
|
||||||
[95] return [ div16u::return#0 rem16u#13 ] ( main:2::lin16u_gen:5::div16u:57 [ div16u::return#0 rem16u#13 ] )
|
|
||||||
to:@return
|
to:@return
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -11,15 +11,6 @@
|
|||||||
(byte*) char_cursor#45 char_cursor zp ZP_WORD:5 5.666666666666667
|
(byte*) char_cursor#45 char_cursor zp ZP_WORD:5 5.666666666666667
|
||||||
(byte*) char_cursor#47 char_cursor zp ZP_WORD:5 11.0
|
(byte*) char_cursor#47 char_cursor zp ZP_WORD:5 11.0
|
||||||
(byte*~) char_cursor#51 char_cursor zp ZP_WORD:5 22.0
|
(byte*~) char_cursor#51 char_cursor zp ZP_WORD:5 22.0
|
||||||
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
|
|
||||||
(label) div16u::@2
|
|
||||||
(label) div16u::@return
|
|
||||||
(word) div16u::dividend
|
|
||||||
(word) div16u::divisor
|
|
||||||
(const word) div16u::divisor#0 divisor = (const word) lin16u_gen::length#0-(byte/signed byte/word/signed word/dword/signed dword) 1
|
|
||||||
(word) div16u::return
|
|
||||||
(word) div16u::return#0 return zp ZP_WORD:13 1.3333333333333333
|
|
||||||
(word) div16u::return#2 return zp ZP_WORD:13 4.0
|
|
||||||
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
||||||
(byte~) divr16u::$1 reg byte a 22.0
|
(byte~) divr16u::$1 reg byte a 22.0
|
||||||
(byte~) divr16u::$2 reg byte a 22.0
|
(byte~) divr16u::$2 reg byte a 22.0
|
||||||
@ -31,7 +22,7 @@
|
|||||||
(label) divr16u::@6
|
(label) divr16u::@6
|
||||||
(label) divr16u::@return
|
(label) divr16u::@return
|
||||||
(word) divr16u::dividend
|
(word) divr16u::dividend
|
||||||
(word) divr16u::dividend#1 dividend zp ZP_WORD:7 2.75
|
(word) divr16u::dividend#0 dividend zp ZP_WORD:7 2.75
|
||||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:7 5.0
|
(word) divr16u::dividend#3 dividend zp ZP_WORD:7 5.0
|
||||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:7 2.0
|
(word) divr16u::dividend#5 dividend zp ZP_WORD:7 2.0
|
||||||
(word) divr16u::divisor
|
(word) divr16u::divisor
|
||||||
@ -44,17 +35,17 @@
|
|||||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:13 11.0
|
(word) divr16u::quotient#2 quotient zp ZP_WORD:13 11.0
|
||||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:13 2.75
|
(word) divr16u::quotient#3 quotient zp ZP_WORD:13 2.75
|
||||||
(word) divr16u::rem
|
(word) divr16u::rem
|
||||||
(word) divr16u::rem#1 rem zp ZP_WORD:5 8.25
|
(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 4.0
|
(word) divr16u::rem#10 rem zp ZP_WORD:5 4.0
|
||||||
(word) divr16u::rem#11 rem zp ZP_WORD:5 11.666666666666666
|
(word) divr16u::rem#11 rem zp ZP_WORD:5 11.666666666666666
|
||||||
(word) divr16u::rem#2 rem zp ZP_WORD:5 22.0
|
(word) divr16u::rem#2 rem zp ZP_WORD:5 22.0
|
||||||
(word) divr16u::rem#3 rem zp ZP_WORD:5 22.0
|
|
||||||
(word) divr16u::rem#4 rem zp ZP_WORD:5 4.0
|
(word) divr16u::rem#4 rem zp ZP_WORD:5 4.0
|
||||||
(word) divr16u::rem#5 rem zp ZP_WORD:5 24.0
|
(word) divr16u::rem#5 rem zp ZP_WORD:5 24.0
|
||||||
(word) divr16u::rem#6 rem zp ZP_WORD:5 11.0
|
(word) divr16u::rem#6 rem zp ZP_WORD:5 11.0
|
||||||
(word) divr16u::return
|
(word) divr16u::return
|
||||||
(word) divr16u::return#0 return zp ZP_WORD:13 4.0
|
(word) divr16u::return#0 return zp ZP_WORD:13 5.285714285714286
|
||||||
(word) divr16u::return#1 return zp ZP_WORD:13 5.285714285714286
|
(word) divr16u::return#2 return zp ZP_WORD:13 4.0
|
||||||
(word) divr16u::return#3 return zp ZP_WORD:13 4.0
|
(word) divr16u::return#3 return zp ZP_WORD:13 4.0
|
||||||
(void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length)
|
(void()) lin16u_gen((word) lin16u_gen::min , (word) lin16u_gen::max , (word*) lin16u_gen::lintab , (word) lin16u_gen::length)
|
||||||
(word~) lin16u_gen::$5 $5 zp ZP_WORD:7 22.0
|
(word~) lin16u_gen::$5 $5 zp ZP_WORD:7 22.0
|
||||||
@ -144,16 +135,16 @@
|
|||||||
(word) print_word::w
|
(word) print_word::w
|
||||||
(word) print_word::w#0 w zp ZP_WORD:7 5.0
|
(word) print_word::w#0 w zp ZP_WORD:7 5.0
|
||||||
(word) rem16u
|
(word) rem16u
|
||||||
(word) rem16u#13 rem16u zp ZP_WORD:5 0.4444444444444444
|
(word) rem16u#1 rem16u zp ZP_WORD:5 0.8
|
||||||
|
|
||||||
zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
|
||||||
zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::lintab#2 lin16u_gen::lintab#1 divr16u::divisor#6 ]
|
zp ZP_WORD:3 [ line_cursor#9 line_cursor#19 line_cursor#1 print_cls::sc#2 print_cls::sc#1 lin16u_gen::lintab#2 lin16u_gen::lintab#1 divr16u::divisor#6 ]
|
||||||
reg byte x [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
reg byte x [ print_byte::b#3 print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
||||||
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
||||||
zp ZP_WORD:5 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 lin16u_gen::i#2 lin16u_gen::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#1 divr16u::rem#2 divr16u::rem#3 rem16u#13 ]
|
zp ZP_WORD:5 [ char_cursor#32 char_cursor#45 char_cursor#47 char_cursor#51 char_cursor#2 char_cursor#11 char_cursor#1 lin16u_gen::i#2 lin16u_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:7 [ print_str::str#2 print_str::str#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 print_word::w#0 lin16u_gen::$5 ]
|
zp ZP_WORD:7 [ print_str::str#2 print_str::str#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 print_word::w#0 lin16u_gen::$5 ]
|
||||||
zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 ]
|
zp ZP_DWORD:9 [ lin16u_gen::val#2 lin16u_gen::val#1 ]
|
||||||
zp ZP_WORD:13 [ divr16u::quotient#3 divr16u::return#1 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#3 lin16u_gen::stepf#0 divr16u::return#0 div16u::return#0 div16u::return#2 ]
|
zp ZP_WORD:13 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 lin16u_gen::stepf#0 ]
|
||||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||||
reg byte a [ print_byte::$0 ]
|
reg byte a [ print_byte::$0 ]
|
||||||
reg byte a [ print_byte::$2 ]
|
reg byte a [ print_byte::$2 ]
|
||||||
|
Loading…
Reference in New Issue
Block a user