mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-02-17 10:30:43 +00:00
Fixing tests with word arrays/pointers. Preparing for #139
This commit is contained in:
parent
eb26618295
commit
4f04aa47b7
@ -10,14 +10,16 @@ import dk.camelot64.kickc.model.statements.Statement;
|
||||
import dk.camelot64.kickc.model.statements.StatementAssignment;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.symbols.VariableIntermediate;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeInference;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.model.values.ConstantRef;
|
||||
import dk.camelot64.kickc.model.values.PointerDereferenceIndexed;
|
||||
import dk.camelot64.kickc.model.values.RValue;
|
||||
import dk.camelot64.kickc.model.values.VariableRef;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Fixes pointer math to use sizeof(type)
|
||||
@ -61,7 +63,7 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
VariableRef idx2VarRef = handled.getOrDefault(currentStmt, new LinkedHashMap<>()).get(deref.getIndex());
|
||||
if(idx2VarRef==null) {
|
||||
VariableIntermediate idx2Var = getScope().getScope(currentBlock.getScope()).addVariableIntermediate();
|
||||
idx2Var.setType(SymbolType.BYTE);
|
||||
idx2Var.setType(SymbolTypeInference.inferType(getScope(), deref.getIndex()));
|
||||
ConstantRef sizeOfTargetType = OperatorSizeOf.getSizeOfConstantVar(getProgram().getScope(), pointerType.getElementType());
|
||||
StatementAssignment idx2 = new StatementAssignment(idx2Var.getRef(), deref.getIndex(), Operators.MULTIPLY, sizeOfTargetType, currentStmt.getSource(), Comment.NO_COMMENTS);
|
||||
stmtIt.previous();
|
||||
@ -97,7 +99,7 @@ public class Pass1PointerSizeofFix extends Pass1Base {
|
||||
// Adding to a pointer - multiply by sizeof()
|
||||
getLog().append("Fixing pointer addition " + assignment.toString(getProgram(), false));
|
||||
VariableIntermediate tmpVar = getScope().getScope(block.getScope()).addVariableIntermediate();
|
||||
tmpVar.setType(SymbolType.BYTE);
|
||||
tmpVar.setType(SymbolTypeInference.inferType(getScope(), assignment.getrValue2()));
|
||||
stmtIt.remove();
|
||||
ConstantRef sizeOfTargetType = OperatorSizeOf.getSizeOfConstantVar(getProgram().getScope(), pointerType.getElementType());
|
||||
stmtIt.add(new StatementAssignment(tmpVar.getRef(), assignment.getrValue2(), Operators.MULTIPLY, sizeOfTargetType, assignment.getSource(), Comment.NO_COMMENTS));
|
||||
|
@ -30,8 +30,7 @@ void sin16s_gen(signed word* sintab, word wavelength) {
|
||||
// Iterate over the table
|
||||
dword x = 0; // u[4.28]
|
||||
for( word i=0; i<wavelength; i++) {
|
||||
*sintab = sin16s(x);
|
||||
sintab = sintab + 2;
|
||||
*sintab++ = sin16s(x);
|
||||
x = x + step;
|
||||
}
|
||||
}
|
||||
@ -47,8 +46,7 @@ void sin16s_gen2(signed word* sintab, word wavelength, signed word min, signed w
|
||||
// Iterate over the table
|
||||
dword x = 0; // u[4.28]
|
||||
for( word i=0; i<wavelength; i++) {
|
||||
*sintab = offs + (signed word)>mul16s(sin16s(x), ampl); // The signed sin() has values [-7fff;7fff] = [-1/2 ; 1/2], so ampl*sin has the right amplitude
|
||||
sintab = sintab + 2;
|
||||
*sintab++ = offs + (signed word)>mul16s(sin16s(x), ampl); // The signed sin() has values [-7fff;7fff] = [-1/2 ; 1/2], so ampl*sin has the right amplitude
|
||||
x = x + step;
|
||||
}
|
||||
}
|
||||
|
@ -41,8 +41,7 @@ void loop() {
|
||||
(*BORDERCOL)++;
|
||||
signed word xpos = *(xsin+xsin_idx);
|
||||
render_logo(xpos);
|
||||
xsin_idx += 2;
|
||||
if(xsin_idx==XSIN_SIZE*2) {
|
||||
if(++xsin_idx==XSIN_SIZE) {
|
||||
xsin_idx = 0;
|
||||
}
|
||||
(*BORDERCOL)--;
|
||||
|
@ -7,14 +7,13 @@ signed word[] words = {-$6000, -$600, -$60, -6, 0, 6, $60, $600, $6000};
|
||||
void main() {
|
||||
|
||||
for(byte i: 0..8) {
|
||||
byte idx = i*2;
|
||||
sub(idx, $80);
|
||||
sub(idx, $40);
|
||||
sub(idx, $40);
|
||||
sub(i, $80);
|
||||
sub(i, $40);
|
||||
sub(i, $40);
|
||||
}
|
||||
print_cls();
|
||||
for(byte j: 0..8) {
|
||||
print_sword(words[j*2]);
|
||||
print_sword(words[j]);
|
||||
print_ln();
|
||||
}
|
||||
|
||||
|
@ -15,8 +15,7 @@ void sin16s_genb(signed word* sintab, word wavelength) {
|
||||
// Iterate over the table
|
||||
dword x = 0; // u[4.28]
|
||||
for( word i=0; i<wavelength; i++) {
|
||||
*sintab = sin16sb(>x);
|
||||
sintab = sintab + 2;
|
||||
*sintab++ = sin16sb(>x);
|
||||
x = x + step;
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ void main() {
|
||||
}
|
||||
print_sword(sw);
|
||||
print_str(" ");
|
||||
st1 = st1+2;
|
||||
st2 = st2+2;
|
||||
st1++;
|
||||
st2++;
|
||||
}
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ void test_8u() {
|
||||
void test_16u() {
|
||||
word[] dividends = { $ffff, $ffff, $ffff, $ffff, $ffff, $ffff};
|
||||
word[] divisors = { 5, 7, 11, 13, 17, 19 };
|
||||
for( byte i=0;i!=12;i=i+2) {
|
||||
for( byte i : 0..5) {
|
||||
word dividend = dividends[i];
|
||||
word divisor = divisors[i];
|
||||
word res = div16u(dividend, divisor);
|
||||
@ -68,7 +68,7 @@ void test_8s() {
|
||||
void test_16s() {
|
||||
signed word[] dividends = { $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff};
|
||||
signed word[] divisors = { 5, -7, 11, -13, -17, 19 };
|
||||
for( byte i=0;i!=12;i=i+2) {
|
||||
for( byte i: 0..5) {
|
||||
signed word dividend = dividends[i];
|
||||
signed word divisor = divisors[i];
|
||||
signed word res = div16s(dividend, divisor);
|
||||
|
@ -1,6 +1,7 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
.label RASTER = $d012
|
||||
.label BORDERCOL = $d020
|
||||
.label BGCOL = $d021
|
||||
@ -65,6 +66,7 @@ main: {
|
||||
}
|
||||
loop: {
|
||||
.label _1 = 9
|
||||
.label _5 = 9
|
||||
.label xpos = 9
|
||||
lda #0
|
||||
sta xsin_idx
|
||||
@ -77,10 +79,16 @@ loop: {
|
||||
bne b2
|
||||
inc BORDERCOL
|
||||
lda xsin_idx
|
||||
asl
|
||||
sta _5
|
||||
lda xsin_idx+1
|
||||
rol
|
||||
sta _5+1
|
||||
clc
|
||||
lda _1
|
||||
adc #<xsin
|
||||
sta _1
|
||||
lda xsin_idx+1
|
||||
lda _1+1
|
||||
adc #>xsin
|
||||
sta _1+1
|
||||
ldy #0
|
||||
@ -91,18 +99,15 @@ loop: {
|
||||
stx xpos
|
||||
sta xpos+1
|
||||
jsr render_logo
|
||||
lda xsin_idx
|
||||
clc
|
||||
adc #2
|
||||
sta xsin_idx
|
||||
bcc !+
|
||||
inc xsin_idx
|
||||
bne !+
|
||||
inc xsin_idx+1
|
||||
!:
|
||||
lda xsin_idx+1
|
||||
cmp #>XSIN_SIZE*2
|
||||
cmp #>XSIN_SIZE
|
||||
bne b4
|
||||
lda xsin_idx
|
||||
cmp #<XSIN_SIZE*2
|
||||
cmp #<XSIN_SIZE
|
||||
bne b4
|
||||
lda #0
|
||||
sta xsin_idx
|
||||
@ -288,9 +293,9 @@ sin16s_gen2: {
|
||||
iny
|
||||
lda _8+1
|
||||
sta (sintab),y
|
||||
lda sintab
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
|
@ -62,389 +62,390 @@ loop::@2: scope:[loop] from loop::@1 loop::@2
|
||||
to:loop::@3
|
||||
loop::@3: scope:[loop] from loop::@2
|
||||
[28] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0)
|
||||
[29] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#11
|
||||
[30] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1)
|
||||
[31] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0
|
||||
[32] call render_logo
|
||||
[29] (word) loop::$5 ← (word) xsin_idx#11 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[30] (signed word*~) loop::$1 ← (const signed word[XSIN_SIZE#0]) xsin#0 + (word) loop::$5
|
||||
[31] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1)
|
||||
[32] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0
|
||||
[33] call render_logo
|
||||
to:loop::@5
|
||||
loop::@5: scope:[loop] from loop::@3
|
||||
[33] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[34] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@6
|
||||
[34] (word) xsin_idx#3 ← ++ (word) xsin_idx#11
|
||||
[35] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0) goto loop::@6
|
||||
to:loop::@4
|
||||
loop::@4: scope:[loop] from loop::@5 loop::@6
|
||||
[35] (word) xsin_idx#19 ← phi( loop::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@6/(word) xsin_idx#3 )
|
||||
[36] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0)
|
||||
[36] (word) xsin_idx#19 ← phi( loop::@5/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@6/(word) xsin_idx#3 )
|
||||
[37] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0)
|
||||
to:loop::@1
|
||||
loop::@6: scope:[loop] from loop::@5
|
||||
[37] phi()
|
||||
[38] phi()
|
||||
to:loop::@4
|
||||
render_logo: scope:[render_logo] from loop::@3
|
||||
[38] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0
|
||||
[39] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[40] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1
|
||||
[41] *((const byte*) D016#0) ← (byte~) render_logo::$2
|
||||
[42] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[43] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3
|
||||
[44] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1
|
||||
[39] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0
|
||||
[40] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[41] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1
|
||||
[42] *((const byte*) D016#0) ← (byte~) render_logo::$2
|
||||
[43] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[44] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3
|
||||
[45] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1
|
||||
to:render_logo::@2
|
||||
render_logo::@2: scope:[render_logo] from render_logo render_logo::@4
|
||||
[45] (byte) render_logo::screen_idx#18 ← phi( render_logo/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@4/(byte) render_logo::screen_idx#3 )
|
||||
[46] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3
|
||||
[46] (byte) render_logo::screen_idx#18 ← phi( render_logo/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@4/(byte) render_logo::screen_idx#3 )
|
||||
[47] if((byte) render_logo::screen_idx#18!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3
|
||||
to:render_logo::@5
|
||||
render_logo::@5: scope:[render_logo] from render_logo::@2 render_logo::@7
|
||||
[47] (byte) render_logo::logo_idx#10 ← phi( render_logo::@7/(byte) render_logo::logo_idx#3 render_logo::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[47] (byte) render_logo::screen_idx#10 ← phi( render_logo::@7/(byte) render_logo::screen_idx#4 render_logo::@2/(byte) render_logo::screen_idx#18 )
|
||||
[48] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6
|
||||
[48] (byte) render_logo::logo_idx#10 ← phi( render_logo::@7/(byte) render_logo::logo_idx#3 render_logo::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[48] (byte) render_logo::screen_idx#10 ← phi( render_logo::@7/(byte) render_logo::screen_idx#4 render_logo::@2/(byte) render_logo::screen_idx#18 )
|
||||
[49] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@6
|
||||
to:render_logo::@return
|
||||
render_logo::@return: scope:[render_logo] from render_logo::@11 render_logo::@5
|
||||
[49] return
|
||||
[50] return
|
||||
to:@return
|
||||
render_logo::@6: scope:[render_logo] from render_logo::@5
|
||||
[50] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10
|
||||
[51] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#10
|
||||
to:render_logo::@15_1
|
||||
render_logo::@15_1: scope:[render_logo] from render_logo::@6
|
||||
[51] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[52] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34
|
||||
[52] (byte/signed word/word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$34
|
||||
to:render_logo::@15_2
|
||||
render_logo::@15_2: scope:[render_logo] from render_logo::@15_1
|
||||
[53] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[54] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38
|
||||
[54] (byte/signed word/word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$38
|
||||
to:render_logo::@15_3
|
||||
render_logo::@15_3: scope:[render_logo] from render_logo::@15_2
|
||||
[55] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[56] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42
|
||||
[56] (byte/signed word/word/dword/signed dword~) render_logo::$42 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$42
|
||||
to:render_logo::@15_4
|
||||
render_logo::@15_4: scope:[render_logo] from render_logo::@15_3
|
||||
[57] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[58] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46
|
||||
[58] (byte/signed word/word/dword/signed dword~) render_logo::$46 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$46
|
||||
to:render_logo::@15_5
|
||||
render_logo::@15_5: scope:[render_logo] from render_logo::@15_4
|
||||
[59] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
[60] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50
|
||||
[60] (byte/signed word/word/dword/signed dword~) render_logo::$50 ← (byte) render_logo::logo_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
[61] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/signed word/word/dword/signed dword~) render_logo::$50
|
||||
to:render_logo::@7
|
||||
render_logo::@7: scope:[render_logo] from render_logo::@15_5
|
||||
[61] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10
|
||||
[62] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10
|
||||
[62] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10
|
||||
[63] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#10
|
||||
to:render_logo::@5
|
||||
render_logo::@3: scope:[render_logo] from render_logo::@2
|
||||
[63] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[64] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@7_1
|
||||
render_logo::@7_1: scope:[render_logo] from render_logo::@3
|
||||
[64] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@7_2
|
||||
render_logo::@7_2: scope:[render_logo] from render_logo::@7_1
|
||||
[65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@7_3
|
||||
render_logo::@7_3: scope:[render_logo] from render_logo::@7_2
|
||||
[66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@7_4
|
||||
render_logo::@7_4: scope:[render_logo] from render_logo::@7_3
|
||||
[67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@7_5
|
||||
render_logo::@7_5: scope:[render_logo] from render_logo::@7_4
|
||||
[68] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[69] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#18) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@4
|
||||
render_logo::@4: scope:[render_logo] from render_logo::@7_5
|
||||
[69] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18
|
||||
[70] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#18
|
||||
to:render_logo::@2
|
||||
render_logo::@1: scope:[render_logo] from render_logo
|
||||
[70] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0
|
||||
[71] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17
|
||||
[71] (signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#0
|
||||
[72] (byte~) render_logo::logo_idx#14 ← (byte)(signed byte~) render_logo::$17
|
||||
to:render_logo::@8
|
||||
render_logo::@8: scope:[render_logo] from render_logo::@1 render_logo::@10
|
||||
[72] (byte) render_logo::screen_idx#21 ← phi( render_logo::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@10/(byte) render_logo::screen_idx#5 )
|
||||
[72] (byte) render_logo::logo_idx#11 ← phi( render_logo::@1/(byte~) render_logo::logo_idx#14 render_logo::@10/(byte) render_logo::logo_idx#4 )
|
||||
[73] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9
|
||||
[73] (byte) render_logo::screen_idx#21 ← phi( render_logo::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@10/(byte) render_logo::screen_idx#5 )
|
||||
[73] (byte) render_logo::logo_idx#11 ← phi( render_logo::@1/(byte~) render_logo::logo_idx#14 render_logo::@10/(byte) render_logo::logo_idx#4 )
|
||||
[74] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@9
|
||||
to:render_logo::@11
|
||||
render_logo::@11: scope:[render_logo] from render_logo::@13 render_logo::@8
|
||||
[74] (byte) render_logo::screen_idx#15 ← phi( render_logo::@8/(byte) render_logo::screen_idx#21 render_logo::@13/(byte) render_logo::screen_idx#6 )
|
||||
[75] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12
|
||||
[75] (byte) render_logo::screen_idx#15 ← phi( render_logo::@8/(byte) render_logo::screen_idx#21 render_logo::@13/(byte) render_logo::screen_idx#6 )
|
||||
[76] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12
|
||||
to:render_logo::@return
|
||||
render_logo::@12: scope:[render_logo] from render_logo::@11
|
||||
[76] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[77] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@32_1
|
||||
render_logo::@32_1: scope:[render_logo] from render_logo::@12
|
||||
[77] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@32_2
|
||||
render_logo::@32_2: scope:[render_logo] from render_logo::@32_1
|
||||
[78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@32_3
|
||||
render_logo::@32_3: scope:[render_logo] from render_logo::@32_2
|
||||
[79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@32_4
|
||||
render_logo::@32_4: scope:[render_logo] from render_logo::@32_3
|
||||
[80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@32_5
|
||||
render_logo::@32_5: scope:[render_logo] from render_logo::@32_4
|
||||
[81] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[82] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#15) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@13
|
||||
render_logo::@13: scope:[render_logo] from render_logo::@32_5
|
||||
[82] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15
|
||||
[83] (byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#15
|
||||
to:render_logo::@11
|
||||
render_logo::@9: scope:[render_logo] from render_logo::@8
|
||||
[83] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11
|
||||
[84] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#21) ← (byte) render_logo::logo_idx#11
|
||||
to:render_logo::@24_1
|
||||
render_logo::@24_1: scope:[render_logo] from render_logo::@9
|
||||
[84] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[85] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80
|
||||
[85] (byte/signed word/word/dword/signed dword~) render_logo::$80 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[86] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$80
|
||||
to:render_logo::@24_2
|
||||
render_logo::@24_2: scope:[render_logo] from render_logo::@24_1
|
||||
[86] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[87] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84
|
||||
[87] (byte/signed word/word/dword/signed dword~) render_logo::$84 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[88] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$84
|
||||
to:render_logo::@24_3
|
||||
render_logo::@24_3: scope:[render_logo] from render_logo::@24_2
|
||||
[88] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[89] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88
|
||||
[89] (byte/signed word/word/dword/signed dword~) render_logo::$88 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[90] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$88
|
||||
to:render_logo::@24_4
|
||||
render_logo::@24_4: scope:[render_logo] from render_logo::@24_3
|
||||
[90] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[91] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92
|
||||
[91] (byte/signed word/word/dword/signed dword~) render_logo::$92 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[92] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$92
|
||||
to:render_logo::@24_5
|
||||
render_logo::@24_5: scope:[render_logo] from render_logo::@24_4
|
||||
[92] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
[93] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96
|
||||
[93] (byte/signed word/word/dword/signed dword~) render_logo::$96 ← (byte) render_logo::logo_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
[94] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#21) ← (byte/signed word/word/dword/signed dword~) render_logo::$96
|
||||
to:render_logo::@10
|
||||
render_logo::@10: scope:[render_logo] from render_logo::@24_5
|
||||
[94] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21
|
||||
[95] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11
|
||||
[95] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#21
|
||||
[96] (byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#11
|
||||
to:render_logo::@8
|
||||
sin16s_gen2: scope:[sin16s_gen2] from main::@2
|
||||
[96] phi()
|
||||
[97] call div32u16u
|
||||
[98] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
|
||||
[97] phi()
|
||||
[98] call div32u16u
|
||||
[99] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
|
||||
to:sin16s_gen2::@2
|
||||
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2
|
||||
[99] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
|
||||
[100] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2
|
||||
to:sin16s_gen2::@1
|
||||
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@2 sin16s_gen2::@4
|
||||
[100] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 )
|
||||
[100] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[XSIN_SIZE#0]) xsin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 )
|
||||
[100] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 )
|
||||
[101] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
|
||||
[102] call sin16s
|
||||
[103] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
|
||||
[101] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(word) sin16s_gen2::i#1 )
|
||||
[101] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@2/(const signed word[XSIN_SIZE#0]) xsin#0 sin16s_gen2::@4/(signed word*) sin16s_gen2::sintab#0 )
|
||||
[101] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@4/(dword) sin16s_gen2::x#1 )
|
||||
[102] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2
|
||||
[103] call sin16s
|
||||
[104] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
|
||||
to:sin16s_gen2::@3
|
||||
sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2::@1
|
||||
[104] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
|
||||
[105] call mul16s
|
||||
[106] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
|
||||
[105] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0
|
||||
[106] call mul16s
|
||||
[107] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0
|
||||
to:sin16s_gen2::@4
|
||||
sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@3
|
||||
[107] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2
|
||||
[108] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
|
||||
[109] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6
|
||||
[110] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8
|
||||
[111] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[112] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
|
||||
[113] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
|
||||
[114] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1
|
||||
[108] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2
|
||||
[109] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
|
||||
[110] (signed word~) sin16s_gen2::$8 ← (signed word)(word~) sin16s_gen2::$6
|
||||
[111] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8
|
||||
[112] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[113] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0
|
||||
[114] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2
|
||||
[115] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1
|
||||
to:sin16s_gen2::@return
|
||||
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@4
|
||||
[115] return
|
||||
[116] return
|
||||
to:@return
|
||||
mul16s: scope:[mul16s] from sin16s_gen2::@3
|
||||
[116] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0
|
||||
[117] call mul16u
|
||||
[118] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
||||
[117] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0
|
||||
[118] call mul16u
|
||||
[119] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
||||
to:mul16s::@4
|
||||
mul16s::@4: scope:[mul16s] from mul16s
|
||||
[119] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
||||
[120] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1
|
||||
[120] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
||||
[121] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1
|
||||
to:mul16s::@3
|
||||
mul16s::@3: scope:[mul16s] from mul16s::@4
|
||||
[121] (word~) mul16s::$9 ← > (dword) mul16s::m#0
|
||||
[122] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[123] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
[122] (word~) mul16s::$9 ← > (dword) mul16s::m#0
|
||||
[123] (word~) mul16s::$16 ← (word~) mul16s::$9 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[124] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
to:mul16s::@1
|
||||
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@4
|
||||
[124] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 )
|
||||
[125] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@4/(dword) mul16s::m#0 )
|
||||
to:mul16s::@2
|
||||
mul16s::@2: scope:[mul16s] from mul16s::@1
|
||||
[125] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
[126] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
to:mul16s::@return
|
||||
mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
[126] return
|
||||
[127] return
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
||||
[127] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[127] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[128] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
[128] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[128] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[129] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@3
|
||||
[129] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
|
||||
[129] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@3/(dword) mul16u::res#6 )
|
||||
[129] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
|
||||
[130] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
[130] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@3/(dword) mul16u::mb#1 )
|
||||
[130] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@3/(dword) mul16u::res#6 )
|
||||
[130] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@3/(word) mul16u::a#0 )
|
||||
[131] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[131] return
|
||||
[132] return
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[132] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[133] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3
|
||||
[133] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[134] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@3
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2
|
||||
[134] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
[135] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
to:mul16u::@3
|
||||
mul16u::@3: scope:[mul16u] from mul16u::@2 mul16u::@4
|
||||
[135] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
|
||||
[136] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[137] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[136] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@4/(dword) mul16u::res#1 )
|
||||
[137] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[138] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:mul16u::@1
|
||||
sin16s: scope:[sin16s] from sin16s_gen2::@1
|
||||
[138] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
[139] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
to:sin16s::@4
|
||||
sin16s::@4: scope:[sin16s] from sin16s
|
||||
[139] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
[140] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
to:sin16s::@1
|
||||
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
||||
[140] (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 )
|
||||
[140] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[141] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
[141] (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 )
|
||||
[141] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[142] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
to:sin16s::@5
|
||||
sin16s::@5: scope:[sin16s] from sin16s::@1
|
||||
[142] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
[143] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
to:sin16s::@2
|
||||
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
||||
[143] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[144] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[145] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
|
||||
[146] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[147] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[148] call mulu16_sel
|
||||
[149] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
[144] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[145] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[146] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
|
||||
[147] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[148] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[149] call mulu16_sel
|
||||
[150] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@7
|
||||
sin16s::@7: scope:[sin16s] from sin16s::@2
|
||||
[150] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[151] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[152] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[153] call mulu16_sel
|
||||
[154] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
[151] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[152] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[153] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[154] call mulu16_sel
|
||||
[155] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@8
|
||||
sin16s::@8: scope:[sin16s] from sin16s::@7
|
||||
[155] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[156] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[157] call mulu16_sel
|
||||
[158] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
[156] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[157] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[158] call mulu16_sel
|
||||
[159] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@9
|
||||
sin16s::@9: scope:[sin16s] from sin16s::@8
|
||||
[159] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[160] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[161] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[162] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[163] call mulu16_sel
|
||||
[164] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
[160] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[161] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[162] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[163] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[164] call mulu16_sel
|
||||
[165] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@10
|
||||
sin16s::@10: scope:[sin16s] from sin16s::@9
|
||||
[165] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[166] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[167] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[168] call mulu16_sel
|
||||
[169] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
[166] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[167] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[168] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[169] call mulu16_sel
|
||||
[170] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@11
|
||||
sin16s::@11: scope:[sin16s] from sin16s::@10
|
||||
[170] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[171] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[172] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[173] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12
|
||||
[171] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[172] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[173] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[174] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@12
|
||||
to:sin16s::@6
|
||||
sin16s::@6: scope:[sin16s] from sin16s::@11
|
||||
[174] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
[175] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
sin16s::@3: scope:[sin16s] from sin16s::@12 sin16s::@6
|
||||
[175] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
[176] (signed word) sin16s::return#1 ← phi( sin16s::@12/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
to:sin16s::@return
|
||||
sin16s::@return: scope:[sin16s] from sin16s::@3
|
||||
[176] return
|
||||
[177] return
|
||||
to:@return
|
||||
sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
[177] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
[178] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@2 sin16s::@7 sin16s::@8 sin16s::@9
|
||||
[178] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[178] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[178] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
|
||||
[179] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[180] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[181] call mul16u
|
||||
[182] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
[179] (byte) mulu16_sel::select#5 ← phi( sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[179] (word) mulu16_sel::v2#5 ← phi( sin16s::@9/(word) mulu16_sel::v2#3 sin16s::@10/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@7/(word) mulu16_sel::v2#1 sin16s::@8/(dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[179] (word) mulu16_sel::v1#5 ← phi( sin16s::@9/(word) mulu16_sel::v1#3 sin16s::@10/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@7/(word) mulu16_sel::v1#1 sin16s::@8/(word) mulu16_sel::v1#2 )
|
||||
[180] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[181] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[182] call mul16u
|
||||
[183] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
to:mulu16_sel::@1
|
||||
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel
|
||||
[183] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[184] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[185] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
[184] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[185] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[186] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
to:mulu16_sel::@return
|
||||
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@1
|
||||
[186] return
|
||||
[187] return
|
||||
to:@return
|
||||
div32u16u: scope:[div32u16u] from sin16s_gen2
|
||||
[187] phi()
|
||||
[188] call divr16u
|
||||
[189] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
[188] phi()
|
||||
[189] call divr16u
|
||||
[190] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div32u16u::@1
|
||||
div32u16u::@1: scope:[div32u16u] from div32u16u
|
||||
[190] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[191] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[192] call divr16u
|
||||
[193] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
[191] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[192] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[193] call divr16u
|
||||
[194] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
to:div32u16u::@2
|
||||
div32u16u::@2: scope:[div32u16u] from div32u16u::@1
|
||||
[194] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[195] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
[195] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[196] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
to:div32u16u::@return
|
||||
div32u16u::@return: scope:[div32u16u] from div32u16u::@2
|
||||
[196] return
|
||||
[197] return
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div32u16u div32u16u::@1
|
||||
[197] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
|
||||
[197] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@1/(word) divr16u::rem#4 )
|
||||
[198] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@1/<(const dword) PI2_u4f28#0 )
|
||||
[198] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@1/(word) divr16u::rem#4 )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[198] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[198] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[198] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[198] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[199] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[200] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[201] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80
|
||||
[202] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
[199] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[199] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[199] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[199] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[200] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[201] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[202] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80
|
||||
[203] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[203] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[204] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[204] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[205] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[206] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[207] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3
|
||||
[205] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[206] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[207] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[208] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[208] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[209] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0
|
||||
[209] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[210] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[210] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[210] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[211] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[212] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1
|
||||
[211] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[211] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[212] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[213] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[213] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
[214] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[214] return
|
||||
[215] return
|
||||
to:@return
|
||||
fill: scope:[fill] from main::@3 main::@4
|
||||
[215] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 )
|
||||
[215] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 )
|
||||
[216] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8
|
||||
[216] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 )
|
||||
[216] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 )
|
||||
[217] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) $3e8
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
[217] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[218] *((byte*) fill::addr#2) ← (byte) fill::val#3
|
||||
[219] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[220] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
[218] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[219] *((byte*) fill::addr#2) ← (byte) fill::val#3
|
||||
[220] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[221] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
[221] return
|
||||
[222] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -32,6 +32,7 @@
|
||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) $d012
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(const byte) SIZEOF_SIGNED_WORD SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) VIC_MCM
|
||||
(const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
(byte) WHITE
|
||||
@ -102,6 +103,7 @@
|
||||
(byte) fill::val#3 reg byte x 1.8333333333333333
|
||||
(void()) loop()
|
||||
(signed word*~) loop::$1 $1 zp ZP_WORD:9 22.0
|
||||
(word) loop::$5 $5 zp ZP_WORD:9 22.0
|
||||
(label) loop::@1
|
||||
(label) loop::@2
|
||||
(label) loop::@3
|
||||
@ -356,7 +358,7 @@
|
||||
(signed word[XSIN_SIZE#0]) xsin
|
||||
(const signed word[XSIN_SIZE#0]) xsin#0 xsin = { fill( XSIN_SIZE#0, 0) }
|
||||
(word) xsin_idx
|
||||
(word) xsin_idx#11 xsin_idx zp ZP_WORD:2 4.714285714285714
|
||||
(word) xsin_idx#11 xsin_idx zp ZP_WORD:2 4.125
|
||||
(word) xsin_idx#19 xsin_idx zp ZP_WORD:2 11.0
|
||||
(word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0
|
||||
|
||||
@ -366,7 +368,7 @@ reg byte y [ render_logo::screen_idx#10 render_logo::screen_idx#4 render_logo::s
|
||||
zp ZP_BYTE:4 [ render_logo::logo_idx#10 render_logo::logo_idx#3 render_logo::logo_idx#11 render_logo::logo_idx#14 render_logo::logo_idx#4 sin16s::isUpper#2 render_logo::x_char#0 ]
|
||||
reg byte y [ render_logo::screen_idx#15 render_logo::screen_idx#21 render_logo::screen_idx#5 render_logo::screen_idx#6 ]
|
||||
zp ZP_DWORD:5 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
|
||||
zp ZP_WORD:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$1 loop::xpos#0 render_logo::xpos#0 fill::end#0 ]
|
||||
zp ZP_WORD:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 loop::$5 loop::$1 loop::xpos#0 render_logo::xpos#0 fill::end#0 ]
|
||||
zp ZP_DWORD:11 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 mul16u::return#2 mul16s::return#0 mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#3 mul16s::return#2 sin16s_gen2::$5 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$4 ]
|
||||
zp ZP_WORD:15 [ mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 render_logo::$3 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$9 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
zp ZP_WORD:17 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 div32u16u::quotient_hi#0 ]
|
||||
|
@ -2,6 +2,7 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
// PI*2 in u[4.28] format
|
||||
.const PI2_u4f28 = $6487ed51
|
||||
// PI in u[4.28] format
|
||||
@ -59,16 +60,16 @@ main: {
|
||||
lda #>str
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
lda st1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc st1
|
||||
sta st1
|
||||
bcc !+
|
||||
inc st1+1
|
||||
!:
|
||||
lda st2
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc st2
|
||||
sta st2
|
||||
bcc !+
|
||||
inc st2+1
|
||||
@ -226,9 +227,9 @@ sin16s_genb: {
|
||||
iny
|
||||
lda _2+1
|
||||
sta (sintab),y
|
||||
lda sintab
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
@ -618,9 +619,9 @@ sin16s_gen: {
|
||||
iny
|
||||
lda _1+1
|
||||
sta (sintab),y
|
||||
lda sintab
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
|
@ -41,8 +41,8 @@ main::@6: scope:[main] from main::@2
|
||||
[19] call print_str
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@6
|
||||
[20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[22] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||
[23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $78) goto main::@1
|
||||
to:main::@return
|
||||
@ -150,7 +150,7 @@ sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@2 sin16s_genb::@3
|
||||
sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb::@1
|
||||
[70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0
|
||||
[71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2
|
||||
[72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0
|
||||
[74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2
|
||||
[75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1
|
||||
@ -343,7 +343,7 @@ sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3
|
||||
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1
|
||||
[171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0
|
||||
[172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1
|
||||
[173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0
|
||||
[175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2
|
||||
[176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1
|
||||
|
@ -1,3 +1,8 @@
|
||||
Fixing pointer increment (signed word*) sin16s_gen::sintab ← ++ (signed word*) sin16s_gen::sintab
|
||||
Fixing pointer increment (signed word*) sin16s_gen2::sintab ← ++ (signed word*) sin16s_gen2::sintab
|
||||
Fixing pointer increment (signed word*) sin16s_genb::sintab ← ++ (signed word*) sin16s_genb::sintab
|
||||
Fixing pointer increment (signed word*) main::st1 ← ++ (signed word*) main::st1
|
||||
Fixing pointer increment (signed word*) main::st2 ← ++ (signed word*) main::st2
|
||||
Identified constant variable (word) main::wavelength
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -222,13 +227,12 @@ sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1
|
||||
(signed word) sin16s::return#3 ← phi( sin16s_gen::@1/(signed word) sin16s::return#0 )
|
||||
(signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#3
|
||||
*((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1
|
||||
(signed word*~) sin16s_gen::$2 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(signed word*) sin16s_gen::sintab#0 ← (signed word*~) sin16s_gen::$2
|
||||
(dword~) sin16s_gen::$3 ← (dword) sin16s_gen::x#3 + (dword) sin16s_gen::step#1
|
||||
(dword) sin16s_gen::x#1 ← (dword~) sin16s_gen::$3
|
||||
(signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
(dword~) sin16s_gen::$2 ← (dword) sin16s_gen::x#3 + (dword) sin16s_gen::step#1
|
||||
(dword) sin16s_gen::x#1 ← (dword~) sin16s_gen::$2
|
||||
(word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2
|
||||
(bool~) sin16s_gen::$4 ← (word) sin16s_gen::i#1 < (word) sin16s_gen::wavelength#2
|
||||
if((bool~) sin16s_gen::$4) goto sin16s_gen::@1
|
||||
(bool~) sin16s_gen::$3 ← (word) sin16s_gen::i#1 < (word) sin16s_gen::wavelength#2
|
||||
if((bool~) sin16s_gen::$3) goto sin16s_gen::@1
|
||||
to:sin16s_gen::@return
|
||||
sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4
|
||||
(word) rem16u#19 ← phi( sin16s_gen::@4/(word) rem16u#28 )
|
||||
@ -421,13 +425,12 @@ sin16s_genb::@4: scope:[sin16s_genb] from sin16s_genb::@1
|
||||
(signed word) sin16sb::return#3 ← phi( sin16s_genb::@1/(signed word) sin16sb::return#0 )
|
||||
(signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#3
|
||||
*((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2
|
||||
(signed word*~) sin16s_genb::$3 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(signed word*) sin16s_genb::sintab#0 ← (signed word*~) sin16s_genb::$3
|
||||
(dword~) sin16s_genb::$4 ← (dword) sin16s_genb::x#3 + (dword) sin16s_genb::step#1
|
||||
(dword) sin16s_genb::x#1 ← (dword~) sin16s_genb::$4
|
||||
(signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
(dword~) sin16s_genb::$3 ← (dword) sin16s_genb::x#3 + (dword) sin16s_genb::step#1
|
||||
(dword) sin16s_genb::x#1 ← (dword~) sin16s_genb::$3
|
||||
(word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2
|
||||
(bool~) sin16s_genb::$5 ← (word) sin16s_genb::i#1 < (word) sin16s_genb::wavelength#2
|
||||
if((bool~) sin16s_genb::$5) goto sin16s_genb::@1
|
||||
(bool~) sin16s_genb::$4 ← (word) sin16s_genb::i#1 < (word) sin16s_genb::wavelength#2
|
||||
if((bool~) sin16s_genb::$4) goto sin16s_genb::@1
|
||||
to:sin16s_genb::@return
|
||||
sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@4
|
||||
(word) rem16u#21 ← phi( sin16s_genb::@4/(word) rem16u#30 )
|
||||
@ -793,13 +796,11 @@ main::@9: scope:[main] from main::@8
|
||||
(signed word*) main::st1#3 ← phi( main::@8/(signed word*) main::st1#4 )
|
||||
(byte*) print_char_cursor#38 ← phi( main::@8/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#18 ← (byte*) print_char_cursor#38
|
||||
(signed word*~) main::$9 ← (signed word*) main::st1#3 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(signed word*) main::st1#1 ← (signed word*~) main::$9
|
||||
(signed word*~) main::$10 ← (signed word*) main::st2#3 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(signed word*) main::st2#1 ← (signed word*~) main::$10
|
||||
(signed word*) main::st1#1 ← (signed word*) main::st1#3 + (const byte) SIZEOF_SIGNED_WORD
|
||||
(signed word*) main::st2#1 ← (signed word*) main::st2#3 + (const byte) SIZEOF_SIGNED_WORD
|
||||
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,$77)
|
||||
(bool~) main::$11 ← (byte) main::i#1 != rangelast(0,$77)
|
||||
if((bool~) main::$11) goto main::@1
|
||||
(bool~) main::$9 ← (byte) main::i#1 != rangelast(0,$77)
|
||||
if((bool~) main::$9) goto main::@1
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main::@1
|
||||
(byte*) print_line_cursor#20 ← phi( main::@1/(byte*) print_line_cursor#18 )
|
||||
@ -868,6 +869,7 @@ SYMBOL TABLE SSA
|
||||
(word) PI_u4f12#0
|
||||
(dword) PI_u4f28
|
||||
(dword) PI_u4f28#0
|
||||
(const byte) SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
||||
(word~) div32u16u::$0
|
||||
(word~) div32u16u::$1
|
||||
@ -980,12 +982,10 @@ SYMBOL TABLE SSA
|
||||
(word) divr16u::return#5
|
||||
(word) divr16u::return#6
|
||||
(void()) main()
|
||||
(signed word*~) main::$10
|
||||
(bool~) main::$11
|
||||
(signed word~) main::$3
|
||||
(bool~) main::$4
|
||||
(bool~) main::$5
|
||||
(signed word*~) main::$9
|
||||
(bool~) main::$9
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
(label) main::@2
|
||||
@ -1447,9 +1447,8 @@ SYMBOL TABLE SSA
|
||||
(void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength)
|
||||
(dword~) sin16s_gen::$0
|
||||
(signed word~) sin16s_gen::$1
|
||||
(signed word*~) sin16s_gen::$2
|
||||
(dword~) sin16s_gen::$3
|
||||
(bool~) sin16s_gen::$4
|
||||
(dword~) sin16s_gen::$2
|
||||
(bool~) sin16s_gen::$3
|
||||
(label) sin16s_gen::@1
|
||||
(label) sin16s_gen::@3
|
||||
(label) sin16s_gen::@4
|
||||
@ -1485,9 +1484,8 @@ SYMBOL TABLE SSA
|
||||
(dword~) sin16s_genb::$0
|
||||
(word~) sin16s_genb::$1
|
||||
(signed word~) sin16s_genb::$2
|
||||
(signed word*~) sin16s_genb::$3
|
||||
(dword~) sin16s_genb::$4
|
||||
(bool~) sin16s_genb::$5
|
||||
(dword~) sin16s_genb::$3
|
||||
(bool~) sin16s_genb::$4
|
||||
(label) sin16s_genb::@1
|
||||
(label) sin16s_genb::@3
|
||||
(label) sin16s_genb::@4
|
||||
@ -1612,14 +1610,14 @@ SYMBOL TABLE SSA
|
||||
Inversing boolean not [10] (bool~) divr16u::$4 ← (byte~) divr16u::$2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [9] (bool~) divr16u::$3 ← (byte~) divr16u::$2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [18] (bool~) divr16u::$9 ← (word) divr16u::rem#6 < (word) divr16u::divisor#2 from [17] (bool~) divr16u::$8 ← (word) divr16u::rem#6 >= (word) divr16u::divisor#2
|
||||
Inversing boolean not [74] (bool~) mul16u::$3 ← (byte/word~) mul16u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [73] (bool~) mul16u::$2 ← (byte/word~) mul16u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [126] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [125] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0
|
||||
Inversing boolean not [130] (bool~) sin16s::$3 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [129] (bool~) sin16s::$2 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0
|
||||
Inversing boolean not [190] (bool~) sin16s::$17 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [189] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [249] (bool~) sin16sb::$1 ← (word) sin16sb::x#3 < (word) PI_u4f12#0 from [248] (bool~) sin16sb::$0 ← (word) sin16sb::x#3 >= (word) PI_u4f12#0
|
||||
Inversing boolean not [253] (bool~) sin16sb::$3 ← (word) sin16sb::x#4 < (word) PI_HALF_u4f12#0 from [252] (bool~) sin16sb::$2 ← (word) sin16sb::x#4 >= (word) PI_HALF_u4f12#0
|
||||
Inversing boolean not [312] (bool~) sin16sb::$16 ← (byte) sin16sb::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [311] (bool~) sin16sb::$15 ← (byte) sin16sb::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [343] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [342] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [437] (bool~) main::$5 ← (signed word) main::sw#0 < (byte/signed byte/word/signed word/dword/signed dword) 0 from [436] (bool~) main::$4 ← (signed word) main::sw#0 >= (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [125] (bool~) sin16s::$1 ← (dword) sin16s::x#3 < (dword) PI_u4f28#0 from [124] (bool~) sin16s::$0 ← (dword) sin16s::x#3 >= (dword) PI_u4f28#0
|
||||
Inversing boolean not [129] (bool~) sin16s::$3 ← (dword) sin16s::x#4 < (dword) PI_HALF_u4f28#0 from [128] (bool~) sin16s::$2 ← (dword) sin16s::x#4 >= (dword) PI_HALF_u4f28#0
|
||||
Inversing boolean not [189] (bool~) sin16s::$17 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [188] (bool~) sin16s::$16 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [247] (bool~) sin16sb::$1 ← (word) sin16sb::x#3 < (word) PI_u4f12#0 from [246] (bool~) sin16sb::$0 ← (word) sin16sb::x#3 >= (word) PI_u4f12#0
|
||||
Inversing boolean not [251] (bool~) sin16sb::$3 ← (word) sin16sb::x#4 < (word) PI_HALF_u4f12#0 from [250] (bool~) sin16sb::$2 ← (word) sin16sb::x#4 >= (word) PI_HALF_u4f12#0
|
||||
Inversing boolean not [310] (bool~) sin16sb::$16 ← (byte) sin16sb::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [309] (bool~) sin16sb::$15 ← (byte) sin16sb::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [341] (bool~) print_sword::$1 ← (signed word) print_sword::w#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [340] (bool~) print_sword::$0 ← (signed word) print_sword::w#2 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [435] (bool~) main::$5 ← (signed word) main::sw#0 < (byte/signed byte/word/signed word/dword/signed dword) 0 from [434] (bool~) main::$4 ← (signed word) main::sw#0 >= (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7
|
||||
Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8
|
||||
@ -1666,8 +1664,7 @@ Alias (dword) sin16s_gen::step#1 = (dword) sin16s_gen::step#2
|
||||
Alias (word) sin16s_gen::i#2 = (word) sin16s_gen::i#3
|
||||
Alias (word) sin16s_gen::wavelength#2 = (word) sin16s_gen::wavelength#3
|
||||
Alias (word) rem16u#19 = (word) rem16u#28 (word) rem16u#34 (word) rem16u#7
|
||||
Alias (signed word*) sin16s_gen::sintab#0 = (signed word*~) sin16s_gen::$2
|
||||
Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$3
|
||||
Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$2
|
||||
Alias (dword) sin16s::x#3 = (dword) sin16s::x#5
|
||||
Alias (dword) sin16s::x#1 = (dword~) sin16s::$18
|
||||
Alias (word) sin16s::x1#0 = (word~) sin16s::$5 (word) sin16s::x1#1 (word) sin16s::x1#4 (word) sin16s::x1#2 (word) sin16s::x1#3
|
||||
@ -1708,8 +1705,7 @@ Alias (dword) sin16s_genb::step#1 = (dword) sin16s_genb::step#2
|
||||
Alias (word) sin16s_genb::i#2 = (word) sin16s_genb::i#3
|
||||
Alias (word) sin16s_genb::wavelength#2 = (word) sin16s_genb::wavelength#3
|
||||
Alias (word) rem16u#21 = (word) rem16u#30 (word) rem16u#35 (word) rem16u#9
|
||||
Alias (signed word*) sin16s_genb::sintab#0 = (signed word*~) sin16s_genb::$3
|
||||
Alias (dword) sin16s_genb::x#1 = (dword~) sin16s_genb::$4
|
||||
Alias (dword) sin16s_genb::x#1 = (dword~) sin16s_genb::$3
|
||||
Alias (word) sin16sb::x#3 = (word) sin16sb::x#5
|
||||
Alias (word) sin16sb::x#1 = (word~) sin16sb::$17
|
||||
Alias (word) sin16sb::x1#0 = (word/signed dword/dword~) sin16sb::$4 (word) sin16sb::x1#1 (word) sin16sb::x1#4 (word) sin16sb::x1#2 (word) sin16sb::x1#3
|
||||
@ -1770,8 +1766,6 @@ Alias (word) rem16u#12 = (word) rem16u#36 (word) rem16u#39 (word) rem16u#32 (wor
|
||||
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#14 (byte*) print_line_cursor#17 (byte*) print_line_cursor#8 (byte*) print_line_cursor#4
|
||||
Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#37
|
||||
Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#38 (byte*) print_char_cursor#40 (byte*) print_char_cursor#20
|
||||
Alias (signed word*) main::st1#1 = (signed word*~) main::$9
|
||||
Alias (signed word*) main::st2#1 = (signed word*~) main::$10
|
||||
Alias (byte*) print_char_cursor#49 = (byte*) print_char_cursor#54
|
||||
Alias (signed word*) main::st1#2 = (signed word*) main::st1#7 (signed word*) main::st1#6
|
||||
Alias (signed word*) main::st2#2 = (signed word*) main::st2#7 (signed word*) main::st2#6
|
||||
@ -1865,19 +1859,19 @@ Simple Condition (bool~) divr16u::$9 [19] if((word) divr16u::rem#6<(word) divr16
|
||||
Simple Condition (bool~) divr16u::$11 [26] if((byte) divr16u::i#1!=rangelast(0,$f)) goto divr16u::@1
|
||||
Simple Condition (bool~) mul16u::$0 [70] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
Simple Condition (bool~) mul16u::$3 [75] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
Simple Condition (bool~) sin16s_gen::$4 [119] if((word) sin16s_gen::i#1<(word) sin16s_gen::wavelength#0) goto sin16s_gen::@1
|
||||
Simple Condition (bool~) sin16s::$1 [127] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1
|
||||
Simple Condition (bool~) sin16s::$3 [131] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
Simple Condition (bool~) sin16s::$17 [191] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3
|
||||
Simple Condition (bool~) sin16s_genb::$5 [242] if((word) sin16s_genb::i#1<(word) sin16s_genb::wavelength#0) goto sin16s_genb::@1
|
||||
Simple Condition (bool~) sin16sb::$1 [250] if((word) sin16sb::x#0<(word) PI_u4f12#0) goto sin16sb::@1
|
||||
Simple Condition (bool~) sin16sb::$3 [254] if((word) sin16sb::x#4<(word) PI_HALF_u4f12#0) goto sin16sb::@2
|
||||
Simple Condition (bool~) sin16sb::$16 [313] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@3
|
||||
Simple Condition (bool~) print_str::$0 [333] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2
|
||||
Simple Condition (bool~) print_sword::$1 [344] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1
|
||||
Simple Condition (bool~) print_cls::$1 [404] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
Simple Condition (bool~) main::$5 [438] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2
|
||||
Simple Condition (bool~) main::$11 [454] if((byte) main::i#1!=rangelast(0,$77)) goto main::@1
|
||||
Simple Condition (bool~) sin16s_gen::$3 [118] if((word) sin16s_gen::i#1<(word) sin16s_gen::wavelength#0) goto sin16s_gen::@1
|
||||
Simple Condition (bool~) sin16s::$1 [126] if((dword) sin16s::x#0<(dword) PI_u4f28#0) goto sin16s::@1
|
||||
Simple Condition (bool~) sin16s::$3 [130] if((dword) sin16s::x#4<(dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
Simple Condition (bool~) sin16s::$17 [190] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@3
|
||||
Simple Condition (bool~) sin16s_genb::$4 [240] if((word) sin16s_genb::i#1<(word) sin16s_genb::wavelength#0) goto sin16s_genb::@1
|
||||
Simple Condition (bool~) sin16sb::$1 [248] if((word) sin16sb::x#0<(word) PI_u4f12#0) goto sin16sb::@1
|
||||
Simple Condition (bool~) sin16sb::$3 [252] if((word) sin16sb::x#4<(word) PI_HALF_u4f12#0) goto sin16sb::@2
|
||||
Simple Condition (bool~) sin16sb::$16 [311] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@3
|
||||
Simple Condition (bool~) print_str::$0 [331] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2
|
||||
Simple Condition (bool~) print_sword::$1 [342] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1
|
||||
Simple Condition (bool~) print_cls::$1 [402] if((byte*) print_cls::sc#1!=(byte*~) print_cls::$0) goto print_cls::@1
|
||||
Simple Condition (bool~) main::$5 [436] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2
|
||||
Simple Condition (bool~) main::$9 [450] if((byte) main::i#1!=rangelast(0,$77)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const word) rem16u#0 = 0
|
||||
Constant (const word) divr16u::quotient#0 = 0
|
||||
@ -2279,8 +2273,8 @@ main::@6: scope:[main] from main::@2
|
||||
[19] call print_str
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@6
|
||||
[20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[22] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||
[23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $78) goto main::@1
|
||||
to:main::@return
|
||||
@ -2388,7 +2382,7 @@ sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@2 sin16s_genb::@3
|
||||
sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb::@1
|
||||
[70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0
|
||||
[71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2
|
||||
[72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0
|
||||
[74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2
|
||||
[75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1
|
||||
@ -2581,7 +2575,7 @@ sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@3
|
||||
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@1
|
||||
[171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0
|
||||
[172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1
|
||||
[173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD
|
||||
[174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0
|
||||
[175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2
|
||||
[176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1
|
||||
@ -3181,6 +3175,7 @@ INITIAL ASM
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
// PI*2 in u[4.28] format
|
||||
.const PI2_u4f28 = $6487ed51
|
||||
// PI in u[4.28] format
|
||||
@ -3329,18 +3324,18 @@ main: {
|
||||
jmp b7
|
||||
//SEG51 main::@7
|
||||
b7:
|
||||
//SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda st1
|
||||
//SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc st1
|
||||
sta st1
|
||||
bcc !+
|
||||
inc st1+1
|
||||
!:
|
||||
//SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda st2
|
||||
//SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc st2
|
||||
sta st2
|
||||
bcc !+
|
||||
inc st2+1
|
||||
@ -3682,10 +3677,10 @@ sin16s_genb: {
|
||||
iny
|
||||
lda _2+1
|
||||
sta (sintab),y
|
||||
//SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda sintab
|
||||
//SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
@ -4519,10 +4514,10 @@ sin16s_gen: {
|
||||
iny
|
||||
lda _1+1
|
||||
sta (sintab),y
|
||||
//SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda sintab
|
||||
//SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
@ -4928,8 +4923,8 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ ma
|
||||
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:6 [ main::i#2 main::i#1 ]
|
||||
Statement [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a
|
||||
Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a
|
||||
Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a
|
||||
@ -4949,7 +4944,7 @@ Statement [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb:
|
||||
Statement [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ) always clobbers reg byte a
|
||||
Statement [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ) always clobbers reg byte a
|
||||
Statement [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a
|
||||
Statement [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a
|
||||
Statement [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a
|
||||
Statement [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ) always clobbers reg byte a
|
||||
Statement [77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a
|
||||
@ -5013,7 +5008,7 @@ Statement [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::st
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ 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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
@ -5050,8 +5045,8 @@ Statement [217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::
|
||||
Statement [11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 print_char_cursor#49 main::i#2 main::sw#0 ] ) always clobbers reg byte a
|
||||
Statement [16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a
|
||||
Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 print_char_cursor#2 ] ) always clobbers reg byte a
|
||||
Statement [27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3) [ print_char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#2 print_str::str#3 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ print_char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#48 print_sword::w#1 ] ) always clobbers reg byte a
|
||||
@ -5069,7 +5064,7 @@ Statement [67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb:
|
||||
Statement [69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ) always clobbers reg byte a
|
||||
Statement [70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ) always clobbers reg byte a
|
||||
Statement [71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a
|
||||
Statement [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ) always clobbers reg byte a
|
||||
Statement [73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ) always clobbers reg byte a
|
||||
Statement [75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ) always clobbers reg byte a
|
||||
Statement [77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ) always clobbers reg byte a
|
||||
@ -5128,7 +5123,7 @@ Statement [168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ sin16s_gen::st
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD [ 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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
Statement [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 ] ) always clobbers reg byte a
|
||||
@ -5370,6 +5365,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
// PI*2 in u[4.28] format
|
||||
.const PI2_u4f28 = $6487ed51
|
||||
// PI in u[4.28] format
|
||||
@ -5512,18 +5508,18 @@ main: {
|
||||
jmp b7
|
||||
//SEG51 main::@7
|
||||
b7:
|
||||
//SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda st1
|
||||
//SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc st1
|
||||
sta st1
|
||||
bcc !+
|
||||
inc st1+1
|
||||
!:
|
||||
//SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda st2
|
||||
//SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc st2
|
||||
sta st2
|
||||
bcc !+
|
||||
inc st2+1
|
||||
@ -5831,10 +5827,10 @@ sin16s_genb: {
|
||||
iny
|
||||
lda _2+1
|
||||
sta (sintab),y
|
||||
//SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda sintab
|
||||
//SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
@ -6511,10 +6507,10 @@ sin16s_gen: {
|
||||
iny
|
||||
lda _1+1
|
||||
sta (sintab),y
|
||||
//SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda sintab
|
||||
//SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
@ -7115,6 +7111,7 @@ FINAL SYMBOL TABLE
|
||||
(const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) $3244
|
||||
(dword) PI_u4f28
|
||||
(const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) $3243f6a9
|
||||
(const byte) SIZEOF_SIGNED_WORD SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
||||
(label) div32u16u::@1
|
||||
(label) div32u16u::@2
|
||||
@ -7477,6 +7474,7 @@ Score: 23125
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.const SIZEOF_SIGNED_WORD = 2
|
||||
// PI*2 in u[4.28] format
|
||||
.const PI2_u4f28 = $6487ed51
|
||||
// PI in u[4.28] format
|
||||
@ -7583,18 +7581,18 @@ main: {
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
//SEG51 main::@7
|
||||
//SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda st1
|
||||
//SEG52 [20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc st1
|
||||
sta st1
|
||||
bcc !+
|
||||
inc st1+1
|
||||
!:
|
||||
//SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda st2
|
||||
//SEG53 [21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc st2
|
||||
sta st2
|
||||
bcc !+
|
||||
inc st2+1
|
||||
@ -7852,10 +7850,10 @@ sin16s_genb: {
|
||||
iny
|
||||
lda _2+1
|
||||
sta (sintab),y
|
||||
//SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda sintab
|
||||
//SEG154 [72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
@ -8442,10 +8440,10 @@ sin16s_gen: {
|
||||
iny
|
||||
lda _1+1
|
||||
sta (sintab),y
|
||||
//SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- pwsz1=pwsz1_plus_2
|
||||
lda sintab
|
||||
//SEG352 [173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (const byte) SIZEOF_SIGNED_WORD -- pwsz1=pwsz1_plus_vbuc1
|
||||
lda #SIZEOF_SIGNED_WORD
|
||||
clc
|
||||
adc #2
|
||||
adc sintab
|
||||
sta sintab
|
||||
bcc !+
|
||||
inc sintab+1
|
||||
|
@ -11,6 +11,7 @@
|
||||
(const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) $3244
|
||||
(dword) PI_u4f28
|
||||
(const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) $3243f6a9
|
||||
(const byte) SIZEOF_SIGNED_WORD SIZEOF_SIGNED_WORD = (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
||||
(label) div32u16u::@1
|
||||
(label) div32u16u::@2
|
||||
|
@ -1,3 +1,5 @@
|
||||
Fixing pointer increment (signed word*) sin16s_gen::sintab ← ++ (signed word*) sin16s_gen::sintab
|
||||
Fixing pointer increment (signed word*) sin16s_gen2::sintab ← ++ (signed word*) sin16s_gen2::sintab
|
||||
Identified constant variable (word) main::tabsize
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
|
@ -22,11 +22,16 @@ test_16s: {
|
||||
lda #0
|
||||
sta i
|
||||
b1:
|
||||
ldy i
|
||||
lda i
|
||||
asl
|
||||
tay
|
||||
lda dividends,y
|
||||
sta dividend
|
||||
lda dividends+1,y
|
||||
sta dividend+1
|
||||
lda i
|
||||
asl
|
||||
tay
|
||||
lda divisors,y
|
||||
sta divisor
|
||||
lda divisors+1,y
|
||||
@ -68,11 +73,8 @@ test_16s: {
|
||||
sta print_sword.w+1
|
||||
jsr print_sword
|
||||
jsr print_ln
|
||||
lda i
|
||||
clc
|
||||
adc #2
|
||||
sta i
|
||||
lda #$c
|
||||
inc i
|
||||
lda #6
|
||||
cmp i
|
||||
beq !b1+
|
||||
jmp b1
|
||||
@ -541,11 +543,16 @@ test_16u: {
|
||||
lda #0
|
||||
sta i
|
||||
b1:
|
||||
ldy i
|
||||
lda i
|
||||
asl
|
||||
tay
|
||||
lda dividends,y
|
||||
sta dividend
|
||||
lda dividends+1,y
|
||||
sta dividend+1
|
||||
lda i
|
||||
asl
|
||||
tay
|
||||
lda divisors,y
|
||||
sta divisor
|
||||
lda divisors+1,y
|
||||
@ -587,11 +594,8 @@ test_16u: {
|
||||
sta print_word.w+1
|
||||
jsr print_word
|
||||
jsr print_ln
|
||||
lda i
|
||||
clc
|
||||
adc #2
|
||||
sta i
|
||||
lda #$c
|
||||
inc i
|
||||
lda #6
|
||||
cmp i
|
||||
bne b1
|
||||
rts
|
||||
|
@ -35,548 +35,552 @@ test_16s: scope:[test_16s] from main::@4
|
||||
to:test_16s::@1
|
||||
test_16s::@1: scope:[test_16s] from test_16s test_16s::@10
|
||||
[16] (byte) test_16s::i#10 ← phi( test_16s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16s::@10/(byte) test_16s::i#1 )
|
||||
[17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10)
|
||||
[18] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::i#10)
|
||||
[19] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0
|
||||
[20] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0
|
||||
[21] call div16s
|
||||
[22] (signed word) div16s::return#2 ← (signed word) div16s::return#0
|
||||
[17] (byte) test_16s::$16 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[18] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::$16)
|
||||
[19] (byte) test_16s::$17 ← (byte) test_16s::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[20] (signed word) test_16s::divisor#0 ← *((const signed word[]) test_16s::divisors#0 + (byte) test_16s::$17)
|
||||
[21] (signed word) div16s::dividend#0 ← (signed word) test_16s::dividend#0
|
||||
[22] (signed word) div16s::divisor#0 ← (signed word) test_16s::divisor#0
|
||||
[23] call div16s
|
||||
[24] (signed word) div16s::return#2 ← (signed word) div16s::return#0
|
||||
to:test_16s::@2
|
||||
test_16s::@2: scope:[test_16s] from test_16s::@1
|
||||
[23] (signed word) test_16s::res#0 ← (signed word) div16s::return#2
|
||||
[24] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0
|
||||
[25] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1
|
||||
[26] call print_sword
|
||||
[25] (signed word) test_16s::res#0 ← (signed word) div16s::return#2
|
||||
[26] (signed word) print_sword::w#1 ← (signed word) test_16s::dividend#0
|
||||
[27] (byte*~) print_char_cursor#159 ← (byte*) print_line_cursor#1
|
||||
[28] call print_sword
|
||||
to:test_16s::@3
|
||||
test_16s::@3: scope:[test_16s] from test_16s::@2
|
||||
[27] phi()
|
||||
[28] call print_str
|
||||
[29] phi()
|
||||
[30] call print_str
|
||||
to:test_16s::@4
|
||||
test_16s::@4: scope:[test_16s] from test_16s::@3
|
||||
[29] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0
|
||||
[30] call print_sword
|
||||
[31] (signed word) print_sword::w#2 ← (signed word) test_16s::divisor#0
|
||||
[32] call print_sword
|
||||
to:test_16s::@5
|
||||
test_16s::@5: scope:[test_16s] from test_16s::@4
|
||||
[31] phi()
|
||||
[32] call print_str
|
||||
[33] phi()
|
||||
[34] call print_str
|
||||
to:test_16s::@6
|
||||
test_16s::@6: scope:[test_16s] from test_16s::@5
|
||||
[33] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0
|
||||
[34] call print_sword
|
||||
[35] (signed word) print_sword::w#3 ← (signed word) test_16s::res#0
|
||||
[36] call print_sword
|
||||
to:test_16s::@7
|
||||
test_16s::@7: scope:[test_16s] from test_16s::@6
|
||||
[35] phi()
|
||||
[36] call print_str
|
||||
[37] phi()
|
||||
[38] call print_str
|
||||
to:test_16s::@8
|
||||
test_16s::@8: scope:[test_16s] from test_16s::@7
|
||||
[37] (signed word) print_sword::w#4 ← (signed word) rem16s#11
|
||||
[38] call print_sword
|
||||
[39] (signed word) print_sword::w#4 ← (signed word) rem16s#11
|
||||
[40] call print_sword
|
||||
to:test_16s::@9
|
||||
test_16s::@9: scope:[test_16s] from test_16s::@8
|
||||
[39] phi()
|
||||
[40] call print_ln
|
||||
[41] phi()
|
||||
[42] call print_ln
|
||||
to:test_16s::@10
|
||||
test_16s::@10: scope:[test_16s] from test_16s::@9
|
||||
[41] (byte) test_16s::i#1 ← (byte) test_16s::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[42] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16s::@1
|
||||
[43] (byte) test_16s::i#1 ← ++ (byte) test_16s::i#10
|
||||
[44] if((byte) test_16s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16s::@1
|
||||
to:test_16s::@return
|
||||
test_16s::@return: scope:[test_16s] from test_16s::@10
|
||||
[43] return
|
||||
[45] return
|
||||
to:@return
|
||||
print_ln: scope:[print_ln] from test_16s::@9 test_16u::@9 test_8s::@9 test_8u::@9
|
||||
[44] (byte*) print_line_cursor#39 ← phi( test_16s::@9/(byte*) print_line_cursor#1 test_16u::@9/(byte*) print_line_cursor#1 test_8s::@9/(byte*) print_line_cursor#1 test_8u::@9/(byte*) print_line_cursor#41 )
|
||||
[46] (byte*) print_line_cursor#39 ← phi( test_16s::@9/(byte*) print_line_cursor#1 test_16u::@9/(byte*) print_line_cursor#1 test_8s::@9/(byte*) print_line_cursor#1 test_8u::@9/(byte*) print_line_cursor#41 )
|
||||
to:print_ln::@1
|
||||
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
|
||||
[45] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 )
|
||||
[46] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
[47] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1
|
||||
[47] (byte*) print_line_cursor#20 ← phi( print_ln/(byte*) print_line_cursor#39 print_ln::@1/(byte*) print_line_cursor#1 )
|
||||
[48] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#20 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
[49] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#18) goto print_ln::@1
|
||||
to:print_ln::@return
|
||||
print_ln::@return: scope:[print_ln] from print_ln::@1
|
||||
[48] return
|
||||
[50] return
|
||||
to:@return
|
||||
print_sword: scope:[print_sword] from test_16s::@2 test_16s::@4 test_16s::@6 test_16s::@8
|
||||
[49] (byte*) print_char_cursor#131 ← phi( test_16s::@2/(byte*~) print_char_cursor#159 test_16s::@4/(byte*) print_char_cursor#128 test_16s::@6/(byte*) print_char_cursor#128 test_16s::@8/(byte*) print_char_cursor#128 )
|
||||
[49] (signed word) print_sword::w#5 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 )
|
||||
[50] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1
|
||||
[51] (byte*) print_char_cursor#131 ← phi( test_16s::@2/(byte*~) print_char_cursor#159 test_16s::@4/(byte*) print_char_cursor#128 test_16s::@6/(byte*) print_char_cursor#128 test_16s::@8/(byte*) print_char_cursor#128 )
|
||||
[51] (signed word) print_sword::w#5 ← phi( test_16s::@2/(signed word) print_sword::w#1 test_16s::@4/(signed word) print_sword::w#2 test_16s::@6/(signed word) print_sword::w#3 test_16s::@8/(signed word) print_sword::w#4 )
|
||||
[52] if((signed word) print_sword::w#5>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1
|
||||
to:print_sword::@2
|
||||
print_sword::@2: scope:[print_sword] from print_sword
|
||||
[51] phi()
|
||||
[52] call print_char
|
||||
[53] phi()
|
||||
[54] call print_char
|
||||
to:print_sword::@3
|
||||
print_sword::@3: scope:[print_sword] from print_sword::@2
|
||||
[53] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5
|
||||
[55] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#5
|
||||
to:print_sword::@1
|
||||
print_sword::@1: scope:[print_sword] from print_sword print_sword::@3
|
||||
[54] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@3/(byte*) print_char_cursor#18 )
|
||||
[54] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 )
|
||||
[55] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6
|
||||
[56] call print_word
|
||||
[56] (byte*) print_char_cursor#130 ← phi( print_sword/(byte*) print_char_cursor#131 print_sword::@3/(byte*) print_char_cursor#18 )
|
||||
[56] (signed word) print_sword::w#6 ← phi( print_sword/(signed word) print_sword::w#5 print_sword::@3/(signed word) print_sword::w#0 )
|
||||
[57] (word~) print_word::w#7 ← (word)(signed word) print_sword::w#6
|
||||
[58] call print_word
|
||||
to:print_sword::@return
|
||||
print_sword::@return: scope:[print_sword] from print_sword::@1
|
||||
[57] return
|
||||
[59] return
|
||||
to:@return
|
||||
print_word: scope:[print_word] from print_sword::@1 test_16u::@2 test_16u::@4 test_16u::@6 test_16u::@8
|
||||
[58] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@2/(byte*~) print_char_cursor#166 test_16u::@4/(byte*) print_char_cursor#128 test_16u::@6/(byte*) print_char_cursor#128 test_16u::@8/(byte*) print_char_cursor#128 )
|
||||
[58] (word) print_word::w#5 ← phi( print_sword::@1/(word~) print_word::w#7 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 )
|
||||
[59] (byte) print_byte::b#1 ← > (word) print_word::w#5
|
||||
[60] call print_byte
|
||||
[60] (byte*) print_char_cursor#135 ← phi( print_sword::@1/(byte*) print_char_cursor#130 test_16u::@2/(byte*~) print_char_cursor#166 test_16u::@4/(byte*) print_char_cursor#128 test_16u::@6/(byte*) print_char_cursor#128 test_16u::@8/(byte*) print_char_cursor#128 )
|
||||
[60] (word) print_word::w#5 ← phi( print_sword::@1/(word~) print_word::w#7 test_16u::@2/(word) print_word::w#1 test_16u::@4/(word) print_word::w#2 test_16u::@6/(word) print_word::w#3 test_16u::@8/(word) print_word::w#4 )
|
||||
[61] (byte) print_byte::b#1 ← > (word) print_word::w#5
|
||||
[62] call print_byte
|
||||
to:print_word::@1
|
||||
print_word::@1: scope:[print_word] from print_word
|
||||
[61] (byte) print_byte::b#2 ← < (word) print_word::w#5
|
||||
[62] call print_byte
|
||||
[63] (byte) print_byte::b#2 ← < (word) print_word::w#5
|
||||
[64] call print_byte
|
||||
to:print_word::@return
|
||||
print_word::@return: scope:[print_word] from print_word::@1
|
||||
[63] return
|
||||
[65] return
|
||||
to:@return
|
||||
print_byte: scope:[print_byte] from print_sbyte::@2 print_word print_word::@1 test_8u::@2 test_8u::@4 test_8u::@6 test_8u::@8
|
||||
[64] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@2/(byte*) print_char_cursor#138 test_8u::@4/(byte*) print_char_cursor#128 test_8u::@6/(byte*) print_char_cursor#128 test_8u::@8/(byte*) print_char_cursor#128 )
|
||||
[64] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 )
|
||||
[65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[66] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
|
||||
[67] call print_char
|
||||
[66] (byte*) print_char_cursor#136 ← phi( print_sbyte::@2/(byte*) print_char_cursor#18 print_word/(byte*) print_char_cursor#135 print_word::@1/(byte*) print_char_cursor#18 test_8u::@2/(byte*) print_char_cursor#138 test_8u::@4/(byte*) print_char_cursor#128 test_8u::@6/(byte*) print_char_cursor#128 test_8u::@8/(byte*) print_char_cursor#128 )
|
||||
[66] (byte) print_byte::b#7 ← phi( print_sbyte::@2/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@2/(byte) print_byte::b#3 test_8u::@4/(byte) print_byte::b#4 test_8u::@6/(byte) print_byte::b#5 test_8u::@8/(byte) print_byte::b#6 )
|
||||
[67] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[68] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
|
||||
[69] call print_char
|
||||
to:print_byte::@1
|
||||
print_byte::@1: scope:[print_byte] from print_byte
|
||||
[68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
[69] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
|
||||
[70] call print_char
|
||||
[70] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) $f
|
||||
[71] (byte) print_char::ch#4 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
|
||||
[72] call print_char
|
||||
to:print_byte::@return
|
||||
print_byte::@return: scope:[print_byte] from print_byte::@1
|
||||
[71] return
|
||||
[73] return
|
||||
to:@return
|
||||
print_char: scope:[print_char] from print_byte print_byte::@1 print_sbyte::@1 print_sbyte::@3 print_sword::@2
|
||||
[72] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 )
|
||||
[72] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' )
|
||||
[73] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5
|
||||
[74] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82
|
||||
[74] (byte*) print_char_cursor#82 ← phi( print_byte/(byte*) print_char_cursor#136 print_byte::@1/(byte*) print_char_cursor#18 print_sbyte::@1/(byte*) print_char_cursor#132 print_sbyte::@3/(byte*) print_char_cursor#132 print_sword::@2/(byte*) print_char_cursor#131 )
|
||||
[74] (byte) print_char::ch#5 ← phi( print_byte/(byte) print_char::ch#3 print_byte::@1/(byte) print_char::ch#4 print_sbyte::@1/(byte) '-' print_sbyte::@3/(byte) ' ' print_sword::@2/(byte) '-' )
|
||||
[75] *((byte*) print_char_cursor#82) ← (byte) print_char::ch#5
|
||||
[76] (byte*) print_char_cursor#18 ← ++ (byte*) print_char_cursor#82
|
||||
to:print_char::@return
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
[75] return
|
||||
[77] return
|
||||
to:@return
|
||||
print_str: scope:[print_str] from test_16s::@3 test_16s::@5 test_16s::@7 test_16u::@3 test_16u::@5 test_16u::@7 test_8s::@3 test_8s::@5 test_8s::@7 test_8u::@3 test_8u::@5 test_8u::@7
|
||||
[76] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 )
|
||||
[78] (byte*) print_str::str#15 ← phi( test_16s::@3/(const string) str test_16s::@5/(const string) str1 test_16s::@7/(const string) str2 test_16u::@3/(const string) str test_16u::@5/(const string) str1 test_16u::@7/(const string) str2 test_8s::@3/(const string) str test_8s::@5/(const string) str1 test_8s::@7/(const string) str2 test_8u::@3/(const string) str test_8u::@5/(const string) str1 test_8u::@7/(const string) str2 )
|
||||
to:print_str::@1
|
||||
print_str::@1: scope:[print_str] from print_str print_str::@2
|
||||
[77] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 )
|
||||
[77] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 )
|
||||
[78] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2
|
||||
[79] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 )
|
||||
[79] (byte*) print_str::str#13 ← phi( print_str/(byte*) print_str::str#15 print_str::@2/(byte*) print_str::str#0 )
|
||||
[80] if(*((byte*) print_str::str#13)!=(byte) '@') goto print_str::@2
|
||||
to:print_str::@return
|
||||
print_str::@return: scope:[print_str] from print_str::@1
|
||||
[79] return
|
||||
[81] return
|
||||
to:@return
|
||||
print_str::@2: scope:[print_str] from print_str::@1
|
||||
[80] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13)
|
||||
[81] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128
|
||||
[82] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13
|
||||
[82] *((byte*) print_char_cursor#128) ← *((byte*) print_str::str#13)
|
||||
[83] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#128
|
||||
[84] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#13
|
||||
to:print_str::@1
|
||||
div16s: scope:[div16s] from test_16s::@1
|
||||
[83] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0
|
||||
[84] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0
|
||||
[85] call divr16s
|
||||
[86] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
|
||||
[85] (signed word) divr16s::dividend#0 ← (signed word) div16s::dividend#0
|
||||
[86] (signed word) divr16s::divisor#0 ← (signed word) div16s::divisor#0
|
||||
[87] call divr16s
|
||||
[88] (signed word) divr16s::return#3 ← (signed word) divr16s::return#2
|
||||
to:div16s::@1
|
||||
div16s::@1: scope:[div16s] from div16s
|
||||
[87] (signed word) div16s::return#0 ← (signed word) divr16s::return#3
|
||||
[89] (signed word) div16s::return#0 ← (signed word) divr16s::return#3
|
||||
to:div16s::@return
|
||||
div16s::@return: scope:[div16s] from div16s::@1
|
||||
[88] return
|
||||
[90] return
|
||||
to:@return
|
||||
divr16s: scope:[divr16s] from div16s
|
||||
[89] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
|
||||
[91] if((signed word) divr16s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@1
|
||||
to:divr16s::@7
|
||||
divr16s::@7: scope:[divr16s] from divr16s
|
||||
[90] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0
|
||||
[92] (word~) divr16s::dividendu#8 ← (word)(signed word) divr16s::dividend#0
|
||||
to:divr16s::@2
|
||||
divr16s::@2: scope:[divr16s] from divr16s::@1 divr16s::@7
|
||||
[91] (word) divr16s::remu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::rem#0 divr16s::@7/((word))(const signed word) divr16s::rem#0 )
|
||||
[91] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@7/(word~) divr16s::dividendu#8 )
|
||||
[91] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[92] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
|
||||
[93] (word) divr16s::remu#3 ← phi( divr16s::@1/((word))-(const signed word) divr16s::rem#0 divr16s::@7/((word))(const signed word) divr16s::rem#0 )
|
||||
[93] (word) divr16s::dividendu#3 ← phi( divr16s::@1/(word~) divr16s::dividendu#7 divr16s::@7/(word~) divr16s::dividendu#8 )
|
||||
[93] (byte) divr16s::neg#3 ← phi( divr16s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 divr16s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[94] if((signed word) divr16s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@3
|
||||
to:divr16s::@8
|
||||
divr16s::@8: scope:[divr16s] from divr16s::@2
|
||||
[93] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
|
||||
[95] (word~) divr16s::divisoru#5 ← (word)(signed word) divr16s::divisor#0
|
||||
to:divr16s::@4
|
||||
divr16s::@4: scope:[divr16s] from divr16s::@3 divr16s::@8
|
||||
[94] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@8/(byte) divr16s::neg#3 )
|
||||
[94] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@8/(word~) divr16s::divisoru#5 )
|
||||
[95] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3
|
||||
[96] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3
|
||||
[97] (word) divr16u::rem#4 ← (word) divr16s::remu#3
|
||||
[98] call divr16u
|
||||
[99] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
[96] (byte) divr16s::neg#4 ← phi( divr16s::@3/(byte) divr16s::neg#2 divr16s::@8/(byte) divr16s::neg#3 )
|
||||
[96] (word) divr16s::divisoru#3 ← phi( divr16s::@3/(word~) divr16s::divisoru#4 divr16s::@8/(word~) divr16s::divisoru#5 )
|
||||
[97] (word) divr16u::dividend#2 ← (word) divr16s::dividendu#3
|
||||
[98] (word) divr16u::divisor#1 ← (word) divr16s::divisoru#3
|
||||
[99] (word) divr16u::rem#4 ← (word) divr16s::remu#3
|
||||
[100] call divr16u
|
||||
[101] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
to:divr16s::@6
|
||||
divr16s::@6: scope:[divr16s] from divr16s::@4
|
||||
[100] (word) divr16s::resultu#0 ← (word) divr16u::return#3
|
||||
[101] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9
|
||||
[102] (word) divr16s::resultu#0 ← (word) divr16u::return#3
|
||||
[103] if((byte) divr16s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16s::@9
|
||||
to:divr16s::@5
|
||||
divr16s::@5: scope:[divr16s] from divr16s::@6
|
||||
[102] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1
|
||||
[103] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
|
||||
[104] (signed word) rem16s#2 ← - (signed word)(word) rem16u#1
|
||||
[105] (signed word) divr16s::return#1 ← - (signed word)(word) divr16s::resultu#0
|
||||
to:divr16s::@return
|
||||
divr16s::@return: scope:[divr16s] from divr16s::@5 divr16s::@9
|
||||
[104] (signed word) rem16s#11 ← phi( divr16s::@5/(signed word) rem16s#2 divr16s::@9/(signed word~) rem16s#37 )
|
||||
[104] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@9/(signed word~) divr16s::return#7 )
|
||||
[105] return
|
||||
[106] (signed word) rem16s#11 ← phi( divr16s::@5/(signed word) rem16s#2 divr16s::@9/(signed word~) rem16s#37 )
|
||||
[106] (signed word) divr16s::return#2 ← phi( divr16s::@5/(signed word) divr16s::return#1 divr16s::@9/(signed word~) divr16s::return#7 )
|
||||
[107] return
|
||||
to:@return
|
||||
divr16s::@9: scope:[divr16s] from divr16s::@6
|
||||
[106] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
|
||||
[107] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1
|
||||
[108] (signed word~) divr16s::return#7 ← (signed word)(word) divr16s::resultu#0
|
||||
[109] (signed word~) rem16s#37 ← (signed word)(word) rem16u#1
|
||||
to:divr16s::@return
|
||||
divr16s::@3: scope:[divr16s] from divr16s::@2
|
||||
[108] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0
|
||||
[109] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[110] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13
|
||||
[110] (signed word~) divr16s::$13 ← - (signed word) divr16s::divisor#0
|
||||
[111] (byte) divr16s::neg#2 ← (byte) divr16s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[112] (word~) divr16s::divisoru#4 ← (word)(signed word~) divr16s::$13
|
||||
to:divr16s::@4
|
||||
divr16s::@1: scope:[divr16s] from divr16s
|
||||
[111] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0
|
||||
[112] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8
|
||||
[113] (signed word~) divr16s::$8 ← - (signed word) divr16s::dividend#0
|
||||
[114] (word~) divr16s::dividendu#7 ← (word)(signed word~) divr16s::$8
|
||||
to:divr16s::@2
|
||||
divr16u: scope:[divr16u] from div16u divr16s::@4
|
||||
[113] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 )
|
||||
[113] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 )
|
||||
[113] (word) divr16u::rem#10 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16s::@4/(word) divr16u::rem#4 )
|
||||
[115] (word) divr16u::divisor#6 ← phi( div16u/(word) divr16u::divisor#0 divr16s::@4/(word) divr16u::divisor#1 )
|
||||
[115] (word) divr16u::dividend#5 ← phi( div16u/(word) divr16u::dividend#1 divr16s::@4/(word) divr16u::dividend#2 )
|
||||
[115] (word) divr16u::rem#10 ← phi( div16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16s::@4/(word) divr16u::rem#4 )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[114] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[114] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[114] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[114] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[115] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[116] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[117] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80
|
||||
[118] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
[116] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[116] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[116] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[116] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[117] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[118] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[119] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80
|
||||
[120] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[119] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[121] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[120] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[121] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[122] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[123] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3
|
||||
[122] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[123] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[124] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[125] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[124] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[125] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6
|
||||
[126] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[127] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[126] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[126] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[127] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[128] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1
|
||||
[128] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[128] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[129] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[130] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[129] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
[131] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[130] return
|
||||
[132] return
|
||||
to:@return
|
||||
test_8s: scope:[test_8s] from main::@3
|
||||
[131] phi()
|
||||
[133] phi()
|
||||
to:test_8s::@1
|
||||
test_8s::@1: scope:[test_8s] from test_8s test_8s::@10
|
||||
[132] (byte) test_8s::i#10 ← phi( test_8s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8s::@10/(byte) test_8s::i#1 )
|
||||
[133] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10)
|
||||
[134] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10)
|
||||
[135] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0
|
||||
[136] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0
|
||||
[137] call div8s
|
||||
[138] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2
|
||||
[134] (byte) test_8s::i#10 ← phi( test_8s/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8s::@10/(byte) test_8s::i#1 )
|
||||
[135] (signed byte) test_8s::dividend#0 ← *((const signed byte[]) test_8s::dividends#0 + (byte) test_8s::i#10)
|
||||
[136] (signed byte) test_8s::divisor#0 ← *((const signed byte[]) test_8s::divisors#0 + (byte) test_8s::i#10)
|
||||
[137] (signed byte) div8s::dividend#0 ← (signed byte) test_8s::dividend#0
|
||||
[138] (signed byte) div8s::divisor#0 ← (signed byte) test_8s::divisor#0
|
||||
[139] call div8s
|
||||
[140] (signed byte) div8s::return#3 ← (signed byte) div8s::return#2
|
||||
to:test_8s::@2
|
||||
test_8s::@2: scope:[test_8s] from test_8s::@1
|
||||
[139] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3
|
||||
[140] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0
|
||||
[141] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1
|
||||
[142] call print_sbyte
|
||||
[141] (signed byte) test_8s::res#0 ← (signed byte) div8s::return#3
|
||||
[142] (signed byte) print_sbyte::b#1 ← (signed byte) test_8s::dividend#0
|
||||
[143] (byte*~) print_char_cursor#184 ← (byte*) print_line_cursor#1
|
||||
[144] call print_sbyte
|
||||
to:test_8s::@3
|
||||
test_8s::@3: scope:[test_8s] from test_8s::@2
|
||||
[143] phi()
|
||||
[144] call print_str
|
||||
[145] phi()
|
||||
[146] call print_str
|
||||
to:test_8s::@4
|
||||
test_8s::@4: scope:[test_8s] from test_8s::@3
|
||||
[145] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0
|
||||
[146] call print_sbyte
|
||||
[147] (signed byte) print_sbyte::b#2 ← (signed byte) test_8s::divisor#0
|
||||
[148] call print_sbyte
|
||||
to:test_8s::@5
|
||||
test_8s::@5: scope:[test_8s] from test_8s::@4
|
||||
[147] phi()
|
||||
[148] call print_str
|
||||
[149] phi()
|
||||
[150] call print_str
|
||||
to:test_8s::@6
|
||||
test_8s::@6: scope:[test_8s] from test_8s::@5
|
||||
[149] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0
|
||||
[150] call print_sbyte
|
||||
[151] (signed byte) print_sbyte::b#3 ← (signed byte) test_8s::res#0
|
||||
[152] call print_sbyte
|
||||
to:test_8s::@7
|
||||
test_8s::@7: scope:[test_8s] from test_8s::@6
|
||||
[151] phi()
|
||||
[152] call print_str
|
||||
[153] phi()
|
||||
[154] call print_str
|
||||
to:test_8s::@8
|
||||
test_8s::@8: scope:[test_8s] from test_8s::@7
|
||||
[153] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3
|
||||
[154] call print_sbyte
|
||||
[155] (signed byte) print_sbyte::b#4 ← (signed byte) rem8s#3
|
||||
[156] call print_sbyte
|
||||
to:test_8s::@9
|
||||
test_8s::@9: scope:[test_8s] from test_8s::@8
|
||||
[155] phi()
|
||||
[156] call print_ln
|
||||
[157] phi()
|
||||
[158] call print_ln
|
||||
to:test_8s::@10
|
||||
test_8s::@10: scope:[test_8s] from test_8s::@9
|
||||
[157] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10
|
||||
[158] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1
|
||||
[159] (byte) test_8s::i#1 ← ++ (byte) test_8s::i#10
|
||||
[160] if((byte) test_8s::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8s::@1
|
||||
to:test_8s::@return
|
||||
test_8s::@return: scope:[test_8s] from test_8s::@10
|
||||
[159] return
|
||||
[161] return
|
||||
to:@return
|
||||
print_sbyte: scope:[print_sbyte] from test_8s::@2 test_8s::@4 test_8s::@6 test_8s::@8
|
||||
[160] (byte*) print_char_cursor#132 ← phi( test_8s::@2/(byte*~) print_char_cursor#184 test_8s::@4/(byte*) print_char_cursor#128 test_8s::@6/(byte*) print_char_cursor#128 test_8s::@8/(byte*) print_char_cursor#128 )
|
||||
[160] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 )
|
||||
[161] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1
|
||||
[162] (byte*) print_char_cursor#132 ← phi( test_8s::@2/(byte*~) print_char_cursor#184 test_8s::@4/(byte*) print_char_cursor#128 test_8s::@6/(byte*) print_char_cursor#128 test_8s::@8/(byte*) print_char_cursor#128 )
|
||||
[162] (signed byte) print_sbyte::b#10 ← phi( test_8s::@2/(signed byte) print_sbyte::b#1 test_8s::@4/(signed byte) print_sbyte::b#2 test_8s::@6/(signed byte) print_sbyte::b#3 test_8s::@8/(signed byte) print_sbyte::b#4 )
|
||||
[163] if((signed byte) print_sbyte::b#10<(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sbyte::@1
|
||||
to:print_sbyte::@3
|
||||
print_sbyte::@3: scope:[print_sbyte] from print_sbyte
|
||||
[162] phi()
|
||||
[163] call print_char
|
||||
[164] phi()
|
||||
[165] call print_char
|
||||
to:print_sbyte::@2
|
||||
print_sbyte::@2: scope:[print_sbyte] from print_sbyte::@3 print_sbyte::@4
|
||||
[164] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 )
|
||||
[165] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7
|
||||
[166] call print_byte
|
||||
[166] (signed byte) print_sbyte::b#7 ← phi( print_sbyte::@4/(signed byte) print_sbyte::b#0 print_sbyte::@3/(signed byte) print_sbyte::b#10 )
|
||||
[167] (byte~) print_byte::b#9 ← (byte)(signed byte) print_sbyte::b#7
|
||||
[168] call print_byte
|
||||
to:print_sbyte::@return
|
||||
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@2
|
||||
[167] return
|
||||
[169] return
|
||||
to:@return
|
||||
print_sbyte::@1: scope:[print_sbyte] from print_sbyte
|
||||
[168] phi()
|
||||
[169] call print_char
|
||||
[170] phi()
|
||||
[171] call print_char
|
||||
to:print_sbyte::@4
|
||||
print_sbyte::@4: scope:[print_sbyte] from print_sbyte::@1
|
||||
[170] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10
|
||||
[172] (signed byte) print_sbyte::b#0 ← - (signed byte) print_sbyte::b#10
|
||||
to:print_sbyte::@2
|
||||
div8s: scope:[div8s] from test_8s::@1
|
||||
[171] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1
|
||||
[173] if((signed byte) div8s::dividend#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@1
|
||||
to:div8s::@7
|
||||
div8s::@7: scope:[div8s] from div8s
|
||||
[172] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0
|
||||
[174] (byte~) div8s::dividendu#8 ← (byte)(signed byte) div8s::dividend#0
|
||||
to:div8s::@2
|
||||
div8s::@2: scope:[div8s] from div8s::@1 div8s::@7
|
||||
[173] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@7/(byte~) div8s::dividendu#8 )
|
||||
[173] (byte) div8s::neg#3 ← phi( div8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 div8s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[174] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3
|
||||
[175] (byte) div8s::dividendu#3 ← phi( div8s::@1/(byte~) div8s::dividendu#7 div8s::@7/(byte~) div8s::dividendu#8 )
|
||||
[175] (byte) div8s::neg#3 ← phi( div8s::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 div8s::@7/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[176] if((signed byte) div8s::divisor#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@3
|
||||
to:div8s::@8
|
||||
div8s::@8: scope:[div8s] from div8s::@2
|
||||
[175] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0
|
||||
[177] (byte~) div8s::divisoru#5 ← (byte)(signed byte) div8s::divisor#0
|
||||
to:div8s::@4
|
||||
div8s::@4: scope:[div8s] from div8s::@3 div8s::@8
|
||||
[176] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@8/(byte) div8s::neg#3 )
|
||||
[176] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@8/(byte~) div8s::divisoru#5 )
|
||||
[177] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3
|
||||
[178] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3
|
||||
[179] call div8u
|
||||
[180] (byte) div8u::return#2 ← (byte) div8u::return#0
|
||||
[178] (byte) div8s::neg#4 ← phi( div8s::@3/(byte) div8s::neg#2 div8s::@8/(byte) div8s::neg#3 )
|
||||
[178] (byte) div8s::divisoru#3 ← phi( div8s::@3/(byte~) div8s::divisoru#4 div8s::@8/(byte~) div8s::divisoru#5 )
|
||||
[179] (byte) div8u::dividend#0 ← (byte) div8s::dividendu#3
|
||||
[180] (byte) div8u::divisor#0 ← (byte) div8s::divisoru#3
|
||||
[181] call div8u
|
||||
[182] (byte) div8u::return#2 ← (byte) div8u::return#0
|
||||
to:div8s::@6
|
||||
div8s::@6: scope:[div8s] from div8s::@4
|
||||
[181] (byte) div8s::resultu#0 ← (byte) div8u::return#2
|
||||
[182] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9
|
||||
[183] (byte) div8s::resultu#0 ← (byte) div8u::return#2
|
||||
[184] if((byte) div8s::neg#4==(byte/signed byte/word/signed word/dword/signed dword) 0) goto div8s::@9
|
||||
to:div8s::@5
|
||||
div8s::@5: scope:[div8s] from div8s::@6
|
||||
[183] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17
|
||||
[184] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0
|
||||
[185] (signed byte) rem8s#2 ← - (signed byte)(byte) rem8u#17
|
||||
[186] (signed byte) div8s::return#1 ← - (signed byte)(byte) div8s::resultu#0
|
||||
to:div8s::@return
|
||||
div8s::@return: scope:[div8s] from div8s::@5 div8s::@9
|
||||
[185] (signed byte) rem8s#3 ← phi( div8s::@5/(signed byte) rem8s#2 div8s::@9/(signed byte~) rem8s#33 )
|
||||
[185] (signed byte) div8s::return#2 ← phi( div8s::@5/(signed byte) div8s::return#1 div8s::@9/(signed byte~) div8s::return#7 )
|
||||
[186] return
|
||||
[187] (signed byte) rem8s#3 ← phi( div8s::@5/(signed byte) rem8s#2 div8s::@9/(signed byte~) rem8s#33 )
|
||||
[187] (signed byte) div8s::return#2 ← phi( div8s::@5/(signed byte) div8s::return#1 div8s::@9/(signed byte~) div8s::return#7 )
|
||||
[188] return
|
||||
to:@return
|
||||
div8s::@9: scope:[div8s] from div8s::@6
|
||||
[187] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0
|
||||
[188] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17
|
||||
[189] (signed byte~) div8s::return#7 ← (signed byte)(byte) div8s::resultu#0
|
||||
[190] (signed byte~) rem8s#33 ← (signed byte)(byte) rem8u#17
|
||||
to:div8s::@return
|
||||
div8s::@3: scope:[div8s] from div8s::@2
|
||||
[189] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0
|
||||
[190] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[191] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8
|
||||
[191] (signed byte~) div8s::$8 ← - (signed byte) div8s::divisor#0
|
||||
[192] (byte) div8s::neg#2 ← (byte) div8s::neg#3 ^ (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[193] (byte~) div8s::divisoru#4 ← (byte)(signed byte~) div8s::$8
|
||||
to:div8s::@4
|
||||
div8s::@1: scope:[div8s] from div8s
|
||||
[192] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0
|
||||
[193] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5
|
||||
[194] (signed byte~) div8s::$5 ← - (signed byte) div8s::dividend#0
|
||||
[195] (byte~) div8s::dividendu#7 ← (byte)(signed byte~) div8s::$5
|
||||
to:div8s::@2
|
||||
div8u: scope:[div8u] from div8s::@4 test_8u::@1
|
||||
[194] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 )
|
||||
[194] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 )
|
||||
[195] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2
|
||||
[196] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2
|
||||
[197] call divr8u
|
||||
[198] (byte) divr8u::return#0 ← (byte) divr8u::return#1
|
||||
[196] (byte) div8u::divisor#2 ← phi( div8s::@4/(byte) div8u::divisor#0 test_8u::@1/(byte) div8u::divisor#1 )
|
||||
[196] (byte) div8u::dividend#2 ← phi( div8s::@4/(byte) div8u::dividend#0 test_8u::@1/(byte) div8u::dividend#1 )
|
||||
[197] (byte) divr8u::dividend#0 ← (byte) div8u::dividend#2
|
||||
[198] (byte) divr8u::divisor#0 ← (byte) div8u::divisor#2
|
||||
[199] call divr8u
|
||||
[200] (byte) divr8u::return#0 ← (byte) divr8u::return#1
|
||||
to:div8u::@1
|
||||
div8u::@1: scope:[div8u] from div8u
|
||||
[199] (byte) div8u::return#0 ← (byte) divr8u::return#0
|
||||
[201] (byte) div8u::return#0 ← (byte) divr8u::return#0
|
||||
to:div8u::@return
|
||||
div8u::@return: scope:[div8u] from div8u::@1
|
||||
[200] return
|
||||
[202] return
|
||||
to:@return
|
||||
divr8u: scope:[divr8u] from div8u
|
||||
[201] phi()
|
||||
[203] phi()
|
||||
to:divr8u::@1
|
||||
divr8u::@1: scope:[divr8u] from divr8u divr8u::@3
|
||||
[202] (byte) divr8u::i#2 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::i#1 )
|
||||
[202] (byte) divr8u::quotient#3 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::return#1 )
|
||||
[202] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 )
|
||||
[202] (byte) divr8u::rem#4 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::rem#10 )
|
||||
[203] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[204] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80
|
||||
[205] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2
|
||||
[204] (byte) divr8u::i#2 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::i#1 )
|
||||
[204] (byte) divr8u::quotient#3 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::return#1 )
|
||||
[204] (byte) divr8u::dividend#2 ← phi( divr8u/(byte) divr8u::dividend#0 divr8u::@3/(byte) divr8u::dividend#1 )
|
||||
[204] (byte) divr8u::rem#4 ← phi( divr8u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr8u::@3/(byte) divr8u::rem#10 )
|
||||
[205] (byte) divr8u::rem#1 ← (byte) divr8u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[206] (byte~) divr8u::$1 ← (byte) divr8u::dividend#2 & (byte/word/signed word/dword/signed dword) $80
|
||||
[207] if((byte~) divr8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr8u::@2
|
||||
to:divr8u::@4
|
||||
divr8u::@4: scope:[divr8u] from divr8u::@1
|
||||
[206] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[208] (byte) divr8u::rem#2 ← (byte) divr8u::rem#1 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:divr8u::@2
|
||||
divr8u::@2: scope:[divr8u] from divr8u::@1 divr8u::@4
|
||||
[207] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 )
|
||||
[208] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[209] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[210] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3
|
||||
[209] (byte) divr8u::rem#5 ← phi( divr8u::@1/(byte) divr8u::rem#1 divr8u::@4/(byte) divr8u::rem#2 )
|
||||
[210] (byte) divr8u::dividend#1 ← (byte) divr8u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[211] (byte) divr8u::quotient#1 ← (byte) divr8u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[212] if((byte) divr8u::rem#5<(byte) divr8u::divisor#0) goto divr8u::@3
|
||||
to:divr8u::@5
|
||||
divr8u::@5: scope:[divr8u] from divr8u::@2
|
||||
[211] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1
|
||||
[212] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0
|
||||
[213] (byte) divr8u::quotient#2 ← ++ (byte) divr8u::quotient#1
|
||||
[214] (byte) divr8u::rem#3 ← (byte) divr8u::rem#5 - (byte) divr8u::divisor#0
|
||||
to:divr8u::@3
|
||||
divr8u::@3: scope:[divr8u] from divr8u::@2 divr8u::@5
|
||||
[213] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 )
|
||||
[213] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 )
|
||||
[214] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2
|
||||
[215] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1
|
||||
[215] (byte) divr8u::return#1 ← phi( divr8u::@2/(byte) divr8u::quotient#1 divr8u::@5/(byte) divr8u::quotient#2 )
|
||||
[215] (byte) divr8u::rem#10 ← phi( divr8u::@2/(byte) divr8u::rem#5 divr8u::@5/(byte) divr8u::rem#3 )
|
||||
[216] (byte) divr8u::i#1 ← ++ (byte) divr8u::i#2
|
||||
[217] if((byte) divr8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto divr8u::@1
|
||||
to:divr8u::@6
|
||||
divr8u::@6: scope:[divr8u] from divr8u::@3
|
||||
[216] (byte) rem8u#17 ← (byte) divr8u::rem#10
|
||||
[218] (byte) rem8u#17 ← (byte) divr8u::rem#10
|
||||
to:divr8u::@return
|
||||
divr8u::@return: scope:[divr8u] from divr8u::@6
|
||||
[217] return
|
||||
[219] return
|
||||
to:@return
|
||||
test_16u: scope:[test_16u] from main::@2
|
||||
[218] phi()
|
||||
[220] phi()
|
||||
to:test_16u::@1
|
||||
test_16u::@1: scope:[test_16u] from test_16u test_16u::@10
|
||||
[219] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@10/(byte) test_16u::i#1 )
|
||||
[220] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::i#10)
|
||||
[221] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::i#10)
|
||||
[222] (word) div16u::dividend#0 ← (word) test_16u::dividend#0
|
||||
[223] (word) div16u::divisor#0 ← (word) test_16u::divisor#0
|
||||
[224] call div16u
|
||||
[225] (word) div16u::return#2 ← (word) div16u::return#0
|
||||
[221] (byte) test_16u::i#10 ← phi( test_16u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_16u::@10/(byte) test_16u::i#1 )
|
||||
[222] (byte) test_16u::$10 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[223] (word) test_16u::dividend#0 ← *((const word[]) test_16u::dividends#0 + (byte) test_16u::$10)
|
||||
[224] (byte) test_16u::$11 ← (byte) test_16u::i#10 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[225] (word) test_16u::divisor#0 ← *((const word[]) test_16u::divisors#0 + (byte) test_16u::$11)
|
||||
[226] (word) div16u::dividend#0 ← (word) test_16u::dividend#0
|
||||
[227] (word) div16u::divisor#0 ← (word) test_16u::divisor#0
|
||||
[228] call div16u
|
||||
[229] (word) div16u::return#2 ← (word) div16u::return#0
|
||||
to:test_16u::@2
|
||||
test_16u::@2: scope:[test_16u] from test_16u::@1
|
||||
[226] (word) test_16u::res#0 ← (word) div16u::return#2
|
||||
[227] (word) print_word::w#1 ← (word) test_16u::dividend#0
|
||||
[228] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1
|
||||
[229] call print_word
|
||||
[230] (word) test_16u::res#0 ← (word) div16u::return#2
|
||||
[231] (word) print_word::w#1 ← (word) test_16u::dividend#0
|
||||
[232] (byte*~) print_char_cursor#166 ← (byte*) print_line_cursor#1
|
||||
[233] call print_word
|
||||
to:test_16u::@3
|
||||
test_16u::@3: scope:[test_16u] from test_16u::@2
|
||||
[230] phi()
|
||||
[231] call print_str
|
||||
to:test_16u::@4
|
||||
test_16u::@4: scope:[test_16u] from test_16u::@3
|
||||
[232] (word) print_word::w#2 ← (word) test_16u::divisor#0
|
||||
[233] call print_word
|
||||
to:test_16u::@5
|
||||
test_16u::@5: scope:[test_16u] from test_16u::@4
|
||||
[234] phi()
|
||||
[235] call print_str
|
||||
to:test_16u::@6
|
||||
test_16u::@6: scope:[test_16u] from test_16u::@5
|
||||
[236] (word) print_word::w#3 ← (word) test_16u::res#0
|
||||
to:test_16u::@4
|
||||
test_16u::@4: scope:[test_16u] from test_16u::@3
|
||||
[236] (word) print_word::w#2 ← (word) test_16u::divisor#0
|
||||
[237] call print_word
|
||||
to:test_16u::@7
|
||||
test_16u::@7: scope:[test_16u] from test_16u::@6
|
||||
to:test_16u::@5
|
||||
test_16u::@5: scope:[test_16u] from test_16u::@4
|
||||
[238] phi()
|
||||
[239] call print_str
|
||||
to:test_16u::@6
|
||||
test_16u::@6: scope:[test_16u] from test_16u::@5
|
||||
[240] (word) print_word::w#3 ← (word) test_16u::res#0
|
||||
[241] call print_word
|
||||
to:test_16u::@7
|
||||
test_16u::@7: scope:[test_16u] from test_16u::@6
|
||||
[242] phi()
|
||||
[243] call print_str
|
||||
to:test_16u::@8
|
||||
test_16u::@8: scope:[test_16u] from test_16u::@7
|
||||
[240] (word) print_word::w#4 ← (word) rem16u#1
|
||||
[241] call print_word
|
||||
[244] (word) print_word::w#4 ← (word) rem16u#1
|
||||
[245] call print_word
|
||||
to:test_16u::@9
|
||||
test_16u::@9: scope:[test_16u] from test_16u::@8
|
||||
[242] phi()
|
||||
[243] call print_ln
|
||||
[246] phi()
|
||||
[247] call print_ln
|
||||
to:test_16u::@10
|
||||
test_16u::@10: scope:[test_16u] from test_16u::@9
|
||||
[244] (byte) test_16u::i#1 ← (byte) test_16u::i#10 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[245] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $c) goto test_16u::@1
|
||||
[248] (byte) test_16u::i#1 ← ++ (byte) test_16u::i#10
|
||||
[249] if((byte) test_16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_16u::@1
|
||||
to:test_16u::@return
|
||||
test_16u::@return: scope:[test_16u] from test_16u::@10
|
||||
[246] return
|
||||
[250] return
|
||||
to:@return
|
||||
div16u: scope:[div16u] from test_16u::@1
|
||||
[247] (word) divr16u::dividend#1 ← (word) div16u::dividend#0
|
||||
[248] (word) divr16u::divisor#0 ← (word) div16u::divisor#0
|
||||
[249] call divr16u
|
||||
[250] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
[251] (word) divr16u::dividend#1 ← (word) div16u::dividend#0
|
||||
[252] (word) divr16u::divisor#0 ← (word) div16u::divisor#0
|
||||
[253] call divr16u
|
||||
[254] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div16u::@1
|
||||
div16u::@1: scope:[div16u] from div16u
|
||||
[251] (word) div16u::return#0 ← (word) divr16u::return#2
|
||||
[255] (word) div16u::return#0 ← (word) divr16u::return#2
|
||||
to:div16u::@return
|
||||
div16u::@return: scope:[div16u] from div16u::@1
|
||||
[252] return
|
||||
[256] return
|
||||
to:@return
|
||||
test_8u: scope:[test_8u] from main::@1
|
||||
[253] phi()
|
||||
[257] phi()
|
||||
to:test_8u::@1
|
||||
test_8u::@1: scope:[test_8u] from test_8u test_8u::@11
|
||||
[254] (byte*) print_line_cursor#41 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*) print_line_cursor#1 )
|
||||
[254] (byte*) print_char_cursor#138 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*~) print_char_cursor#188 )
|
||||
[254] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@11/(byte) test_8u::i#1 )
|
||||
[255] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10)
|
||||
[256] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10)
|
||||
[257] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0
|
||||
[258] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0
|
||||
[259] call div8u
|
||||
[260] (byte) div8u::return#3 ← (byte) div8u::return#0
|
||||
[258] (byte*) print_line_cursor#41 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*) print_line_cursor#1 )
|
||||
[258] (byte*) print_char_cursor#138 ← phi( test_8u/((byte*))(word/signed word/dword/signed dword) $400 test_8u::@11/(byte*~) print_char_cursor#188 )
|
||||
[258] (byte) test_8u::i#10 ← phi( test_8u/(byte/signed byte/word/signed word/dword/signed dword) 0 test_8u::@11/(byte) test_8u::i#1 )
|
||||
[259] (byte) test_8u::dividend#0 ← *((const byte[]) test_8u::dividends#0 + (byte) test_8u::i#10)
|
||||
[260] (byte) test_8u::divisor#0 ← *((const byte[]) test_8u::divisors#0 + (byte) test_8u::i#10)
|
||||
[261] (byte) div8u::dividend#1 ← (byte) test_8u::dividend#0
|
||||
[262] (byte) div8u::divisor#1 ← (byte) test_8u::divisor#0
|
||||
[263] call div8u
|
||||
[264] (byte) div8u::return#3 ← (byte) div8u::return#0
|
||||
to:test_8u::@2
|
||||
test_8u::@2: scope:[test_8u] from test_8u::@1
|
||||
[261] (byte) test_8u::res#0 ← (byte) div8u::return#3
|
||||
[262] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0
|
||||
[263] call print_byte
|
||||
[265] (byte) test_8u::res#0 ← (byte) div8u::return#3
|
||||
[266] (byte) print_byte::b#3 ← (byte) test_8u::dividend#0
|
||||
[267] call print_byte
|
||||
to:test_8u::@3
|
||||
test_8u::@3: scope:[test_8u] from test_8u::@2
|
||||
[264] phi()
|
||||
[265] call print_str
|
||||
to:test_8u::@4
|
||||
test_8u::@4: scope:[test_8u] from test_8u::@3
|
||||
[266] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0
|
||||
[267] call print_byte
|
||||
to:test_8u::@5
|
||||
test_8u::@5: scope:[test_8u] from test_8u::@4
|
||||
[268] phi()
|
||||
[269] call print_str
|
||||
to:test_8u::@6
|
||||
test_8u::@6: scope:[test_8u] from test_8u::@5
|
||||
[270] (byte) print_byte::b#5 ← (byte) test_8u::res#0
|
||||
to:test_8u::@4
|
||||
test_8u::@4: scope:[test_8u] from test_8u::@3
|
||||
[270] (byte) print_byte::b#4 ← (byte) test_8u::divisor#0
|
||||
[271] call print_byte
|
||||
to:test_8u::@7
|
||||
test_8u::@7: scope:[test_8u] from test_8u::@6
|
||||
to:test_8u::@5
|
||||
test_8u::@5: scope:[test_8u] from test_8u::@4
|
||||
[272] phi()
|
||||
[273] call print_str
|
||||
to:test_8u::@6
|
||||
test_8u::@6: scope:[test_8u] from test_8u::@5
|
||||
[274] (byte) print_byte::b#5 ← (byte) test_8u::res#0
|
||||
[275] call print_byte
|
||||
to:test_8u::@7
|
||||
test_8u::@7: scope:[test_8u] from test_8u::@6
|
||||
[276] phi()
|
||||
[277] call print_str
|
||||
to:test_8u::@8
|
||||
test_8u::@8: scope:[test_8u] from test_8u::@7
|
||||
[274] (byte) print_byte::b#6 ← (byte) rem8u#17
|
||||
[275] call print_byte
|
||||
[278] (byte) print_byte::b#6 ← (byte) rem8u#17
|
||||
[279] call print_byte
|
||||
to:test_8u::@9
|
||||
test_8u::@9: scope:[test_8u] from test_8u::@8
|
||||
[276] phi()
|
||||
[277] call print_ln
|
||||
[280] phi()
|
||||
[281] call print_ln
|
||||
to:test_8u::@10
|
||||
test_8u::@10: scope:[test_8u] from test_8u::@9
|
||||
[278] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10
|
||||
[279] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11
|
||||
[282] (byte) test_8u::i#1 ← ++ (byte) test_8u::i#10
|
||||
[283] if((byte) test_8u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 6) goto test_8u::@11
|
||||
to:test_8u::@return
|
||||
test_8u::@return: scope:[test_8u] from test_8u::@10
|
||||
[280] return
|
||||
[284] return
|
||||
to:@return
|
||||
test_8u::@11: scope:[test_8u] from test_8u::@10
|
||||
[281] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1
|
||||
[285] (byte*~) print_char_cursor#188 ← (byte*) print_line_cursor#1
|
||||
to:test_8u::@1
|
||||
print_cls: scope:[print_cls] from main
|
||||
[282] phi()
|
||||
[286] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[283] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[284] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[285] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[286] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
[287] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) $400 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[288] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[289] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[290] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) $400+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[287] return
|
||||
[291] return
|
||||
to:@return
|
||||
|
File diff suppressed because one or more lines are too long
@ -234,7 +234,7 @@
|
||||
(byte[]) print_hextab
|
||||
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 3.9099999999999993
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 3.759615384615385
|
||||
(byte*) print_line_cursor#20 print_line_cursor zp ZP_WORD:3 204.0
|
||||
(byte*) print_line_cursor#39 print_line_cursor zp ZP_WORD:3 46.0
|
||||
(byte*) print_line_cursor#41 print_line_cursor zp ZP_WORD:3 0.9565217391304348
|
||||
@ -303,6 +303,8 @@
|
||||
(const string) str1 str1 = (string) " = @"
|
||||
(const string) str2 str2 = (string) " @"
|
||||
(void()) test_16s()
|
||||
(byte) test_16s::$16 reg byte a 22.0
|
||||
(byte) test_16s::$17 reg byte a 22.0
|
||||
(label) test_16s::@1
|
||||
(label) test_16s::@10
|
||||
(label) test_16s::@2
|
||||
@ -315,7 +317,7 @@
|
||||
(label) test_16s::@9
|
||||
(label) test_16s::@return
|
||||
(signed word) test_16s::dividend
|
||||
(signed word) test_16s::dividend#0 dividend zp ZP_WORD:5 4.714285714285714
|
||||
(signed word) test_16s::dividend#0 dividend zp ZP_WORD:5 4.125
|
||||
(signed word[]) test_16s::dividends
|
||||
(const signed word[]) test_16s::dividends#0 dividends = { (word/signed word/dword/signed dword) $7fff, (word/signed word/dword/signed dword) $7fff, -(word/signed word/dword/signed dword) $7fff, -(word/signed word/dword/signed dword) $7fff, (word/signed word/dword/signed dword) $7fff, -(word/signed word/dword/signed dword) $7fff }
|
||||
(signed word) test_16s::divisor
|
||||
@ -324,10 +326,12 @@
|
||||
(const signed word[]) test_16s::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, -(byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) $b, -(byte/signed byte/word/signed word/dword/signed dword) $d, -(byte/signed byte/word/signed word/dword/signed dword) $11, (byte/signed byte/word/signed word/dword/signed dword) $13 }
|
||||
(byte) test_16s::i
|
||||
(byte) test_16s::i#1 i zp ZP_BYTE:2 16.5
|
||||
(byte) test_16s::i#10 i zp ZP_BYTE:2 1.76
|
||||
(byte) test_16s::i#10 i zp ZP_BYTE:2 1.6296296296296295
|
||||
(signed word) test_16s::res
|
||||
(signed word) test_16s::res#0 res zp ZP_WORD:14 2.2
|
||||
(void()) test_16u()
|
||||
(byte) test_16u::$10 reg byte a 22.0
|
||||
(byte) test_16u::$11 reg byte a 22.0
|
||||
(label) test_16u::@1
|
||||
(label) test_16u::@10
|
||||
(label) test_16u::@2
|
||||
@ -340,7 +344,7 @@
|
||||
(label) test_16u::@9
|
||||
(label) test_16u::@return
|
||||
(word) test_16u::dividend
|
||||
(word) test_16u::dividend#0 dividend zp ZP_WORD:5 4.714285714285714
|
||||
(word) test_16u::dividend#0 dividend zp ZP_WORD:5 4.125
|
||||
(word[]) test_16u::dividends
|
||||
(const word[]) test_16u::dividends#0 dividends = { (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff, (word/dword/signed dword) $ffff }
|
||||
(word) test_16u::divisor
|
||||
@ -349,7 +353,7 @@
|
||||
(const word[]) test_16u::divisors#0 divisors = { (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 7, (byte/signed byte/word/signed word/dword/signed dword) $b, (byte/signed byte/word/signed word/dword/signed dword) $d, (byte/signed byte/word/signed word/dword/signed dword) $11, (byte/signed byte/word/signed word/dword/signed dword) $13 }
|
||||
(byte) test_16u::i
|
||||
(byte) test_16u::i#1 i zp ZP_BYTE:2 16.5
|
||||
(byte) test_16u::i#10 i zp ZP_BYTE:2 1.76
|
||||
(byte) test_16u::i#10 i zp ZP_BYTE:2 1.6296296296296295
|
||||
(word) test_16u::res
|
||||
(word) test_16u::res#0 res zp ZP_WORD:14 2.2
|
||||
(void()) test_8s()
|
||||
@ -426,6 +430,8 @@ reg byte y [ divr8u::rem#4 divr8u::rem#10 divr8u::rem#5 divr8u::rem#1 divr8u::re
|
||||
zp ZP_BYTE:17 [ divr8u::dividend#2 divr8u::dividend#0 divr8u::dividend#1 test_8u::res#0 ]
|
||||
zp ZP_BYTE:18 [ divr8u::quotient#3 divr8u::return#1 divr8u::quotient#1 divr8u::quotient#2 ]
|
||||
reg byte x [ divr8u::i#2 divr8u::i#1 ]
|
||||
reg byte a [ test_16s::$16 ]
|
||||
reg byte a [ test_16s::$17 ]
|
||||
zp ZP_WORD:19 [ test_16s::divisor#0 div16s::divisor#0 ]
|
||||
reg byte a [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$2 ]
|
||||
@ -444,4 +450,6 @@ reg byte a [ divr8u::return#0 ]
|
||||
reg byte a [ div8u::return#0 ]
|
||||
reg byte a [ divr8u::$1 ]
|
||||
reg byte x [ rem8u#17 ]
|
||||
reg byte a [ test_16u::$10 ]
|
||||
reg byte a [ test_16u::$11 ]
|
||||
reg byte a [ div8u::return#3 ]
|
||||
|
Loading…
x
Reference in New Issue
Block a user