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

Implemented initial logo scroller. Fixed long branch detection when inlining kickasm. Added needed fragments.

This commit is contained in:
jespergravgaard 2018-07-09 18:39:01 +02:00
parent 5e9b15477a
commit 5abd555206
33 changed files with 14872 additions and 1077 deletions

View File

@ -25,6 +25,14 @@ public class AsmInlineKickAsm implements AsmLine {
this.kickAsmCode = kickAsmCode; this.kickAsmCode = kickAsmCode;
} }
/**
* Get the number of source lines in the inline assembler code (for line indexing)
* @return The number of source lines
*/
public long getLineCount() {
return kickAsmCode.chars().filter(x -> x == '\n').count() + 1;
}
@Override @Override
public int getLineBytes() { public int getLineBytes() {
return bytes; return bytes;

View File

@ -0,0 +1 @@
lda {z1}

View File

@ -0,0 +1,3 @@
eor #$ff
clc
adc #{c1}+1

View File

@ -0,0 +1,3 @@
eor #$ff
clc
adc #{c1}+1

View File

@ -0,0 +1,2 @@
clc
adc #{c1}

View File

@ -0,0 +1,13 @@
lda {z1}+1
cmp #$80
ror {z1}+1
ror {z1}
lda {z1}+1
cmp #$80
ror {z1}+1
ror {z1}
lda {z1}+1
cmp #$80
ror {z1}+1
ror {z1}

View File

@ -0,0 +1,16 @@
lda {z2}+1
cmp #$80
ror
sta {z1}+1
lda {z2}
ror
sta {z1}
lda {z1}+1
cmp #$80
ror {z1}+1
ror {z1}
lda {z1}+1
cmp #$80
ror {z1}+1
ror {z1}

View File

@ -44,6 +44,7 @@ public class Pass5FixLongBranches extends Pass5AsmOptimization {
/** /**
* Detect if any branch distance is to long, and fix it by rewriting the branch if it is. * Detect if any branch distance is to long, and fix it by rewriting the branch if it is.
*
* @return true if any branch was rewritten * @return true if any branch was rewritten
*/ */
private boolean step() { private boolean step() {
@ -62,7 +63,15 @@ public class Pass5FixLongBranches extends Pass5AsmOptimization {
try { try {
//getLog().append("ASM"); //getLog().append("ASM");
//getLog().append(getProgram().getAsm().toString(false, true)); //getLog().append(getProgram().getAsm().toString(false, true));
writeOutputFile(fileName, ".asm", getProgram().getAsm().toString(false)); writeOutputFile(fileName, ".asm", getProgram().getAsm().toString(false));
// Copy Resource Files
for(Path asmResourceFile : getProgram().getAsmResourceFiles()) {
File binFile = getTmpFile(asmResourceFile.getFileName().toString());
Files.copy(asmResourceFile, binFile.toPath());
}
} catch(IOException e) { } catch(IOException e) {
throw new CompileError("Error writing ASM temp file.", e); throw new CompileError("Error writing ASM temp file.", e);
} }
@ -105,6 +114,7 @@ public class Pass5FixLongBranches extends Pass5AsmOptimization {
/** /**
* Fix a long branch detected at a specific ASM index * Fix a long branch detected at a specific ASM index
*
* @param idx The index of the ASM line with the long branch * @param idx The index of the ASM line with the long branch
* @return True if the branch was fixed * @return True if the branch was fixed
*/ */
@ -175,4 +185,8 @@ public class Pass5FixLongBranches extends Pass5AsmOptimization {
return new File(tmpDir.toFile(), fileName + extension); return new File(tmpDir.toFile(), fileName + extension);
} }
public File getTmpFile(String fileName) {
return new File(tmpDir.toFile(), fileName );
}
} }

View File

@ -1,6 +1,7 @@
package dk.camelot64.kickc.passes; package dk.camelot64.kickc.passes;
import dk.camelot64.kickc.asm.AsmComment; import dk.camelot64.kickc.asm.AsmComment;
import dk.camelot64.kickc.asm.AsmInlineKickAsm;
import dk.camelot64.kickc.asm.AsmLine; import dk.camelot64.kickc.asm.AsmLine;
import dk.camelot64.kickc.asm.AsmSegment; import dk.camelot64.kickc.asm.AsmSegment;
import dk.camelot64.kickc.model.Program; import dk.camelot64.kickc.model.Program;
@ -20,6 +21,10 @@ public class Pass5ReindexAsmLines extends Pass5AsmOptimization {
for(AsmLine asmLine : asmSegment.getLines()) { for(AsmLine asmLine : asmSegment.getLines()) {
if((asmLine instanceof AsmComment)) { if((asmLine instanceof AsmComment)) {
asmLine.setIndex(-1); asmLine.setIndex(-1);
} else if(asmLine instanceof AsmInlineKickAsm) {
asmLine.setIndex(nextIndex);
AsmInlineKickAsm inlineKickAsm = (AsmInlineKickAsm) asmLine;
nextIndex += inlineKickAsm.getLineCount();
} else { } else {
asmLine.setIndex(nextIndex++); asmLine.setIndex(nextIndex++);
} }

View File

@ -13,6 +13,7 @@ import org.junit.Test;
import java.io.*; import java.io.*;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
@ -893,8 +894,12 @@ public class TestPrograms {
writeBinFile(fileName, ".asm", program.getAsm().toString(false)); writeBinFile(fileName, ".asm", program.getAsm().toString(false));
for(Path asmResourceFile : program.getAsmResourceFiles()) { for(Path asmResourceFile : program.getAsmResourceFiles()) {
File binFile = getBinFile(asmResourceFile.getFileName().toString()); File binFile = getBinFile(asmResourceFile.getFileName().toString());
try {
Files.copy(asmResourceFile, binFile.toPath()); Files.copy(asmResourceFile, binFile.toPath());
}; } catch(FileAlreadyExistsException e) {
// Ignore this
}
}
File asmFile = getBinFile(fileName, ".asm"); File asmFile = getBinFile(fileName, ".asm");
File asmPrgFile = getBinFile(fileName, ".prg"); File asmPrgFile = getBinFile(fileName, ".prg");

View File

@ -9,11 +9,12 @@ const word XSIN_SIZE = 512;
signed word[512] align($100) xsin; signed word[512] align($100) xsin;
void main() { void main() {
asm { sei }
*BORDERCOL = WHITE; *BORDERCOL = WHITE;
*BGCOL = *BGCOL2 = DARK_GREY; *BGCOL = *BGCOL2 = DARK_GREY;
*BGCOL3 = BLACK; *BGCOL3 = BLACK;
*D018 = toD018(SCREEN, LOGO); *D018 = toD018(SCREEN, LOGO);
*D016 = VIC_MCM | VIC_CSEL; *D016 = VIC_MCM;
fill(SCREEN, 1000, BLACK); fill(SCREEN, 1000, BLACK);
fill(COLS, 1000, WHITE|8); fill(COLS, 1000, WHITE|8);
for(byte ch: 0..239) { for(byte ch: 0..239) {
@ -23,37 +24,76 @@ void main() {
loop(); loop();
} }
// Generate signed word sinus table - with values in the range min-max.
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
void sin16s_gen2(signed word* sintab, word wavelength, signed word min, signed word max) {
signed word ampl = max-min;
signed word offs = min + ampl>>1; // ampl is always positive so shifting left does not alter the sign
// u[4.28] step = PI*2/wavelength
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
// Iterate over the table
dword x = 0; // u[4.28]
for( word i=0; i<wavelength; i++) {
signed dword ssin = mul16s(sin16s(x), ampl); // The signed sin() only has values [-1/2 ; 1/2] there ampl*sin has the right amplitude
*sintab = offs + (signed word)>ssin;
sintab = sintab + 2;
x = x + step;
}
}
word xsin_idx = 0; word xsin_idx = 0;
void loop() { void loop() {
while(true) { while(true) {
while(*RASTER!=$ff) {} // Wait for the raster to reach the bottom of the screen
signed word xpos = *(xsin+xsin_idx>>1); while(*RASTER!=$ff) {
SCREEN[0] = <xpos; }
SCREEN[1] = >xpos; (*BORDERCOL)++;
signed word xpos = *(xsin+xsin_idx);
render_logo(xpos);
xsin_idx += 2; xsin_idx += 2;
if(xsin_idx==XSIN_SIZE) { if(xsin_idx==XSIN_SIZE*2) {
xsin_idx = 0; xsin_idx = 0;
} }
(*BORDERCOL)--;
}
}
void render_logo(signed word xpos) {
byte logo_idx;
byte screen_idx;
*D016 = VIC_MCM|((byte)xpos&7);
signed byte x_char = (signed byte)(xpos>>3);
if(xpos<0) {
// Render right side of the logo and some spaces
logo_idx = (byte)(-x_char);
screen_idx = 0;
while(logo_idx!=40) {
SCREEN[screen_idx] = logo_idx;
(SCREEN+40*1)[screen_idx] = logo_idx+40*1;
(SCREEN+40*2)[screen_idx] = logo_idx+40*2;
(SCREEN+40*3)[screen_idx] = logo_idx+40*3;
(SCREEN+40*4)[screen_idx] = logo_idx+40*4;
(SCREEN+40*5)[screen_idx] = logo_idx+40*5;
screen_idx++;
logo_idx++;
}
while(screen_idx!=40) {
SCREEN[screen_idx] = $00;
(SCREEN+40*1)[screen_idx] = $00;
(SCREEN+40*2)[screen_idx] = $00;
(SCREEN+40*3)[screen_idx] = $00;
(SCREEN+40*4)[screen_idx] = $00;
(SCREEN+40*5)[screen_idx] = $00;
screen_idx++;
}
} else {
// Render some spaces and the left of the logo
byte logo_start = (byte)x_char;
screen_idx = 0;
while(screen_idx!=logo_start) {
SCREEN[screen_idx] = $00;
(SCREEN+40*1)[screen_idx] = $00;
(SCREEN+40*2)[screen_idx] = $00;
(SCREEN+40*3)[screen_idx] = $00;
(SCREEN+40*4)[screen_idx] = $00;
(SCREEN+40*5)[screen_idx] = $00;
screen_idx++;
}
logo_idx = 0;
while(screen_idx!=40) {
SCREEN[screen_idx] = logo_idx;
(SCREEN+40*1)[screen_idx] = logo_idx+40*1;
(SCREEN+40*2)[screen_idx] = logo_idx+40*2;
(SCREEN+40*3)[screen_idx] = logo_idx+40*3;
(SCREEN+40*4)[screen_idx] = logo_idx+40*4;
(SCREEN+40*5)[screen_idx] = logo_idx+40*5;
screen_idx++;
logo_idx++;
}
} }
} }

View File

@ -36,6 +36,23 @@ void sin16s_gen(signed word* sintab, word wavelength) {
} }
} }
// Generate signed word sinus table - with values in the range min-max.
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
void sin16s_gen2(signed word* sintab, word wavelength, signed word min, signed word max) {
signed word ampl = max-min;
signed word offs = min + ampl>>1; // ampl is always positive so shifting left does not alter the sign
// u[4.28] step = PI*2/wavelength
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
// 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;
x = x + step;
}
}
// Generate signed byte sinus table - on the full -$7f - $7f range // Generate signed byte sinus table - on the full -$7f - $7f range
// sintab - the table to generate into // sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) // wavelength - the number of sinus points in a total sinus wavelength (the size of the table)

View File

@ -0,0 +1,723 @@
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.label RASTER = $d012
.label BORDERCOL = $d020
.label BGCOL = $d021
.label BGCOL2 = $d022
.label BGCOL3 = $d023
.label D016 = $d016
.const VIC_MCM = $10
.label D018 = $d018
.label COLS = $d800
.const BLACK = 0
.const WHITE = 1
.const DARK_GREY = $b
.const PI2_u4f28 = $6487ed51
.const PI_u4f28 = $3243f6a9
.const PI_HALF_u4f28 = $1921fb54
.label SCREEN = $400
.label LOGO = $2000
.const XSIN_SIZE = $200
.label rem16u = 2
.label xsin_idx = 2
.label pc_restore = *
.pc = $2000
logo:
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
.for (var y=0; y<6 ; y++)
.for (var x=0;x<40; x++)
.for(var cp=0; cp<8; cp++)
.byte logoPic.getMulticolorByte(x,cp+y*8)
.pc = pc_restore
jsr main
main: {
.const toD0181_return = (>(SCREEN&$3fff)<<2)|(>LOGO)>>2&$f
sei
lda #WHITE
sta BORDERCOL
lda #DARK_GREY
sta BGCOL2
sta BGCOL
lda #BLACK
sta BGCOL3
lda #toD0181_return
sta D018
lda #VIC_MCM
sta D016
ldx #BLACK
lda #<SCREEN
sta fill.addr
lda #>SCREEN
sta fill.addr+1
jsr fill
ldx #WHITE|8
lda #<COLS
sta fill.addr
lda #>COLS
sta fill.addr+1
jsr fill
ldx #0
b1:
txa
sta SCREEN,x
inx
cpx #$f0
bne b1
jsr sin16s_gen2
jsr loop
rts
}
loop: {
.label _1 = 8
.label xpos = 8
lda #<0
sta xsin_idx
sta xsin_idx+1
b4:
lda RASTER
cmp #$ff
bne b4
inc BORDERCOL
lda xsin_idx
clc
adc #<xsin
sta _1
lda xsin_idx+1
adc #>xsin
sta _1+1
ldy #0
lda (xpos),y
tax
iny
lda (xpos),y
stx xpos
sta xpos+1
jsr render_logo
lda xsin_idx
clc
adc #2
sta xsin_idx
bcc !+
inc xsin_idx+1
!:
lda xsin_idx+1
cmp #>XSIN_SIZE*2
bne b7
lda xsin_idx
cmp #<XSIN_SIZE*2
bne b7
lda #<0
sta xsin_idx
sta xsin_idx+1
b7:
dec BORDERCOL
jmp b4
}
render_logo: {
.label _3 = $e
.label xpos = 8
.label x_char = $16
lda xpos
and #7
ora #VIC_MCM
sta D016
lda xpos+1
cmp #$80
ror
sta _3+1
lda xpos
ror
sta _3
lda _3+1
cmp #$80
ror _3+1
ror _3
lda _3+1
cmp #$80
ror _3+1
ror _3
lda _3
sta x_char
lda xpos+1
bmi b1
ldy #0
b2:
cpy x_char
bne b3
ldx #0
b5:
cpy #$28
bne b6
breturn:
rts
b6:
txa
sta SCREEN,y
txa
clc
adc #$28*1
sta SCREEN+$28*1,y
txa
clc
adc #$28*2
sta SCREEN+$28*2,y
txa
clc
adc #$28*3
sta SCREEN+$28*3,y
txa
clc
adc #$28*4
sta SCREEN+$28*4,y
txa
clc
adc #$28*5
sta SCREEN+$28*5,y
iny
inx
jmp b5
b3:
lda #0
sta SCREEN,y
sta SCREEN+$28*1,y
sta SCREEN+$28*2,y
sta SCREEN+$28*3,y
sta SCREEN+$28*4,y
sta SCREEN+$28*5,y
iny
jmp b2
b1:
lda x_char
eor #$ff
clc
adc #1
tax
ldy #0
b9:
cpx #$28
bne b10
b12:
cpy #$28
bne b13
jmp breturn
b13:
lda #0
sta SCREEN,y
sta SCREEN+$28*1,y
sta SCREEN+$28*2,y
sta SCREEN+$28*3,y
sta SCREEN+$28*4,y
sta SCREEN+$28*5,y
iny
jmp b12
b10:
txa
sta SCREEN,y
txa
clc
adc #$28*1
sta SCREEN+$28*1,y
txa
clc
adc #$28*2
sta SCREEN+$28*2,y
txa
clc
adc #$28*3
sta SCREEN+$28*3,y
txa
clc
adc #$28*4
sta SCREEN+$28*4,y
txa
clc
adc #$28*5
sta SCREEN+$28*5,y
iny
inx
jmp b9
}
sin16s_gen2: {
.const min = -$140
.const max = $140
.label ampl = max-min
.const offs = min+(ampl>>1)
.label _5 = $a
.label _6 = $e
.label _8 = $e
.label step = $1b
.label sintab = 2
.label x = 4
.label i = 8
jsr div32u16u
lda #<0
sta i
sta i+1
lda #<xsin
sta sintab
lda #>xsin
sta sintab+1
lda #0
sta x
sta x+1
sta x+2
sta x+3
b1:
lda x
sta sin16s.x
lda x+1
sta sin16s.x+1
lda x+2
sta sin16s.x+2
lda x+3
sta sin16s.x+3
jsr sin16s
jsr mul16s
lda _5+2
sta _6
lda _5+3
sta _6+1
clc
lda _8
adc #<offs
sta _8
lda _8+1
adc #>offs
sta _8+1
ldy #0
lda _8
sta (sintab),y
iny
lda _8+1
sta (sintab),y
lda sintab
clc
adc #2
sta sintab
bcc !+
inc sintab+1
!:
lda x
clc
adc step
sta x
lda x+1
adc step+1
sta x+1
lda x+2
adc step+2
sta x+2
lda x+3
adc step+3
sta x+3
inc i
bne !+
inc i+1
!:
lda i+1
cmp #>XSIN_SIZE
bcc b1
bne !+
lda i
cmp #<XSIN_SIZE
bcc b1
!:
rts
}
mul16s: {
.label _6 = $e
.label _16 = $e
.label m = $a
.label return = $a
.label a = $17
lda a
sta mul16u.a
lda a+1
sta mul16u.a+1
lda #<sin16s_gen2.ampl
sta mul16u.b
lda #>sin16s_gen2.ampl
sta mul16u.b+1
jsr mul16u
lda a+1
bpl b2
lda m+2
sta _6
lda m+3
sta _6+1
lda _16
sec
sbc #<sin16s_gen2.ampl
sta _16
lda _16+1
sbc #>sin16s_gen2.ampl
sta _16+1
lda _16
sta m+2
lda _16+1
sta m+3
b2:
rts
}
mul16u: {
.label mb = $12
.label a = $10
.label res = $a
.label return = $a
.label b = $e
lda b
sta mb
lda b+1
sta mb+1
lda #0
sta mb+2
sta mb+3
sta res
sta res+1
sta res+2
sta res+3
b1:
lda a
bne b2
lda a+1
bne b2
rts
b2:
lda a
and #1
cmp #0
beq b4
lda res
clc
adc mb
sta res
lda res+1
adc mb+1
sta res+1
lda res+2
adc mb+2
sta res+2
lda res+3
adc mb+3
sta res+3
b4:
clc
ror a+1
ror a
asl mb
rol mb+1
rol mb+2
rol mb+3
jmp b1
}
sin16s: {
.label _6 = $a
.label x = $a
.label return = $17
.label x1 = $1f
.label x2 = $19
.label x3 = $19
.label x3_6 = $e
.label usinx = $17
.label x4 = $19
.label x5 = $e
.label x5_128 = $e
.label sinx = $17
.label isUpper = $16
lda x+3
cmp #>PI_u4f28>>$10
bcc b4
bne !+
lda x+2
cmp #<PI_u4f28>>$10
bcc b4
bne !+
lda x+1
cmp #>PI_u4f28
bcc b4
bne !+
lda x
cmp #<PI_u4f28
bcc b4
!:
lda x
sec
sbc #<PI_u4f28
sta x
lda x+1
sbc #>PI_u4f28
sta x+1
lda x+2
sbc #<PI_u4f28>>$10
sta x+2
lda x+3
sbc #>PI_u4f28>>$10
sta x+3
lda #1
sta isUpper
jmp b1
b4:
lda #0
sta isUpper
b1:
lda x+3
cmp #>PI_HALF_u4f28>>$10
bcc b2
bne !+
lda x+2
cmp #<PI_HALF_u4f28>>$10
bcc b2
bne !+
lda x+1
cmp #>PI_HALF_u4f28
bcc b2
bne !+
lda x
cmp #<PI_HALF_u4f28
bcc b2
!:
lda #<PI_u4f28
sec
sbc x
sta x
lda #>PI_u4f28
sbc x+1
sta x+1
lda #<PI_u4f28>>$10
sbc x+2
sta x+2
lda #>PI_u4f28>>$10
sbc x+3
sta x+3
b2:
ldy #3
!:
asl _6
rol _6+1
rol _6+2
rol _6+3
dey
bne !-
lda _6+2
sta x1
lda _6+3
sta x1+1
lda x1
sta mulu16_sel.v1
lda x1+1
sta mulu16_sel.v1+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #0
jsr mulu16_sel
lda mulu16_sel.return
sta x2
lda mulu16_sel.return+1
sta x2+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #1
jsr mulu16_sel
lda mulu16_sel.return
sta mulu16_sel.return_1
lda mulu16_sel.return+1
sta mulu16_sel.return_1+1
ldx #1
lda #<$10000/6
sta mulu16_sel.v2
lda #>$10000/6
sta mulu16_sel.v2+1
jsr mulu16_sel
lda x1
sec
sbc x3_6
sta usinx
lda x1+1
sbc x3_6+1
sta usinx+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #0
jsr mulu16_sel
lda mulu16_sel.return
sta mulu16_sel.return_10
lda mulu16_sel.return+1
sta mulu16_sel.return_10+1
lda x1
sta mulu16_sel.v2
lda x1+1
sta mulu16_sel.v2+1
ldx #0
jsr mulu16_sel
ldy #4
!:
lsr x5_128+1
ror x5_128
dey
bne !-
lda usinx
clc
adc x5_128
sta usinx
lda usinx+1
adc x5_128+1
sta usinx+1
lda isUpper
beq b3
sec
lda sinx
eor #$ff
adc #0
sta sinx
lda sinx+1
eor #$ff
adc #0
sta sinx+1
b3:
rts
}
mulu16_sel: {
.label _0 = $a
.label _1 = $a
.label v1 = $19
.label v2 = $e
.label return = $e
.label return_1 = $19
.label return_10 = $19
lda v1
sta mul16u.a
lda v1+1
sta mul16u.a+1
jsr mul16u
cpx #0
beq !e+
!:
asl _1
rol _1+1
rol _1+2
rol _1+3
dex
bne !-
!e:
lda _1+2
sta return
lda _1+3
sta return+1
rts
}
div32u16u: {
.label quotient_hi = $10
.label quotient_lo = $e
.label return = $1b
lda #<PI2_u4f28>>$10
sta divr16u.dividend
lda #>PI2_u4f28>>$10
sta divr16u.dividend+1
lda #<0
sta divr16u.rem
sta divr16u.rem+1
jsr divr16u
lda divr16u.return
sta quotient_hi
lda divr16u.return+1
sta quotient_hi+1
lda #<PI2_u4f28&$ffff
sta divr16u.dividend
lda #>PI2_u4f28&$ffff
sta divr16u.dividend+1
jsr divr16u
lda quotient_hi
sta return+2
lda quotient_hi+1
sta return+3
lda quotient_lo
sta return
lda quotient_lo+1
sta return+1
rts
}
divr16u: {
.label rem = 2
.label dividend = 8
.label quotient = $e
.label return = $e
ldx #0
txa
sta quotient
sta quotient+1
b1:
asl rem
rol rem+1
lda dividend+1
and #$80
cmp #0
beq b2
lda #1
ora rem
sta rem
b2:
asl dividend
rol dividend+1
asl quotient
rol quotient+1
lda rem+1
cmp #>XSIN_SIZE
bcc b3
bne !+
lda rem
cmp #<XSIN_SIZE
bcc b3
!:
inc quotient
bne !+
inc quotient+1
!:
lda rem
sec
sbc #<XSIN_SIZE
sta rem
lda rem+1
sbc #>XSIN_SIZE
sta rem+1
b3:
inx
cpx #$10
bne b1
rts
}
fill: {
.label end = 8
.label addr = 2
lda addr
clc
adc #<$3e8
sta end
lda addr+1
adc #>$3e8
sta end+1
b1:
txa
ldy #0
sta (addr),y
inc addr
bne !+
inc addr+1
!:
lda addr+1
cmp end+1
bne b1
lda addr
cmp end
bne b1
rts
}
.align $100
xsin: .fill $400, 0

View File

@ -0,0 +1,403 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@27
@27: scope:[] from @begin
kickasm {{ .label pc_restore = *
.pc = $2000
logo:
.var logoPic = LoadPicture("logo.png", List().add($444444, $808080, $000000, $ffffff))
.for (var y=0; y<6 ; y++)
.for (var x=0;x<40; x++)
.for(var cp=0; cp<8; cp++)
.byte logoPic.getMulticolorByte(x,cp+y*8)
.pc = pc_restore
}}
[2] call main [ ] ( )
to:@end
@end: scope:[] from @27
[3] phi() [ ] ( )
main: scope:[main] from @27
asm { sei }
[5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( main:2 [ ] )
[6] *((const byte*) BGCOL2#0) ← (const byte) DARK_GREY#0 [ ] ( main:2 [ ] )
[7] *((const byte*) BGCOL#0) ← *((const byte*) BGCOL2#0) [ ] ( main:2 [ ] )
[8] *((const byte*) BGCOL3#0) ← (const byte) BLACK#0 [ ] ( main:2 [ ] )
to:main::toD0181
main::toD0181: scope:[main] from main
[9] phi() [ ] ( main:2 [ ] )
to:main::@3
main::@3: scope:[main] from main::toD0181
[10] *((const byte*) D018#0) ← (const byte) main::toD0181_return#0 [ ] ( main:2 [ ] )
[11] *((const byte*) D016#0) ← (const byte) VIC_MCM#0 [ ] ( main:2 [ ] )
[12] call fill [ ] ( main:2 [ ] )
to:main::@4
main::@4: scope:[main] from main::@3
[13] phi() [ ] ( main:2 [ ] )
[14] call fill [ ] ( main:2 [ ] )
to:main::@1
main::@1: scope:[main] from main::@1 main::@4
[15] (byte) main::ch#2 ← phi( main::@1/(byte) main::ch#1 main::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::ch#2 ] ( main:2 [ main::ch#2 ] )
[16] *((const byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2 [ main::ch#2 ] ( main:2 [ main::ch#2 ] )
[17] (byte) main::ch#1 ← ++ (byte) main::ch#2 [ main::ch#1 ] ( main:2 [ main::ch#1 ] )
[18] if((byte) main::ch#1!=(byte/word/signed word/dword/signed dword) 240) goto main::@1 [ main::ch#1 ] ( main:2 [ main::ch#1 ] )
to:main::@2
main::@2: scope:[main] from main::@1
[19] phi() [ ] ( main:2 [ ] )
[20] call sin16s_gen2 [ ] ( main:2 [ ] )
to:main::@6
main::@6: scope:[main] from main::@2
[21] phi() [ ] ( main:2 [ ] )
[22] call loop [ ] ( main:2 [ ] )
to:main::@return
main::@return: scope:[main] from main::@6
[23] return [ ] ( main:2 [ ] )
to:@return
loop: scope:[loop] from main::@6
[24] phi() [ ] ( main:2::loop:22 [ ] )
to:loop::@1
loop::@1: scope:[loop] from loop loop::@7
[25] (word) xsin_idx#11 ← phi( loop/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@7/(word) xsin_idx#19 ) [ xsin_idx#11 ] ( main:2::loop:22 [ xsin_idx#11 ] )
to:loop::@4
loop::@4: scope:[loop] from loop::@1 loop::@4
[26] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto loop::@4 [ xsin_idx#11 ] ( main:2::loop:22 [ xsin_idx#11 ] )
to:loop::@6
loop::@6: scope:[loop] from loop::@4
[27] *((const byte*) BORDERCOL#0) ← ++ *((const byte*) BORDERCOL#0) [ xsin_idx#11 ] ( main:2::loop:22 [ xsin_idx#11 ] )
[28] (signed word*~) loop::$1 ← (const signed word[512]) xsin#0 + (word) xsin_idx#11 [ xsin_idx#11 loop::$1 ] ( main:2::loop:22 [ xsin_idx#11 loop::$1 ] )
[29] (signed word) loop::xpos#0 ← *((signed word*~) loop::$1) [ xsin_idx#11 loop::xpos#0 ] ( main:2::loop:22 [ xsin_idx#11 loop::xpos#0 ] )
[30] (signed word) render_logo::xpos#0 ← (signed word) loop::xpos#0 [ xsin_idx#11 render_logo::xpos#0 ] ( main:2::loop:22 [ xsin_idx#11 render_logo::xpos#0 ] )
[31] call render_logo [ xsin_idx#11 ] ( main:2::loop:22 [ xsin_idx#11 ] )
to:loop::@15
loop::@15: scope:[loop] from loop::@6
[32] (word) xsin_idx#3 ← (word) xsin_idx#11 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ xsin_idx#3 ] ( main:2::loop:22 [ xsin_idx#3 ] )
[33] if((word) xsin_idx#3!=(const word) XSIN_SIZE#0*(byte/signed byte/word/signed word/dword/signed dword) 2) goto loop::@16 [ xsin_idx#3 ] ( main:2::loop:22 [ xsin_idx#3 ] )
to:loop::@7
loop::@7: scope:[loop] from loop::@15 loop::@16
[34] (word) xsin_idx#19 ← phi( loop::@15/(byte/signed byte/word/signed word/dword/signed dword) 0 loop::@16/(word) xsin_idx#3 ) [ xsin_idx#19 ] ( main:2::loop:22 [ xsin_idx#19 ] )
[35] *((const byte*) BORDERCOL#0) ← -- *((const byte*) BORDERCOL#0) [ xsin_idx#19 ] ( main:2::loop:22 [ xsin_idx#19 ] )
to:loop::@1
loop::@16: scope:[loop] from loop::@15
[36] phi() [ xsin_idx#3 ] ( main:2::loop:22 [ xsin_idx#3 ] )
to:loop::@7
render_logo: scope:[render_logo] from loop::@6
[37] (byte~) render_logo::$0 ← ((byte)) (signed word) render_logo::xpos#0 [ render_logo::xpos#0 render_logo::$0 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::xpos#0 render_logo::$0 ] )
[38] (byte~) render_logo::$1 ← (byte~) render_logo::$0 & (byte/signed byte/word/signed word/dword/signed dword) 7 [ render_logo::xpos#0 render_logo::$1 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::xpos#0 render_logo::$1 ] )
[39] (byte~) render_logo::$2 ← (const byte) VIC_MCM#0 | (byte~) render_logo::$1 [ render_logo::xpos#0 render_logo::$2 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::xpos#0 render_logo::$2 ] )
[40] *((const byte*) D016#0) ← (byte~) render_logo::$2 [ render_logo::xpos#0 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::xpos#0 ] )
[41] (signed word~) render_logo::$3 ← (signed word) render_logo::xpos#0 >> (byte/signed byte/word/signed word/dword/signed dword) 3 [ render_logo::xpos#0 render_logo::$3 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::xpos#0 render_logo::$3 ] )
[42] (signed byte) render_logo::x_char#0 ← ((signed byte)) (signed word~) render_logo::$3 [ render_logo::xpos#0 render_logo::x_char#0 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::xpos#0 render_logo::x_char#0 ] )
[43] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1 [ render_logo::x_char#0 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 ] )
to:render_logo::@2
render_logo::@2: scope:[render_logo] from render_logo render_logo::@3
[44] (byte) render_logo::screen_idx#13 ← phi( render_logo/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@3/(byte) render_logo::screen_idx#2 ) [ render_logo::x_char#0 render_logo::screen_idx#13 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#13 ] )
[45] if((byte) render_logo::screen_idx#13!=(byte)(signed byte) render_logo::x_char#0) goto render_logo::@3 [ render_logo::x_char#0 render_logo::screen_idx#13 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#13 ] )
to:render_logo::@5
render_logo::@5: scope:[render_logo] from render_logo::@2 render_logo::@6
[46] (byte) render_logo::logo_idx#4 ← phi( render_logo::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@6/(byte) render_logo::logo_idx#2 ) [ render_logo::screen_idx#8 render_logo::logo_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 ] )
[46] (byte) render_logo::screen_idx#8 ← phi( render_logo::@2/(byte) render_logo::screen_idx#13 render_logo::@6/(byte) render_logo::screen_idx#3 ) [ render_logo::screen_idx#8 render_logo::logo_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 ] )
[47] if((byte) render_logo::screen_idx#8!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@6 [ render_logo::screen_idx#8 render_logo::logo_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 ] )
to:render_logo::@return
render_logo::@return: scope:[render_logo] from render_logo::@12 render_logo::@5
[48] return [ ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 ] )
to:@return
render_logo::@6: scope:[render_logo] from render_logo::@5
[49] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#8) ← (byte) render_logo::logo_idx#4 [ render_logo::screen_idx#8 render_logo::logo_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 ] )
[50] (byte/signed word/word/dword/signed dword~) render_logo::$22 ← (byte) render_logo::logo_idx#4 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 [ render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$22 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$22 ] )
[51] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#8) ← (byte/signed word/word/dword/signed dword~) render_logo::$22 [ render_logo::screen_idx#8 render_logo::logo_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 ] )
[52] (byte/signed word/word/dword/signed dword~) render_logo::$26 ← (byte) render_logo::logo_idx#4 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 [ render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$26 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$26 ] )
[53] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#8) ← (byte/signed word/word/dword/signed dword~) render_logo::$26 [ render_logo::screen_idx#8 render_logo::logo_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 ] )
[54] (byte/signed word/word/dword/signed dword~) render_logo::$30 ← (byte) render_logo::logo_idx#4 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 [ render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$30 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$30 ] )
[55] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#8) ← (byte/signed word/word/dword/signed dword~) render_logo::$30 [ render_logo::screen_idx#8 render_logo::logo_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 ] )
[56] (byte/word/signed word/dword/signed dword~) render_logo::$34 ← (byte) render_logo::logo_idx#4 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 [ render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$34 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$34 ] )
[57] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#8) ← (byte/word/signed word/dword/signed dword~) render_logo::$34 [ render_logo::screen_idx#8 render_logo::logo_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 ] )
[58] (byte/word/signed word/dword/signed dword~) render_logo::$38 ← (byte) render_logo::logo_idx#4 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 [ render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$38 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 render_logo::$38 ] )
[59] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#8) ← (byte/word/signed word/dword/signed dword~) render_logo::$38 [ render_logo::screen_idx#8 render_logo::logo_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#8 render_logo::logo_idx#4 ] )
[60] (byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#8 [ render_logo::logo_idx#4 render_logo::screen_idx#3 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#4 render_logo::screen_idx#3 ] )
[61] (byte) render_logo::logo_idx#2 ← ++ (byte) render_logo::logo_idx#4 [ render_logo::screen_idx#3 render_logo::logo_idx#2 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#3 render_logo::logo_idx#2 ] )
to:render_logo::@5
render_logo::@3: scope:[render_logo] from render_logo::@2
[62] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#13) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#13 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#13 ] )
[63] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#13) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#13 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#13 ] )
[64] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#13) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#13 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#13 ] )
[65] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#13) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#13 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#13 ] )
[66] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#13) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#13 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#13 ] )
[67] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#13) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::x_char#0 render_logo::screen_idx#13 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#13 ] )
[68] (byte) render_logo::screen_idx#2 ← ++ (byte) render_logo::screen_idx#13 [ render_logo::x_char#0 render_logo::screen_idx#2 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::x_char#0 render_logo::screen_idx#2 ] )
to:render_logo::@2
render_logo::@1: scope:[render_logo] from render_logo
[69] (signed byte~) render_logo::$39 ← - (signed byte) render_logo::x_char#0 [ render_logo::$39 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::$39 ] )
[70] (byte~) render_logo::logo_idx#9 ← (byte)(signed byte~) render_logo::$39 [ render_logo::logo_idx#9 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#9 ] )
to:render_logo::@9
render_logo::@9: scope:[render_logo] from render_logo::@1 render_logo::@10
[71] (byte) render_logo::screen_idx#10 ← phi( render_logo::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 render_logo::@10/(byte) render_logo::screen_idx#4 ) [ render_logo::logo_idx#5 render_logo::screen_idx#10 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 ] )
[71] (byte) render_logo::logo_idx#5 ← phi( render_logo::@1/(byte~) render_logo::logo_idx#9 render_logo::@10/(byte) render_logo::logo_idx#3 ) [ render_logo::logo_idx#5 render_logo::screen_idx#10 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 ] )
[72] if((byte) render_logo::logo_idx#5!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@10 [ render_logo::logo_idx#5 render_logo::screen_idx#10 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 ] )
to:render_logo::@12
render_logo::@12: scope:[render_logo] from render_logo::@13 render_logo::@9
[73] (byte) render_logo::screen_idx#11 ← phi( render_logo::@13/(byte) render_logo::screen_idx#5 render_logo::@9/(byte) render_logo::screen_idx#10 ) [ render_logo::screen_idx#11 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#11 ] )
[74] if((byte) render_logo::screen_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto render_logo::@13 [ render_logo::screen_idx#11 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#11 ] )
to:render_logo::@return
render_logo::@13: scope:[render_logo] from render_logo::@12
[75] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#11) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#11 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#11 ] )
[76] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) render_logo::screen_idx#11) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#11 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#11 ] )
[77] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) render_logo::screen_idx#11) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#11 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#11 ] )
[78] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 + (byte) render_logo::screen_idx#11) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#11 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#11 ] )
[79] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#11) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#11 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#11 ] )
[80] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#11) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ render_logo::screen_idx#11 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#11 ] )
[81] (byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#11 [ render_logo::screen_idx#5 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::screen_idx#5 ] )
to:render_logo::@12
render_logo::@10: scope:[render_logo] from render_logo::@9
[82] *((const byte*) SCREEN#0 + (byte) render_logo::screen_idx#10) ← (byte) render_logo::logo_idx#5 [ render_logo::logo_idx#5 render_logo::screen_idx#10 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 ] )
[83] (byte/signed word/word/dword/signed dword~) render_logo::$45 ← (byte) render_logo::logo_idx#5 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 1 [ render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$45 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$45 ] )
[84] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(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::$45 [ render_logo::logo_idx#5 render_logo::screen_idx#10 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 ] )
[85] (byte/signed word/word/dword/signed dword~) render_logo::$49 ← (byte) render_logo::logo_idx#5 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 [ render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$49 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$49 ] )
[86] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(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::$49 [ render_logo::logo_idx#5 render_logo::screen_idx#10 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 ] )
[87] (byte/signed word/word/dword/signed dword~) render_logo::$53 ← (byte) render_logo::logo_idx#5 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 3 [ render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$53 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$53 ] )
[88] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(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::$53 [ render_logo::logo_idx#5 render_logo::screen_idx#10 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 ] )
[89] (byte/word/signed word/dword/signed dword~) render_logo::$57 ← (byte) render_logo::logo_idx#5 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 [ render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$57 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$57 ] )
[90] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) render_logo::screen_idx#10) ← (byte/word/signed word/dword/signed dword~) render_logo::$57 [ render_logo::logo_idx#5 render_logo::screen_idx#10 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 ] )
[91] (byte/word/signed word/dword/signed dword~) render_logo::$61 ← (byte) render_logo::logo_idx#5 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 [ render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$61 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 render_logo::$61 ] )
[92] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 + (byte) render_logo::screen_idx#10) ← (byte/word/signed word/dword/signed dword~) render_logo::$61 [ render_logo::logo_idx#5 render_logo::screen_idx#10 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#10 ] )
[93] (byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#10 [ render_logo::logo_idx#5 render_logo::screen_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#5 render_logo::screen_idx#4 ] )
[94] (byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#5 [ render_logo::logo_idx#3 render_logo::screen_idx#4 ] ( main:2::loop:22::render_logo:31 [ xsin_idx#11 render_logo::logo_idx#3 render_logo::screen_idx#4 ] )
to:render_logo::@9
sin16s_gen2: scope:[sin16s_gen2] from main::@2
[95] phi() [ ] ( main:2::sin16s_gen2:20 [ ] )
[96] call div32u16u [ div32u16u::return#0 ] ( main:2::sin16s_gen2:20 [ div32u16u::return#0 ] )
[97] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ div32u16u::return#2 ] ( main:2::sin16s_gen2:20 [ div32u16u::return#2 ] )
to:sin16s_gen2::@3
sin16s_gen2::@3: scope:[sin16s_gen2] from sin16s_gen2
[98] (dword) sin16s_gen2::step#0 ← (dword) div32u16u::return#2 [ sin16s_gen2::step#0 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 ] )
to:sin16s_gen2::@1
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2::@3 sin16s_gen2::@5
[99] (word) sin16s_gen2::i#2 ← phi( sin16s_gen2::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@5/(word) sin16s_gen2::i#1 ) [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] )
[99] (signed word*) sin16s_gen2::sintab#2 ← phi( sin16s_gen2::@3/(const signed word[512]) xsin#0 sin16s_gen2::@5/(signed word*) sin16s_gen2::sintab#0 ) [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] )
[99] (dword) sin16s_gen2::x#2 ← phi( sin16s_gen2::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen2::@5/(dword) sin16s_gen2::x#1 ) [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] )
[100] (dword) sin16s::x#0 ← (dword) sin16s_gen2::x#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] )
[101] call sin16s [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#1 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#1 ] )
[102] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#0 ] )
to:sin16s_gen2::@4
sin16s_gen2::@4: scope:[sin16s_gen2] from sin16s_gen2::@1
[103] (signed word) mul16s::a#0 ← (signed word) sin16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 ] )
[104] call mul16s [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] )
[105] (signed dword) mul16s::return#2 ← (signed dword) mul16s::return#0 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#2 ] )
to:sin16s_gen2::@5
sin16s_gen2::@5: scope:[sin16s_gen2] from sin16s_gen2::@4
[106] (signed dword~) sin16s_gen2::$5 ← (signed dword) mul16s::return#2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$5 ] )
[107] (word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$6 ] )
[108] (signed word~) sin16s_gen2::$8 ← (const signed word) sin16s_gen2::offs#0 + (signed word)(word~) sin16s_gen2::$6 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s_gen2::$8 ] )
[109] *((signed word*) sin16s_gen2::sintab#2) ← (signed word~) sin16s_gen2::$8 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 ] )
[110] (signed word*) sin16s_gen2::sintab#0 ← (signed word*) sin16s_gen2::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::i#2 sin16s_gen2::sintab#0 ] )
[111] (dword) sin16s_gen2::x#1 ← (dword) sin16s_gen2::x#2 + (dword) sin16s_gen2::step#0 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::i#2 sin16s_gen2::x#1 sin16s_gen2::sintab#0 ] )
[112] (word) sin16s_gen2::i#1 ← ++ (word) sin16s_gen2::i#2 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] )
[113] if((word) sin16s_gen2::i#1<(const word) XSIN_SIZE#0) goto sin16s_gen2::@1 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] ( main:2::sin16s_gen2:20 [ sin16s_gen2::step#0 sin16s_gen2::x#1 sin16s_gen2::sintab#0 sin16s_gen2::i#1 ] )
to:sin16s_gen2::@return
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@5
[114] return [ ] ( main:2::sin16s_gen2:20 [ ] )
to:@return
mul16s: scope:[mul16s] from sin16s_gen2::@4
[115] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0 [ mul16s::a#0 mul16u::a#8 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#8 ] )
[116] call mul16u [ mul16s::a#0 mul16u::res#2 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 ] )
[117] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mul16s::a#0 mul16u::return#2 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::return#2 ] )
to:mul16s::@6
mul16s::@6: scope:[mul16s] from mul16s
[118] (dword) mul16s::m#0 ← (dword) mul16u::return#2 [ mul16s::a#0 mul16s::m#0 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16s::m#0 ] )
[119] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1 [ mul16s::m#0 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 ] )
to:mul16s::@3
mul16s::@3: scope:[mul16s] from mul16s::@6
[120] (word~) mul16s::$6 ← > (dword) mul16s::m#0 [ mul16s::m#0 mul16s::$6 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$6 ] )
[121] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0 [ mul16s::m#0 mul16s::$16 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#0 mul16s::$16 ] )
[122] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16 [ mul16s::m#1 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#1 ] )
to:mul16s::@1
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6
[123] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 ) [ mul16s::m#4 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::m#4 ] )
to:mul16s::@2
mul16s::@2: scope:[mul16s] from mul16s::@1
[124] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4 [ mul16s::return#0 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] )
to:mul16s::@return
mul16s::@return: scope:[mul16s] from mul16s::@2
[125] return [ mul16s::return#0 ] ( main:2::sin16s_gen2:20::mul16s:104 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::return#0 ] )
to:@return
mul16u: scope:[mul16u] from mul16s mulu16_sel
[126] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 ) [ mul16u::b#2 mul16u::a#6 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] )
[126] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 ) [ mul16u::b#2 mul16u::a#6 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::b#2 mul16u::a#6 ] )
[127] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2 [ mul16u::a#6 mul16u::mb#0 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#6 mul16u::mb#0 ] )
to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
[128] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
[128] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
[128] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 ) [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
[129] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1
[130] return [ mul16u::res#2 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 ] )
to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1
[131] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 mul16u::$1 ] )
[132] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 [ mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::res#2 mul16u::a#3 mul16u::mb#2 ] )
to:mul16u::@7
mul16u::@7: scope:[mul16u] from mul16u::@2
[133] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#1 ] )
to:mul16u::@4
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
[134] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) [ mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#3 mul16u::mb#2 mul16u::res#6 ] )
[135] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] )
[136] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ( main:2::sin16s_gen2:20::mul16s:104::mul16u:116 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 mul16s::a#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167::mul16u:180 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] )
to:mul16u::@1
sin16s: scope:[sin16s] from sin16s_gen2::@1
[137] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#0 ] )
to:sin16s::@4
sin16s::@4: scope:[sin16s] from sin16s
[138] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#1 ] )
to:sin16s::@1
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
[139] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
[139] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
[140] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
to:sin16s::@5
sin16s::@5: scope:[sin16s] from sin16s::@1
[141] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#2 ] )
to:sin16s::@2
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
[142] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) [ sin16s::isUpper#2 sin16s::x#6 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x#6 ] )
[143] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::$6 ] )
[144] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 ] )
[145] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 ] )
[146] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#0 mulu16_sel::v2#0 ] )
[147] call mulu16_sel [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] )
[148] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] )
to:sin16s::@8
sin16s::@8: scope:[sin16s] from sin16s::@2
[149] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] )
[150] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 ] )
[151] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#1 mulu16_sel::v2#1 ] )
[152] call mulu16_sel [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] )
[153] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] )
to:sin16s::@9
sin16s::@9: scope:[sin16s] from sin16s::@8
[154] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
[155] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#2 ] )
[156] call mulu16_sel [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::x3#0 ] )
[157] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#2 ] )
to:sin16s::@10
sin16s::@10: scope:[sin16s] from sin16s::@9
[158] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] )
[159] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] )
[160] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 ] )
[161] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#3 mulu16_sel::v2#3 ] )
[162] call mulu16_sel [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 sin16s::usinx#0 ] )
[163] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#10 ] )
to:sin16s::@11
sin16s::@11: scope:[sin16s] from sin16s::@10
[164] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] )
[165] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#4 ] )
[166] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#4 mulu16_sel::v2#4 ] )
[167] call mulu16_sel [ sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 mulu16_sel::return#12 sin16s::usinx#0 ] )
[168] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#11 ] )
to:sin16s::@12
sin16s::@12: scope:[sin16s] from sin16s::@11
[169] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] )
[170] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] )
[171] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] )
[172] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 [ sin16s::usinx#1 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::usinx#1 ] )
to:sin16s::@6
sin16s::@6: scope:[sin16s] from sin16s::@12
[173] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::sinx#1 ] )
to:sin16s::@3
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
[174] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) [ sin16s::return#1 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#1 ] )
to:sin16s::@return
sin16s::@return: scope:[sin16s] from sin16s::@3
[175] return [ sin16s::return#1 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#1 ] )
to:@return
sin16s::@15: scope:[sin16s] from sin16s::@12
[176] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen2:20::sin16s:101 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::return#5 ] )
to:sin16s::@3
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9
[177] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] )
[177] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] )
[177] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 ) [ mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#5 mulu16_sel::v2#5 mulu16_sel::select#5 ] )
[178] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5 [ mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::a#2 mulu16_sel::v2#5 mulu16_sel::select#5 ] )
[179] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5 [ mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::b#1 mul16u::a#2 mulu16_sel::select#5 ] )
[180] call mul16u [ mul16u::res#2 mulu16_sel::select#5 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::res#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mul16u::res#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mul16u::res#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mul16u::res#2 mulu16_sel::select#5 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mul16u::res#2 mulu16_sel::select#5 ] )
[181] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ mulu16_sel::select#5 mul16u::return#3 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mul16u::return#3 ] )
to:mulu16_sel::@2
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
[182] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3 [ mulu16_sel::select#5 mulu16_sel::$0 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#5 mulu16_sel::$0 ] )
[183] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5 [ mulu16_sel::$1 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] )
[184] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#12 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] )
to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
[185] return [ mulu16_sel::return#12 ] ( main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:147 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:152 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:156 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:162 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#12 ] main:2::sin16s_gen2:20::sin16s:101::mulu16_sel:167 [ sin16s_gen2::step#0 sin16s_gen2::x#2 sin16s_gen2::sintab#2 sin16s_gen2::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#12 ] )
to:@return
div32u16u: scope:[div32u16u] from sin16s_gen2
[186] phi() [ ] ( main:2::sin16s_gen2:20::div32u16u:96 [ ] )
[187] call divr16u [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen2:20::div32u16u:96 [ divr16u::return#0 rem16u#1 ] )
[188] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen2:20::div32u16u:96 [ divr16u::return#2 rem16u#1 ] )
to:div32u16u::@2
div32u16u::@2: scope:[div32u16u] from div32u16u
[189] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::quotient_hi#0 rem16u#1 ] ( main:2::sin16s_gen2:20::div32u16u:96 [ div32u16u::quotient_hi#0 rem16u#1 ] )
[190] (word) divr16u::rem#4 ← (word) rem16u#1 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] ( main:2::sin16s_gen2:20::div32u16u:96 [ div32u16u::quotient_hi#0 divr16u::rem#4 ] )
[191] call divr16u [ divr16u::return#0 div32u16u::quotient_hi#0 ] ( main:2::sin16s_gen2:20::div32u16u:96 [ divr16u::return#0 div32u16u::quotient_hi#0 ] )
[192] (word) divr16u::return#3 ← (word) divr16u::return#0 [ div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_gen2:20::div32u16u:96 [ div32u16u::quotient_hi#0 divr16u::return#3 ] )
to:div32u16u::@3
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
[193] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_gen2:20::div32u16u:96 [ div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] )
[194] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 ] ( main:2::sin16s_gen2:20::div32u16u:96 [ div32u16u::return#0 ] )
to:div32u16u::@return
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
[195] return [ div32u16u::return#0 ] ( main:2::sin16s_gen2:20::div32u16u:96 [ div32u16u::return#0 ] )
to:@return
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
[196] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#10 divr16u::dividend#5 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] )
[196] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::rem#10 divr16u::dividend#5 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 ] )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
[197] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[197] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[197] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[197] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
[198] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
[199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
[200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
[201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
[202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
[203] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
[204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
[205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
[206] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
[207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
[208] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
[209] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[209] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::i#2 divr16u::rem#11 divr16u::dividend#0 ] )
[210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
[211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::return#0 divr16u::rem#11 divr16u::dividend#0 divr16u::i#1 ] )
to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3
[212] (word) rem16u#1 ← (word) divr16u::rem#11 [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] )
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6
[213] return [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen2:20::div32u16u:96::divr16u:187 [ divr16u::return#0 rem16u#1 ] main:2::sin16s_gen2:20::div32u16u:96::divr16u:191 [ div32u16u::quotient_hi#0 divr16u::return#0 rem16u#1 ] )
to:@return
fill: scope:[fill] from main::@3 main::@4
[214] (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 ) [ fill::addr#0 fill::val#3 ] ( main:2::fill:12 [ fill::addr#0 fill::val#3 ] main:2::fill:14 [ fill::addr#0 fill::val#3 ] )
[214] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 ) [ fill::addr#0 fill::val#3 ] ( main:2::fill:12 [ fill::addr#0 fill::val#3 ] main:2::fill:14 [ fill::addr#0 fill::val#3 ] )
[215] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000 [ fill::addr#0 fill::val#3 fill::end#0 ] ( main:2::fill:12 [ fill::addr#0 fill::val#3 fill::end#0 ] main:2::fill:14 [ fill::addr#0 fill::val#3 fill::end#0 ] )
to:fill::@1
fill::@1: scope:[fill] from fill fill::@1
[216] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 ) [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::fill:12 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::fill:14 [ fill::val#3 fill::end#0 fill::addr#2 ] )
[217] *((byte*) fill::addr#2) ← (byte) fill::val#3 [ fill::val#3 fill::end#0 fill::addr#2 ] ( main:2::fill:12 [ fill::val#3 fill::end#0 fill::addr#2 ] main:2::fill:14 [ fill::val#3 fill::end#0 fill::addr#2 ] )
[218] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::fill:12 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::fill:14 [ fill::val#3 fill::end#0 fill::addr#1 ] )
[219] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1 [ fill::val#3 fill::end#0 fill::addr#1 ] ( main:2::fill:12 [ fill::val#3 fill::end#0 fill::addr#1 ] main:2::fill:14 [ fill::val#3 fill::end#0 fill::addr#1 ] )
to:fill::@return
fill::@return: scope:[fill] from fill::@1
[220] return [ ] ( main:2::fill:12 [ ] main:2::fill:14 [ ] )
to:@return

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,374 @@
(label) @27
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
(byte*) BGCOL2
(const byte*) BGCOL2#0 BGCOL2 = ((byte*))(word/dword/signed dword) 53282
(byte*) BGCOL3
(const byte*) BGCOL3#0 BGCOL3 = ((byte*))(word/dword/signed dword) 53283
(byte) BLACK
(const byte) BLACK#0 BLACK = (byte/signed byte/word/signed word/dword/signed dword) 0
(byte*) BORDERCOL
(const byte*) BORDERCOL#0 BORDERCOL = ((byte*))(word/dword/signed dword) 53280
(byte*) COLS
(const byte*) COLS#0 COLS = ((byte*))(word/dword/signed dword) 55296
(byte*) D016
(const byte*) D016#0 D016 = ((byte*))(word/dword/signed dword) 53270
(byte*) D018
(const byte*) D018#0 D018 = ((byte*))(word/dword/signed dword) 53272
(byte) DARK_GREY
(const byte) DARK_GREY#0 DARK_GREY = (byte/signed byte/word/signed word/dword/signed dword) 11
(byte*) LOGO
(const byte*) LOGO#0 LOGO = ((byte*))(word/signed word/dword/signed dword) 8192
(dword) PI2_u4f28
(const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713
(dword) PI_HALF_u4f28
(const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428
(dword) PI_u4f28
(const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857
(byte*) RASTER
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
(byte*) SCREEN
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
(byte) VIC_MCM
(const byte) VIC_MCM#0 VIC_MCM = (byte/signed byte/word/signed word/dword/signed dword) 16
(byte) WHITE
(const byte) WHITE#0 WHITE = (byte/signed byte/word/signed word/dword/signed dword) 1
(word) XSIN_SIZE
(const word) XSIN_SIZE#0 XSIN_SIZE = (word/signed word/dword/signed dword) 512
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
(label) div32u16u::@2
(label) div32u16u::@3
(label) div32u16u::@return
(dword) div32u16u::dividend
(word) div32u16u::divisor
(dword) div32u16u::quotient
(word) div32u16u::quotient_hi
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:16 0.8
(word) div32u16u::quotient_lo
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:14 4.0
(dword) div32u16u::return
(dword) div32u16u::return#0 return zp ZP_DWORD:27 1.3333333333333333
(dword) div32u16u::return#2 return zp ZP_DWORD:27 4.0
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
(byte~) divr16u::$1 reg byte a 22.0
(byte~) divr16u::$2 reg byte a 22.0
(label) divr16u::@1
(label) divr16u::@2
(label) divr16u::@3
(label) divr16u::@4
(label) divr16u::@5
(label) divr16u::@6
(label) divr16u::@return
(word) divr16u::dividend
(word) divr16u::dividend#0 dividend zp ZP_WORD:8 2.75
(word) divr16u::dividend#3 dividend zp ZP_WORD:8 5.0
(word) divr16u::dividend#5 dividend zp ZP_WORD:8 2.0
(word) divr16u::divisor
(byte) divr16u::i
(byte) divr16u::i#1 reg byte x 16.5
(byte) divr16u::i#2 reg byte x 1.6923076923076923
(word) divr16u::quotient
(word) divr16u::quotient#1 quotient zp ZP_WORD:14 16.5
(word) divr16u::quotient#2 quotient zp ZP_WORD:14 11.0
(word) divr16u::quotient#3 quotient zp ZP_WORD:14 2.75
(word) divr16u::rem
(word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
(word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
(word) divr16u::rem#10 rem zp ZP_WORD:2 4.0
(word) divr16u::rem#11 rem zp ZP_WORD:2 11.666666666666666
(word) divr16u::rem#2 rem zp ZP_WORD:2 22.0
(word) divr16u::rem#4 rem zp ZP_WORD:2 4.0
(word) divr16u::rem#5 rem zp ZP_WORD:2 24.0
(word) divr16u::rem#6 rem zp ZP_WORD:2 11.0
(word) divr16u::return
(word) divr16u::return#0 return zp ZP_WORD:14 5.285714285714286
(word) divr16u::return#2 return zp ZP_WORD:14 4.0
(word) divr16u::return#3 return zp ZP_WORD:14 4.0
(void()) fill((byte*) fill::start , (word) fill::size , (byte) fill::val)
(label) fill::@1
(label) fill::@return
(byte*) fill::addr
(byte*) fill::addr#0 addr zp ZP_WORD:2 2.0
(byte*) fill::addr#1 addr zp ZP_WORD:2 16.5
(byte*) fill::addr#2 addr zp ZP_WORD:2 17.5
(byte*) fill::end
(byte*) fill::end#0 end zp ZP_WORD:8 2.6
(word) fill::size
(byte*) fill::start
(byte) fill::val
(byte) fill::val#3 reg byte x 1.8333333333333333
(void()) loop()
(signed word*~) loop::$1 $1 zp ZP_WORD:8 22.0
(label) loop::@1
(label) loop::@15
(label) loop::@16
(label) loop::@4
(label) loop::@6
(label) loop::@7
(signed word) loop::xpos
(signed word) loop::xpos#0 xpos zp ZP_WORD:8 22.0
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@4
(label) main::@6
(label) main::@return
(byte) main::ch
(byte) main::ch#1 reg byte x 16.5
(byte) main::ch#2 reg byte x 22.0
(label) main::toD0181
(word~) main::toD0181_$0
(word~) main::toD0181_$1
(word~) main::toD0181_$2
(byte~) main::toD0181_$3
(word~) main::toD0181_$4
(byte~) main::toD0181_$5
(byte~) main::toD0181_$6
(byte~) main::toD0181_$7
(byte~) main::toD0181_$8
(byte*) main::toD0181_gfx
(byte) main::toD0181_return
(const byte) main::toD0181_return#0 toD0181_return = >((word))(const byte*) SCREEN#0&(word/signed word/dword/signed dword) 16383<<(byte/signed byte/word/signed word/dword/signed dword) 2|>((word))(const byte*) LOGO#0>>(byte/signed byte/word/signed word/dword/signed dword) 2&(byte/signed byte/word/signed word/dword/signed dword) 15
(byte*) main::toD0181_screen
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
(word~) mul16s::$16 $16 zp ZP_WORD:14 4.0
(word~) mul16s::$6 $6 zp ZP_WORD:14 4.0
(label) mul16s::@1
(label) mul16s::@2
(label) mul16s::@3
(label) mul16s::@6
(label) mul16s::@return
(signed word) mul16s::a
(signed word) mul16s::a#0 a zp ZP_WORD:23 2.6
(signed word) mul16s::b
(dword) mul16s::m
(dword) mul16s::m#0 m zp ZP_DWORD:10 2.0
(dword) mul16s::m#1 m zp ZP_DWORD:10 4.0
(dword) mul16s::m#4 m zp ZP_DWORD:10 6.0
(signed dword) mul16s::return
(signed dword) mul16s::return#0 return zp ZP_DWORD:10 4.333333333333333
(signed dword) mul16s::return#2 return zp ZP_DWORD:10 22.0
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte/word~) mul16u::$1 reg byte a 202.0
(label) mul16u::@1
(label) mul16u::@2
(label) mul16u::@4
(label) mul16u::@7
(label) mul16u::@return
(word) mul16u::a
(word) mul16u::a#0 a zp ZP_WORD:16 101.0
(word) mul16u::a#2 a zp ZP_WORD:16 2.0
(word) mul16u::a#3 a zp ZP_WORD:16 67.66666666666666
(word) mul16u::a#6 a zp ZP_WORD:16 3.0
(word~) mul16u::a#8 a zp ZP_WORD:16 4.0
(word) mul16u::b
(word) mul16u::b#1 b zp ZP_WORD:14 4.0
(word) mul16u::b#2 b zp ZP_WORD:14 4.0
(dword) mul16u::mb
(dword) mul16u::mb#0 mb zp ZP_DWORD:18 4.0
(dword) mul16u::mb#1 mb zp ZP_DWORD:18 202.0
(dword) mul16u::mb#2 mb zp ZP_DWORD:18 43.57142857142858
(dword) mul16u::res
(dword) mul16u::res#1 res zp ZP_DWORD:10 202.0
(dword) mul16u::res#2 res zp ZP_DWORD:10 43.85714285714286
(dword) mul16u::res#6 res zp ZP_DWORD:10 101.0
(dword) mul16u::return
(dword) mul16u::return#2 return zp ZP_DWORD:10 4.0
(dword) mul16u::return#3 return zp ZP_DWORD:10 4.0
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
(dword~) mulu16_sel::$0 $0 zp ZP_DWORD:10 4.0
(dword~) mulu16_sel::$1 $1 zp ZP_DWORD:10 4.0
(label) mulu16_sel::@2
(label) mulu16_sel::@return
(word) mulu16_sel::return
(word) mulu16_sel::return#0 return zp ZP_WORD:14 4.0
(word) mulu16_sel::return#1 return#1 zp ZP_WORD:25 4.0
(word) mulu16_sel::return#10 return#10 zp ZP_WORD:25 4.0
(word) mulu16_sel::return#11 return zp ZP_WORD:14 4.0
(word) mulu16_sel::return#12 return zp ZP_WORD:14 1.714285714285714
(word) mulu16_sel::return#2 return zp ZP_WORD:14 4.0
(byte) mulu16_sel::select
(byte) mulu16_sel::select#5 reg byte x 0.3333333333333333
(word) mulu16_sel::v1
(word) mulu16_sel::v1#0 v1 zp ZP_WORD:25 2.0
(word) mulu16_sel::v1#1 v1 zp ZP_WORD:25 2.0
(word) mulu16_sel::v1#2 v1 zp ZP_WORD:25 4.0
(word) mulu16_sel::v1#3 v1 zp ZP_WORD:25 2.0
(word) mulu16_sel::v1#4 v1 zp ZP_WORD:25 2.0
(word) mulu16_sel::v1#5 v1 zp ZP_WORD:25 12.0
(word) mulu16_sel::v2
(word) mulu16_sel::v2#0 v2 zp ZP_WORD:14 4.0
(word) mulu16_sel::v2#1 v2 zp ZP_WORD:14 4.0
(word) mulu16_sel::v2#3 v2 zp ZP_WORD:14 4.0
(word) mulu16_sel::v2#4 v2 zp ZP_WORD:14 4.0
(word) mulu16_sel::v2#5 v2 zp ZP_WORD:14 5.0
(word) rem16u
(word) rem16u#1 rem16u zp ZP_WORD:2 0.8
(void()) render_logo((signed word) render_logo::xpos)
(byte~) render_logo::$0 reg byte a 4.0
(byte~) render_logo::$1 reg byte a 4.0
(byte~) render_logo::$2 reg byte a 4.0
(byte/signed word/word/dword/signed dword~) render_logo::$22 reg byte a 202.0
(byte/signed word/word/dword/signed dword~) render_logo::$26 reg byte a 202.0
(signed word~) render_logo::$3 $3 zp ZP_WORD:14 4.0
(byte/signed word/word/dword/signed dword~) render_logo::$30 reg byte a 202.0
(byte/word/signed word/dword/signed dword~) render_logo::$34 reg byte a 202.0
(byte/word/signed word/dword/signed dword~) render_logo::$38 reg byte a 202.0
(signed byte~) render_logo::$39 reg byte a 2.0
(byte/signed word/word/dword/signed dword~) render_logo::$45 reg byte a 202.0
(byte/signed word/word/dword/signed dword~) render_logo::$49 reg byte a 202.0
(byte/signed word/word/dword/signed dword~) render_logo::$53 reg byte a 202.0
(byte/word/signed word/dword/signed dword~) render_logo::$57 reg byte a 202.0
(byte/word/signed word/dword/signed dword~) render_logo::$61 reg byte a 202.0
(label) render_logo::@1
(label) render_logo::@10
(label) render_logo::@12
(label) render_logo::@13
(label) render_logo::@2
(label) render_logo::@3
(label) render_logo::@5
(label) render_logo::@6
(label) render_logo::@9
(label) render_logo::@return
(byte) render_logo::logo_idx
(byte) render_logo::logo_idx#2 reg byte x 202.0
(byte) render_logo::logo_idx#3 reg byte x 202.0
(byte) render_logo::logo_idx#4 reg byte x 57.714285714285715
(byte) render_logo::logo_idx#5 reg byte x 65.07142857142857
(byte~) render_logo::logo_idx#9 reg byte x 4.0
(byte) render_logo::logo_start
(byte) render_logo::screen_idx
(byte) render_logo::screen_idx#10 reg byte y 69.92307692307692
(byte) render_logo::screen_idx#11 reg byte y 126.25
(byte) render_logo::screen_idx#13 reg byte y 126.25
(byte) render_logo::screen_idx#2 reg byte y 202.0
(byte) render_logo::screen_idx#3 reg byte y 101.0
(byte) render_logo::screen_idx#4 reg byte y 101.0
(byte) render_logo::screen_idx#5 reg byte y 202.0
(byte) render_logo::screen_idx#8 reg byte y 77.6923076923077
(signed byte) render_logo::x_char
(signed byte) render_logo::x_char#0 x_char zp ZP_BYTE:22 0.36363636363636365
(signed word) render_logo::xpos
(signed word) render_logo::xpos#0 xpos zp ZP_WORD:8 2.4285714285714284
(signed word()) sin16s((dword) sin16s::x)
(dword~) sin16s::$6 $6 zp ZP_DWORD:10 4.0
(label) sin16s::@1
(label) sin16s::@10
(label) sin16s::@11
(label) sin16s::@12
(label) sin16s::@15
(label) sin16s::@2
(label) sin16s::@3
(label) sin16s::@4
(label) sin16s::@5
(label) sin16s::@6
(label) sin16s::@8
(label) sin16s::@9
(label) sin16s::@return
(byte) sin16s::isUpper
(byte) sin16s::isUpper#2 isUpper zp ZP_BYTE:22 0.06060606060606061
(signed word) sin16s::return
(signed word) sin16s::return#0 return zp ZP_WORD:23 22.0
(signed word) sin16s::return#1 return zp ZP_WORD:23 5.0
(signed word~) sin16s::return#5 return zp ZP_WORD:23 4.0
(signed word) sin16s::sinx
(signed word) sin16s::sinx#1 sinx zp ZP_WORD:23 4.0
(word) sin16s::usinx
(word) sin16s::usinx#0 usinx zp ZP_WORD:23 0.3333333333333333
(word) sin16s::usinx#1 usinx zp ZP_WORD:23 1.0
(dword) sin16s::x
(dword) sin16s::x#0 x zp ZP_DWORD:10 8.5
(dword) sin16s::x#1 x zp ZP_DWORD:10 4.0
(dword) sin16s::x#2 x zp ZP_DWORD:10 4.0
(dword) sin16s::x#4 x zp ZP_DWORD:10 5.0
(dword) sin16s::x#6 x zp ZP_DWORD:10 6.0
(word) sin16s::x1
(word) sin16s::x1#0 x1 zp ZP_WORD:31 0.6363636363636365
(word) sin16s::x2
(word) sin16s::x2#0 x2 zp ZP_WORD:25 4.0
(word) sin16s::x3
(word) sin16s::x3#0 x3 zp ZP_WORD:25 1.0
(word) sin16s::x3_6
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:14 4.0
(word) sin16s::x4
(word) sin16s::x4#0 x4 zp ZP_WORD:25 4.0
(word) sin16s::x5
(word) sin16s::x5#0 x5 zp ZP_WORD:14 4.0
(word) sin16s::x5_128
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:14 4.0
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
(signed dword~) sin16s_gen2::$5 $5 zp ZP_DWORD:10 22.0
(word~) sin16s_gen2::$6 $6 zp ZP_WORD:14 11.0
(signed word~) sin16s_gen2::$8 $8 zp ZP_WORD:14 22.0
(label) sin16s_gen2::@1
(label) sin16s_gen2::@3
(label) sin16s_gen2::@4
(label) sin16s_gen2::@5
(label) sin16s_gen2::@return
(signed word) sin16s_gen2::ampl
(const signed word) sin16s_gen2::ampl#0 ampl = (const signed word) sin16s_gen2::max#0-(const signed word) sin16s_gen2::min#0
(word) sin16s_gen2::i
(word) sin16s_gen2::i#1 i zp ZP_WORD:8 16.5
(word) sin16s_gen2::i#2 i zp ZP_WORD:8 1.6923076923076923
(signed word) sin16s_gen2::max
(const signed word) sin16s_gen2::max#0 max = (word/signed word/dword/signed dword) 320
(signed word) sin16s_gen2::min
(const signed word) sin16s_gen2::min#0 min = -(word/signed word/dword/signed dword) 320
(signed word) sin16s_gen2::offs
(const signed word) sin16s_gen2::offs#0 offs = (const signed word) sin16s_gen2::min#0+(const signed word) sin16s_gen2::ampl#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
(signed word*) sin16s_gen2::sintab
(signed word*) sin16s_gen2::sintab#0 sintab zp ZP_WORD:2 5.5
(signed word*) sin16s_gen2::sintab#2 sintab zp ZP_WORD:2 3.0
(dword) sin16s_gen2::step
(dword) sin16s_gen2::step#0 step zp ZP_DWORD:27 0.8125
(word) sin16s_gen2::wavelength
(dword) sin16s_gen2::x
(dword) sin16s_gen2::x#1 x zp ZP_DWORD:4 7.333333333333333
(dword) sin16s_gen2::x#2 x zp ZP_DWORD:4 2.75
(signed word[512]) xsin
(const signed word[512]) xsin#0 xsin = { fill( 512, 0) }
(word) xsin_idx
(word) xsin_idx#11 xsin_idx zp ZP_WORD:2 4.714285714285714
(word) xsin_idx#19 xsin_idx zp ZP_WORD:2 11.0
(word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0
reg byte x [ main::ch#2 main::ch#1 ]
zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
reg byte y [ render_logo::screen_idx#8 render_logo::screen_idx#13 render_logo::screen_idx#2 render_logo::screen_idx#3 ]
reg byte x [ render_logo::logo_idx#4 render_logo::logo_idx#2 ]
reg byte x [ render_logo::logo_idx#5 render_logo::logo_idx#9 render_logo::logo_idx#3 ]
reg byte y [ render_logo::screen_idx#11 render_logo::screen_idx#5 render_logo::screen_idx#10 render_logo::screen_idx#4 ]
zp ZP_DWORD:4 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ]
zp ZP_WORD:8 [ 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_DWORD:10 [ 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::$6 ]
zp ZP_WORD:14 [ 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::$6 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
zp ZP_WORD:16 [ mul16u::a#3 mul16u::a#6 mul16u::a#8 mul16u::a#2 mul16u::a#0 div32u16u::quotient_hi#0 ]
zp ZP_DWORD:18 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
zp ZP_BYTE:22 [ sin16s::isUpper#2 render_logo::x_char#0 ]
zp ZP_WORD:23 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 mul16s::a#0 sin16s::usinx#0 ]
zp ZP_WORD:25 [ mulu16_sel::v1#5 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 sin16s::x3#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#1 mulu16_sel::return#10 ]
reg byte x [ mulu16_sel::select#5 ]
reg byte x [ divr16u::i#2 divr16u::i#1 ]
reg byte x [ fill::val#3 ]
reg byte a [ render_logo::$0 ]
reg byte a [ render_logo::$1 ]
reg byte a [ render_logo::$2 ]
reg byte a [ render_logo::$22 ]
reg byte a [ render_logo::$26 ]
reg byte a [ render_logo::$30 ]
reg byte a [ render_logo::$34 ]
reg byte a [ render_logo::$38 ]
reg byte a [ render_logo::$39 ]
reg byte a [ render_logo::$45 ]
reg byte a [ render_logo::$49 ]
reg byte a [ render_logo::$53 ]
reg byte a [ render_logo::$57 ]
reg byte a [ render_logo::$61 ]
zp ZP_DWORD:27 [ div32u16u::return#2 sin16s_gen2::step#0 div32u16u::return#0 ]
reg byte a [ mul16u::$1 ]
zp ZP_WORD:31 [ sin16s::x1#0 ]
reg byte a [ divr16u::$1 ]
reg byte a [ divr16u::$2 ]

View File

@ -157,7 +157,7 @@ inline void vicSelectGfxBank(byte* gfx) {
Adding pre/post-modifier *((var) main::$10) ← ++ *((var) main::$10) Adding pre/post-modifier *((var) main::$10) ← ++ *((var) main::$10)
Adding pre/post-modifier (byte*) fill::addr ← ++ (byte*) fill::addr Adding pre/post-modifier (byte*) fill::addr ← ++ (byte*) fill::addr
Added resource C:\c64\kickc\src\test\java\dk\camelot64\kickc\test\kc\logo.png Added resource /Users/jespergravgaard/c64/kickc/src/test/java/dk/camelot64/kickc/test/kc/logo.png
SYMBOLS SYMBOLS
(label) @1 (label) @1
(label) @2 (label) @2
@ -1411,9 +1411,9 @@ Uplift Scope [fill] 36: zp ZP_WORD:6 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::ch#2 main::ch#1 ] Uplift Scope [main] 38.5: zp ZP_BYTE:2 [ main::ch#2 main::ch#1 ]
Uplift Scope [] Uplift Scope []
Uplifting [fill] best 2205 combination zp ZP_WORD:6 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:8 [ fill::end#0 ] zp ZP_WORD:3 [ fill::size#2 ] reg byte x [ fill::val#3 ] Uplifting [fill] best 3921 combination zp ZP_WORD:6 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp ZP_WORD:8 [ fill::end#0 ] zp ZP_WORD:3 [ fill::size#2 ] reg byte x [ fill::val#3 ]
Uplifting [main] best 2085 combination reg byte x [ main::ch#2 main::ch#1 ] Uplifting [main] best 3801 combination reg byte x [ main::ch#2 main::ch#1 ]
Uplifting [] best 2085 combination Uplifting [] best 3801 combination
Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ fill::size#2 ] ] with [ zp ZP_WORD:8 [ fill::end#0 ] ] - score: 1 Coalescing zero page register with common assignment [ zp ZP_WORD:3 [ fill::size#2 ] ] with [ zp ZP_WORD:8 [ fill::end#0 ] ] - score: 1
Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ fill::size#2 fill::end#0 ] Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ fill::size#2 fill::end#0 ]
Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ fill::addr#2 fill::addr#0 fill::addr#1 ] Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
@ -1711,7 +1711,7 @@ zp ZP_WORD:4 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
FINAL ASSEMBLER FINAL ASSEMBLER
Score: 1862 Score: 3578
//SEG0 Basic Upstart //SEG0 Basic Upstart
.pc = $801 "Basic" .pc = $801 "Basic"

View File

@ -1,13 +1,13 @@
@begin: scope:[] from @begin: scope:[] from
[0] phi() [ ] ( ) [0] phi() [ ] ( )
to:@34 to:@35
@34: scope:[] from @begin @35: scope:[] from @begin
[1] phi() [ ] ( ) [1] phi() [ ] ( )
[2] call main [ ] ( ) [2] call main [ ] ( )
to:@end to:@end
@end: scope:[] from @34 @end: scope:[] from @35
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @34 main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] ) [5] call sin16s_gen [ ] ( main:2 [ ] )
to:main::@5 to:main::@5

View File

@ -58,6 +58,23 @@ void sin16s_gen(signed word* sintab, word wavelength) {
} }
} }
// Generate signed word sinus table - with values in the range min-max.
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
void sin16s_gen2(signed word* sintab, word wavelength, signed word min, signed word max) {
signed word ampl = max-min;
signed word offs = min + ampl>>1; // ampl is always positive so shifting left does not alter the sign
// u[4.28] step = PI*2/wavelength
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
// 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;
x = x + step;
}
}
// Generate signed byte sinus table - on the full -$7f - $7f range // Generate signed byte sinus table - on the full -$7f - $7f range
// sintab - the table to generate into // sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) // wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
@ -380,6 +397,7 @@ signed dword mul16s(signed word a, signed word b) {
} }
Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i
Adding pre/post-modifier (word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab
Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i
Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx
@ -538,6 +556,7 @@ SYMBOLS
(label) @32 (label) @32
(label) @33 (label) @33
(label) @34 (label) @34
(label) @35
(label) @4 (label) @4
(label) @5 (label) @5
(label) @6 (label) @6
@ -1069,6 +1088,31 @@ SYMBOLS
(dword) sin16s_gen::step (dword) sin16s_gen::step
(word) sin16s_gen::wavelength (word) sin16s_gen::wavelength
(dword) sin16s_gen::x (dword) sin16s_gen::x
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
(signed word~) sin16s_gen2::$0
(signed word~) sin16s_gen2::$1
(dword~) sin16s_gen2::$10
(bool~) sin16s_gen2::$11
(signed word~) sin16s_gen2::$2
(dword~) sin16s_gen2::$3
(signed word~) sin16s_gen2::$4
(signed dword~) sin16s_gen2::$5
(word~) sin16s_gen2::$6
(signed word~) sin16s_gen2::$7
(signed word~) sin16s_gen2::$8
(signed word*~) sin16s_gen2::$9
(label) sin16s_gen2::@1
(label) sin16s_gen2::@2
(label) sin16s_gen2::@return
(signed word) sin16s_gen2::ampl
(word) sin16s_gen2::i
(signed word) sin16s_gen2::max
(signed word) sin16s_gen2::min
(signed word) sin16s_gen2::offs
(signed word*) sin16s_gen2::sintab
(dword) sin16s_gen2::step
(word) sin16s_gen2::wavelength
(dword) sin16s_gen2::x
(signed byte()) sin8s((word) sin8s::x) (signed byte()) sin8s((word) sin8s::x)
(bool~) sin8s::$0 (bool~) sin8s::$0
(bool~) sin8s::$1 (bool~) sin8s::$1
@ -1667,6 +1711,39 @@ sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2
to:@return to:@return
@14: scope:[] from @13 @14: scope:[] from @13
to:@15 to:@15
sin16s_gen2: scope:[sin16s_gen2] from
(signed word~) sin16s_gen2::$0 ← (signed word) sin16s_gen2::max - (signed word) sin16s_gen2::min
(signed word) sin16s_gen2::ampl ← (signed word~) sin16s_gen2::$0
(signed word~) sin16s_gen2::$1 ← (signed word) sin16s_gen2::ampl >> (byte/signed byte/word/signed word/dword/signed dword) 1
(signed word~) sin16s_gen2::$2 ← (signed word) sin16s_gen2::min + (signed word~) sin16s_gen2::$1
(signed word) sin16s_gen2::offs ← (signed word~) sin16s_gen2::$2
(dword~) sin16s_gen2::$3 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen2::wavelength
(dword) sin16s_gen2::step ← (dword~) sin16s_gen2::$3
(dword) sin16s_gen2::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
(word) sin16s_gen2::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:sin16s_gen2::@1
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2 sin16s_gen2::@1
(signed word~) sin16s_gen2::$4 ← call sin16s (dword) sin16s_gen2::x
(signed dword~) sin16s_gen2::$5 ← call mul16s (signed word~) sin16s_gen2::$4 (signed word) sin16s_gen2::ampl
(word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
(signed word~) sin16s_gen2::$7 ← ((signed word)) (word~) sin16s_gen2::$6
(signed word~) sin16s_gen2::$8 ← (signed word) sin16s_gen2::offs + (signed word~) sin16s_gen2::$7
*((signed word*) sin16s_gen2::sintab) ← (signed word~) sin16s_gen2::$8
(signed word*~) sin16s_gen2::$9 ← (signed word*) sin16s_gen2::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2
(signed word*) sin16s_gen2::sintab ← (signed word*~) sin16s_gen2::$9
(dword~) sin16s_gen2::$10 ← (dword) sin16s_gen2::x + (dword) sin16s_gen2::step
(dword) sin16s_gen2::x ← (dword~) sin16s_gen2::$10
(word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
(bool~) sin16s_gen2::$11 ← (word) sin16s_gen2::i < (word) sin16s_gen2::wavelength
if((bool~) sin16s_gen2::$11) goto sin16s_gen2::@1
to:sin16s_gen2::@2
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2::@1
to:sin16s_gen2::@return
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@2
return
to:@return
@15: scope:[] from @14
to:@16
sin8s_gen: scope:[sin8s_gen] from sin8s_gen: scope:[sin8s_gen] from
(word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength (word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength
(word) sin8s_gen::step ← (word~) sin8s_gen::$0 (word) sin8s_gen::step ← (word~) sin8s_gen::$0
@ -1688,8 +1765,8 @@ sin8s_gen::@2: scope:[sin8s_gen] from sin8s_gen::@1
sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2 sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2
return return
to:@return to:@return
@15: scope:[] from @14 @16: scope:[] from @15
to:@16 to:@17
sin16s: scope:[sin16s] from sin16s: scope:[sin16s] from
(byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28 (bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28
@ -1751,8 +1828,8 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7
to:@return to:@return
sin16s::@7: scope:[sin16s] from sin16s::@7: scope:[sin16s] from
to:sin16s::@return to:sin16s::@return
@16: scope:[] from @15 @17: scope:[] from @16
to:@17 to:@18
sin8s: scope:[sin8s] from sin8s: scope:[sin8s] from
(byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12 (bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12
@ -1822,8 +1899,8 @@ sin8s::@return: scope:[sin8s] from sin8s::@4 sin8s::@9
to:@return to:@return
sin8s::@9: scope:[sin8s] from sin8s::@9: scope:[sin8s] from
to:sin8s::@return to:sin8s::@return
@17: scope:[] from @16 @18: scope:[] from @17
to:@18 to:@19
mulu16_sel: scope:[mulu16_sel] from mulu16_sel: scope:[mulu16_sel] from
(dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2
(dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select
@ -1836,8 +1913,8 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1
to:@return to:@return
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel::@1: scope:[mulu16_sel] from
to:mulu16_sel::@return to:mulu16_sel::@return
@18: scope:[] from @17 @19: scope:[] from @18
to:@19 to:@20
mulu8_sel: scope:[mulu8_sel] from mulu8_sel: scope:[mulu8_sel] from
(word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2
(word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select
@ -1850,11 +1927,11 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1
to:@return to:@return
mulu8_sel::@1: scope:[mulu8_sel] from mulu8_sel::@1: scope:[mulu8_sel] from
to:mulu8_sel::@return to:mulu8_sel::@return
@19: scope:[] from @18 @20: scope:[] from @19
(byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor ← (byte*) print_screen (byte*) print_line_cursor ← (byte*) print_screen
(byte*) print_char_cursor ← (byte*) print_line_cursor (byte*) print_char_cursor ← (byte*) print_line_cursor
to:@20 to:@21
print_str_lines: scope:[print_str_lines] from print_str_lines: scope:[print_str_lines] from
to:print_str_lines::@1 to:print_str_lines::@1
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9
@ -1892,8 +1969,8 @@ print_str_lines::@10: scope:[print_str_lines] from
print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3 print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3
return return
to:@return to:@return
@20: scope:[] from @19 @21: scope:[] from @20
to:@21 to:@22
print_str_ln: scope:[print_str_ln] from print_str_ln: scope:[print_str_ln] from
(void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str (void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str
(void~) print_str_ln::$1 ← call print_ln (void~) print_str_ln::$1 ← call print_ln
@ -1901,8 +1978,8 @@ print_str_ln: scope:[print_str_ln] from
print_str_ln::@return: scope:[print_str_ln] from print_str_ln print_str_ln::@return: scope:[print_str_ln] from print_str_ln
return return
to:@return to:@return
@21: scope:[] from @20 @22: scope:[] from @21
to:@22 to:@23
print_str: scope:[print_str] from print_str: scope:[print_str] from
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
@ -1925,8 +2002,8 @@ print_str::@6: scope:[print_str] from
print_str::@return: scope:[print_str] from print_str::@3 print_str::@return: scope:[print_str] from print_str::@3
return return
to:@return to:@return
@22: scope:[] from @21 @23: scope:[] from @22
to:@23 to:@24
print_str_at: scope:[print_str_at] from print_str_at: scope:[print_str_at] from
to:print_str_at::@1 to:print_str_at::@1
print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2
@ -1949,8 +2026,8 @@ print_str_at::@6: scope:[print_str_at] from
print_str_at::@return: scope:[print_str_at] from print_str_at::@3 print_str_at::@return: scope:[print_str_at] from print_str_at::@3
return return
to:@return to:@return
@23: scope:[] from @22 @24: scope:[] from @23
to:@24 to:@25
print_ln: scope:[print_ln] from print_ln: scope:[print_ln] from
to:print_ln::@1 to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
@ -1965,8 +2042,8 @@ print_ln::@2: scope:[print_ln] from print_ln::@1
print_ln::@return: scope:[print_ln] from print_ln::@2 print_ln::@return: scope:[print_ln] from print_ln::@2
return return
to:@return to:@return
@24: scope:[] from @23 @25: scope:[] from @24
to:@25 to:@26
print_sword: scope:[print_sword] from print_sword: scope:[print_sword] from
(bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sword::$1 ← ! (bool~) print_sword::$0 (bool~) print_sword::$1 ← ! (bool~) print_sword::$0
@ -1984,8 +2061,8 @@ print_sword::@2: scope:[print_sword] from print_sword
print_sword::@return: scope:[print_sword] from print_sword::@1 print_sword::@return: scope:[print_sword] from print_sword::@1
return return
to:@return to:@return
@25: scope:[] from @24 @26: scope:[] from @25
to:@26 to:@27
print_sbyte: scope:[print_sbyte] from print_sbyte: scope:[print_sbyte] from
(bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0 (bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0
@ -2003,8 +2080,8 @@ print_sbyte::@2: scope:[print_sbyte] from print_sbyte
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1
return return
to:@return to:@return
@26: scope:[] from @25 @27: scope:[] from @26
to:@27 to:@28
print_word: scope:[print_word] from print_word: scope:[print_word] from
(byte~) print_word::$0 ← > (word) print_word::w (byte~) print_word::$0 ← > (word) print_word::w
(void~) print_word::$1 ← call print_byte (byte~) print_word::$0 (void~) print_word::$1 ← call print_byte (byte~) print_word::$0
@ -2014,8 +2091,8 @@ print_word: scope:[print_word] from
print_word::@return: scope:[print_word] from print_word print_word::@return: scope:[print_word] from print_word
return return
to:@return to:@return
@27: scope:[] from @26 @28: scope:[] from @27
to:@28 to:@29
print_dword: scope:[print_dword] from print_dword: scope:[print_dword] from
(word~) print_dword::$0 ← > (dword) print_dword::dw (word~) print_dword::$0 ← > (dword) print_dword::dw
(void~) print_dword::$1 ← call print_word (word~) print_dword::$0 (void~) print_dword::$1 ← call print_word (word~) print_dword::$0
@ -2025,8 +2102,8 @@ print_dword: scope:[print_dword] from
print_dword::@return: scope:[print_dword] from print_dword print_dword::@return: scope:[print_dword] from print_dword
return return
to:@return to:@return
@28: scope:[] from @27 @29: scope:[] from @28
to:@29 to:@30
print_sdword: scope:[print_sdword] from print_sdword: scope:[print_sdword] from
(bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0
@ -2044,9 +2121,9 @@ print_sdword::@2: scope:[print_sdword] from print_sdword
print_sdword::@return: scope:[print_sdword] from print_sdword::@1 print_sdword::@return: scope:[print_sdword] from print_sdword::@1
return return
to:@return to:@return
@29: scope:[] from @28 @30: scope:[] from @29
(byte[]) print_hextab ← (string) "0123456789abcdef" (byte[]) print_hextab ← (string) "0123456789abcdef"
to:@30 to:@31
print_byte: scope:[print_byte] from print_byte: scope:[print_byte] from
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
(void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0) (void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0)
@ -2056,8 +2133,8 @@ print_byte: scope:[print_byte] from
print_byte::@return: scope:[print_byte] from print_byte print_byte::@return: scope:[print_byte] from print_byte
return return
to:@return to:@return
@30: scope:[] from @29 @31: scope:[] from @30
to:@31 to:@32
print_char: scope:[print_char] from print_char: scope:[print_char] from
*((byte*) print_char_cursor) ← (byte) print_char::ch *((byte*) print_char_cursor) ← (byte) print_char::ch
(byte*) print_char_cursor ← ++ (byte*) print_char_cursor (byte*) print_char_cursor ← ++ (byte*) print_char_cursor
@ -2065,8 +2142,8 @@ print_char: scope:[print_char] from
print_char::@return: scope:[print_char] from print_char print_char::@return: scope:[print_char] from print_char
return return
to:@return to:@return
@31: scope:[] from @30 @32: scope:[] from @31
to:@32 to:@33
print_cls: scope:[print_cls] from print_cls: scope:[print_cls] from
(byte*) print_cls::sc ← (byte*) print_screen (byte*) print_cls::sc ← (byte*) print_screen
to:print_cls::@1 to:print_cls::@1
@ -2084,8 +2161,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
print_cls::@return: scope:[print_cls] from print_cls::@2 print_cls::@return: scope:[print_cls] from print_cls::@2
return return
to:@return to:@return
@32: scope:[] from @31 @33: scope:[] from @32
to:@33 to:@34
print_set_screen: scope:[print_set_screen] from print_set_screen: scope:[print_set_screen] from
(byte*) print_screen ← (byte*) print_set_screen::screen (byte*) print_screen ← (byte*) print_set_screen::screen
(byte*) print_line_cursor ← (byte*) print_screen (byte*) print_line_cursor ← (byte*) print_screen
@ -2094,8 +2171,8 @@ print_set_screen: scope:[print_set_screen] from
print_set_screen::@return: scope:[print_set_screen] from print_set_screen print_set_screen::@return: scope:[print_set_screen] from print_set_screen
return return
to:@return to:@return
@33: scope:[] from @32 @34: scope:[] from @33
to:@34 to:@35
main: scope:[main] from main: scope:[main] from
(word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120 (word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120
(signed word[120]) main::sintab1 ← { fill( 120, 0) } (signed word[120]) main::sintab1 ← { fill( 120, 0) }
@ -2127,16 +2204,16 @@ main::@4: scope:[main] from main::@2
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
return return
to:@return to:@return
@34: scope:[] from @33 @35: scope:[] from @34
call main call main
to:@end to:@end
@end: scope:[] from @34 @end: scope:[] from @35
Removing unused procedure div8s Removing unused procedure div8s
Removing unused procedure div16s Removing unused procedure div16s
Removing unused procedure mul8s Removing unused procedure mul8s
Removing unused procedure mul8su Removing unused procedure mul8su
Removing unused procedure mul16s Removing unused procedure sin16s_gen2
Removing unused procedure sin8s_gen Removing unused procedure sin8s_gen
Removing unused procedure print_str_lines Removing unused procedure print_str_lines
Removing unused procedure print_str_ln Removing unused procedure print_str_ln
@ -2147,6 +2224,7 @@ Removing unused procedure print_set_screen
Removing unused procedure div8u Removing unused procedure div8u
Removing unused procedure div16u Removing unused procedure div16u
Removing unused procedure divr16s Removing unused procedure divr16s
Removing unused procedure mul16s
Removing unused procedure sin8s Removing unused procedure sin8s
Removing unused procedure print_ln Removing unused procedure print_ln
Removing unused procedure print_dword Removing unused procedure print_dword
@ -2193,28 +2271,29 @@ Removing empty block @12
Removing empty block sin16s_gen::@2 Removing empty block sin16s_gen::@2
Removing empty block @14 Removing empty block @14
Removing empty block @15 Removing empty block @15
Removing empty block sin16s::@7
Removing empty block @16 Removing empty block @16
Removing empty block sin16s::@7
Removing empty block @17 Removing empty block @17
Removing empty block mulu16_sel::@1
Removing empty block @18 Removing empty block @18
Removing empty block @20 Removing empty block mulu16_sel::@1
Removing empty block @19
Removing empty block @21 Removing empty block @21
Removing empty block @22
Removing empty block print_str::@4 Removing empty block print_str::@4
Removing empty block print_str::@3 Removing empty block print_str::@3
Removing empty block print_str::@5 Removing empty block print_str::@5
Removing empty block print_str::@6 Removing empty block print_str::@6
Removing empty block @22
Removing empty block @23 Removing empty block @23
Removing empty block @24 Removing empty block @24
Removing empty block @25 Removing empty block @25
Removing empty block @26 Removing empty block @26
Removing empty block @27 Removing empty block @27
Removing empty block @28 Removing empty block @28
Removing empty block @30 Removing empty block @29
Removing empty block @31 Removing empty block @31
Removing empty block @32 Removing empty block @32
Removing empty block @33 Removing empty block @33
Removing empty block @34
Removing empty block main::@4 Removing empty block main::@4
PROCEDURE MODIFY VARIABLE ANALYSIS PROCEDURE MODIFY VARIABLE ANALYSIS
divr16u modifies rem16u divr16u modifies rem16u
@ -2417,7 +2496,7 @@ mul16u::@return: scope:[mul16u] from mul16u::@3
(dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713
(dword) PI_u4f28#0 ← (dword/signed dword) 843314857 (dword) PI_u4f28#0 ← (dword/signed dword) 843314857
(dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428
to:@19 to:@20
sin16s_gen: scope:[sin16s_gen] from main sin16s_gen: scope:[sin16s_gen] from main
(signed word*) sin16s_gen::sintab#5 ← phi( main/(signed word*) sin16s_gen::sintab#1 ) (signed word*) sin16s_gen::sintab#5 ← phi( main/(signed word*) sin16s_gen::sintab#1 )
(word) rem16u#21 ← phi( main/(word) rem16u#23 ) (word) rem16u#21 ← phi( main/(word) rem16u#23 )
@ -2616,12 +2695,12 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
(word) mulu16_sel::return#6 ← (word) mulu16_sel::return#12 (word) mulu16_sel::return#6 ← (word) mulu16_sel::return#12
return return
to:@return to:@return
@19: scope:[] from @13 @20: scope:[] from @13
(word) rem16u#29 ← phi( @13/(word) rem16u#31 ) (word) rem16u#29 ← phi( @13/(word) rem16u#31 )
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_line_cursor#0 ← (byte*) print_screen#0
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
to:@29 to:@30
print_str: scope:[print_str] from main::@3 main::@7 print_str: scope:[print_str] from main::@3 main::@7
(byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@7/(byte*) print_char_cursor#17 ) (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@7/(byte*) print_char_cursor#17 )
(byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@7/(byte*) print_str::str#1 ) (byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@7/(byte*) print_str::str#1 )
@ -2704,13 +2783,13 @@ print_word::@return: scope:[print_word] from print_word::@2
(byte*) print_char_cursor#8 ← (byte*) print_char_cursor#29 (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#29
return return
to:@return to:@return
@29: scope:[] from @19 @30: scope:[] from @20
(byte*) print_screen#7 ← phi( @19/(byte*) print_screen#0 ) (byte*) print_screen#7 ← phi( @20/(byte*) print_screen#0 )
(byte*) print_char_cursor#55 ← phi( @19/(byte*) print_char_cursor#0 ) (byte*) print_char_cursor#55 ← phi( @20/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#15 ← phi( @19/(byte*) print_line_cursor#0 ) (byte*) print_line_cursor#15 ← phi( @20/(byte*) print_line_cursor#0 )
(word) rem16u#28 ← phi( @19/(word) rem16u#29 ) (word) rem16u#28 ← phi( @20/(word) rem16u#29 )
(byte[]) print_hextab#0 ← (const string) $0 (byte[]) print_hextab#0 ← (const string) $0
to:@34 to:@35
print_byte: scope:[print_byte] from print_word print_word::@1 print_byte: scope:[print_byte] from print_word print_word::@1
(byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#6 ) (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#6 )
(byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
@ -2771,11 +2850,11 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
(byte*) print_char_cursor#15 ← (byte*) print_char_cursor#35 (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#35
return return
to:@return to:@return
main: scope:[main] from @34 main: scope:[main] from @35
(byte*) print_char_cursor#53 ← phi( @34/(byte*) print_char_cursor#50 ) (byte*) print_char_cursor#53 ← phi( @35/(byte*) print_char_cursor#50 )
(byte*) print_line_cursor#13 ← phi( @34/(byte*) print_line_cursor#12 ) (byte*) print_line_cursor#13 ← phi( @35/(byte*) print_line_cursor#12 )
(byte*) print_screen#5 ← phi( @34/(byte*) print_screen#6 ) (byte*) print_screen#5 ← phi( @35/(byte*) print_screen#6 )
(word) rem16u#23 ← phi( @34/(word) rem16u#25 ) (word) rem16u#23 ← phi( @35/(word) rem16u#25 )
(word) main::wavelength#0 ← (byte/signed byte/word/signed word/dword/signed dword) 120 (word) main::wavelength#0 ← (byte/signed byte/word/signed word/dword/signed dword) 120
(signed word[120]) main::sintab1#0 ← { fill( 120, 0) } (signed word[120]) main::sintab1#0 ← { fill( 120, 0) }
(signed word*) sin16s_gen::sintab#1 ← (signed word[120]) main::sintab1#0 (signed word*) sin16s_gen::sintab#1 ← (signed word[120]) main::sintab1#0
@ -2873,31 +2952,31 @@ main::@return: scope:[main] from main::@8
(byte*) print_char_cursor#20 ← (byte*) print_char_cursor#40 (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#40
return return
to:@return to:@return
@34: scope:[] from @29 @35: scope:[] from @30
(byte*) print_screen#6 ← phi( @29/(byte*) print_screen#7 ) (byte*) print_screen#6 ← phi( @30/(byte*) print_screen#7 )
(byte*) print_char_cursor#50 ← phi( @29/(byte*) print_char_cursor#55 ) (byte*) print_char_cursor#50 ← phi( @30/(byte*) print_char_cursor#55 )
(byte*) print_line_cursor#12 ← phi( @29/(byte*) print_line_cursor#15 ) (byte*) print_line_cursor#12 ← phi( @30/(byte*) print_line_cursor#15 )
(word) rem16u#25 ← phi( @29/(word) rem16u#28 ) (word) rem16u#25 ← phi( @30/(word) rem16u#28 )
call main call main
to:@35 to:@36
@35: scope:[] from @34 @36: scope:[] from @35
(byte*) print_char_cursor#41 ← phi( @34/(byte*) print_char_cursor#20 ) (byte*) print_char_cursor#41 ← phi( @35/(byte*) print_char_cursor#20 )
(byte*) print_line_cursor#9 ← phi( @34/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#9 ← phi( @35/(byte*) print_line_cursor#4 )
(word) rem16u#19 ← phi( @34/(word) rem16u#9 ) (word) rem16u#19 ← phi( @35/(word) rem16u#9 )
(word) rem16u#10 ← (word) rem16u#19 (word) rem16u#10 ← (word) rem16u#19
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9 (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9
(byte*) print_char_cursor#21 ← (byte*) print_char_cursor#41 (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#41
to:@end to:@end
@end: scope:[] from @35 @end: scope:[] from @36
SYMBOL TABLE SSA SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef" (const string) $0 = (string) "0123456789abcdef"
(label) @13 (label) @13
(label) @19
(label) @2 (label) @2
(label) @29 (label) @20
(label) @34 (label) @30
(label) @35 (label) @35
(label) @36
(label) @begin (label) @begin
(label) @end (label) @end
(dword) PI2_u4f28 (dword) PI2_u4f28
@ -4000,15 +4079,15 @@ Succesful SSA optimization Pass2NopCastElimination
Culled Empty Block (label) @2 Culled Empty Block (label) @2
Culled Empty Block (label) mul16u::@3 Culled Empty Block (label) mul16u::@3
Culled Empty Block (label) @13 Culled Empty Block (label) @13
Culled Empty Block (label) @19 Culled Empty Block (label) @20
Culled Empty Block (label) print_sword::@3 Culled Empty Block (label) print_sword::@3
Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_word::@2
Culled Empty Block (label) @29 Culled Empty Block (label) @30
Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) main::@6 Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@9 Culled Empty Block (label) main::@9
Culled Empty Block (label) @35 Culled Empty Block (label) @36
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: rem16u#1 divr16u::rem#11 Not aliassing across scopes: rem16u#1 divr16u::rem#11
Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: divr16u::return#2 divr16u::return#0
@ -4253,7 +4332,7 @@ Constant inlined main::$8 = (const word) main::wavelength#0*(byte/signed byte/wo
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
Identical Phi Values (word) divr16u::divisor#6 (const word) main::wavelength#0 Identical Phi Values (word) divr16u::divisor#6 (const word) main::wavelength#0
Succesful SSA optimization Pass2IdenticalPhiElimination Succesful SSA optimization Pass2IdenticalPhiElimination
Block Sequence Planned @begin @34 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return Block Sequence Planned @begin @35 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return
Added new block during phi lifting main::@10(between main::@8 and main::@1) Added new block during phi lifting main::@10(between main::@8 and main::@1)
Added new block during phi lifting main::@11(between main::@1 and main::@2) Added new block during phi lifting main::@11(between main::@1 and main::@2)
Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1)
@ -4267,9 +4346,9 @@ Added new block during phi lifting mul16u::@10(between mul16u::@2 and mul16u::@4
Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1) Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::@1)
Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2) Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2)
Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3) Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3)
Block Sequence Planned @begin @34 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return main::@10 main::@11 print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return print_cls::@3 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@5 sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 sin16s::@14 sin16s::@13 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 Block Sequence Planned @begin @35 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return main::@10 main::@11 print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return print_cls::@3 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@5 sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 sin16s::@14 sin16s::@13 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @34 Adding NOP phi() at start of @35
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
Adding NOP phi() at start of main Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@5
@ -4403,9 +4482,9 @@ Culled Empty Block (label) mul16u::@10
Culled Empty Block (label) divr16u::@8 Culled Empty Block (label) divr16u::@8
Culled Empty Block (label) divr16u::@10 Culled Empty Block (label) divr16u::@10
Culled Empty Block (label) divr16u::@9 Culled Empty Block (label) divr16u::@9
Block Sequence Planned @begin @34 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return Block Sequence Planned @begin @35 @end main main::@5 main::@1 main::@3 main::@2 main::@7 main::@8 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @34 Adding NOP phi() at start of @35
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
Adding NOP phi() at start of main Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@5
@ -4452,14 +4531,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH FINAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
[0] phi() [ ] ( ) [0] phi() [ ] ( )
to:@34 to:@35
@34: scope:[] from @begin @35: scope:[] from @begin
[1] phi() [ ] ( ) [1] phi() [ ] ( )
[2] call main [ ] ( ) [2] call main [ ] ( )
to:@end to:@end
@end: scope:[] from @34 @end: scope:[] from @35
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @34 main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] ) [5] call sin16s_gen [ ] ( main:2 [ ] )
to:main::@5 to:main::@5
@ -4772,76 +4851,76 @@ divr16u::@return: scope:[divr16u] from divr16u::@6
DOMINATORS DOMINATORS
@begin dominated by @begin @begin dominated by @begin
@34 dominated by @34 @begin @35 dominated by @35 @begin
@end dominated by @end @34 @begin @end dominated by @end @35 @begin
main dominated by main @34 @begin main dominated by main @35 @begin
main::@5 dominated by main main::@5 @34 @begin main::@5 dominated by main main::@5 @35 @begin
main::@1 dominated by main main::@1 main::@5 @34 @begin main::@1 dominated by main main::@1 main::@5 @35 @begin
main::@3 dominated by main main::@1 main::@5 main::@3 @34 @begin main::@3 dominated by main main::@1 main::@5 main::@3 @35 @begin
main::@2 dominated by main main::@1 main::@2 main::@5 @34 @begin main::@2 dominated by main main::@1 main::@2 main::@5 @35 @begin
main::@7 dominated by main::@7 main main::@1 main::@2 main::@5 @34 @begin main::@7 dominated by main::@7 main main::@1 main::@2 main::@5 @35 @begin
main::@8 dominated by main::@7 main::@8 main main::@1 main::@2 main::@5 @34 @begin main::@8 dominated by main::@7 main::@8 main main::@1 main::@2 main::@5 @35 @begin
main::@return dominated by main::@7 main::@8 main main::@1 main::@2 main::@5 @34 @begin main::@return main::@return dominated by main::@7 main::@8 main main::@1 main::@2 main::@5 @35 @begin main::@return
print_str dominated by main main::@1 main::@5 @34 @begin print_str print_str dominated by main main::@1 main::@5 @35 @begin print_str
print_str::@1 dominated by main main::@1 main::@5 @34 @begin print_str::@1 print_str print_str::@1 dominated by main main::@1 main::@5 @35 @begin print_str::@1 print_str
print_str::@return dominated by main main::@1 main::@5 @34 @begin print_str::@return print_str::@1 print_str print_str::@return dominated by main main::@1 main::@5 @35 @begin print_str::@return print_str::@1 print_str
print_str::@2 dominated by main main::@1 main::@5 @34 @begin print_str::@1 print_str::@2 print_str print_str::@2 dominated by main main::@1 main::@5 @35 @begin print_str::@1 print_str::@2 print_str
print_sword dominated by main main::@1 main::@2 main::@5 @34 @begin print_sword print_sword dominated by main main::@1 main::@2 main::@5 @35 @begin print_sword
print_sword::@2 dominated by print_sword::@2 main main::@1 main::@2 main::@5 @34 @begin print_sword print_sword::@2 dominated by print_sword::@2 main main::@1 main::@2 main::@5 @35 @begin print_sword
print_sword::@4 dominated by print_sword::@2 print_sword::@4 main main::@1 main::@2 main::@5 @34 @begin print_sword print_sword::@4 dominated by print_sword::@2 print_sword::@4 main main::@1 main::@2 main::@5 @35 @begin print_sword
print_sword::@1 dominated by print_sword::@1 main main::@1 main::@2 main::@5 @34 @begin print_sword print_sword::@1 dominated by print_sword::@1 main main::@1 main::@2 main::@5 @35 @begin print_sword
print_sword::@return dominated by print_sword::@1 main main::@1 main::@2 main::@5 @34 @begin print_sword::@return print_sword print_sword::@return dominated by print_sword::@1 main main::@1 main::@2 main::@5 @35 @begin print_sword::@return print_sword
print_word dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @34 @begin print_sword print_word dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @35 @begin print_sword
print_word::@1 dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @34 @begin print_word::@1 print_sword print_word::@1 dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @35 @begin print_word::@1 print_sword
print_word::@return dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @34 @begin print_word::@return print_word::@1 print_sword print_word::@return dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @35 @begin print_word::@return print_word::@1 print_sword
print_byte dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @34 @begin print_byte print_sword print_byte dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @35 @begin print_byte print_sword
print_byte::@1 dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @34 @begin print_byte::@1 print_byte print_sword print_byte::@1 dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @35 @begin print_byte::@1 print_byte print_sword
print_byte::@return dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @34 @begin print_byte::@return print_byte::@1 print_byte print_sword print_byte::@return dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @35 @begin print_byte::@return print_byte::@1 print_byte print_sword
print_char dominated by main print_char main::@1 main::@2 main::@5 @34 @begin print_sword print_char dominated by main print_char main::@1 main::@2 main::@5 @35 @begin print_sword
print_char::@return dominated by main print_char main::@1 main::@2 main::@5 @34 print_char::@return @begin print_sword print_char::@return dominated by main print_char main::@1 main::@2 main::@5 print_char::@return @35 @begin print_sword
print_cls dominated by main main::@5 @34 @begin print_cls print_cls dominated by main main::@5 @35 @begin print_cls
print_cls::@1 dominated by main main::@5 @34 @begin print_cls::@1 print_cls print_cls::@1 dominated by main main::@5 @35 @begin print_cls::@1 print_cls
print_cls::@return dominated by main main::@5 @34 @begin print_cls::@return print_cls::@1 print_cls print_cls::@return dominated by main main::@5 @35 @begin print_cls::@return print_cls::@1 print_cls
sin16s_gen dominated by main @34 @begin sin16s_gen sin16s_gen dominated by main @35 @begin sin16s_gen
sin16s_gen::@3 dominated by main @34 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@3 dominated by main @35 @begin sin16s_gen sin16s_gen::@3
sin16s_gen::@1 dominated by main @34 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@1 dominated by main @35 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1
sin16s_gen::@4 dominated by main @34 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 sin16s_gen::@4 dominated by main @35 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1
sin16s_gen::@return dominated by main sin16s_gen::@return @34 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 sin16s_gen::@return dominated by main sin16s_gen::@return @35 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1
sin16s dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1
sin16s::@4 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4 sin16s::@4 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4
sin16s::@1 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@1 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1
sin16s::@5 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5 sin16s::@5 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5
sin16s::@2 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 sin16s::@2 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2
sin16s::@8 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@8 sin16s::@2 sin16s::@8 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@8 sin16s::@2
sin16s::@9 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 sin16s::@9 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2
sin16s::@10 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@10 sin16s::@2 sin16s::@10 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@10 sin16s::@2
sin16s::@11 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@11 sin16s::@10 sin16s::@2 sin16s::@11 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@11 sin16s::@10 sin16s::@2
sin16s::@12 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 sin16s::@12 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2
sin16s::@6 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@6 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 sin16s::@6 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@6 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2
sin16s::@3 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2 sin16s::@3 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2
sin16s::@return dominated by main @34 sin16s @begin sin16s::@return sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2 sin16s::@return dominated by main sin16s @35 @begin sin16s::@return sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2
sin16s::@15 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@15 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 sin16s::@15 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@15 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2
mulu16_sel dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mulu16_sel dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2
mulu16_sel::@2 dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mulu16_sel::@2 mulu16_sel::@2 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mulu16_sel::@2
mulu16_sel::@return dominated by main @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mulu16_sel::@return mulu16_sel::@2 mulu16_sel::@return dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mulu16_sel::@return mulu16_sel::@2
mul16u dominated by main mul16u @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u dominated by main mul16u sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2
mul16u::@1 dominated by main mul16u mul16u::@1 @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u::@1 dominated by main mul16u mul16u::@1 sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2
mul16u::@return dominated by main mul16u mul16u::@1 @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u::@return mul16u::@return dominated by main mul16u mul16u::@1 sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u::@return
mul16u::@2 dominated by main mul16u mul16u::@1 mul16u::@2 @34 sin16s @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u::@2 dominated by main mul16u mul16u::@1 mul16u::@2 sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2
mul16u::@7 dominated by main mul16u mul16u::@1 mul16u::@2 @34 sin16s @begin mul16u::@7 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u::@7 dominated by main mul16u mul16u::@1 mul16u::@2 sin16s @35 @begin mul16u::@7 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2
mul16u::@4 dominated by main mul16u mul16u::@1 mul16u::@2 @34 sin16s @begin mul16u::@4 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u::@4 dominated by main mul16u mul16u::@1 mul16u::@2 sin16s @35 @begin mul16u::@4 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2
div32u16u dominated by main @34 @begin sin16s_gen div32u16u div32u16u dominated by main @35 @begin sin16s_gen div32u16u
div32u16u::@2 dominated by main div32u16u::@2 @34 @begin sin16s_gen div32u16u div32u16u::@2 dominated by main div32u16u::@2 @35 @begin sin16s_gen div32u16u
div32u16u::@3 dominated by main div32u16u::@2 div32u16u::@3 @34 @begin sin16s_gen div32u16u div32u16u::@3 dominated by main div32u16u::@2 div32u16u::@3 @35 @begin sin16s_gen div32u16u
div32u16u::@return dominated by main div32u16u::@2 div32u16u::@3 @34 @begin sin16s_gen div32u16u div32u16u::@return div32u16u::@return dominated by main div32u16u::@2 div32u16u::@3 @35 @begin sin16s_gen div32u16u div32u16u::@return
divr16u dominated by divr16u main @34 @begin sin16s_gen div32u16u divr16u dominated by divr16u main @35 @begin sin16s_gen div32u16u
divr16u::@1 dominated by divr16u divr16u::@1 main @34 @begin sin16s_gen div32u16u divr16u::@1 dominated by divr16u divr16u::@1 main @35 @begin sin16s_gen div32u16u
divr16u::@4 dominated by divr16u divr16u::@1 main divr16u::@4 @34 @begin sin16s_gen div32u16u divr16u::@4 dominated by divr16u divr16u::@1 main divr16u::@4 @35 @begin sin16s_gen div32u16u
divr16u::@2 dominated by divr16u divr16u::@2 divr16u::@1 main @34 @begin sin16s_gen div32u16u divr16u::@2 dominated by divr16u divr16u::@2 divr16u::@1 main @35 @begin sin16s_gen div32u16u
divr16u::@5 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@5 @34 @begin sin16s_gen div32u16u divr16u::@5 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@5 @35 @begin sin16s_gen div32u16u
divr16u::@3 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 @34 @begin sin16s_gen div32u16u divr16u::@3 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 @35 @begin sin16s_gen div32u16u
divr16u::@6 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @34 @begin sin16s_gen div32u16u divr16u::@6 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @35 @begin sin16s_gen div32u16u
divr16u::@return dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @34 @begin sin16s_gen div32u16u divr16u::@return divr16u::@return dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @35 @begin sin16s_gen div32u16u divr16u::@return
NATURAL LOOPS NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@8 blocks: null Found back edge: Loop head: main::@1 tails: main::@8 blocks: null
@ -5271,17 +5350,17 @@ INITIAL ASM
.label print_char_cursor = $a .label print_char_cursor = $a
//SEG2 @begin //SEG2 @begin
bbegin: bbegin:
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34] //SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b34_from_bbegin: b35_from_bbegin:
jmp b34 jmp b35
//SEG4 @34 //SEG4 @35
b34: b35:
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main] //SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b34: main_from_b35:
jsr main jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end] //SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b34: bend_from_b35:
jmp bend jmp bend
//SEG8 @end //SEG8 @end
bend: bend:
@ -6789,17 +6868,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_char_cursor = 8 .label print_char_cursor = 8
//SEG2 @begin //SEG2 @begin
bbegin: bbegin:
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34] //SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b34_from_bbegin: b35_from_bbegin:
jmp b34 jmp b35
//SEG4 @34 //SEG4 @35
b34: b35:
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main] //SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b34: main_from_b35:
jsr main jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end] //SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b34: bend_from_b35:
jmp bend jmp bend
//SEG8 @end //SEG8 @end
bend: bend:
@ -7847,7 +7926,7 @@ divr16u: {
print_hextab: .text "0123456789abcdef" print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b34 Removing instruction jmp b35
Removing instruction jmp bend Removing instruction jmp bend
Removing instruction jmp b5 Removing instruction jmp b5
Removing instruction jmp b1 Removing instruction jmp b1
@ -7931,9 +8010,9 @@ Replacing label b3_from_b2 with b3
Replacing label b3_from_b2 with b3 Replacing label b3_from_b2 with b3
Replacing label b1_from_b3 with b1 Replacing label b1_from_b3 with b1
Removing instruction bbegin: Removing instruction bbegin:
Removing instruction b34_from_bbegin: Removing instruction b35_from_bbegin:
Removing instruction main_from_b34: Removing instruction main_from_b35:
Removing instruction bend_from_b34: Removing instruction bend_from_b35:
Removing instruction b5_from_main: Removing instruction b5_from_main:
Removing instruction print_cls_from_b5: Removing instruction print_cls_from_b5:
Removing instruction b1_from_b8: Removing instruction b1_from_b8:
@ -7964,7 +8043,7 @@ Removing instruction b2_from_b4:
Removing instruction b3_from_b2: Removing instruction b3_from_b2:
Removing instruction b3_from_b5: Removing instruction b3_from_b5:
Succesful ASM optimization Pass5RedundantLabelElimination Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b34: Removing instruction b35:
Removing instruction bend: Removing instruction bend:
Removing instruction sin16s_gen_from_main: Removing instruction sin16s_gen_from_main:
Removing instruction b5: Removing instruction b5:
@ -8041,7 +8120,7 @@ Removing unreachable instruction jmp b3
Succesful ASM optimization Pass5UnreachableCodeElimination Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE FINAL SYMBOL TABLE
(label) @34 (label) @35
(label) @begin (label) @begin
(label) @end (label) @end
(dword) PI2_u4f28 (dword) PI2_u4f28
@ -8330,12 +8409,12 @@ Score: 20867
.label rem16u = 2 .label rem16u = 2
.label print_char_cursor = 8 .label print_char_cursor = 8
//SEG2 @begin //SEG2 @begin
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34] //SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
//SEG4 @34 //SEG4 @35
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main] //SEG6 [4] phi from @35 to main [phi:@35->main]
jsr main jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end] //SEG7 [3] phi from @35 to @end [phi:@35->@end]
//SEG8 @end //SEG8 @end
//SEG9 main //SEG9 main
main: { main: {

View File

@ -1,4 +1,4 @@
(label) @34 (label) @35
(label) @begin (label) @begin
(label) @end (label) @end
(dword) PI2_u4f28 (dword) PI2_u4f28

View File

@ -1,13 +1,13 @@
@begin: scope:[] from @begin: scope:[] from
[0] phi() [ ] ( ) [0] phi() [ ] ( )
to:@36 to:@37
@36: scope:[] from @begin @37: scope:[] from @begin
[1] phi() [ ] ( ) [1] phi() [ ] ( )
[2] call main [ ] ( ) [2] call main [ ] ( )
to:@end to:@end
@end: scope:[] from @36 @end: scope:[] from @37
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @36 main: scope:[main] from @37
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] ) [5] call sin16s_gen [ ] ( main:2 [ ] )
to:main::@5 to:main::@5

View File

@ -65,6 +65,23 @@ void sin16s_gen(signed word* sintab, word wavelength) {
} }
} }
// Generate signed word sinus table - with values in the range min-max.
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
void sin16s_gen2(signed word* sintab, word wavelength, signed word min, signed word max) {
signed word ampl = max-min;
signed word offs = min + ampl>>1; // ampl is always positive so shifting left does not alter the sign
// u[4.28] step = PI*2/wavelength
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
// 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;
x = x + step;
}
}
// Generate signed byte sinus table - on the full -$7f - $7f range // Generate signed byte sinus table - on the full -$7f - $7f range
// sintab - the table to generate into // sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) // wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
@ -387,6 +404,7 @@ signed dword mul16s(signed word a, signed word b) {
} }
Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i
Adding pre/post-modifier (word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab
Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i
Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx
@ -604,6 +622,7 @@ SYMBOLS
(label) @34 (label) @34
(label) @35 (label) @35
(label) @36 (label) @36
(label) @37
(label) @4 (label) @4
(label) @5 (label) @5
(label) @6 (label) @6
@ -1139,6 +1158,31 @@ SYMBOLS
(dword) sin16s_gen::step (dword) sin16s_gen::step
(word) sin16s_gen::wavelength (word) sin16s_gen::wavelength
(dword) sin16s_gen::x (dword) sin16s_gen::x
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
(signed word~) sin16s_gen2::$0
(signed word~) sin16s_gen2::$1
(dword~) sin16s_gen2::$10
(bool~) sin16s_gen2::$11
(signed word~) sin16s_gen2::$2
(dword~) sin16s_gen2::$3
(signed word~) sin16s_gen2::$4
(signed dword~) sin16s_gen2::$5
(word~) sin16s_gen2::$6
(signed word~) sin16s_gen2::$7
(signed word~) sin16s_gen2::$8
(signed word*~) sin16s_gen2::$9
(label) sin16s_gen2::@1
(label) sin16s_gen2::@2
(label) sin16s_gen2::@return
(signed word) sin16s_gen2::ampl
(word) sin16s_gen2::i
(signed word) sin16s_gen2::max
(signed word) sin16s_gen2::min
(signed word) sin16s_gen2::offs
(signed word*) sin16s_gen2::sintab
(dword) sin16s_gen2::step
(word) sin16s_gen2::wavelength
(dword) sin16s_gen2::x
(void()) sin16s_genb((signed word*) sin16s_genb::sintab , (word) sin16s_genb::wavelength) (void()) sin16s_genb((signed word*) sin16s_genb::sintab , (word) sin16s_genb::wavelength)
(dword~) sin16s_genb::$0 (dword~) sin16s_genb::$0
(word~) sin16s_genb::$1 (word~) sin16s_genb::$1
@ -1794,6 +1838,39 @@ sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2
to:@return to:@return
@14: scope:[] from @13 @14: scope:[] from @13
to:@15 to:@15
sin16s_gen2: scope:[sin16s_gen2] from
(signed word~) sin16s_gen2::$0 ← (signed word) sin16s_gen2::max - (signed word) sin16s_gen2::min
(signed word) sin16s_gen2::ampl ← (signed word~) sin16s_gen2::$0
(signed word~) sin16s_gen2::$1 ← (signed word) sin16s_gen2::ampl >> (byte/signed byte/word/signed word/dword/signed dword) 1
(signed word~) sin16s_gen2::$2 ← (signed word) sin16s_gen2::min + (signed word~) sin16s_gen2::$1
(signed word) sin16s_gen2::offs ← (signed word~) sin16s_gen2::$2
(dword~) sin16s_gen2::$3 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen2::wavelength
(dword) sin16s_gen2::step ← (dword~) sin16s_gen2::$3
(dword) sin16s_gen2::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
(word) sin16s_gen2::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:sin16s_gen2::@1
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2 sin16s_gen2::@1
(signed word~) sin16s_gen2::$4 ← call sin16s (dword) sin16s_gen2::x
(signed dword~) sin16s_gen2::$5 ← call mul16s (signed word~) sin16s_gen2::$4 (signed word) sin16s_gen2::ampl
(word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
(signed word~) sin16s_gen2::$7 ← ((signed word)) (word~) sin16s_gen2::$6
(signed word~) sin16s_gen2::$8 ← (signed word) sin16s_gen2::offs + (signed word~) sin16s_gen2::$7
*((signed word*) sin16s_gen2::sintab) ← (signed word~) sin16s_gen2::$8
(signed word*~) sin16s_gen2::$9 ← (signed word*) sin16s_gen2::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2
(signed word*) sin16s_gen2::sintab ← (signed word*~) sin16s_gen2::$9
(dword~) sin16s_gen2::$10 ← (dword) sin16s_gen2::x + (dword) sin16s_gen2::step
(dword) sin16s_gen2::x ← (dword~) sin16s_gen2::$10
(word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
(bool~) sin16s_gen2::$11 ← (word) sin16s_gen2::i < (word) sin16s_gen2::wavelength
if((bool~) sin16s_gen2::$11) goto sin16s_gen2::@1
to:sin16s_gen2::@2
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2::@1
to:sin16s_gen2::@return
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@2
return
to:@return
@15: scope:[] from @14
to:@16
sin8s_gen: scope:[sin8s_gen] from sin8s_gen: scope:[sin8s_gen] from
(word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength (word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength
(word) sin8s_gen::step ← (word~) sin8s_gen::$0 (word) sin8s_gen::step ← (word~) sin8s_gen::$0
@ -1815,8 +1892,8 @@ sin8s_gen::@2: scope:[sin8s_gen] from sin8s_gen::@1
sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2 sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2
return return
to:@return to:@return
@15: scope:[] from @14 @16: scope:[] from @15
to:@16 to:@17
sin16s: scope:[sin16s] from sin16s: scope:[sin16s] from
(byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28 (bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28
@ -1878,8 +1955,8 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7
to:@return to:@return
sin16s::@7: scope:[sin16s] from sin16s::@7: scope:[sin16s] from
to:sin16s::@return to:sin16s::@return
@16: scope:[] from @15 @17: scope:[] from @16
to:@17 to:@18
sin8s: scope:[sin8s] from sin8s: scope:[sin8s] from
(byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12 (bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12
@ -1949,8 +2026,8 @@ sin8s::@return: scope:[sin8s] from sin8s::@4 sin8s::@9
to:@return to:@return
sin8s::@9: scope:[sin8s] from sin8s::@9: scope:[sin8s] from
to:sin8s::@return to:sin8s::@return
@17: scope:[] from @16 @18: scope:[] from @17
to:@18 to:@19
mulu16_sel: scope:[mulu16_sel] from mulu16_sel: scope:[mulu16_sel] from
(dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2
(dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select
@ -1963,8 +2040,8 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1
to:@return to:@return
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel::@1: scope:[mulu16_sel] from
to:mulu16_sel::@return to:mulu16_sel::@return
@18: scope:[] from @17 @19: scope:[] from @18
to:@19 to:@20
mulu8_sel: scope:[mulu8_sel] from mulu8_sel: scope:[mulu8_sel] from
(word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2
(word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select
@ -1977,8 +2054,8 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1
to:@return to:@return
mulu8_sel::@1: scope:[mulu8_sel] from mulu8_sel::@1: scope:[mulu8_sel] from
to:mulu8_sel::@return to:mulu8_sel::@return
@19: scope:[] from @18 @20: scope:[] from @19
to:@20 to:@21
sin16s_genb: scope:[sin16s_genb] from sin16s_genb: scope:[sin16s_genb] from
(dword~) sin16s_genb::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_genb::wavelength (dword~) sin16s_genb::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_genb::wavelength
(dword) sin16s_genb::step ← (dword~) sin16s_genb::$0 (dword) sin16s_genb::step ← (dword~) sin16s_genb::$0
@ -2002,8 +2079,8 @@ sin16s_genb::@2: scope:[sin16s_genb] from sin16s_genb::@1
sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@2 sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@2
return return
to:@return to:@return
@20: scope:[] from @19 @21: scope:[] from @20
to:@21 to:@22
sin16sb: scope:[sin16sb] from sin16sb: scope:[sin16sb] from
(byte) sin16sb::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin16sb::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16sb::$0 ← (word) sin16sb::x >= (word) PI_u4f12 (bool~) sin16sb::$0 ← (word) sin16sb::x >= (word) PI_u4f12
@ -2064,11 +2141,11 @@ sin16sb::@return: scope:[sin16sb] from sin16sb::@3 sin16sb::@7
to:@return to:@return
sin16sb::@7: scope:[sin16sb] from sin16sb::@7: scope:[sin16sb] from
to:sin16sb::@return to:sin16sb::@return
@21: scope:[] from @20 @22: scope:[] from @21
(byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor ← (byte*) print_screen (byte*) print_line_cursor ← (byte*) print_screen
(byte*) print_char_cursor ← (byte*) print_line_cursor (byte*) print_char_cursor ← (byte*) print_line_cursor
to:@22 to:@23
print_str_lines: scope:[print_str_lines] from print_str_lines: scope:[print_str_lines] from
to:print_str_lines::@1 to:print_str_lines::@1
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9
@ -2106,8 +2183,8 @@ print_str_lines::@10: scope:[print_str_lines] from
print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3 print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3
return return
to:@return to:@return
@22: scope:[] from @21 @23: scope:[] from @22
to:@23 to:@24
print_str_ln: scope:[print_str_ln] from print_str_ln: scope:[print_str_ln] from
(void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str (void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str
(void~) print_str_ln::$1 ← call print_ln (void~) print_str_ln::$1 ← call print_ln
@ -2115,8 +2192,8 @@ print_str_ln: scope:[print_str_ln] from
print_str_ln::@return: scope:[print_str_ln] from print_str_ln print_str_ln::@return: scope:[print_str_ln] from print_str_ln
return return
to:@return to:@return
@23: scope:[] from @22 @24: scope:[] from @23
to:@24 to:@25
print_str: scope:[print_str] from print_str: scope:[print_str] from
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
@ -2139,8 +2216,8 @@ print_str::@6: scope:[print_str] from
print_str::@return: scope:[print_str] from print_str::@3 print_str::@return: scope:[print_str] from print_str::@3
return return
to:@return to:@return
@24: scope:[] from @23 @25: scope:[] from @24
to:@25 to:@26
print_str_at: scope:[print_str_at] from print_str_at: scope:[print_str_at] from
to:print_str_at::@1 to:print_str_at::@1
print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2
@ -2163,8 +2240,8 @@ print_str_at::@6: scope:[print_str_at] from
print_str_at::@return: scope:[print_str_at] from print_str_at::@3 print_str_at::@return: scope:[print_str_at] from print_str_at::@3
return return
to:@return to:@return
@25: scope:[] from @24 @26: scope:[] from @25
to:@26 to:@27
print_ln: scope:[print_ln] from print_ln: scope:[print_ln] from
to:print_ln::@1 to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
@ -2179,8 +2256,8 @@ print_ln::@2: scope:[print_ln] from print_ln::@1
print_ln::@return: scope:[print_ln] from print_ln::@2 print_ln::@return: scope:[print_ln] from print_ln::@2
return return
to:@return to:@return
@26: scope:[] from @25 @27: scope:[] from @26
to:@27 to:@28
print_sword: scope:[print_sword] from print_sword: scope:[print_sword] from
(bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sword::$1 ← ! (bool~) print_sword::$0 (bool~) print_sword::$1 ← ! (bool~) print_sword::$0
@ -2198,8 +2275,8 @@ print_sword::@2: scope:[print_sword] from print_sword
print_sword::@return: scope:[print_sword] from print_sword::@1 print_sword::@return: scope:[print_sword] from print_sword::@1
return return
to:@return to:@return
@27: scope:[] from @26 @28: scope:[] from @27
to:@28 to:@29
print_sbyte: scope:[print_sbyte] from print_sbyte: scope:[print_sbyte] from
(bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0 (bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0
@ -2217,8 +2294,8 @@ print_sbyte::@2: scope:[print_sbyte] from print_sbyte
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1
return return
to:@return to:@return
@28: scope:[] from @27 @29: scope:[] from @28
to:@29 to:@30
print_word: scope:[print_word] from print_word: scope:[print_word] from
(byte~) print_word::$0 ← > (word) print_word::w (byte~) print_word::$0 ← > (word) print_word::w
(void~) print_word::$1 ← call print_byte (byte~) print_word::$0 (void~) print_word::$1 ← call print_byte (byte~) print_word::$0
@ -2228,8 +2305,8 @@ print_word: scope:[print_word] from
print_word::@return: scope:[print_word] from print_word print_word::@return: scope:[print_word] from print_word
return return
to:@return to:@return
@29: scope:[] from @28 @30: scope:[] from @29
to:@30 to:@31
print_dword: scope:[print_dword] from print_dword: scope:[print_dword] from
(word~) print_dword::$0 ← > (dword) print_dword::dw (word~) print_dword::$0 ← > (dword) print_dword::dw
(void~) print_dword::$1 ← call print_word (word~) print_dword::$0 (void~) print_dword::$1 ← call print_word (word~) print_dword::$0
@ -2239,8 +2316,8 @@ print_dword: scope:[print_dword] from
print_dword::@return: scope:[print_dword] from print_dword print_dword::@return: scope:[print_dword] from print_dword
return return
to:@return to:@return
@30: scope:[] from @29 @31: scope:[] from @30
to:@31 to:@32
print_sdword: scope:[print_sdword] from print_sdword: scope:[print_sdword] from
(bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0
@ -2258,9 +2335,9 @@ print_sdword::@2: scope:[print_sdword] from print_sdword
print_sdword::@return: scope:[print_sdword] from print_sdword::@1 print_sdword::@return: scope:[print_sdword] from print_sdword::@1
return return
to:@return to:@return
@31: scope:[] from @30 @32: scope:[] from @31
(byte[]) print_hextab ← (string) "0123456789abcdef" (byte[]) print_hextab ← (string) "0123456789abcdef"
to:@32 to:@33
print_byte: scope:[print_byte] from print_byte: scope:[print_byte] from
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
(void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0) (void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0)
@ -2270,8 +2347,8 @@ print_byte: scope:[print_byte] from
print_byte::@return: scope:[print_byte] from print_byte print_byte::@return: scope:[print_byte] from print_byte
return return
to:@return to:@return
@32: scope:[] from @31 @33: scope:[] from @32
to:@33 to:@34
print_char: scope:[print_char] from print_char: scope:[print_char] from
*((byte*) print_char_cursor) ← (byte) print_char::ch *((byte*) print_char_cursor) ← (byte) print_char::ch
(byte*) print_char_cursor ← ++ (byte*) print_char_cursor (byte*) print_char_cursor ← ++ (byte*) print_char_cursor
@ -2279,8 +2356,8 @@ print_char: scope:[print_char] from
print_char::@return: scope:[print_char] from print_char print_char::@return: scope:[print_char] from print_char
return return
to:@return to:@return
@33: scope:[] from @32 @34: scope:[] from @33
to:@34 to:@35
print_cls: scope:[print_cls] from print_cls: scope:[print_cls] from
(byte*) print_cls::sc ← (byte*) print_screen (byte*) print_cls::sc ← (byte*) print_screen
to:print_cls::@1 to:print_cls::@1
@ -2298,8 +2375,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
print_cls::@return: scope:[print_cls] from print_cls::@2 print_cls::@return: scope:[print_cls] from print_cls::@2
return return
to:@return to:@return
@34: scope:[] from @33 @35: scope:[] from @34
to:@35 to:@36
print_set_screen: scope:[print_set_screen] from print_set_screen: scope:[print_set_screen] from
(byte*) print_screen ← (byte*) print_set_screen::screen (byte*) print_screen ← (byte*) print_set_screen::screen
(byte*) print_line_cursor ← (byte*) print_screen (byte*) print_line_cursor ← (byte*) print_screen
@ -2308,8 +2385,8 @@ print_set_screen: scope:[print_set_screen] from
print_set_screen::@return: scope:[print_set_screen] from print_set_screen print_set_screen::@return: scope:[print_set_screen] from print_set_screen
return return
to:@return to:@return
@35: scope:[] from @34 @36: scope:[] from @35
to:@36 to:@37
main: scope:[main] from main: scope:[main] from
(word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120 (word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120
(signed word[120]) main::sintab1 ← { fill( 120, 0) } (signed word[120]) main::sintab1 ← { fill( 120, 0) }
@ -2347,16 +2424,16 @@ main::@4: scope:[main] from main::@2
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
return return
to:@return to:@return
@36: scope:[] from @35 @37: scope:[] from @36
call main call main
to:@end to:@end
@end: scope:[] from @36 @end: scope:[] from @37
Removing unused procedure div8s Removing unused procedure div8s
Removing unused procedure div16s Removing unused procedure div16s
Removing unused procedure mul8s Removing unused procedure mul8s
Removing unused procedure mul8su Removing unused procedure mul8su
Removing unused procedure mul16s Removing unused procedure sin16s_gen2
Removing unused procedure sin8s_gen Removing unused procedure sin8s_gen
Removing unused procedure print_str_lines Removing unused procedure print_str_lines
Removing unused procedure print_str_ln Removing unused procedure print_str_ln
@ -2367,6 +2444,7 @@ Removing unused procedure print_set_screen
Removing unused procedure div8u Removing unused procedure div8u
Removing unused procedure div16u Removing unused procedure div16u
Removing unused procedure divr16s Removing unused procedure divr16s
Removing unused procedure mul16s
Removing unused procedure sin8s Removing unused procedure sin8s
Removing unused procedure print_ln Removing unused procedure print_ln
Removing unused procedure print_dword Removing unused procedure print_dword
@ -2412,32 +2490,33 @@ Removing empty block @12
Removing empty block sin16s_gen::@2 Removing empty block sin16s_gen::@2
Removing empty block @14 Removing empty block @14
Removing empty block @15 Removing empty block @15
Removing empty block sin16s::@7
Removing empty block @16 Removing empty block @16
Removing empty block sin16s::@7
Removing empty block @17 Removing empty block @17
Removing empty block mulu16_sel::@1
Removing empty block @18 Removing empty block @18
Removing empty block mulu16_sel::@1
Removing empty block @19 Removing empty block @19
Removing empty block sin16s_genb::@2
Removing empty block @20 Removing empty block @20
Removing empty block sin16s_genb::@2
Removing empty block @21
Removing empty block sin16sb::@7 Removing empty block sin16sb::@7
Removing empty block @22
Removing empty block @23 Removing empty block @23
Removing empty block @24
Removing empty block print_str::@4 Removing empty block print_str::@4
Removing empty block print_str::@3 Removing empty block print_str::@3
Removing empty block print_str::@5 Removing empty block print_str::@5
Removing empty block print_str::@6 Removing empty block print_str::@6
Removing empty block @24
Removing empty block @25 Removing empty block @25
Removing empty block @26 Removing empty block @26
Removing empty block @27 Removing empty block @27
Removing empty block @28 Removing empty block @28
Removing empty block @29 Removing empty block @29
Removing empty block @30 Removing empty block @30
Removing empty block @32 Removing empty block @31
Removing empty block @33 Removing empty block @33
Removing empty block @34 Removing empty block @34
Removing empty block @35 Removing empty block @35
Removing empty block @36
Removing empty block main::@4 Removing empty block main::@4
PROCEDURE MODIFY VARIABLE ANALYSIS PROCEDURE MODIFY VARIABLE ANALYSIS
divr16u modifies rem16u divr16u modifies rem16u
@ -2643,7 +2722,7 @@ mul16u::@return: scope:[mul16u] from mul16u::@3
(dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428 (dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428
(word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868
(word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434
to:@21 to:@22
sin16s_gen: scope:[sin16s_gen] from main sin16s_gen: scope:[sin16s_gen] from main
(signed word*) sin16s_gen::sintab#5 ← phi( main/(signed word*) sin16s_gen::sintab#1 ) (signed word*) sin16s_gen::sintab#5 ← phi( main/(signed word*) sin16s_gen::sintab#1 )
(word) rem16u#27 ← phi( main/(word) rem16u#31 ) (word) rem16u#27 ← phi( main/(word) rem16u#31 )
@ -3018,12 +3097,12 @@ sin16sb::@return: scope:[sin16sb] from sin16sb::@3
(signed word) sin16sb::return#2 ← (signed word) sin16sb::return#4 (signed word) sin16sb::return#2 ← (signed word) sin16sb::return#4
return return
to:@return to:@return
@21: scope:[] from @13 @22: scope:[] from @13
(word) rem16u#38 ← phi( @13/(word) rem16u#40 ) (word) rem16u#38 ← phi( @13/(word) rem16u#40 )
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_line_cursor#0 ← (byte*) print_screen#0
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
to:@31 to:@32
print_str: scope:[print_str] from main::@3 main::@8 print_str: scope:[print_str] from main::@3 main::@8
(byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@8/(byte*) print_char_cursor#17 ) (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@8/(byte*) print_char_cursor#17 )
(byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@8/(byte*) print_str::str#1 ) (byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@8/(byte*) print_str::str#1 )
@ -3106,13 +3185,13 @@ print_word::@return: scope:[print_word] from print_word::@2
(byte*) print_char_cursor#8 ← (byte*) print_char_cursor#29 (byte*) print_char_cursor#8 ← (byte*) print_char_cursor#29
return return
to:@return to:@return
@31: scope:[] from @21 @32: scope:[] from @22
(byte*) print_screen#8 ← phi( @21/(byte*) print_screen#0 ) (byte*) print_screen#8 ← phi( @22/(byte*) print_screen#0 )
(byte*) print_char_cursor#55 ← phi( @21/(byte*) print_char_cursor#0 ) (byte*) print_char_cursor#55 ← phi( @22/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#15 ← phi( @21/(byte*) print_line_cursor#0 ) (byte*) print_line_cursor#15 ← phi( @22/(byte*) print_line_cursor#0 )
(word) rem16u#37 ← phi( @21/(word) rem16u#38 ) (word) rem16u#37 ← phi( @22/(word) rem16u#38 )
(byte[]) print_hextab#0 ← (const string) $0 (byte[]) print_hextab#0 ← (const string) $0
to:@36 to:@37
print_byte: scope:[print_byte] from print_word print_word::@1 print_byte: scope:[print_byte] from print_word print_word::@1
(byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#6 ) (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#45 print_word::@1/(byte*) print_char_cursor#6 )
(byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
@ -3173,11 +3252,11 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
(byte*) print_char_cursor#15 ← (byte*) print_char_cursor#35 (byte*) print_char_cursor#15 ← (byte*) print_char_cursor#35
return return
to:@return to:@return
main: scope:[main] from @36 main: scope:[main] from @37
(byte*) print_char_cursor#56 ← phi( @36/(byte*) print_char_cursor#50 ) (byte*) print_char_cursor#56 ← phi( @37/(byte*) print_char_cursor#50 )
(byte*) print_line_cursor#16 ← phi( @36/(byte*) print_line_cursor#12 ) (byte*) print_line_cursor#16 ← phi( @37/(byte*) print_line_cursor#12 )
(byte*) print_screen#6 ← phi( @36/(byte*) print_screen#7 ) (byte*) print_screen#6 ← phi( @37/(byte*) print_screen#7 )
(word) rem16u#31 ← phi( @36/(word) rem16u#33 ) (word) rem16u#31 ← phi( @37/(word) rem16u#33 )
(word) main::wavelength#0 ← (byte/signed byte/word/signed word/dword/signed dword) 120 (word) main::wavelength#0 ← (byte/signed byte/word/signed word/dword/signed dword) 120
(signed word[120]) main::sintab1#0 ← { fill( 120, 0) } (signed word[120]) main::sintab1#0 ← { fill( 120, 0) }
(signed word[120]) main::sintab2#0 ← { fill( 120, 0) } (signed word[120]) main::sintab2#0 ← { fill( 120, 0) }
@ -3295,31 +3374,31 @@ main::@return: scope:[main] from main::@9
(byte*) print_char_cursor#20 ← (byte*) print_char_cursor#40 (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#40
return return
to:@return to:@return
@36: scope:[] from @31 @37: scope:[] from @32
(byte*) print_screen#7 ← phi( @31/(byte*) print_screen#8 ) (byte*) print_screen#7 ← phi( @32/(byte*) print_screen#8 )
(byte*) print_char_cursor#50 ← phi( @31/(byte*) print_char_cursor#55 ) (byte*) print_char_cursor#50 ← phi( @32/(byte*) print_char_cursor#55 )
(byte*) print_line_cursor#12 ← phi( @31/(byte*) print_line_cursor#15 ) (byte*) print_line_cursor#12 ← phi( @32/(byte*) print_line_cursor#15 )
(word) rem16u#33 ← phi( @31/(word) rem16u#37 ) (word) rem16u#33 ← phi( @32/(word) rem16u#37 )
call main call main
to:@37 to:@38
@37: scope:[] from @36 @38: scope:[] from @37
(byte*) print_char_cursor#41 ← phi( @36/(byte*) print_char_cursor#20 ) (byte*) print_char_cursor#41 ← phi( @37/(byte*) print_char_cursor#20 )
(byte*) print_line_cursor#9 ← phi( @36/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#9 ← phi( @37/(byte*) print_line_cursor#4 )
(word) rem16u#25 ← phi( @36/(word) rem16u#12 ) (word) rem16u#25 ← phi( @37/(word) rem16u#12 )
(word) rem16u#13 ← (word) rem16u#25 (word) rem16u#13 ← (word) rem16u#25
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9 (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9
(byte*) print_char_cursor#21 ← (byte*) print_char_cursor#41 (byte*) print_char_cursor#21 ← (byte*) print_char_cursor#41
to:@end to:@end
@end: scope:[] from @37 @end: scope:[] from @38
SYMBOL TABLE SSA SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef" (const string) $0 = (string) "0123456789abcdef"
(label) @13 (label) @13
(label) @2 (label) @2
(label) @21 (label) @22
(label) @31 (label) @32
(label) @36
(label) @37 (label) @37
(label) @38
(label) @begin (label) @begin
(label) @end (label) @end
(dword) PI2_u4f28 (dword) PI2_u4f28
@ -4782,15 +4861,15 @@ Succesful SSA optimization Pass2NopCastElimination
Culled Empty Block (label) @2 Culled Empty Block (label) @2
Culled Empty Block (label) mul16u::@3 Culled Empty Block (label) mul16u::@3
Culled Empty Block (label) @13 Culled Empty Block (label) @13
Culled Empty Block (label) @21 Culled Empty Block (label) @22
Culled Empty Block (label) print_sword::@3 Culled Empty Block (label) print_sword::@3
Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_word::@2
Culled Empty Block (label) @31 Culled Empty Block (label) @32
Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) main::@7 Culled Empty Block (label) main::@7
Culled Empty Block (label) main::@10 Culled Empty Block (label) main::@10
Culled Empty Block (label) @37 Culled Empty Block (label) @38
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1
Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0 Not aliassing across scopes: divr16u::divisor#6 divr16u::divisor#0
@ -5213,7 +5292,7 @@ Constant inlined divr16u::dividend#2 = <(const dword) PI2_u4f28#0
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
Identical Phi Values (word) divr16u::divisor#6 (const word) main::wavelength#0 Identical Phi Values (word) divr16u::divisor#6 (const word) main::wavelength#0
Succesful SSA optimization Pass2IdenticalPhiElimination Succesful SSA optimization Pass2IdenticalPhiElimination
Block Sequence Planned @begin @36 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_genb sin16s_genb::@3 sin16s_genb::@1 sin16s_genb::@4 sin16s_genb::@return sin16sb sin16sb::@4 sin16sb::@1 sin16sb::@5 sin16sb::@2 sin16sb::@8 sin16sb::@9 sin16sb::@10 sin16sb::@11 sin16sb::@12 sin16sb::@6 sin16sb::@3 sin16sb::@return mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return Block Sequence Planned @begin @37 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_genb sin16s_genb::@3 sin16s_genb::@1 sin16s_genb::@4 sin16s_genb::@return sin16sb sin16sb::@4 sin16sb::@1 sin16sb::@5 sin16sb::@2 sin16sb::@8 sin16sb::@9 sin16sb::@10 sin16sb::@11 sin16sb::@12 sin16sb::@6 sin16sb::@3 sin16sb::@return mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return
Added new block during phi lifting main::@11(between main::@9 and main::@1) Added new block during phi lifting main::@11(between main::@9 and main::@1)
Added new block during phi lifting main::@12(between main::@1 and main::@2) Added new block during phi lifting main::@12(between main::@1 and main::@2)
Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1)
@ -5232,9 +5311,9 @@ Added new block during phi lifting sin16s::@13(between sin16s and sin16s::@1)
Fixing phi predecessor for sin16s::isUpper#2 to new block ( sin16s -> sin16s::@13 ) during phi lifting. Fixing phi predecessor for sin16s::isUpper#2 to new block ( sin16s -> sin16s::@13 ) during phi lifting.
Added new block during phi lifting sin16s::@14(between sin16s::@1 and sin16s::@2) Added new block during phi lifting sin16s::@14(between sin16s::@1 and sin16s::@2)
Added new block during phi lifting sin16s::@15(between sin16s::@12 and sin16s::@3) Added new block during phi lifting sin16s::@15(between sin16s::@12 and sin16s::@3)
Block Sequence Planned @begin @36 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return main::@11 main::@12 print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return print_cls::@3 sin16s_genb sin16s_genb::@3 sin16s_genb::@1 sin16s_genb::@4 sin16s_genb::@return sin16s_genb::@5 sin16sb sin16sb::@4 sin16sb::@1 sin16sb::@5 sin16sb::@2 sin16sb::@8 sin16sb::@9 sin16sb::@10 sin16sb::@11 sin16sb::@12 sin16sb::@6 sin16sb::@3 sin16sb::@return sin16sb::@15 sin16sb::@14 sin16sb::@13 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@5 sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 sin16s::@14 sin16s::@13 Block Sequence Planned @begin @37 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return main::@11 main::@12 print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return print_cls::@3 sin16s_genb sin16s_genb::@3 sin16s_genb::@1 sin16s_genb::@4 sin16s_genb::@return sin16s_genb::@5 sin16sb sin16sb::@4 sin16sb::@1 sin16sb::@5 sin16sb::@2 sin16sb::@8 sin16sb::@9 sin16sb::@10 sin16sb::@11 sin16sb::@12 sin16sb::@6 sin16sb::@3 sin16sb::@return sin16sb::@15 sin16sb::@14 sin16sb::@13 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@5 sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 sin16s::@14 sin16s::@13
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @36 Adding NOP phi() at start of @37
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
Adding NOP phi() at start of main Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@5
@ -5394,9 +5473,9 @@ Culled Empty Block (label) divr16u::@9
Culled Empty Block (label) sin16s_gen::@5 Culled Empty Block (label) sin16s_gen::@5
Culled Empty Block (label) sin16s::@14 Culled Empty Block (label) sin16s::@14
Culled Empty Block (label) sin16s::@13 Culled Empty Block (label) sin16s::@13
Block Sequence Planned @begin @36 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_genb sin16s_genb::@3 sin16s_genb::@1 sin16s_genb::@4 sin16s_genb::@return sin16sb sin16sb::@4 sin16sb::@1 sin16sb::@5 sin16sb::@2 sin16sb::@8 sin16sb::@9 sin16sb::@10 sin16sb::@11 sin16sb::@12 sin16sb::@6 sin16sb::@3 sin16sb::@return sin16sb::@15 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 Block Sequence Planned @begin @37 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_genb sin16s_genb::@3 sin16s_genb::@1 sin16s_genb::@4 sin16s_genb::@return sin16sb sin16sb::@4 sin16sb::@1 sin16sb::@5 sin16sb::@2 sin16sb::@8 sin16sb::@9 sin16sb::@10 sin16sb::@11 sin16sb::@12 sin16sb::@6 sin16sb::@3 sin16sb::@return sin16sb::@15 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @36 Adding NOP phi() at start of @37
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
Adding NOP phi() at start of main Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@5
@ -5445,14 +5524,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH FINAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
[0] phi() [ ] ( ) [0] phi() [ ] ( )
to:@36 to:@37
@36: scope:[] from @begin @37: scope:[] from @begin
[1] phi() [ ] ( ) [1] phi() [ ] ( )
[2] call main [ ] ( ) [2] call main [ ] ( )
to:@end to:@end
@end: scope:[] from @36 @end: scope:[] from @37
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @36 main: scope:[main] from @37
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] ) [5] call sin16s_gen [ ] ( main:2 [ ] )
to:main::@5 to:main::@5
@ -5868,96 +5947,96 @@ sin16s::@15: scope:[sin16s] from sin16s::@12
DOMINATORS DOMINATORS
@begin dominated by @begin @begin dominated by @begin
@36 dominated by @begin @36 @37 dominated by @begin @37
@end dominated by @end @begin @36 @end dominated by @end @begin @37
main dominated by main @begin @36 main dominated by main @begin @37
main::@5 dominated by main main::@5 @begin @36 main::@5 dominated by main main::@5 @begin @37
main::@6 dominated by main main::@5 main::@6 @begin @36 main::@6 dominated by main main::@5 main::@6 @begin @37
main::@1 dominated by main main::@1 main::@5 main::@6 @begin @36 main::@1 dominated by main main::@1 main::@5 main::@6 @begin @37
main::@3 dominated by main main::@1 main::@5 main::@6 main::@3 @begin @36 main::@3 dominated by main main::@1 main::@5 main::@6 main::@3 @begin @37
main::@2 dominated by main main::@1 main::@2 main::@5 main::@6 @begin @36 main::@2 dominated by main main::@1 main::@2 main::@5 main::@6 @begin @37
main::@8 dominated by main::@8 main main::@1 main::@2 main::@5 main::@6 @begin @36 main::@8 dominated by main::@8 main main::@1 main::@2 main::@5 main::@6 @begin @37
main::@9 dominated by main::@9 main::@8 main main::@1 main::@2 main::@5 main::@6 @begin @36 main::@9 dominated by main::@9 main::@8 main main::@1 main::@2 main::@5 main::@6 @begin @37
main::@return dominated by main::@9 main::@8 main main::@1 main::@2 main::@5 main::@6 @begin @36 main::@return main::@return dominated by main::@9 main::@8 main main::@1 main::@2 main::@5 main::@6 @begin @37 main::@return
print_str dominated by main main::@1 main::@5 main::@6 @begin @36 print_str print_str dominated by main main::@1 main::@5 main::@6 @begin @37 print_str
print_str::@1 dominated by main main::@1 main::@5 main::@6 @begin @36 print_str::@1 print_str print_str::@1 dominated by main main::@1 main::@5 main::@6 @begin @37 print_str::@1 print_str
print_str::@return dominated by main main::@1 main::@5 main::@6 @begin @36 print_str::@return print_str::@1 print_str print_str::@return dominated by main main::@1 main::@5 main::@6 @begin @37 print_str::@return print_str::@1 print_str
print_str::@2 dominated by main main::@1 main::@5 main::@6 @begin @36 print_str::@1 print_str::@2 print_str print_str::@2 dominated by main main::@1 main::@5 main::@6 @begin @37 print_str::@1 print_str::@2 print_str
print_sword dominated by main main::@1 main::@2 main::@5 main::@6 @begin @36 print_sword print_sword dominated by main main::@1 main::@2 main::@5 main::@6 @begin @37 print_sword
print_sword::@2 dominated by print_sword::@2 main main::@1 main::@2 main::@5 main::@6 @begin @36 print_sword print_sword::@2 dominated by print_sword::@2 main main::@1 main::@2 main::@5 main::@6 @begin @37 print_sword
print_sword::@4 dominated by print_sword::@2 print_sword::@4 main main::@1 main::@2 main::@5 main::@6 @begin @36 print_sword print_sword::@4 dominated by print_sword::@2 print_sword::@4 main main::@1 main::@2 main::@5 main::@6 @begin @37 print_sword
print_sword::@1 dominated by print_sword::@1 main main::@1 main::@2 main::@5 main::@6 @begin @36 print_sword print_sword::@1 dominated by print_sword::@1 main main::@1 main::@2 main::@5 main::@6 @begin @37 print_sword
print_sword::@return dominated by print_sword::@1 main main::@1 main::@2 main::@5 main::@6 @begin @36 print_sword::@return print_sword print_sword::@return dominated by print_sword::@1 main main::@1 main::@2 main::@5 main::@6 @begin @37 print_sword::@return print_sword
print_word dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @36 print_sword print_word dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @37 print_sword
print_word::@1 dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @36 print_word::@1 print_sword print_word::@1 dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @37 print_word::@1 print_sword
print_word::@return dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @36 print_word::@return print_word::@1 print_sword print_word::@return dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @37 print_word::@return print_word::@1 print_sword
print_byte dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @36 print_byte print_sword print_byte dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @37 print_byte print_sword
print_byte::@1 dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @36 print_byte::@1 print_byte print_sword print_byte::@1 dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @37 print_byte::@1 print_byte print_sword
print_byte::@return dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @36 print_byte::@return print_byte::@1 print_byte print_sword print_byte::@return dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 main::@6 @begin @37 print_byte::@return print_byte::@1 print_byte print_sword
print_char dominated by main print_char main::@1 main::@2 main::@5 main::@6 @begin @36 print_sword print_char dominated by main print_char main::@1 main::@2 main::@5 main::@6 @begin @37 print_sword
print_char::@return dominated by main print_char main::@1 main::@2 main::@5 main::@6 print_char::@return @begin @36 print_sword print_char::@return dominated by main print_char main::@1 main::@2 main::@5 main::@6 print_char::@return @begin @37 print_sword
print_cls dominated by main main::@5 main::@6 @begin @36 print_cls print_cls dominated by main main::@5 main::@6 @begin @37 print_cls
print_cls::@1 dominated by main main::@5 main::@6 @begin @36 print_cls::@1 print_cls print_cls::@1 dominated by main main::@5 main::@6 @begin @37 print_cls::@1 print_cls
print_cls::@return dominated by main main::@5 main::@6 @begin @36 print_cls::@return print_cls::@1 print_cls print_cls::@return dominated by main main::@5 main::@6 @begin @37 print_cls::@return print_cls::@1 print_cls
sin16s_genb dominated by main sin16s_genb main::@5 @begin @36 sin16s_genb dominated by main sin16s_genb main::@5 @begin @37
sin16s_genb::@3 dominated by main sin16s_genb main::@5 @begin @36 sin16s_genb::@3 sin16s_genb::@3 dominated by main sin16s_genb main::@5 @begin @37 sin16s_genb::@3
sin16s_genb::@1 dominated by main sin16s_genb main::@5 @begin @36 sin16s_genb::@3 sin16s_genb::@1 sin16s_genb::@1 dominated by main sin16s_genb main::@5 @begin @37 sin16s_genb::@3 sin16s_genb::@1
sin16s_genb::@4 dominated by main sin16s_genb main::@5 @begin @36 sin16s_genb::@3 sin16s_genb::@4 sin16s_genb::@1 sin16s_genb::@4 dominated by main sin16s_genb main::@5 @begin @37 sin16s_genb::@3 sin16s_genb::@4 sin16s_genb::@1
sin16s_genb::@return dominated by sin16s_genb::@return main sin16s_genb main::@5 @begin @36 sin16s_genb::@3 sin16s_genb::@4 sin16s_genb::@1 sin16s_genb::@return dominated by sin16s_genb::@return main sin16s_genb main::@5 @begin @37 sin16s_genb::@3 sin16s_genb::@4 sin16s_genb::@1
sin16sb dominated by main sin16s_genb main::@5 @begin @36 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb dominated by main sin16s_genb main::@5 @begin @37 sin16sb sin16s_genb::@3 sin16s_genb::@1
sin16sb::@4 dominated by main sin16s_genb main::@5 @begin @36 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@4 sin16sb::@4 dominated by main sin16s_genb main::@5 @begin @37 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@4
sin16sb::@1 dominated by main sin16s_genb sin16sb::@1 main::@5 @begin @36 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@1 dominated by main sin16s_genb sin16sb::@1 main::@5 @begin @37 sin16sb sin16s_genb::@3 sin16s_genb::@1
sin16sb::@5 dominated by main sin16s_genb sin16sb::@1 main::@5 @begin @36 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@5 sin16sb::@5 dominated by main sin16s_genb sin16sb::@1 main::@5 @begin @37 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@5
sin16sb::@2 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 @begin @36 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@2 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 @begin @37 sin16sb sin16s_genb::@3 sin16s_genb::@1
sin16sb::@8 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 @begin @36 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@8 sin16sb::@8 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 @begin @37 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@8
sin16sb::@9 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 @begin @36 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8 sin16sb::@9 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 @begin @37 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8
sin16sb::@10 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 @begin @36 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8 sin16sb::@10 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 @begin @37 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8
sin16sb::@11 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin @36 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8 sin16sb::@11 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin @37 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8
sin16sb::@12 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin @36 sin16sb::@12 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8 sin16sb::@12 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin sin16sb::@12 @37 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8
sin16sb::@6 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin @36 sin16sb::@12 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@6 sin16sb::@9 sin16sb::@8 sin16sb::@6 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin sin16sb::@12 @37 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@6 sin16sb::@9 sin16sb::@8
sin16sb::@3 dominated by main sin16s_genb sin16sb::@3 sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin @36 sin16sb::@12 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8 sin16sb::@3 dominated by main sin16s_genb sin16sb::@3 sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin sin16sb::@12 @37 sin16sb::@10 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8
sin16sb::@return dominated by main sin16s_genb sin16sb::@3 sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin @36 sin16sb::@12 sin16sb::@10 sin16sb sin16sb::@return sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8 sin16sb::@return dominated by main sin16s_genb sin16sb::@3 sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin sin16sb::@12 @37 sin16sb::@10 sin16sb sin16sb::@return sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8
sin16sb::@15 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin @36 sin16sb::@12 sin16sb::@10 sin16sb::@15 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8 sin16sb::@15 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 sin16sb::@11 @begin sin16sb::@12 @37 sin16sb::@10 sin16sb::@15 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8
mulu16_sel dominated by main @begin @36 mulu16_sel mulu16_sel dominated by main @begin @37 mulu16_sel
mulu16_sel::@2 dominated by main @begin @36 mulu16_sel mulu16_sel::@2 mulu16_sel::@2 dominated by main @begin @37 mulu16_sel mulu16_sel::@2
mulu16_sel::@return dominated by main @begin @36 mulu16_sel mulu16_sel::@return mulu16_sel::@2 mulu16_sel::@return dominated by main @begin @37 mulu16_sel mulu16_sel::@return mulu16_sel::@2
mul16u dominated by main mul16u @begin @36 mulu16_sel mul16u dominated by main mul16u @begin @37 mulu16_sel
mul16u::@1 dominated by main mul16u mul16u::@1 @begin @36 mulu16_sel mul16u::@1 dominated by main mul16u mul16u::@1 @begin @37 mulu16_sel
mul16u::@return dominated by main mul16u mul16u::@1 @begin @36 mulu16_sel mul16u::@return mul16u::@return dominated by main mul16u mul16u::@1 @begin @37 mulu16_sel mul16u::@return
mul16u::@2 dominated by main mul16u mul16u::@1 mul16u::@2 @begin @36 mulu16_sel mul16u::@2 dominated by main mul16u mul16u::@1 mul16u::@2 @begin @37 mulu16_sel
mul16u::@7 dominated by main mul16u mul16u::@1 mul16u::@2 @begin @36 mul16u::@7 mulu16_sel mul16u::@7 dominated by main mul16u mul16u::@1 mul16u::@2 @begin @37 mul16u::@7 mulu16_sel
mul16u::@4 dominated by main mul16u mul16u::@1 mul16u::@2 @begin @36 mul16u::@4 mulu16_sel mul16u::@4 dominated by main mul16u mul16u::@1 mul16u::@2 @begin @37 mul16u::@4 mulu16_sel
div32u16u dominated by main @begin @36 div32u16u div32u16u dominated by main @begin @37 div32u16u
div32u16u::@2 dominated by main div32u16u::@2 @begin @36 div32u16u div32u16u::@2 dominated by main div32u16u::@2 @begin @37 div32u16u
div32u16u::@3 dominated by main div32u16u::@2 div32u16u::@3 @begin @36 div32u16u div32u16u::@3 dominated by main div32u16u::@2 div32u16u::@3 @begin @37 div32u16u
div32u16u::@return dominated by main div32u16u::@2 div32u16u::@3 @begin @36 div32u16u div32u16u::@return div32u16u::@return dominated by main div32u16u::@2 div32u16u::@3 @begin @37 div32u16u div32u16u::@return
divr16u dominated by divr16u main @begin @36 div32u16u divr16u dominated by divr16u main @begin @37 div32u16u
divr16u::@1 dominated by divr16u divr16u::@1 main @begin @36 div32u16u divr16u::@1 dominated by divr16u divr16u::@1 main @begin @37 div32u16u
divr16u::@4 dominated by divr16u divr16u::@1 main divr16u::@4 @begin @36 div32u16u divr16u::@4 dominated by divr16u divr16u::@1 main divr16u::@4 @begin @37 div32u16u
divr16u::@2 dominated by divr16u divr16u::@2 divr16u::@1 main @begin @36 div32u16u divr16u::@2 dominated by divr16u divr16u::@2 divr16u::@1 main @begin @37 div32u16u
divr16u::@5 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@5 @begin @36 div32u16u divr16u::@5 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@5 @begin @37 div32u16u
divr16u::@3 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 @begin @36 div32u16u divr16u::@3 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 @begin @37 div32u16u
divr16u::@6 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin @36 div32u16u divr16u::@6 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin @37 div32u16u
divr16u::@return dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin @36 div32u16u divr16u::@return divr16u::@return dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin @37 div32u16u divr16u::@return
sin16s_gen dominated by main @begin @36 sin16s_gen sin16s_gen dominated by main @begin @37 sin16s_gen
sin16s_gen::@3 dominated by main @begin @36 sin16s_gen sin16s_gen::@3 sin16s_gen::@3 dominated by main @begin @37 sin16s_gen sin16s_gen::@3
sin16s_gen::@1 dominated by main @begin @36 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@1 dominated by main @begin @37 sin16s_gen sin16s_gen::@3 sin16s_gen::@1
sin16s_gen::@4 dominated by main @begin @36 sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 sin16s_gen::@4 dominated by main @begin @37 sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1
sin16s_gen::@return dominated by main sin16s_gen::@return @begin @36 sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 sin16s_gen::@return dominated by main sin16s_gen::@return @begin @37 sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1
sin16s dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s_gen::@1
sin16s::@4 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4 sin16s::@4 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4
sin16s::@1 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@1 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1
sin16s::@5 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5 sin16s::@5 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5
sin16s::@2 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 sin16s::@2 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2
sin16s::@8 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@8 sin16s::@2 sin16s::@8 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@8 sin16s::@2
sin16s::@9 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 sin16s::@9 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2
sin16s::@10 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@10 sin16s::@2 sin16s::@10 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@10 sin16s::@2
sin16s::@11 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@11 sin16s::@10 sin16s::@2 sin16s::@11 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@11 sin16s::@10 sin16s::@2
sin16s::@12 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 sin16s::@12 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2
sin16s::@6 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@6 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 sin16s::@6 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@6 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2
sin16s::@3 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2 sin16s::@3 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2
sin16s::@return dominated by main sin16s @begin @36 sin16s::@return sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2 sin16s::@return dominated by main sin16s @begin @37 sin16s::@return sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 sin16s::@2
sin16s::@15 dominated by main sin16s @begin @36 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@15 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2 sin16s::@15 dominated by main sin16s @begin @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@15 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@2
NATURAL LOOPS NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@9 blocks: null Found back edge: Loop head: main::@1 tails: main::@9 blocks: null
@ -6544,17 +6623,17 @@ INITIAL ASM
.label print_char_cursor = $d .label print_char_cursor = $d
//SEG2 @begin //SEG2 @begin
bbegin: bbegin:
//SEG3 [1] phi from @begin to @36 [phi:@begin->@36] //SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
b36_from_bbegin: b37_from_bbegin:
jmp b36 jmp b37
//SEG4 @36 //SEG4 @37
b36: b37:
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @36 to main [phi:@36->main] //SEG6 [4] phi from @37 to main [phi:@37->main]
main_from_b36: main_from_b37:
jsr main jsr main
//SEG7 [3] phi from @36 to @end [phi:@36->@end] //SEG7 [3] phi from @37 to @end [phi:@37->@end]
bend_from_b36: bend_from_b37:
jmp bend jmp bend
//SEG8 @end //SEG8 @end
bend: bend:
@ -8684,17 +8763,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_char_cursor = $b .label print_char_cursor = $b
//SEG2 @begin //SEG2 @begin
bbegin: bbegin:
//SEG3 [1] phi from @begin to @36 [phi:@begin->@36] //SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
b36_from_bbegin: b37_from_bbegin:
jmp b36 jmp b37
//SEG4 @36 //SEG4 @37
b36: b37:
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @36 to main [phi:@36->main] //SEG6 [4] phi from @37 to main [phi:@37->main]
main_from_b36: main_from_b37:
jsr main jsr main
//SEG7 [3] phi from @36 to @end [phi:@36->@end] //SEG7 [3] phi from @37 to @end [phi:@37->@end]
bend_from_b36: bend_from_b37:
jmp bend jmp bend
//SEG8 @end //SEG8 @end
bend: bend:
@ -10145,7 +10224,7 @@ sin16s: {
print_hextab: .text "0123456789abcdef" print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b36 Removing instruction jmp b37
Removing instruction jmp bend Removing instruction jmp bend
Removing instruction jmp b5 Removing instruction jmp b5
Removing instruction jmp b6 Removing instruction jmp b6
@ -10252,9 +10331,9 @@ Replacing label b2_from_b1 with b2
Replacing label b2_from_b1 with b2 Replacing label b2_from_b1 with b2
Replacing label b3_from_b15 with b3 Replacing label b3_from_b15 with b3
Removing instruction bbegin: Removing instruction bbegin:
Removing instruction b36_from_bbegin: Removing instruction b37_from_bbegin:
Removing instruction main_from_b36: Removing instruction main_from_b37:
Removing instruction bend_from_b36: Removing instruction bend_from_b37:
Removing instruction b5_from_main: Removing instruction b5_from_main:
Removing instruction sin16s_genb_from_b5: Removing instruction sin16s_genb_from_b5:
Removing instruction b6_from_b5: Removing instruction b6_from_b5:
@ -10293,7 +10372,7 @@ Removing instruction b3_from_b15:
Removing instruction b3_from_b6: Removing instruction b3_from_b6:
Removing instruction breturn: Removing instruction breturn:
Succesful ASM optimization Pass5RedundantLabelElimination Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b36: Removing instruction b37:
Removing instruction bend: Removing instruction bend:
Removing instruction sin16s_gen_from_main: Removing instruction sin16s_gen_from_main:
Removing instruction b5: Removing instruction b5:
@ -10395,7 +10474,7 @@ Removing unreachable instruction jmp b3
Succesful ASM optimization Pass5UnreachableCodeElimination Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE FINAL SYMBOL TABLE
(label) @36 (label) @37
(label) @begin (label) @begin
(label) @end (label) @end
(dword) PI2_u4f28 (dword) PI2_u4f28
@ -10777,12 +10856,12 @@ Score: 23127
.label rem16u = 2 .label rem16u = 2
.label print_char_cursor = $b .label print_char_cursor = $b
//SEG2 @begin //SEG2 @begin
//SEG3 [1] phi from @begin to @36 [phi:@begin->@36] //SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
//SEG4 @36 //SEG4 @37
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @36 to main [phi:@36->main] //SEG6 [4] phi from @37 to main [phi:@37->main]
jsr main jsr main
//SEG7 [3] phi from @36 to @end [phi:@36->@end] //SEG7 [3] phi from @37 to @end [phi:@37->@end]
//SEG8 @end //SEG8 @end
//SEG9 main //SEG9 main
main: { main: {

View File

@ -1,4 +1,4 @@
(label) @36 (label) @37
(label) @begin (label) @begin
(label) @end (label) @end
(dword) PI2_u4f28 (dword) PI2_u4f28

View File

@ -1,13 +1,13 @@
@begin: scope:[] from @begin: scope:[] from
[0] phi() [ ] ( ) [0] phi() [ ] ( )
to:@34 to:@35
@34: scope:[] from @begin @35: scope:[] from @begin
[1] phi() [ ] ( ) [1] phi() [ ] ( )
[2] call main [ ] ( ) [2] call main [ ] ( )
to:@end to:@end
@end: scope:[] from @34 @end: scope:[] from @35
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @34 main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call sin8s_gen [ ] ( main:2 [ ] ) [5] call sin8s_gen [ ] ( main:2 [ ] )
to:main::@5 to:main::@5

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
(label) @34 (label) @35
(label) @begin (label) @begin
(label) @end (label) @end
(word) PI2_u4f12 (word) PI2_u4f12

View File

@ -1,13 +1,13 @@
@begin: scope:[] from @begin: scope:[] from
[0] phi() [ ] ( ) [0] phi() [ ] ( )
to:@34 to:@35
@34: scope:[] from @begin @35: scope:[] from @begin
[1] phi() [ ] ( ) [1] phi() [ ] ( )
[2] call main [ ] ( ) [2] call main [ ] ( )
to:@end to:@end
@end: scope:[] from @34 @end: scope:[] from @35
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @34 main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call sin8s_gen [ ] ( main:2 [ ] ) [5] call sin8s_gen [ ] ( main:2 [ ] )
to:main::@5 to:main::@5

View File

@ -61,6 +61,23 @@ void sin16s_gen(signed word* sintab, word wavelength) {
} }
} }
// Generate signed word sinus table - with values in the range min-max.
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
void sin16s_gen2(signed word* sintab, word wavelength, signed word min, signed word max) {
signed word ampl = max-min;
signed word offs = min + ampl>>1; // ampl is always positive so shifting left does not alter the sign
// u[4.28] step = PI*2/wavelength
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
// 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;
x = x + step;
}
}
// Generate signed byte sinus table - on the full -$7f - $7f range // Generate signed byte sinus table - on the full -$7f - $7f range
// sintab - the table to generate into // sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) // wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
@ -383,6 +400,7 @@ signed dword mul16s(signed word a, signed word b) {
} }
Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i
Adding pre/post-modifier (word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab
Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i
Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx
@ -541,6 +559,7 @@ SYMBOLS
(label) @32 (label) @32
(label) @33 (label) @33
(label) @34 (label) @34
(label) @35
(label) @4 (label) @4
(label) @5 (label) @5
(label) @6 (label) @6
@ -1079,6 +1098,31 @@ SYMBOLS
(dword) sin16s_gen::step (dword) sin16s_gen::step
(word) sin16s_gen::wavelength (word) sin16s_gen::wavelength
(dword) sin16s_gen::x (dword) sin16s_gen::x
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
(signed word~) sin16s_gen2::$0
(signed word~) sin16s_gen2::$1
(dword~) sin16s_gen2::$10
(bool~) sin16s_gen2::$11
(signed word~) sin16s_gen2::$2
(dword~) sin16s_gen2::$3
(signed word~) sin16s_gen2::$4
(signed dword~) sin16s_gen2::$5
(word~) sin16s_gen2::$6
(signed word~) sin16s_gen2::$7
(signed word~) sin16s_gen2::$8
(signed word*~) sin16s_gen2::$9
(label) sin16s_gen2::@1
(label) sin16s_gen2::@2
(label) sin16s_gen2::@return
(signed word) sin16s_gen2::ampl
(word) sin16s_gen2::i
(signed word) sin16s_gen2::max
(signed word) sin16s_gen2::min
(signed word) sin16s_gen2::offs
(signed word*) sin16s_gen2::sintab
(dword) sin16s_gen2::step
(word) sin16s_gen2::wavelength
(dword) sin16s_gen2::x
(signed byte()) sin8s((word) sin8s::x) (signed byte()) sin8s((word) sin8s::x)
(bool~) sin8s::$0 (bool~) sin8s::$0
(bool~) sin8s::$1 (bool~) sin8s::$1
@ -1677,6 +1721,39 @@ sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2
to:@return to:@return
@14: scope:[] from @13 @14: scope:[] from @13
to:@15 to:@15
sin16s_gen2: scope:[sin16s_gen2] from
(signed word~) sin16s_gen2::$0 ← (signed word) sin16s_gen2::max - (signed word) sin16s_gen2::min
(signed word) sin16s_gen2::ampl ← (signed word~) sin16s_gen2::$0
(signed word~) sin16s_gen2::$1 ← (signed word) sin16s_gen2::ampl >> (byte/signed byte/word/signed word/dword/signed dword) 1
(signed word~) sin16s_gen2::$2 ← (signed word) sin16s_gen2::min + (signed word~) sin16s_gen2::$1
(signed word) sin16s_gen2::offs ← (signed word~) sin16s_gen2::$2
(dword~) sin16s_gen2::$3 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen2::wavelength
(dword) sin16s_gen2::step ← (dword~) sin16s_gen2::$3
(dword) sin16s_gen2::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
(word) sin16s_gen2::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:sin16s_gen2::@1
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2 sin16s_gen2::@1
(signed word~) sin16s_gen2::$4 ← call sin16s (dword) sin16s_gen2::x
(signed dword~) sin16s_gen2::$5 ← call mul16s (signed word~) sin16s_gen2::$4 (signed word) sin16s_gen2::ampl
(word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
(signed word~) sin16s_gen2::$7 ← ((signed word)) (word~) sin16s_gen2::$6
(signed word~) sin16s_gen2::$8 ← (signed word) sin16s_gen2::offs + (signed word~) sin16s_gen2::$7
*((signed word*) sin16s_gen2::sintab) ← (signed word~) sin16s_gen2::$8
(signed word*~) sin16s_gen2::$9 ← (signed word*) sin16s_gen2::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2
(signed word*) sin16s_gen2::sintab ← (signed word*~) sin16s_gen2::$9
(dword~) sin16s_gen2::$10 ← (dword) sin16s_gen2::x + (dword) sin16s_gen2::step
(dword) sin16s_gen2::x ← (dword~) sin16s_gen2::$10
(word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
(bool~) sin16s_gen2::$11 ← (word) sin16s_gen2::i < (word) sin16s_gen2::wavelength
if((bool~) sin16s_gen2::$11) goto sin16s_gen2::@1
to:sin16s_gen2::@2
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2::@1
to:sin16s_gen2::@return
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@2
return
to:@return
@15: scope:[] from @14
to:@16
sin8s_gen: scope:[sin8s_gen] from sin8s_gen: scope:[sin8s_gen] from
(word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength (word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength
(word) sin8s_gen::step ← (word~) sin8s_gen::$0 (word) sin8s_gen::step ← (word~) sin8s_gen::$0
@ -1698,8 +1775,8 @@ sin8s_gen::@2: scope:[sin8s_gen] from sin8s_gen::@1
sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2 sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2
return return
to:@return to:@return
@15: scope:[] from @14 @16: scope:[] from @15
to:@16 to:@17
sin16s: scope:[sin16s] from sin16s: scope:[sin16s] from
(byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28 (bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28
@ -1761,8 +1838,8 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7
to:@return to:@return
sin16s::@7: scope:[sin16s] from sin16s::@7: scope:[sin16s] from
to:sin16s::@return to:sin16s::@return
@16: scope:[] from @15 @17: scope:[] from @16
to:@17 to:@18
sin8s: scope:[sin8s] from sin8s: scope:[sin8s] from
(byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12 (bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12
@ -1832,8 +1909,8 @@ sin8s::@return: scope:[sin8s] from sin8s::@4 sin8s::@9
to:@return to:@return
sin8s::@9: scope:[sin8s] from sin8s::@9: scope:[sin8s] from
to:sin8s::@return to:sin8s::@return
@17: scope:[] from @16 @18: scope:[] from @17
to:@18 to:@19
mulu16_sel: scope:[mulu16_sel] from mulu16_sel: scope:[mulu16_sel] from
(dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2
(dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select
@ -1846,8 +1923,8 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1
to:@return to:@return
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel::@1: scope:[mulu16_sel] from
to:mulu16_sel::@return to:mulu16_sel::@return
@18: scope:[] from @17 @19: scope:[] from @18
to:@19 to:@20
mulu8_sel: scope:[mulu8_sel] from mulu8_sel: scope:[mulu8_sel] from
(word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2
(word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select
@ -1860,11 +1937,11 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1
to:@return to:@return
mulu8_sel::@1: scope:[mulu8_sel] from mulu8_sel::@1: scope:[mulu8_sel] from
to:mulu8_sel::@return to:mulu8_sel::@return
@19: scope:[] from @18 @20: scope:[] from @19
(byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor ← (byte*) print_screen (byte*) print_line_cursor ← (byte*) print_screen
(byte*) print_char_cursor ← (byte*) print_line_cursor (byte*) print_char_cursor ← (byte*) print_line_cursor
to:@20 to:@21
print_str_lines: scope:[print_str_lines] from print_str_lines: scope:[print_str_lines] from
to:print_str_lines::@1 to:print_str_lines::@1
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9
@ -1902,8 +1979,8 @@ print_str_lines::@10: scope:[print_str_lines] from
print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3 print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3
return return
to:@return to:@return
@20: scope:[] from @19 @21: scope:[] from @20
to:@21 to:@22
print_str_ln: scope:[print_str_ln] from print_str_ln: scope:[print_str_ln] from
(void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str (void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str
(void~) print_str_ln::$1 ← call print_ln (void~) print_str_ln::$1 ← call print_ln
@ -1911,8 +1988,8 @@ print_str_ln: scope:[print_str_ln] from
print_str_ln::@return: scope:[print_str_ln] from print_str_ln print_str_ln::@return: scope:[print_str_ln] from print_str_ln
return return
to:@return to:@return
@21: scope:[] from @20 @22: scope:[] from @21
to:@22 to:@23
print_str: scope:[print_str] from print_str: scope:[print_str] from
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
@ -1935,8 +2012,8 @@ print_str::@6: scope:[print_str] from
print_str::@return: scope:[print_str] from print_str::@3 print_str::@return: scope:[print_str] from print_str::@3
return return
to:@return to:@return
@22: scope:[] from @21 @23: scope:[] from @22
to:@23 to:@24
print_str_at: scope:[print_str_at] from print_str_at: scope:[print_str_at] from
to:print_str_at::@1 to:print_str_at::@1
print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2
@ -1959,8 +2036,8 @@ print_str_at::@6: scope:[print_str_at] from
print_str_at::@return: scope:[print_str_at] from print_str_at::@3 print_str_at::@return: scope:[print_str_at] from print_str_at::@3
return return
to:@return to:@return
@23: scope:[] from @22 @24: scope:[] from @23
to:@24 to:@25
print_ln: scope:[print_ln] from print_ln: scope:[print_ln] from
to:print_ln::@1 to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
@ -1975,8 +2052,8 @@ print_ln::@2: scope:[print_ln] from print_ln::@1
print_ln::@return: scope:[print_ln] from print_ln::@2 print_ln::@return: scope:[print_ln] from print_ln::@2
return return
to:@return to:@return
@24: scope:[] from @23 @25: scope:[] from @24
to:@25 to:@26
print_sword: scope:[print_sword] from print_sword: scope:[print_sword] from
(bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sword::$1 ← ! (bool~) print_sword::$0 (bool~) print_sword::$1 ← ! (bool~) print_sword::$0
@ -1994,8 +2071,8 @@ print_sword::@2: scope:[print_sword] from print_sword
print_sword::@return: scope:[print_sword] from print_sword::@1 print_sword::@return: scope:[print_sword] from print_sword::@1
return return
to:@return to:@return
@25: scope:[] from @24 @26: scope:[] from @25
to:@26 to:@27
print_sbyte: scope:[print_sbyte] from print_sbyte: scope:[print_sbyte] from
(bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0 (bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0
@ -2013,8 +2090,8 @@ print_sbyte::@2: scope:[print_sbyte] from print_sbyte
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1
return return
to:@return to:@return
@26: scope:[] from @25 @27: scope:[] from @26
to:@27 to:@28
print_word: scope:[print_word] from print_word: scope:[print_word] from
(byte~) print_word::$0 ← > (word) print_word::w (byte~) print_word::$0 ← > (word) print_word::w
(void~) print_word::$1 ← call print_byte (byte~) print_word::$0 (void~) print_word::$1 ← call print_byte (byte~) print_word::$0
@ -2024,8 +2101,8 @@ print_word: scope:[print_word] from
print_word::@return: scope:[print_word] from print_word print_word::@return: scope:[print_word] from print_word
return return
to:@return to:@return
@27: scope:[] from @26 @28: scope:[] from @27
to:@28 to:@29
print_dword: scope:[print_dword] from print_dword: scope:[print_dword] from
(word~) print_dword::$0 ← > (dword) print_dword::dw (word~) print_dword::$0 ← > (dword) print_dword::dw
(void~) print_dword::$1 ← call print_word (word~) print_dword::$0 (void~) print_dword::$1 ← call print_word (word~) print_dword::$0
@ -2035,8 +2112,8 @@ print_dword: scope:[print_dword] from
print_dword::@return: scope:[print_dword] from print_dword print_dword::@return: scope:[print_dword] from print_dword
return return
to:@return to:@return
@28: scope:[] from @27 @29: scope:[] from @28
to:@29 to:@30
print_sdword: scope:[print_sdword] from print_sdword: scope:[print_sdword] from
(bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0
@ -2054,9 +2131,9 @@ print_sdword::@2: scope:[print_sdword] from print_sdword
print_sdword::@return: scope:[print_sdword] from print_sdword::@1 print_sdword::@return: scope:[print_sdword] from print_sdword::@1
return return
to:@return to:@return
@29: scope:[] from @28 @30: scope:[] from @29
(byte[]) print_hextab ← (string) "0123456789abcdef" (byte[]) print_hextab ← (string) "0123456789abcdef"
to:@30 to:@31
print_byte: scope:[print_byte] from print_byte: scope:[print_byte] from
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
(void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0) (void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0)
@ -2066,8 +2143,8 @@ print_byte: scope:[print_byte] from
print_byte::@return: scope:[print_byte] from print_byte print_byte::@return: scope:[print_byte] from print_byte
return return
to:@return to:@return
@30: scope:[] from @29 @31: scope:[] from @30
to:@31 to:@32
print_char: scope:[print_char] from print_char: scope:[print_char] from
*((byte*) print_char_cursor) ← (byte) print_char::ch *((byte*) print_char_cursor) ← (byte) print_char::ch
(byte*) print_char_cursor ← ++ (byte*) print_char_cursor (byte*) print_char_cursor ← ++ (byte*) print_char_cursor
@ -2075,8 +2152,8 @@ print_char: scope:[print_char] from
print_char::@return: scope:[print_char] from print_char print_char::@return: scope:[print_char] from print_char
return return
to:@return to:@return
@31: scope:[] from @30 @32: scope:[] from @31
to:@32 to:@33
print_cls: scope:[print_cls] from print_cls: scope:[print_cls] from
(byte*) print_cls::sc ← (byte*) print_screen (byte*) print_cls::sc ← (byte*) print_screen
to:print_cls::@1 to:print_cls::@1
@ -2094,8 +2171,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
print_cls::@return: scope:[print_cls] from print_cls::@2 print_cls::@return: scope:[print_cls] from print_cls::@2
return return
to:@return to:@return
@32: scope:[] from @31 @33: scope:[] from @32
to:@33 to:@34
print_set_screen: scope:[print_set_screen] from print_set_screen: scope:[print_set_screen] from
(byte*) print_screen ← (byte*) print_set_screen::screen (byte*) print_screen ← (byte*) print_set_screen::screen
(byte*) print_line_cursor ← (byte*) print_screen (byte*) print_line_cursor ← (byte*) print_screen
@ -2104,8 +2181,8 @@ print_set_screen: scope:[print_set_screen] from
print_set_screen::@return: scope:[print_set_screen] from print_set_screen print_set_screen::@return: scope:[print_set_screen] from print_set_screen
return return
to:@return to:@return
@33: scope:[] from @32 @34: scope:[] from @33
to:@34 to:@35
main: scope:[main] from main: scope:[main] from
(word) main::wavelength ← (byte/word/signed word/dword/signed dword) 192 (word) main::wavelength ← (byte/word/signed word/dword/signed dword) 192
(signed byte[192]) main::sintabb ← { fill( 192, 0) } (signed byte[192]) main::sintabb ← { fill( 192, 0) }
@ -2144,16 +2221,16 @@ main::@4: scope:[main] from main::@2
main::@return: scope:[main] from main::@4 main::@return: scope:[main] from main::@4
return return
to:@return to:@return
@34: scope:[] from @33 @35: scope:[] from @34
call main call main
to:@end to:@end
@end: scope:[] from @34 @end: scope:[] from @35
Removing unused procedure div8s Removing unused procedure div8s
Removing unused procedure div16s Removing unused procedure div16s
Removing unused procedure mul8s Removing unused procedure mul8s
Removing unused procedure mul8su Removing unused procedure mul8su
Removing unused procedure mul16s Removing unused procedure sin16s_gen2
Removing unused procedure print_str_lines Removing unused procedure print_str_lines
Removing unused procedure print_str_ln Removing unused procedure print_str_ln
Removing unused procedure print_str_at Removing unused procedure print_str_at
@ -2162,6 +2239,7 @@ Removing unused procedure print_sdword
Removing unused procedure print_set_screen Removing unused procedure print_set_screen
Removing unused procedure div8u Removing unused procedure div8u
Removing unused procedure divr16s Removing unused procedure divr16s
Removing unused procedure mul16s
Removing unused procedure print_ln Removing unused procedure print_ln
Removing unused procedure print_dword Removing unused procedure print_dword
Removing unused procedure divr8u Removing unused procedure divr8u
@ -2206,32 +2284,33 @@ Removing empty block mul16u::@9
Removing empty block @12 Removing empty block @12
Removing empty block sin16s_gen::@2 Removing empty block sin16s_gen::@2
Removing empty block @14 Removing empty block @14
Removing empty block sin8s_gen::@2
Removing empty block @15 Removing empty block @15
Removing empty block sin16s::@7 Removing empty block sin8s_gen::@2
Removing empty block @16 Removing empty block @16
Removing empty block sin8s::@9 Removing empty block sin16s::@7
Removing empty block @17 Removing empty block @17
Removing empty block mulu16_sel::@1 Removing empty block sin8s::@9
Removing empty block @18 Removing empty block @18
Removing empty block mulu16_sel::@1
Removing empty block @19
Removing empty block mulu8_sel::@1 Removing empty block mulu8_sel::@1
Removing empty block @20
Removing empty block @21 Removing empty block @21
Removing empty block @22
Removing empty block print_str::@4 Removing empty block print_str::@4
Removing empty block print_str::@3 Removing empty block print_str::@3
Removing empty block print_str::@5 Removing empty block print_str::@5
Removing empty block print_str::@6 Removing empty block print_str::@6
Removing empty block @22
Removing empty block @23 Removing empty block @23
Removing empty block @24 Removing empty block @24
Removing empty block @25 Removing empty block @25
Removing empty block @26 Removing empty block @26
Removing empty block @27 Removing empty block @27
Removing empty block @28 Removing empty block @28
Removing empty block @30 Removing empty block @29
Removing empty block @31 Removing empty block @31
Removing empty block @32 Removing empty block @32
Removing empty block @33 Removing empty block @33
Removing empty block @34
Removing empty block main::@4 Removing empty block main::@4
PROCEDURE MODIFY VARIABLE ANALYSIS PROCEDURE MODIFY VARIABLE ANALYSIS
divr16u modifies rem16u divr16u modifies rem16u
@ -2510,7 +2589,7 @@ mul16u::@return: scope:[mul16u] from mul16u::@3
(word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736
(word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868
(word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434
to:@19 to:@20
sin16s_gen: scope:[sin16s_gen] from main::@5 sin16s_gen: scope:[sin16s_gen] from main::@5
(signed word*) sin16s_gen::sintab#5 ← phi( main::@5/(signed word*) sin16s_gen::sintab#1 ) (signed word*) sin16s_gen::sintab#5 ← phi( main::@5/(signed word*) sin16s_gen::sintab#1 )
(word) rem16u#32 ← phi( main::@5/(word) rem16u#12 ) (word) rem16u#32 ← phi( main::@5/(word) rem16u#12 )
@ -2918,12 +2997,12 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2
(byte) mulu8_sel::return#6 ← (byte) mulu8_sel::return#12 (byte) mulu8_sel::return#6 ← (byte) mulu8_sel::return#12
return return
to:@return to:@return
@19: scope:[] from @13 @20: scope:[] from @13
(word) rem16u#43 ← phi( @13/(word) rem16u#45 ) (word) rem16u#43 ← phi( @13/(word) rem16u#45 )
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_line_cursor#0 ← (byte*) print_screen#0
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
to:@29 to:@30
print_str: scope:[print_str] from main::@3 main::@8 print_str: scope:[print_str] from main::@3 main::@8
(byte*) print_char_cursor#44 ← phi( main::@3/(byte*) print_char_cursor#42 main::@8/(byte*) print_char_cursor#14 ) (byte*) print_char_cursor#44 ← phi( main::@3/(byte*) print_char_cursor#42 main::@8/(byte*) print_char_cursor#14 )
(byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@8/(byte*) print_str::str#1 ) (byte*) print_str::str#5 ← phi( main::@3/(byte*) print_str::str#2 main::@8/(byte*) print_str::str#1 )
@ -2982,13 +3061,13 @@ print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@3
(byte*) print_char_cursor#5 ← (byte*) print_char_cursor#23 (byte*) print_char_cursor#5 ← (byte*) print_char_cursor#23
return return
to:@return to:@return
@29: scope:[] from @19 @30: scope:[] from @20
(byte*) print_screen#8 ← phi( @19/(byte*) print_screen#0 ) (byte*) print_screen#8 ← phi( @20/(byte*) print_screen#0 )
(byte*) print_char_cursor#48 ← phi( @19/(byte*) print_char_cursor#0 ) (byte*) print_char_cursor#48 ← phi( @20/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#15 ← phi( @19/(byte*) print_line_cursor#0 ) (byte*) print_line_cursor#15 ← phi( @20/(byte*) print_line_cursor#0 )
(word) rem16u#42 ← phi( @19/(word) rem16u#43 ) (word) rem16u#42 ← phi( @20/(word) rem16u#43 )
(byte[]) print_hextab#0 ← (const string) $0 (byte[]) print_hextab#0 ← (const string) $0
to:@34 to:@35
print_byte: scope:[print_byte] from print_sbyte::@1 print_byte: scope:[print_byte] from print_sbyte::@1
(byte*) print_char_cursor#39 ← phi( print_sbyte::@1/(byte*) print_char_cursor#37 ) (byte*) print_char_cursor#39 ← phi( print_sbyte::@1/(byte*) print_char_cursor#37 )
(byte) print_byte::b#1 ← phi( print_sbyte::@1/(byte) print_byte::b#0 ) (byte) print_byte::b#1 ← phi( print_sbyte::@1/(byte) print_byte::b#0 )
@ -3049,11 +3128,11 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
(byte*) print_char_cursor#12 ← (byte*) print_char_cursor#29 (byte*) print_char_cursor#12 ← (byte*) print_char_cursor#29
return return
to:@return to:@return
main: scope:[main] from @34 main: scope:[main] from @35
(byte*) print_char_cursor#49 ← phi( @34/(byte*) print_char_cursor#43 ) (byte*) print_char_cursor#49 ← phi( @35/(byte*) print_char_cursor#43 )
(byte*) print_line_cursor#16 ← phi( @34/(byte*) print_line_cursor#12 ) (byte*) print_line_cursor#16 ← phi( @35/(byte*) print_line_cursor#12 )
(byte*) print_screen#6 ← phi( @34/(byte*) print_screen#7 ) (byte*) print_screen#6 ← phi( @35/(byte*) print_screen#7 )
(word) rem16u#36 ← phi( @34/(word) rem16u#38 ) (word) rem16u#36 ← phi( @35/(word) rem16u#38 )
(word) main::wavelength#0 ← (byte/word/signed word/dword/signed dword) 192 (word) main::wavelength#0 ← (byte/word/signed word/dword/signed dword) 192
(signed byte[192]) main::sintabb#0 ← { fill( 192, 0) } (signed byte[192]) main::sintabb#0 ← { fill( 192, 0) }
(signed byte*) sin8s_gen::sintab#1 ← (signed byte[192]) main::sintabb#0 (signed byte*) sin8s_gen::sintab#1 ← (signed byte[192]) main::sintabb#0
@ -3160,31 +3239,31 @@ main::@return: scope:[main] from main::@9
(byte*) print_char_cursor#17 ← (byte*) print_char_cursor#34 (byte*) print_char_cursor#17 ← (byte*) print_char_cursor#34
return return
to:@return to:@return
@34: scope:[] from @29 @35: scope:[] from @30
(byte*) print_screen#7 ← phi( @29/(byte*) print_screen#8 ) (byte*) print_screen#7 ← phi( @30/(byte*) print_screen#8 )
(byte*) print_char_cursor#43 ← phi( @29/(byte*) print_char_cursor#48 ) (byte*) print_char_cursor#43 ← phi( @30/(byte*) print_char_cursor#48 )
(byte*) print_line_cursor#12 ← phi( @29/(byte*) print_line_cursor#15 ) (byte*) print_line_cursor#12 ← phi( @30/(byte*) print_line_cursor#15 )
(word) rem16u#38 ← phi( @29/(word) rem16u#42 ) (word) rem16u#38 ← phi( @30/(word) rem16u#42 )
call main call main
to:@35 to:@36
@35: scope:[] from @34 @36: scope:[] from @35
(byte*) print_char_cursor#35 ← phi( @34/(byte*) print_char_cursor#17 ) (byte*) print_char_cursor#35 ← phi( @35/(byte*) print_char_cursor#17 )
(byte*) print_line_cursor#9 ← phi( @34/(byte*) print_line_cursor#4 ) (byte*) print_line_cursor#9 ← phi( @35/(byte*) print_line_cursor#4 )
(word) rem16u#29 ← phi( @34/(word) rem16u#14 ) (word) rem16u#29 ← phi( @35/(word) rem16u#14 )
(word) rem16u#15 ← (word) rem16u#29 (word) rem16u#15 ← (word) rem16u#29
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9 (byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9
(byte*) print_char_cursor#18 ← (byte*) print_char_cursor#35 (byte*) print_char_cursor#18 ← (byte*) print_char_cursor#35
to:@end to:@end
@end: scope:[] from @35 @end: scope:[] from @36
SYMBOL TABLE SSA SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef" (const string) $0 = (string) "0123456789abcdef"
(label) @13 (label) @13
(label) @19
(label) @2 (label) @2
(label) @29 (label) @20
(label) @34 (label) @30
(label) @35 (label) @35
(label) @36
(label) @begin (label) @begin
(label) @end (label) @end
(word) PI2_u4f12 (word) PI2_u4f12
@ -4779,14 +4858,14 @@ Culled Empty Block (label) @2
Culled Empty Block (label) mul8u::@3 Culled Empty Block (label) mul8u::@3
Culled Empty Block (label) mul16u::@3 Culled Empty Block (label) mul16u::@3
Culled Empty Block (label) @13 Culled Empty Block (label) @13
Culled Empty Block (label) @19 Culled Empty Block (label) @20
Culled Empty Block (label) print_sbyte::@3 Culled Empty Block (label) print_sbyte::@3
Culled Empty Block (label) @29 Culled Empty Block (label) @30
Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) main::@7 Culled Empty Block (label) main::@7
Culled Empty Block (label) main::@10 Culled Empty Block (label) main::@10
Culled Empty Block (label) @35 Culled Empty Block (label) @36
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: rem16u#1 divr16u::rem#10 Not aliassing across scopes: rem16u#1 divr16u::rem#10
Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: divr16u::return#2 divr16u::return#0
@ -5195,7 +5274,7 @@ Constant inlined sin8s_gen::i#0 = (byte/signed byte/word/signed word/dword/signe
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
Identical Phi Values (word) divr16u::divisor#7 (const word) main::wavelength#0 Identical Phi Values (word) divr16u::divisor#7 (const word) main::wavelength#0
Succesful SSA optimization Pass2IdenticalPhiElimination Succesful SSA optimization Pass2IdenticalPhiElimination
Block Sequence Planned @begin @34 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return sin8s_gen sin8s_gen::@3 sin8s_gen::@1 sin8s_gen::@4 sin8s_gen::@return sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return mulu8_sel mulu8_sel::@2 mulu8_sel::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 div16u div16u::@2 div16u::@return Block Sequence Planned @begin @35 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return sin8s_gen sin8s_gen::@3 sin8s_gen::@1 sin8s_gen::@4 sin8s_gen::@return sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return mulu8_sel mulu8_sel::@2 mulu8_sel::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 div16u div16u::@2 div16u::@return
Added new block during phi lifting main::@11(between main::@9 and main::@1) Added new block during phi lifting main::@11(between main::@9 and main::@1)
Added new block during phi lifting main::@12(between main::@1 and main::@2) Added new block during phi lifting main::@12(between main::@1 and main::@2)
Added new block during phi lifting print_sbyte::@5(between print_sbyte and print_sbyte::@1) Added new block during phi lifting print_sbyte::@5(between print_sbyte and print_sbyte::@1)
@ -5216,9 +5295,9 @@ Added new block during phi lifting sin8s::@16(between sin8s::@1 and sin8s::@2)
Added new block during phi lifting sin8s::@17(between sin8s::@14 and sin8s::@3) Added new block during phi lifting sin8s::@17(between sin8s::@14 and sin8s::@3)
Added new block during phi lifting sin8s::@18(between sin8s::@3 and sin8s::@4) Added new block during phi lifting sin8s::@18(between sin8s::@3 and sin8s::@4)
Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4) Added new block during phi lifting mul8u::@10(between mul8u::@2 and mul8u::@4)
Block Sequence Planned @begin @34 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return main::@11 main::@12 print_str print_str::@1 print_str::@return print_str::@2 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_sbyte::@5 print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return print_cls::@3 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@5 sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 sin16s::@14 sin16s::@13 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 sin8s_gen sin8s_gen::@3 sin8s_gen::@1 sin8s_gen::@4 sin8s_gen::@return sin8s_gen::@5 sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return sin8s::@18 sin8s::@17 sin8s::@16 sin8s::@15 mulu8_sel mulu8_sel::@2 mulu8_sel::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 div16u div16u::@2 div16u::@return Block Sequence Planned @begin @35 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return main::@11 main::@12 print_str print_str::@1 print_str::@return print_str::@2 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_sbyte::@5 print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return print_cls::@3 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@5 sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 sin16s::@14 sin16s::@13 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 sin8s_gen sin8s_gen::@3 sin8s_gen::@1 sin8s_gen::@4 sin8s_gen::@return sin8s_gen::@5 sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return sin8s::@18 sin8s::@17 sin8s::@16 sin8s::@15 mulu8_sel mulu8_sel::@2 mulu8_sel::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 div16u div16u::@2 div16u::@return
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @34 Adding NOP phi() at start of @35
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
Adding NOP phi() at start of main Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@5
@ -5387,9 +5466,9 @@ Culled Empty Block (label) sin8s::@17
Culled Empty Block (label) sin8s::@16 Culled Empty Block (label) sin8s::@16
Culled Empty Block (label) sin8s::@15 Culled Empty Block (label) sin8s::@15
Culled Empty Block (label) mul8u::@10 Culled Empty Block (label) mul8u::@10
Block Sequence Planned @begin @34 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return sin8s_gen sin8s_gen::@3 sin8s_gen::@1 sin8s_gen::@4 sin8s_gen::@return sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return sin8s::@18 mulu8_sel mulu8_sel::@2 mulu8_sel::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 div16u div16u::@2 div16u::@return Block Sequence Planned @begin @35 @end main main::@5 main::@6 main::@1 main::@3 main::@2 main::@8 main::@9 main::@return print_str print_str::@1 print_str::@return print_str::@2 print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_cls print_cls::@1 print_cls::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@4 sin16s_gen::@return sin16s sin16s::@4 sin16s::@1 sin16s::@5 sin16s::@2 sin16s::@8 sin16s::@9 sin16s::@10 sin16s::@11 sin16s::@12 sin16s::@6 sin16s::@3 sin16s::@return sin16s::@15 mulu16_sel mulu16_sel::@2 mulu16_sel::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 div32u16u div32u16u::@2 div32u16u::@3 div32u16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return sin8s_gen sin8s_gen::@3 sin8s_gen::@1 sin8s_gen::@4 sin8s_gen::@return sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return sin8s::@18 mulu8_sel mulu8_sel::@2 mulu8_sel::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 div16u div16u::@2 div16u::@return
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @34 Adding NOP phi() at start of @35
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
Adding NOP phi() at start of main Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5 Adding NOP phi() at start of main::@5
@ -5441,14 +5520,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH FINAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
[0] phi() [ ] ( ) [0] phi() [ ] ( )
to:@34 to:@35
@34: scope:[] from @begin @35: scope:[] from @begin
[1] phi() [ ] ( ) [1] phi() [ ] ( )
[2] call main [ ] ( ) [2] call main [ ] ( )
to:@end to:@end
@end: scope:[] from @34 @end: scope:[] from @35
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @34 main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call sin8s_gen [ ] ( main:2 [ ] ) [5] call sin8s_gen [ ] ( main:2 [ ] )
to:main::@5 to:main::@5
@ -5913,107 +5992,107 @@ div16u::@return: scope:[div16u] from div16u::@2
DOMINATORS DOMINATORS
@begin dominated by @begin @begin dominated by @begin
@34 dominated by @34 @begin @35 dominated by @35 @begin
@end dominated by @end @34 @begin @end dominated by @end @35 @begin
main dominated by main @34 @begin main dominated by main @35 @begin
main::@5 dominated by main::@5 main @34 @begin main::@5 dominated by main::@5 main @35 @begin
main::@6 dominated by main::@5 main::@6 main @34 @begin main::@6 dominated by main::@5 main::@6 main @35 @begin
main::@1 dominated by main::@1 main::@5 main::@6 main @34 @begin main::@1 dominated by main::@1 main::@5 main::@6 main @35 @begin
main::@3 dominated by main::@1 main::@5 main::@6 main::@3 main @34 @begin main::@3 dominated by main::@1 main::@5 main::@6 main::@3 main @35 @begin
main::@2 dominated by main::@1 main::@2 main::@5 main::@6 main @34 @begin main::@2 dominated by main::@1 main::@2 main::@5 main::@6 main @35 @begin
main::@8 dominated by main::@8 main::@1 main::@2 main::@5 main::@6 main @34 @begin main::@8 dominated by main::@8 main::@1 main::@2 main::@5 main::@6 main @35 @begin
main::@9 dominated by main::@9 main::@8 main::@1 main::@2 main::@5 main::@6 main @34 @begin main::@9 dominated by main::@9 main::@8 main::@1 main::@2 main::@5 main::@6 main @35 @begin
main::@return dominated by main::@9 main::@8 main::@1 main::@2 main::@5 main::@6 main::@return main @34 @begin main::@return dominated by main::@9 main::@8 main::@1 main::@2 main::@5 main::@6 main::@return main @35 @begin
print_str dominated by main::@1 main::@5 main::@6 print_str main @34 @begin print_str dominated by main::@1 main::@5 main::@6 print_str main @35 @begin
print_str::@1 dominated by main::@1 main::@5 main::@6 print_str::@1 print_str main @34 @begin print_str::@1 dominated by main::@1 main::@5 main::@6 print_str::@1 print_str main @35 @begin
print_str::@return dominated by main::@1 main::@5 main::@6 print_str::@return print_str::@1 print_str main @34 @begin print_str::@return dominated by main::@1 main::@5 main::@6 print_str::@return print_str::@1 print_str main @35 @begin
print_str::@2 dominated by main::@1 main::@5 main::@6 print_str::@1 print_str::@2 print_str main @34 @begin print_str::@2 dominated by main::@1 main::@5 main::@6 print_str::@1 print_str::@2 print_str main @35 @begin
print_sbyte dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main @34 @begin print_sbyte dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main @35 @begin
print_sbyte::@2 dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_sbyte::@2 @34 @begin print_sbyte::@2 dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_sbyte::@2 @35 @begin
print_sbyte::@4 dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_sbyte::@4 print_sbyte::@2 @34 @begin print_sbyte::@4 dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_sbyte::@4 print_sbyte::@2 @35 @begin
print_sbyte::@1 dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_sbyte::@1 @34 @begin print_sbyte::@1 dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_sbyte::@1 @35 @begin
print_sbyte::@return dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_sbyte::@1 @34 @begin print_sbyte::@return print_sbyte::@return dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_sbyte::@1 @35 @begin print_sbyte::@return
print_byte dominated by main::@1 main::@2 main::@5 main::@6 print_byte print_sbyte main print_sbyte::@1 @34 @begin print_byte dominated by main::@1 main::@2 main::@5 main::@6 print_byte print_sbyte main print_sbyte::@1 @35 @begin
print_byte::@1 dominated by main::@1 main::@2 main::@5 main::@6 print_byte::@1 print_byte print_sbyte main print_sbyte::@1 @34 @begin print_byte::@1 dominated by main::@1 main::@2 main::@5 main::@6 print_byte::@1 print_byte print_sbyte main print_sbyte::@1 @35 @begin
print_byte::@return dominated by main::@1 main::@2 main::@5 main::@6 print_byte::@1 print_byte print_sbyte main print_sbyte::@1 @34 @begin print_byte::@return print_byte::@return dominated by main::@1 main::@2 main::@5 main::@6 print_byte::@1 print_byte print_sbyte main print_sbyte::@1 @35 @begin print_byte::@return
print_char dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_char @34 @begin print_char dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_char @35 @begin
print_char::@return dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_char @34 print_char::@return @begin print_char::@return dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_char print_char::@return @35 @begin
print_cls dominated by main::@5 main::@6 print_cls main @34 @begin print_cls dominated by main::@5 main::@6 print_cls main @35 @begin
print_cls::@1 dominated by main::@5 main::@6 print_cls main @34 @begin print_cls::@1 print_cls::@1 dominated by main::@5 main::@6 print_cls main @35 @begin print_cls::@1
print_cls::@return dominated by main::@5 main::@6 print_cls main @34 @begin print_cls::@return print_cls::@1 print_cls::@return dominated by main::@5 main::@6 print_cls main @35 @begin print_cls::@return print_cls::@1
sin16s_gen dominated by main::@5 sin16s_gen main @34 @begin sin16s_gen dominated by main::@5 sin16s_gen main @35 @begin
sin16s_gen::@3 dominated by main::@5 sin16s_gen sin16s_gen::@3 main @34 @begin sin16s_gen::@3 dominated by main::@5 sin16s_gen sin16s_gen::@3 main @35 @begin
sin16s_gen::@1 dominated by main::@5 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 main @34 @begin sin16s_gen::@1 dominated by main::@5 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 main @35 @begin
sin16s_gen::@4 dominated by main::@5 sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 main @34 @begin sin16s_gen::@4 dominated by main::@5 sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 main @35 @begin
sin16s_gen::@return dominated by main::@5 sin16s_gen::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 main @34 @begin sin16s_gen::@return dominated by main::@5 sin16s_gen::@return sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 main @35 @begin
sin16s dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s_gen::@1 main @34 @begin sin16s dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s_gen::@1 main @35 @begin
sin16s::@4 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4 main @34 @begin sin16s::@4 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4 main @35 @begin
sin16s::@1 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 main @34 @begin sin16s::@1 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 main @35 @begin
sin16s::@5 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5 main @34 @begin sin16s::@5 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5 main @35 @begin
sin16s::@2 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 main @34 @begin sin16s::@2 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@2 main @35 @begin
sin16s::@8 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@8 sin16s::@2 main @34 @begin sin16s::@8 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@8 sin16s::@2 main @35 @begin
sin16s::@9 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @34 @begin sin16s::@9 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @35 @begin
sin16s::@10 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @34 @begin sin16s::@10 sin16s::@10 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @35 @begin sin16s::@10
sin16s::@11 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @34 @begin sin16s::@11 sin16s::@10 sin16s::@11 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @35 @begin sin16s::@11 sin16s::@10
sin16s::@12 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @34 @begin sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@12 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @35 @begin sin16s::@12 sin16s::@11 sin16s::@10
sin16s::@6 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@6 sin16s::@2 main @34 @begin sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@6 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@6 sin16s::@2 main @35 @begin sin16s::@12 sin16s::@11 sin16s::@10
sin16s::@3 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@3 sin16s::@2 main @34 @begin sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@3 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@3 sin16s::@2 main @35 @begin sin16s::@12 sin16s::@11 sin16s::@10
sin16s::@return dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@3 sin16s::@2 main @34 @begin sin16s::@return sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@return dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@3 sin16s::@2 main @35 @begin sin16s::@return sin16s::@12 sin16s::@11 sin16s::@10
sin16s::@15 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @34 @begin sin16s::@15 sin16s::@12 sin16s::@11 sin16s::@10 sin16s::@15 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 sin16s::@2 main @35 @begin sin16s::@15 sin16s::@12 sin16s::@11 sin16s::@10
mulu16_sel dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main @34 @begin mulu16_sel dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main @35 @begin
mulu16_sel::@2 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main @34 @begin mulu16_sel::@2 mulu16_sel::@2 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main @35 @begin mulu16_sel::@2
mulu16_sel::@return dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main @34 @begin mulu16_sel::@return mulu16_sel::@2 mulu16_sel::@return dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main @35 @begin mulu16_sel::@return mulu16_sel::@2
mul16u dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main @34 @begin mul16u dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main @35 @begin
mul16u::@1 dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main mul16u::@1 @34 @begin mul16u::@1 dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main mul16u::@1 @35 @begin
mul16u::@return dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u::@return main mul16u::@1 @34 @begin mul16u::@return dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 mul16u::@return main mul16u::@1 @35 @begin
mul16u::@2 dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main mul16u::@1 mul16u::@2 @34 @begin mul16u::@2 dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main mul16u::@1 mul16u::@2 @35 @begin
mul16u::@7 dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main mul16u::@1 mul16u::@2 @34 @begin mul16u::@7 mul16u::@7 dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main mul16u::@1 mul16u::@2 @35 @begin mul16u::@7
mul16u::@4 dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main mul16u::@1 mul16u::@2 @34 @begin mul16u::@4 mul16u::@4 dominated by mul16u main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2 main mul16u::@1 mul16u::@2 @35 @begin mul16u::@4
div32u16u dominated by main::@5 sin16s_gen div32u16u main @34 @begin div32u16u dominated by main::@5 sin16s_gen div32u16u main @35 @begin
div32u16u::@2 dominated by main::@5 sin16s_gen div32u16u main div32u16u::@2 @34 @begin div32u16u::@2 dominated by main::@5 sin16s_gen div32u16u main div32u16u::@2 @35 @begin
div32u16u::@3 dominated by main::@5 sin16s_gen div32u16u main div32u16u::@2 div32u16u::@3 @34 @begin div32u16u::@3 dominated by main::@5 sin16s_gen div32u16u main div32u16u::@2 div32u16u::@3 @35 @begin
div32u16u::@return dominated by main::@5 sin16s_gen div32u16u div32u16u::@return main div32u16u::@2 div32u16u::@3 @34 @begin div32u16u::@return dominated by main::@5 sin16s_gen div32u16u div32u16u::@return main div32u16u::@2 div32u16u::@3 @35 @begin
divr16u dominated by divr16u main @34 @begin divr16u dominated by divr16u main @35 @begin
divr16u::@1 dominated by divr16u::@1 divr16u main @34 @begin divr16u::@1 dominated by divr16u::@1 divr16u main @35 @begin
divr16u::@4 dominated by divr16u::@1 divr16u::@4 divr16u main @34 @begin divr16u::@4 dominated by divr16u::@1 divr16u::@4 divr16u main @35 @begin
divr16u::@2 dominated by divr16u::@2 divr16u::@1 divr16u main @34 @begin divr16u::@2 dominated by divr16u::@2 divr16u::@1 divr16u main @35 @begin
divr16u::@5 dominated by divr16u::@2 divr16u::@1 divr16u::@5 divr16u main @34 @begin divr16u::@5 dominated by divr16u::@2 divr16u::@1 divr16u::@5 divr16u main @35 @begin
divr16u::@3 dominated by divr16u::@2 divr16u::@1 divr16u::@3 divr16u main @34 @begin divr16u::@3 dominated by divr16u::@2 divr16u::@1 divr16u::@3 divr16u main @35 @begin
divr16u::@6 dominated by divr16u::@2 divr16u::@1 divr16u::@3 divr16u::@6 divr16u main @34 @begin divr16u::@6 dominated by divr16u::@2 divr16u::@1 divr16u::@3 divr16u::@6 divr16u main @35 @begin
divr16u::@return dominated by divr16u::@2 divr16u::@1 divr16u::@3 divr16u::@6 divr16u::@return divr16u main @34 @begin divr16u::@return dominated by divr16u::@2 divr16u::@1 divr16u::@3 divr16u::@6 divr16u::@return divr16u main @35 @begin
sin8s_gen dominated by sin8s_gen main @34 @begin sin8s_gen dominated by sin8s_gen main @35 @begin
sin8s_gen::@3 dominated by sin8s_gen main @34 @begin sin8s_gen::@3 sin8s_gen::@3 dominated by sin8s_gen main @35 @begin sin8s_gen::@3
sin8s_gen::@1 dominated by sin8s_gen main @34 @begin sin8s_gen::@1 sin8s_gen::@3 sin8s_gen::@1 dominated by sin8s_gen main @35 @begin sin8s_gen::@1 sin8s_gen::@3
sin8s_gen::@4 dominated by sin8s_gen main @34 @begin sin8s_gen::@1 sin8s_gen::@3 sin8s_gen::@4 sin8s_gen::@4 dominated by sin8s_gen main @35 @begin sin8s_gen::@1 sin8s_gen::@3 sin8s_gen::@4
sin8s_gen::@return dominated by sin8s_gen sin8s_gen::@return main @34 @begin sin8s_gen::@1 sin8s_gen::@3 sin8s_gen::@4 sin8s_gen::@return dominated by sin8s_gen sin8s_gen::@return main @35 @begin sin8s_gen::@1 sin8s_gen::@3 sin8s_gen::@4
sin8s dominated by sin8s_gen main sin8s @34 @begin sin8s_gen::@1 sin8s_gen::@3 sin8s dominated by sin8s_gen main sin8s @35 @begin sin8s_gen::@1 sin8s_gen::@3
sin8s::@5 dominated by sin8s_gen main sin8s @34 @begin sin8s::@5 sin8s_gen::@1 sin8s_gen::@3 sin8s::@5 dominated by sin8s_gen main sin8s @35 @begin sin8s::@5 sin8s_gen::@1 sin8s_gen::@3
sin8s::@1 dominated by sin8s_gen main sin8s @34 @begin sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 sin8s::@1 dominated by sin8s_gen main sin8s @35 @begin sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
sin8s::@6 dominated by sin8s_gen main sin8s @34 @begin sin8s::@1 sin8s::@6 sin8s_gen::@1 sin8s_gen::@3 sin8s::@6 dominated by sin8s_gen main sin8s @35 @begin sin8s::@1 sin8s::@6 sin8s_gen::@1 sin8s_gen::@3
sin8s::@2 dominated by sin8s_gen main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 sin8s::@2 dominated by sin8s_gen main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
sin8s::@10 dominated by sin8s_gen sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 sin8s::@10 dominated by sin8s_gen sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
sin8s::@11 dominated by sin8s_gen sin8s::@11 sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 sin8s::@11 dominated by sin8s_gen sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
sin8s::@12 dominated by sin8s_gen sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 sin8s::@12 dominated by sin8s_gen sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
sin8s::@13 dominated by sin8s_gen sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 sin8s::@13 dominated by sin8s_gen sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
sin8s::@14 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 sin8s::@14 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
sin8s::@7 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s::@7 sin8s_gen::@1 sin8s_gen::@3 sin8s::@7 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s::@7 sin8s_gen::@1 sin8s_gen::@3
sin8s::@3 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s::@3 sin8s_gen::@1 sin8s_gen::@3 sin8s::@3 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s::@3 sin8s_gen::@1 sin8s_gen::@3
sin8s::@8 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s::@3 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3 sin8s::@8 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s::@3 sin8s::@8 sin8s_gen::@1 sin8s_gen::@3
sin8s::@4 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s::@4 sin8s::@3 sin8s_gen::@1 sin8s_gen::@3 sin8s::@4 dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s::@4 sin8s::@3 sin8s_gen::@1 sin8s_gen::@3
sin8s::@return dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 sin8s::@return main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s::@4 sin8s::@3 sin8s_gen::@1 sin8s_gen::@3 sin8s::@return dominated by sin8s_gen sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 sin8s::@return main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s::@4 sin8s::@3 sin8s_gen::@1 sin8s_gen::@3
sin8s::@18 dominated by sin8s_gen sin8s::@18 sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s::@3 sin8s_gen::@1 sin8s_gen::@3 sin8s::@18 dominated by sin8s_gen sin8s::@18 sin8s::@14 sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s::@3 sin8s_gen::@1 sin8s_gen::@3
mulu8_sel dominated by sin8s_gen mulu8_sel main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mulu8_sel dominated by sin8s_gen mulu8_sel main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
mulu8_sel::@2 dominated by mulu8_sel::@2 sin8s_gen mulu8_sel main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mulu8_sel::@2 dominated by mulu8_sel::@2 sin8s_gen mulu8_sel main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
mulu8_sel::@return dominated by mulu8_sel::@2 sin8s_gen mulu8_sel::@return mulu8_sel main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mulu8_sel::@return dominated by mulu8_sel::@2 sin8s_gen mulu8_sel::@return mulu8_sel main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
mul8u dominated by sin8s_gen mul8u mulu8_sel main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u dominated by sin8s_gen mul8u mulu8_sel main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3
mul8u::@1 dominated by sin8s_gen mul8u mulu8_sel main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@1 mul8u::@1 dominated by sin8s_gen mul8u mulu8_sel main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@1
mul8u::@return dominated by sin8s_gen mul8u mulu8_sel mul8u::@return main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@1 mul8u::@return dominated by sin8s_gen mul8u mulu8_sel mul8u::@return main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@1
mul8u::@2 dominated by sin8s_gen mul8u mulu8_sel main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@2 mul8u::@1 mul8u::@2 dominated by sin8s_gen mul8u mulu8_sel main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@2 mul8u::@1
mul8u::@7 dominated by sin8s_gen mul8u mulu8_sel main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@7 mul8u::@2 mul8u::@1 mul8u::@7 dominated by sin8s_gen mul8u mulu8_sel main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@7 mul8u::@2 mul8u::@1
mul8u::@4 dominated by sin8s_gen mul8u mulu8_sel main sin8s @34 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@2 mul8u::@1 mul8u::@4 mul8u::@4 dominated by sin8s_gen mul8u mulu8_sel main sin8s @35 @begin sin8s::@2 sin8s::@1 sin8s_gen::@1 sin8s_gen::@3 mul8u::@2 mul8u::@1 mul8u::@4
div16u dominated by div16u sin8s_gen main @34 @begin div16u dominated by div16u sin8s_gen main @35 @begin
div16u::@2 dominated by div16u sin8s_gen div16u::@2 main @34 @begin div16u::@2 dominated by div16u sin8s_gen div16u::@2 main @35 @begin
div16u::@return dominated by div16u::@return div16u sin8s_gen div16u::@2 main @34 @begin div16u::@return dominated by div16u::@return div16u sin8s_gen div16u::@2 main @35 @begin
NATURAL LOOPS NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@9 blocks: null Found back edge: Loop head: main::@1 tails: main::@9 blocks: null
@ -6698,17 +6777,17 @@ INITIAL ASM
.label print_char_cursor = 7 .label print_char_cursor = 7
//SEG2 @begin //SEG2 @begin
bbegin: bbegin:
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34] //SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b34_from_bbegin: b35_from_bbegin:
jmp b34 jmp b35
//SEG4 @34 //SEG4 @35
b34: b35:
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main] //SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b34: main_from_b35:
jsr main jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end] //SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b34: bend_from_b35:
jmp bend jmp bend
//SEG8 @end //SEG8 @end
bend: bend:
@ -8942,17 +9021,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_char_cursor = 5 .label print_char_cursor = 5
//SEG2 @begin //SEG2 @begin
bbegin: bbegin:
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34] //SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b34_from_bbegin: b35_from_bbegin:
jmp b34 jmp b35
//SEG4 @34 //SEG4 @35
b34: b35:
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main] //SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b34: main_from_b35:
jsr main jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end] //SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b34: bend_from_b35:
jmp bend jmp bend
//SEG8 @end //SEG8 @end
bend: bend:
@ -10459,7 +10538,7 @@ div16u: {
print_hextab: .text "0123456789abcdef" print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b34 Removing instruction jmp b35
Removing instruction jmp bend Removing instruction jmp bend
Removing instruction jmp b5 Removing instruction jmp b5
Removing instruction jmp b6 Removing instruction jmp b6
@ -10582,9 +10661,9 @@ Replacing label b3_from_b14 with b3
Replacing label b4_from_b18 with b4 Replacing label b4_from_b18 with b4
Replacing label b4_from_b2 with b4 Replacing label b4_from_b2 with b4
Removing instruction bbegin: Removing instruction bbegin:
Removing instruction b34_from_bbegin: Removing instruction b35_from_bbegin:
Removing instruction main_from_b34: Removing instruction main_from_b35:
Removing instruction bend_from_b34: Removing instruction bend_from_b35:
Removing instruction b5_from_main: Removing instruction b5_from_main:
Removing instruction sin16s_gen_from_b5: Removing instruction sin16s_gen_from_b5:
Removing instruction b6_from_b5: Removing instruction b6_from_b5:
@ -10627,7 +10706,7 @@ Removing instruction breturn:
Removing instruction b4_from_b2: Removing instruction b4_from_b2:
Removing instruction b4_from_b7: Removing instruction b4_from_b7:
Succesful ASM optimization Pass5RedundantLabelElimination Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b34: Removing instruction b35:
Removing instruction bend: Removing instruction bend:
Removing instruction sin8s_gen_from_main: Removing instruction sin8s_gen_from_main:
Removing instruction b5: Removing instruction b5:
@ -10733,7 +10812,7 @@ Removing unreachable instruction jmp b3
Succesful ASM optimization Pass5UnreachableCodeElimination Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE FINAL SYMBOL TABLE
(label) @34 (label) @35
(label) @begin (label) @begin
(label) @end (label) @end
(word) PI2_u4f12 (word) PI2_u4f12
@ -11188,12 +11267,12 @@ Score: 28323
.label rem16u = 2 .label rem16u = 2
.label print_char_cursor = 5 .label print_char_cursor = 5
//SEG2 @begin //SEG2 @begin
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34] //SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
//SEG4 @34 //SEG4 @35
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main] //SEG6 [4] phi from @35 to main [phi:@35->main]
jsr main jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end] //SEG7 [3] phi from @35 to @end [phi:@35->@end]
//SEG8 @end //SEG8 @end
//SEG9 main //SEG9 main
main: { main: {

View File

@ -1,4 +1,4 @@
(label) @34 (label) @35
(label) @begin (label) @begin
(label) @end (label) @end
(word) PI2_u4f12 (word) PI2_u4f12

View File

@ -1,13 +1,13 @@
@begin: scope:[] from @begin: scope:[] from
[0] phi() [ ] ( ) [0] phi() [ ] ( )
to:@35 to:@36
@35: scope:[] from @begin @36: scope:[] from @begin
[1] phi() [ ] ( ) [1] phi() [ ] ( )
[2] call main [ ] ( ) [2] call main [ ] ( )
to:@end to:@end
@end: scope:[] from @35 @end: scope:[] from @36
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @35 main: scope:[main] from @36
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call print_cls [ ] ( main:2 [ ] ) [5] call print_cls [ ] ( main:2 [ ] )
to:main::@1 to:main::@1

View File

@ -105,6 +105,23 @@ void sin16s_gen(signed word* sintab, word wavelength) {
} }
} }
// Generate signed word sinus table - with values in the range min-max.
// sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
void sin16s_gen2(signed word* sintab, word wavelength, signed word min, signed word max) {
signed word ampl = max-min;
signed word offs = min + ampl>>1; // ampl is always positive so shifting left does not alter the sign
// u[4.28] step = PI*2/wavelength
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
// 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;
x = x + step;
}
}
// Generate signed byte sinus table - on the full -$7f - $7f range // Generate signed byte sinus table - on the full -$7f - $7f range
// sintab - the table to generate into // sintab - the table to generate into
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table) // wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
@ -427,6 +444,7 @@ signed dword mul16s(signed word a, signed word b) {
} }
Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i Adding pre/post-modifier (word) sin16s_gen::i ← ++ (word) sin16s_gen::i
Adding pre/post-modifier (word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab Adding pre/post-modifier (signed byte*) sin8s_gen::sintab ← ++ (signed byte*) sin8s_gen::sintab
Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i Adding pre/post-modifier (word) sin8s_gen::i ← ++ (word) sin8s_gen::i
Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx Adding pre/post-modifier (byte) sin8s::usinx ← -- (byte) sin8s::usinx
@ -589,6 +607,7 @@ SYMBOLS
(label) @33 (label) @33
(label) @34 (label) @34
(label) @35 (label) @35
(label) @36
(label) @4 (label) @4
(label) @5 (label) @5
(label) @6 (label) @6
@ -1105,6 +1124,31 @@ SYMBOLS
(dword) sin16s_gen::step (dword) sin16s_gen::step
(word) sin16s_gen::wavelength (word) sin16s_gen::wavelength
(dword) sin16s_gen::x (dword) sin16s_gen::x
(void()) sin16s_gen2((signed word*) sin16s_gen2::sintab , (word) sin16s_gen2::wavelength , (signed word) sin16s_gen2::min , (signed word) sin16s_gen2::max)
(signed word~) sin16s_gen2::$0
(signed word~) sin16s_gen2::$1
(dword~) sin16s_gen2::$10
(bool~) sin16s_gen2::$11
(signed word~) sin16s_gen2::$2
(dword~) sin16s_gen2::$3
(signed word~) sin16s_gen2::$4
(signed dword~) sin16s_gen2::$5
(word~) sin16s_gen2::$6
(signed word~) sin16s_gen2::$7
(signed word~) sin16s_gen2::$8
(signed word*~) sin16s_gen2::$9
(label) sin16s_gen2::@1
(label) sin16s_gen2::@2
(label) sin16s_gen2::@return
(signed word) sin16s_gen2::ampl
(word) sin16s_gen2::i
(signed word) sin16s_gen2::max
(signed word) sin16s_gen2::min
(signed word) sin16s_gen2::offs
(signed word*) sin16s_gen2::sintab
(dword) sin16s_gen2::step
(word) sin16s_gen2::wavelength
(dword) sin16s_gen2::x
(signed byte()) sin8s((word) sin8s::x) (signed byte()) sin8s((word) sin8s::x)
(bool~) sin8s::$0 (bool~) sin8s::$0
(bool~) sin8s::$1 (bool~) sin8s::$1
@ -1754,6 +1798,39 @@ sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2
to:@return to:@return
@14: scope:[] from @13 @14: scope:[] from @13
to:@15 to:@15
sin16s_gen2: scope:[sin16s_gen2] from
(signed word~) sin16s_gen2::$0 ← (signed word) sin16s_gen2::max - (signed word) sin16s_gen2::min
(signed word) sin16s_gen2::ampl ← (signed word~) sin16s_gen2::$0
(signed word~) sin16s_gen2::$1 ← (signed word) sin16s_gen2::ampl >> (byte/signed byte/word/signed word/dword/signed dword) 1
(signed word~) sin16s_gen2::$2 ← (signed word) sin16s_gen2::min + (signed word~) sin16s_gen2::$1
(signed word) sin16s_gen2::offs ← (signed word~) sin16s_gen2::$2
(dword~) sin16s_gen2::$3 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_gen2::wavelength
(dword) sin16s_gen2::step ← (dword~) sin16s_gen2::$3
(dword) sin16s_gen2::x ← (byte/signed byte/word/signed word/dword/signed dword) 0
(word) sin16s_gen2::i ← (byte/signed byte/word/signed word/dword/signed dword) 0
to:sin16s_gen2::@1
sin16s_gen2::@1: scope:[sin16s_gen2] from sin16s_gen2 sin16s_gen2::@1
(signed word~) sin16s_gen2::$4 ← call sin16s (dword) sin16s_gen2::x
(signed dword~) sin16s_gen2::$5 ← call mul16s (signed word~) sin16s_gen2::$4 (signed word) sin16s_gen2::ampl
(word~) sin16s_gen2::$6 ← > (signed dword~) sin16s_gen2::$5
(signed word~) sin16s_gen2::$7 ← ((signed word)) (word~) sin16s_gen2::$6
(signed word~) sin16s_gen2::$8 ← (signed word) sin16s_gen2::offs + (signed word~) sin16s_gen2::$7
*((signed word*) sin16s_gen2::sintab) ← (signed word~) sin16s_gen2::$8
(signed word*~) sin16s_gen2::$9 ← (signed word*) sin16s_gen2::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2
(signed word*) sin16s_gen2::sintab ← (signed word*~) sin16s_gen2::$9
(dword~) sin16s_gen2::$10 ← (dword) sin16s_gen2::x + (dword) sin16s_gen2::step
(dword) sin16s_gen2::x ← (dword~) sin16s_gen2::$10
(word) sin16s_gen2::i ← ++ (word) sin16s_gen2::i
(bool~) sin16s_gen2::$11 ← (word) sin16s_gen2::i < (word) sin16s_gen2::wavelength
if((bool~) sin16s_gen2::$11) goto sin16s_gen2::@1
to:sin16s_gen2::@2
sin16s_gen2::@2: scope:[sin16s_gen2] from sin16s_gen2::@1
to:sin16s_gen2::@return
sin16s_gen2::@return: scope:[sin16s_gen2] from sin16s_gen2::@2
return
to:@return
@15: scope:[] from @14
to:@16
sin8s_gen: scope:[sin8s_gen] from sin8s_gen: scope:[sin8s_gen] from
(word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength (word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength
(word) sin8s_gen::step ← (word~) sin8s_gen::$0 (word) sin8s_gen::step ← (word~) sin8s_gen::$0
@ -1775,8 +1852,8 @@ sin8s_gen::@2: scope:[sin8s_gen] from sin8s_gen::@1
sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2 sin8s_gen::@return: scope:[sin8s_gen] from sin8s_gen::@2
return return
to:@return to:@return
@15: scope:[] from @14 @16: scope:[] from @15
to:@16 to:@17
sin16s: scope:[sin16s] from sin16s: scope:[sin16s] from
(byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28 (bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28
@ -1838,8 +1915,8 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7
to:@return to:@return
sin16s::@7: scope:[sin16s] from sin16s::@7: scope:[sin16s] from
to:sin16s::@return to:sin16s::@return
@16: scope:[] from @15 @17: scope:[] from @16
to:@17 to:@18
sin8s: scope:[sin8s] from sin8s: scope:[sin8s] from
(byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12 (bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12
@ -1909,8 +1986,8 @@ sin8s::@return: scope:[sin8s] from sin8s::@4 sin8s::@9
to:@return to:@return
sin8s::@9: scope:[sin8s] from sin8s::@9: scope:[sin8s] from
to:sin8s::@return to:sin8s::@return
@17: scope:[] from @16 @18: scope:[] from @17
to:@18 to:@19
mulu16_sel: scope:[mulu16_sel] from mulu16_sel: scope:[mulu16_sel] from
(dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2 (dword~) mulu16_sel::$0 ← call mul16u (word) mulu16_sel::v1 (word) mulu16_sel::v2
(dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select
@ -1923,8 +2000,8 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1
to:@return to:@return
mulu16_sel::@1: scope:[mulu16_sel] from mulu16_sel::@1: scope:[mulu16_sel] from
to:mulu16_sel::@return to:mulu16_sel::@return
@18: scope:[] from @17 @19: scope:[] from @18
to:@19 to:@20
mulu8_sel: scope:[mulu8_sel] from mulu8_sel: scope:[mulu8_sel] from
(word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2 (word~) mulu8_sel::$0 ← call mul8u (byte) mulu8_sel::v1 (byte) mulu8_sel::v2
(word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select
@ -1937,11 +2014,11 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1
to:@return to:@return
mulu8_sel::@1: scope:[mulu8_sel] from mulu8_sel::@1: scope:[mulu8_sel] from
to:mulu8_sel::@return to:mulu8_sel::@return
@19: scope:[] from @18 @20: scope:[] from @19
(byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor ← (byte*) print_screen (byte*) print_line_cursor ← (byte*) print_screen
(byte*) print_char_cursor ← (byte*) print_line_cursor (byte*) print_char_cursor ← (byte*) print_line_cursor
to:@20 to:@21
print_str_lines: scope:[print_str_lines] from print_str_lines: scope:[print_str_lines] from
to:print_str_lines::@1 to:print_str_lines::@1
print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9
@ -1979,8 +2056,8 @@ print_str_lines::@10: scope:[print_str_lines] from
print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3 print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@3
return return
to:@return to:@return
@20: scope:[] from @19 @21: scope:[] from @20
to:@21 to:@22
print_str_ln: scope:[print_str_ln] from print_str_ln: scope:[print_str_ln] from
(void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str (void~) print_str_ln::$0 ← call print_str (byte*) print_str_ln::str
(void~) print_str_ln::$1 ← call print_ln (void~) print_str_ln::$1 ← call print_ln
@ -1988,8 +2065,8 @@ print_str_ln: scope:[print_str_ln] from
print_str_ln::@return: scope:[print_str_ln] from print_str_ln print_str_ln::@return: scope:[print_str_ln] from print_str_ln
return return
to:@return to:@return
@21: scope:[] from @20 @22: scope:[] from @21
to:@22 to:@23
print_str: scope:[print_str] from print_str: scope:[print_str] from
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
@ -2012,8 +2089,8 @@ print_str::@6: scope:[print_str] from
print_str::@return: scope:[print_str] from print_str::@3 print_str::@return: scope:[print_str] from print_str::@3
return return
to:@return to:@return
@22: scope:[] from @21 @23: scope:[] from @22
to:@23 to:@24
print_str_at: scope:[print_str_at] from print_str_at: scope:[print_str_at] from
to:print_str_at::@1 to:print_str_at::@1
print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2 print_str_at::@1: scope:[print_str_at] from print_str_at print_str_at::@2
@ -2036,8 +2113,8 @@ print_str_at::@6: scope:[print_str_at] from
print_str_at::@return: scope:[print_str_at] from print_str_at::@3 print_str_at::@return: scope:[print_str_at] from print_str_at::@3
return return
to:@return to:@return
@23: scope:[] from @22 @24: scope:[] from @23
to:@24 to:@25
print_ln: scope:[print_ln] from print_ln: scope:[print_ln] from
to:print_ln::@1 to:print_ln::@1
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1 print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
@ -2052,8 +2129,8 @@ print_ln::@2: scope:[print_ln] from print_ln::@1
print_ln::@return: scope:[print_ln] from print_ln::@2 print_ln::@return: scope:[print_ln] from print_ln::@2
return return
to:@return to:@return
@24: scope:[] from @23 @25: scope:[] from @24
to:@25 to:@26
print_sword: scope:[print_sword] from print_sword: scope:[print_sword] from
(bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sword::$0 ← (signed word) print_sword::w < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sword::$1 ← ! (bool~) print_sword::$0 (bool~) print_sword::$1 ← ! (bool~) print_sword::$0
@ -2071,8 +2148,8 @@ print_sword::@2: scope:[print_sword] from print_sword
print_sword::@return: scope:[print_sword] from print_sword::@1 print_sword::@return: scope:[print_sword] from print_sword::@1
return return
to:@return to:@return
@25: scope:[] from @24 @26: scope:[] from @25
to:@26 to:@27
print_sbyte: scope:[print_sbyte] from print_sbyte: scope:[print_sbyte] from
(bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sbyte::$0 ← (signed byte) print_sbyte::b < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0 (bool~) print_sbyte::$1 ← ! (bool~) print_sbyte::$0
@ -2090,8 +2167,8 @@ print_sbyte::@2: scope:[print_sbyte] from print_sbyte
print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1
return return
to:@return to:@return
@26: scope:[] from @25 @27: scope:[] from @26
to:@27 to:@28
print_word: scope:[print_word] from print_word: scope:[print_word] from
(byte~) print_word::$0 ← > (word) print_word::w (byte~) print_word::$0 ← > (word) print_word::w
(void~) print_word::$1 ← call print_byte (byte~) print_word::$0 (void~) print_word::$1 ← call print_byte (byte~) print_word::$0
@ -2101,8 +2178,8 @@ print_word: scope:[print_word] from
print_word::@return: scope:[print_word] from print_word print_word::@return: scope:[print_word] from print_word
return return
to:@return to:@return
@27: scope:[] from @26 @28: scope:[] from @27
to:@28 to:@29
print_dword: scope:[print_dword] from print_dword: scope:[print_dword] from
(word~) print_dword::$0 ← > (dword) print_dword::dw (word~) print_dword::$0 ← > (dword) print_dword::dw
(void~) print_dword::$1 ← call print_word (word~) print_dword::$0 (void~) print_dword::$1 ← call print_word (word~) print_dword::$0
@ -2112,8 +2189,8 @@ print_dword: scope:[print_dword] from
print_dword::@return: scope:[print_dword] from print_dword print_dword::@return: scope:[print_dword] from print_dword
return return
to:@return to:@return
@28: scope:[] from @27 @29: scope:[] from @28
to:@29 to:@30
print_sdword: scope:[print_sdword] from print_sdword: scope:[print_sdword] from
(bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0 (bool~) print_sdword::$0 ← (signed dword) print_sdword::dw < (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0 (bool~) print_sdword::$1 ← ! (bool~) print_sdword::$0
@ -2131,9 +2208,9 @@ print_sdword::@2: scope:[print_sdword] from print_sdword
print_sdword::@return: scope:[print_sdword] from print_sdword::@1 print_sdword::@return: scope:[print_sdword] from print_sdword::@1
return return
to:@return to:@return
@29: scope:[] from @28 @30: scope:[] from @29
(byte[]) print_hextab ← (string) "0123456789abcdef" (byte[]) print_hextab ← (string) "0123456789abcdef"
to:@30 to:@31
print_byte: scope:[print_byte] from print_byte: scope:[print_byte] from
(byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4 (byte~) print_byte::$0 ← (byte) print_byte::b >> (byte/signed byte/word/signed word/dword/signed dword) 4
(void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0) (void~) print_byte::$1 ← call print_char *((byte[]) print_hextab + (byte~) print_byte::$0)
@ -2143,8 +2220,8 @@ print_byte: scope:[print_byte] from
print_byte::@return: scope:[print_byte] from print_byte print_byte::@return: scope:[print_byte] from print_byte
return return
to:@return to:@return
@30: scope:[] from @29 @31: scope:[] from @30
to:@31 to:@32
print_char: scope:[print_char] from print_char: scope:[print_char] from
*((byte*) print_char_cursor) ← (byte) print_char::ch *((byte*) print_char_cursor) ← (byte) print_char::ch
(byte*) print_char_cursor ← ++ (byte*) print_char_cursor (byte*) print_char_cursor ← ++ (byte*) print_char_cursor
@ -2152,8 +2229,8 @@ print_char: scope:[print_char] from
print_char::@return: scope:[print_char] from print_char print_char::@return: scope:[print_char] from print_char
return return
to:@return to:@return
@31: scope:[] from @30 @32: scope:[] from @31
to:@32 to:@33
print_cls: scope:[print_cls] from print_cls: scope:[print_cls] from
(byte*) print_cls::sc ← (byte*) print_screen (byte*) print_cls::sc ← (byte*) print_screen
to:print_cls::@1 to:print_cls::@1
@ -2171,8 +2248,8 @@ print_cls::@2: scope:[print_cls] from print_cls::@1
print_cls::@return: scope:[print_cls] from print_cls::@2 print_cls::@return: scope:[print_cls] from print_cls::@2
return return
to:@return to:@return
@32: scope:[] from @31 @33: scope:[] from @32
to:@33 to:@34
print_set_screen: scope:[print_set_screen] from print_set_screen: scope:[print_set_screen] from
(byte*) print_screen ← (byte*) print_set_screen::screen (byte*) print_screen ← (byte*) print_set_screen::screen
(byte*) print_line_cursor ← (byte*) print_screen (byte*) print_line_cursor ← (byte*) print_screen
@ -2181,8 +2258,8 @@ print_set_screen: scope:[print_set_screen] from
print_set_screen::@return: scope:[print_set_screen] from print_set_screen print_set_screen::@return: scope:[print_set_screen] from print_set_screen
return return
to:@return to:@return
@33: scope:[] from @32 @34: scope:[] from @33
to:@34 to:@35
main: scope:[main] from main: scope:[main] from
(word) main::tabsize ← (byte/signed byte/word/signed word/dword/signed dword) 20 (word) main::tabsize ← (byte/signed byte/word/signed word/dword/signed dword) 20
(byte[20]) main::sintab ← { fill( 20, 0) } (byte[20]) main::sintab ← { fill( 20, 0) }
@ -2192,8 +2269,8 @@ main: scope:[main] from
main::@return: scope:[main] from main main::@return: scope:[main] from main
return return
to:@return to:@return
@34: scope:[] from @33 @35: scope:[] from @34
to:@35 to:@36
sin8u_table: scope:[sin8u_table] from sin8u_table: scope:[sin8u_table] from
(byte~) sin8u_table::$0 ← (byte) sin8u_table::max - (byte) sin8u_table::min (byte~) sin8u_table::$0 ← (byte) sin8u_table::max - (byte) sin8u_table::min
(byte) sin8u_table::amplitude ← (byte~) sin8u_table::$0 (byte) sin8u_table::amplitude ← (byte~) sin8u_table::$0
@ -2251,16 +2328,16 @@ sin8u_table::@2: scope:[sin8u_table] from sin8u_table::@1
sin8u_table::@return: scope:[sin8u_table] from sin8u_table::@2 sin8u_table::@return: scope:[sin8u_table] from sin8u_table::@2
return return
to:@return to:@return
@35: scope:[] from @34 @36: scope:[] from @35
call main call main
to:@end to:@end
@end: scope:[] from @35 @end: scope:[] from @36
Removing unused procedure div8s Removing unused procedure div8s
Removing unused procedure div16s Removing unused procedure div16s
Removing unused procedure mul8s Removing unused procedure mul8s
Removing unused procedure mul16s
Removing unused procedure sin16s_gen Removing unused procedure sin16s_gen
Removing unused procedure sin16s_gen2
Removing unused procedure sin8s_gen Removing unused procedure sin8s_gen
Removing unused procedure print_str_lines Removing unused procedure print_str_lines
Removing unused procedure print_str_ln Removing unused procedure print_str_ln
@ -2270,6 +2347,7 @@ Removing unused procedure print_set_screen
Removing unused procedure div8u Removing unused procedure div8u
Removing unused procedure div32u16u Removing unused procedure div32u16u
Removing unused procedure divr16s Removing unused procedure divr16s
Removing unused procedure mul16s
Removing unused procedure sin16s Removing unused procedure sin16s
Removing unused procedure print_dword Removing unused procedure print_dword
Removing unused procedure divr8u Removing unused procedure divr8u
@ -2343,28 +2421,29 @@ Removing empty block @12
Removing empty block @14 Removing empty block @14
Removing empty block @15 Removing empty block @15
Removing empty block @16 Removing empty block @16
Removing empty block sin8s::@9
Removing empty block @17 Removing empty block @17
Removing empty block sin8s::@9
Removing empty block @18 Removing empty block @18
Removing empty block @19
Removing empty block mulu8_sel::@1 Removing empty block mulu8_sel::@1
Removing empty block @20
Removing empty block @21 Removing empty block @21
Removing empty block @22
Removing empty block print_str::@4 Removing empty block print_str::@4
Removing empty block print_str::@3 Removing empty block print_str::@3
Removing empty block print_str::@5 Removing empty block print_str::@5
Removing empty block print_str::@6 Removing empty block print_str::@6
Removing empty block @22
Removing empty block @23 Removing empty block @23
Removing empty block @24 Removing empty block @24
Removing empty block @25 Removing empty block @25
Removing empty block @26 Removing empty block @26
Removing empty block @27 Removing empty block @27
Removing empty block @28 Removing empty block @28
Removing empty block @30 Removing empty block @29
Removing empty block @31 Removing empty block @31
Removing empty block @32 Removing empty block @32
Removing empty block @33 Removing empty block @33
Removing empty block @34 Removing empty block @34
Removing empty block @35
Removing empty block sin8u_table::@2 Removing empty block sin8u_table::@2
PROCEDURE MODIFY VARIABLE ANALYSIS PROCEDURE MODIFY VARIABLE ANALYSIS
divr16u modifies rem16u divr16u modifies rem16u
@ -2609,7 +2688,7 @@ mul8su::@return: scope:[mul8su] from mul8su::@1
(word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736
(word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868
(word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434
to:@19 to:@20
sin8s: scope:[sin8s] from sin8u_table::@1 sin8s: scope:[sin8s] from sin8u_table::@1
(word) sin8s::x#3 ← phi( sin8u_table::@1/(word) sin8s::x#2 ) (word) sin8s::x#3 ← phi( sin8u_table::@1/(word) sin8s::x#2 )
(byte) sin8s::isUpper#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) sin8s::isUpper#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
@ -2766,12 +2845,12 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2
(byte) mulu8_sel::return#6 ← (byte) mulu8_sel::return#12 (byte) mulu8_sel::return#6 ← (byte) mulu8_sel::return#12
return return
to:@return to:@return
@19: scope:[] from @13 @20: scope:[] from @13
(word) rem16u#26 ← phi( @13/(word) rem16u#28 ) (word) rem16u#26 ← phi( @13/(word) rem16u#28 )
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor#0 ← (byte*) print_screen#0 (byte*) print_line_cursor#0 ← (byte*) print_screen#0
(byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0 (byte*) print_char_cursor#0 ← (byte*) print_line_cursor#0
to:@29 to:@30
print_str: scope:[print_str] from sin8u_table::@11 sin8u_table::@16 sin8u_table::@18 sin8u_table::@20 sin8u_table::@22 sin8u_table::@3 sin8u_table::@5 sin8u_table::@7 sin8u_table::@9 print_str: scope:[print_str] from sin8u_table::@11 sin8u_table::@16 sin8u_table::@18 sin8u_table::@20 sin8u_table::@22 sin8u_table::@3 sin8u_table::@5 sin8u_table::@7 sin8u_table::@9
(byte*) print_char_cursor#102 ← phi( sin8u_table::@11/(byte*) print_char_cursor#31 sin8u_table::@16/(byte*) print_char_cursor#100 sin8u_table::@18/(byte*) print_char_cursor#36 sin8u_table::@20/(byte*) print_char_cursor#38 sin8u_table::@22/(byte*) print_char_cursor#40 sin8u_table::@3/(byte*) print_char_cursor#99 sin8u_table::@5/(byte*) print_char_cursor#25 sin8u_table::@7/(byte*) print_char_cursor#27 sin8u_table::@9/(byte*) print_char_cursor#29 ) (byte*) print_char_cursor#102 ← phi( sin8u_table::@11/(byte*) print_char_cursor#31 sin8u_table::@16/(byte*) print_char_cursor#100 sin8u_table::@18/(byte*) print_char_cursor#36 sin8u_table::@20/(byte*) print_char_cursor#38 sin8u_table::@22/(byte*) print_char_cursor#40 sin8u_table::@3/(byte*) print_char_cursor#99 sin8u_table::@5/(byte*) print_char_cursor#25 sin8u_table::@7/(byte*) print_char_cursor#27 sin8u_table::@9/(byte*) print_char_cursor#29 )
(byte*) print_str::str#12 ← phi( sin8u_table::@11/(byte*) print_str::str#5 sin8u_table::@16/(byte*) print_str::str#6 sin8u_table::@18/(byte*) print_str::str#7 sin8u_table::@20/(byte*) print_str::str#8 sin8u_table::@22/(byte*) print_str::str#9 sin8u_table::@3/(byte*) print_str::str#1 sin8u_table::@5/(byte*) print_str::str#2 sin8u_table::@7/(byte*) print_str::str#3 sin8u_table::@9/(byte*) print_str::str#4 ) (byte*) print_str::str#12 ← phi( sin8u_table::@11/(byte*) print_str::str#5 sin8u_table::@16/(byte*) print_str::str#6 sin8u_table::@18/(byte*) print_str::str#7 sin8u_table::@20/(byte*) print_str::str#8 sin8u_table::@22/(byte*) print_str::str#9 sin8u_table::@3/(byte*) print_str::str#1 sin8u_table::@5/(byte*) print_str::str#2 sin8u_table::@7/(byte*) print_str::str#3 sin8u_table::@9/(byte*) print_str::str#4 )
@ -2913,13 +2992,13 @@ print_word::@return: scope:[print_word] from print_word::@2
(byte*) print_char_cursor#13 ← (byte*) print_char_cursor#58 (byte*) print_char_cursor#13 ← (byte*) print_char_cursor#58
return return
to:@return to:@return
@29: scope:[] from @19 @30: scope:[] from @20
(byte*) print_screen#6 ← phi( @19/(byte*) print_screen#0 ) (byte*) print_screen#6 ← phi( @20/(byte*) print_screen#0 )
(word) rem16u#25 ← phi( @19/(word) rem16u#26 ) (word) rem16u#25 ← phi( @20/(word) rem16u#26 )
(byte*) print_char_cursor#107 ← phi( @19/(byte*) print_char_cursor#0 ) (byte*) print_char_cursor#107 ← phi( @20/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#30 ← phi( @19/(byte*) print_line_cursor#0 ) (byte*) print_line_cursor#30 ← phi( @20/(byte*) print_line_cursor#0 )
(byte[]) print_hextab#0 ← (const string) $0 (byte[]) print_hextab#0 ← (const string) $0
to:@35 to:@36
print_byte: scope:[print_byte] from print_sbyte::@1 print_word print_word::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@23 sin8u_table::@6 sin8u_table::@8 print_byte: scope:[print_byte] from print_sbyte::@1 print_word print_word::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@23 sin8u_table::@6 sin8u_table::@8
(byte*) print_char_cursor#97 ← phi( print_sbyte::@1/(byte*) print_char_cursor#94 print_word/(byte*) print_char_cursor#96 print_word::@1/(byte*) print_char_cursor#11 sin8u_table::@10/(byte*) print_char_cursor#30 sin8u_table::@12/(byte*) print_char_cursor#32 sin8u_table::@23/(byte*) print_char_cursor#41 sin8u_table::@6/(byte*) print_char_cursor#26 sin8u_table::@8/(byte*) print_char_cursor#28 ) (byte*) print_char_cursor#97 ← phi( print_sbyte::@1/(byte*) print_char_cursor#94 print_word/(byte*) print_char_cursor#96 print_word::@1/(byte*) print_char_cursor#11 sin8u_table::@10/(byte*) print_char_cursor#30 sin8u_table::@12/(byte*) print_char_cursor#32 sin8u_table::@23/(byte*) print_char_cursor#41 sin8u_table::@6/(byte*) print_char_cursor#26 sin8u_table::@8/(byte*) print_char_cursor#28 )
(byte) print_byte::b#8 ← phi( print_sbyte::@1/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 sin8u_table::@10/(byte) print_byte::b#5 sin8u_table::@12/(byte) print_byte::b#6 sin8u_table::@23/(byte) print_byte::b#7 sin8u_table::@6/(byte) print_byte::b#3 sin8u_table::@8/(byte) print_byte::b#4 ) (byte) print_byte::b#8 ← phi( print_sbyte::@1/(byte) print_byte::b#0 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 sin8u_table::@10/(byte) print_byte::b#5 sin8u_table::@12/(byte) print_byte::b#6 sin8u_table::@23/(byte) print_byte::b#7 sin8u_table::@6/(byte) print_byte::b#3 sin8u_table::@8/(byte) print_byte::b#4 )
@ -2980,11 +3059,11 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
(byte*) print_char_cursor#20 ← (byte*) print_char_cursor#64 (byte*) print_char_cursor#20 ← (byte*) print_char_cursor#64
return return
to:@return to:@return
main: scope:[main] from @35 main: scope:[main] from @36
(word) rem16u#23 ← phi( @35/(word) rem16u#22 ) (word) rem16u#23 ← phi( @36/(word) rem16u#22 )
(byte*) print_char_cursor#98 ← phi( @35/(byte*) print_char_cursor#101 ) (byte*) print_char_cursor#98 ← phi( @36/(byte*) print_char_cursor#101 )
(byte*) print_line_cursor#24 ← phi( @35/(byte*) print_line_cursor#27 ) (byte*) print_line_cursor#24 ← phi( @36/(byte*) print_line_cursor#27 )
(byte*) print_screen#4 ← phi( @35/(byte*) print_screen#5 ) (byte*) print_screen#4 ← phi( @36/(byte*) print_screen#5 )
(word) main::tabsize#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20 (word) main::tabsize#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20
(byte[20]) main::sintab#0 ← { fill( 20, 0) } (byte[20]) main::sintab#0 ← { fill( 20, 0) }
call print_cls call print_cls
@ -3429,31 +3508,31 @@ sin8u_table::@return: scope:[sin8u_table] from sin8u_table::@25
(byte*) print_line_cursor#10 ← (byte*) print_line_cursor#21 (byte*) print_line_cursor#10 ← (byte*) print_line_cursor#21
return return
to:@return to:@return
@35: scope:[] from @29 @36: scope:[] from @30
(byte*) print_screen#5 ← phi( @29/(byte*) print_screen#6 ) (byte*) print_screen#5 ← phi( @30/(byte*) print_screen#6 )
(word) rem16u#22 ← phi( @29/(word) rem16u#25 ) (word) rem16u#22 ← phi( @30/(word) rem16u#25 )
(byte*) print_char_cursor#101 ← phi( @29/(byte*) print_char_cursor#107 ) (byte*) print_char_cursor#101 ← phi( @30/(byte*) print_char_cursor#107 )
(byte*) print_line_cursor#27 ← phi( @29/(byte*) print_line_cursor#30 ) (byte*) print_line_cursor#27 ← phi( @30/(byte*) print_line_cursor#30 )
call main call main
to:@36 to:@37
@36: scope:[] from @35 @37: scope:[] from @36
(word) rem16u#17 ← phi( @35/(word) rem16u#6 ) (word) rem16u#17 ← phi( @36/(word) rem16u#6 )
(byte*) print_char_cursor#89 ← phi( @35/(byte*) print_char_cursor#23 ) (byte*) print_char_cursor#89 ← phi( @36/(byte*) print_char_cursor#23 )
(byte*) print_line_cursor#22 ← phi( @35/(byte*) print_line_cursor#7 ) (byte*) print_line_cursor#22 ← phi( @36/(byte*) print_line_cursor#7 )
(byte*) print_line_cursor#11 ← (byte*) print_line_cursor#22 (byte*) print_line_cursor#11 ← (byte*) print_line_cursor#22
(byte*) print_char_cursor#45 ← (byte*) print_char_cursor#89 (byte*) print_char_cursor#45 ← (byte*) print_char_cursor#89
(word) rem16u#9 ← (word) rem16u#17 (word) rem16u#9 ← (word) rem16u#17
to:@end to:@end
@end: scope:[] from @36 @end: scope:[] from @37
SYMBOL TABLE SSA SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef" (const string) $0 = (string) "0123456789abcdef"
(label) @13 (label) @13
(label) @19
(label) @2 (label) @2
(label) @29 (label) @20
(label) @35 (label) @30
(label) @36 (label) @36
(label) @37
(label) @begin (label) @begin
(label) @end (label) @end
(word) PI2_u4f12 (word) PI2_u4f12
@ -5117,17 +5196,17 @@ Culled Empty Block (label) @2
Culled Empty Block (label) divr16u::@6 Culled Empty Block (label) divr16u::@6
Culled Empty Block (label) mul8u::@3 Culled Empty Block (label) mul8u::@3
Culled Empty Block (label) @13 Culled Empty Block (label) @13
Culled Empty Block (label) @19 Culled Empty Block (label) @20
Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@2
Culled Empty Block (label) print_sword::@3 Culled Empty Block (label) print_sword::@3
Culled Empty Block (label) print_sbyte::@3 Culled Empty Block (label) print_sbyte::@3
Culled Empty Block (label) print_word::@2 Culled Empty Block (label) print_word::@2
Culled Empty Block (label) @29 Culled Empty Block (label) @30
Culled Empty Block (label) print_byte::@2 Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2 Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) main::@2 Culled Empty Block (label) main::@2
Culled Empty Block (label) sin8u_table::@14 Culled Empty Block (label) sin8u_table::@14
Culled Empty Block (label) @36 Culled Empty Block (label) @37
Succesful SSA optimization Pass2CullEmptyBlocks Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: divr16u::return#2 divr16u::return#0
Not aliassing across scopes: div16u::return#0 divr16u::return#2 Not aliassing across scopes: div16u::return#0 divr16u::return#2
@ -5383,7 +5462,7 @@ Constant inlined print_str::str#7 = (const string) sin8u_table::str6
Constant inlined print_str::str#6 = (const string) sin8u_table::str5 Constant inlined print_str::str#6 = (const string) sin8u_table::str5
Constant inlined print_str::str#5 = (const string) sin8u_table::str4 Constant inlined print_str::str#5 = (const string) sin8u_table::str4
Succesful SSA optimization Pass2ConstantInlining Succesful SSA optimization Pass2ConstantInlining
Block Sequence Planned @begin @35 @end main main::@1 main::@return sin8u_table sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@8 sin8u_table::@9 sin8u_table::@10 sin8u_table::@11 sin8u_table::@12 sin8u_table::@13 sin8u_table::@1 sin8u_table::@15 sin8u_table::@16 sin8u_table::@17 sin8u_table::@18 sin8u_table::@19 sin8u_table::@20 sin8u_table::@21 sin8u_table::@22 sin8u_table::@23 sin8u_table::@24 sin8u_table::@25 sin8u_table::@return print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return mul8su mul8su::@4 mul8su::@2 mul8su::@1 mul8su::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return mulu8_sel mulu8_sel::@2 mulu8_sel::@return div16u div16u::@2 div16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return print_cls print_cls::@1 print_cls::@return Block Sequence Planned @begin @36 @end main main::@1 main::@return sin8u_table sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@8 sin8u_table::@9 sin8u_table::@10 sin8u_table::@11 sin8u_table::@12 sin8u_table::@13 sin8u_table::@1 sin8u_table::@15 sin8u_table::@16 sin8u_table::@17 sin8u_table::@18 sin8u_table::@19 sin8u_table::@20 sin8u_table::@21 sin8u_table::@22 sin8u_table::@23 sin8u_table::@24 sin8u_table::@25 sin8u_table::@return print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return mul8su mul8su::@4 mul8su::@2 mul8su::@1 mul8su::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return mulu8_sel mulu8_sel::@2 mulu8_sel::@return div16u div16u::@2 div16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return print_cls print_cls::@1 print_cls::@return
Added new block during phi lifting sin8u_table::@26(between sin8u_table::@25 and sin8u_table::@1) Added new block during phi lifting sin8u_table::@26(between sin8u_table::@25 and sin8u_table::@1)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1)
@ -5399,9 +5478,9 @@ Added new block during phi lifting divr16u::@8(between divr16u::@3 and divr16u::
Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2) Added new block during phi lifting divr16u::@9(between divr16u::@1 and divr16u::@2)
Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3) Added new block during phi lifting divr16u::@10(between divr16u::@2 and divr16u::@3)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
Block Sequence Planned @begin @35 @end main main::@1 main::@return sin8u_table sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@8 sin8u_table::@9 sin8u_table::@10 sin8u_table::@11 sin8u_table::@12 sin8u_table::@13 sin8u_table::@1 sin8u_table::@15 sin8u_table::@16 sin8u_table::@17 sin8u_table::@18 sin8u_table::@19 sin8u_table::@20 sin8u_table::@21 sin8u_table::@22 sin8u_table::@23 sin8u_table::@24 sin8u_table::@25 sin8u_table::@return sin8u_table::@26 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_sbyte::@5 mul8su mul8su::@4 mul8su::@2 mul8su::@1 mul8su::@return mul8su::@5 mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return sin8s::@18 sin8s::@17 sin8s::@16 sin8s::@15 mulu8_sel mulu8_sel::@2 mulu8_sel::@return div16u div16u::@2 div16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 print_cls print_cls::@1 print_cls::@return print_cls::@3 Block Sequence Planned @begin @36 @end main main::@1 main::@return sin8u_table sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@8 sin8u_table::@9 sin8u_table::@10 sin8u_table::@11 sin8u_table::@12 sin8u_table::@13 sin8u_table::@1 sin8u_table::@15 sin8u_table::@16 sin8u_table::@17 sin8u_table::@18 sin8u_table::@19 sin8u_table::@20 sin8u_table::@21 sin8u_table::@22 sin8u_table::@23 sin8u_table::@24 sin8u_table::@25 sin8u_table::@return sin8u_table::@26 print_ln print_ln::@1 print_ln::@return print_ln::@3 print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_sword::@5 print_word print_word::@1 print_word::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return print_sbyte::@5 mul8su mul8su::@4 mul8su::@2 mul8su::@1 mul8su::@return mul8su::@5 mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 mul8u::@10 sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return sin8s::@18 sin8s::@17 sin8s::@16 sin8s::@15 mulu8_sel mulu8_sel::@2 mulu8_sel::@return div16u div16u::@2 div16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return divr16u::@8 divr16u::@10 divr16u::@9 print_cls print_cls::@1 print_cls::@return print_cls::@3
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @35 Adding NOP phi() at start of @36
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
Adding NOP phi() at start of main Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@1
@ -5582,9 +5661,9 @@ Culled Empty Block (label) divr16u::@8
Culled Empty Block (label) divr16u::@10 Culled Empty Block (label) divr16u::@10
Culled Empty Block (label) divr16u::@9 Culled Empty Block (label) divr16u::@9
Culled Empty Block (label) print_cls::@3 Culled Empty Block (label) print_cls::@3
Block Sequence Planned @begin @35 @end main main::@1 main::@return sin8u_table sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@8 sin8u_table::@9 sin8u_table::@10 sin8u_table::@11 sin8u_table::@12 sin8u_table::@13 sin8u_table::@1 sin8u_table::@15 sin8u_table::@16 sin8u_table::@17 sin8u_table::@18 sin8u_table::@19 sin8u_table::@20 sin8u_table::@21 sin8u_table::@22 sin8u_table::@23 sin8u_table::@24 sin8u_table::@25 sin8u_table::@return print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return mul8su mul8su::@4 mul8su::@2 mul8su::@1 mul8su::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return sin8s::@18 mulu8_sel mulu8_sel::@2 mulu8_sel::@return div16u div16u::@2 div16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return print_cls print_cls::@1 print_cls::@return Block Sequence Planned @begin @36 @end main main::@1 main::@return sin8u_table sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@8 sin8u_table::@9 sin8u_table::@10 sin8u_table::@11 sin8u_table::@12 sin8u_table::@13 sin8u_table::@1 sin8u_table::@15 sin8u_table::@16 sin8u_table::@17 sin8u_table::@18 sin8u_table::@19 sin8u_table::@20 sin8u_table::@21 sin8u_table::@22 sin8u_table::@23 sin8u_table::@24 sin8u_table::@25 sin8u_table::@return print_ln print_ln::@1 print_ln::@return print_byte print_byte::@1 print_byte::@return print_char print_char::@return print_str print_str::@1 print_str::@return print_str::@2 print_sword print_sword::@2 print_sword::@4 print_sword::@1 print_sword::@return print_word print_word::@1 print_word::@return print_sbyte print_sbyte::@2 print_sbyte::@4 print_sbyte::@1 print_sbyte::@return mul8su mul8su::@4 mul8su::@2 mul8su::@1 mul8su::@return mul8u mul8u::@1 mul8u::@return mul8u::@2 mul8u::@7 mul8u::@4 sin8s sin8s::@5 sin8s::@1 sin8s::@6 sin8s::@2 sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@14 sin8s::@7 sin8s::@3 sin8s::@8 sin8s::@4 sin8s::@return sin8s::@18 mulu8_sel mulu8_sel::@2 mulu8_sel::@return div16u div16u::@2 div16u::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@return print_cls print_cls::@1 print_cls::@return
Adding NOP phi() at start of @begin Adding NOP phi() at start of @begin
Adding NOP phi() at start of @35 Adding NOP phi() at start of @36
Adding NOP phi() at start of @end Adding NOP phi() at start of @end
Adding NOP phi() at start of main Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1 Adding NOP phi() at start of main::@1
@ -5663,14 +5742,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH FINAL CONTROL FLOW GRAPH
@begin: scope:[] from @begin: scope:[] from
[0] phi() [ ] ( ) [0] phi() [ ] ( )
to:@35 to:@36
@35: scope:[] from @begin @36: scope:[] from @begin
[1] phi() [ ] ( ) [1] phi() [ ] ( )
[2] call main [ ] ( ) [2] call main [ ] ( )
to:@end to:@end
@end: scope:[] from @35 @end: scope:[] from @36
[3] phi() [ ] ( ) [3] phi() [ ] ( )
main: scope:[main] from @35 main: scope:[main] from @36
[4] phi() [ ] ( main:2 [ ] ) [4] phi() [ ] ( main:2 [ ] )
[5] call print_cls [ ] ( main:2 [ ] ) [5] call print_cls [ ] ( main:2 [ ] )
to:main::@1 to:main::@1
@ -6096,104 +6175,104 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
DOMINATORS DOMINATORS
@begin dominated by @begin @begin dominated by @begin
@35 dominated by @35 @begin @36 dominated by @begin @36
@end dominated by @end @35 @begin @end dominated by @end @begin @36
main dominated by main @35 @begin main dominated by main @begin @36
main::@1 dominated by main::@1 main @35 @begin main::@1 dominated by main::@1 main @begin @36
main::@return dominated by main::@1 main::@return main @35 @begin main::@return dominated by main::@1 main::@return main @begin @36
sin8u_table dominated by main::@1 sin8u_table main @35 @begin sin8u_table dominated by main::@1 sin8u_table main @begin @36
sin8u_table::@3 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@3 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3
sin8u_table::@4 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@4 sin8u_table::@4 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@4
sin8u_table::@5 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@5 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@4 sin8u_table::@5
sin8u_table::@6 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@6 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6
sin8u_table::@7 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@7 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7
sin8u_table::@8 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@8 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@8 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@8 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7
sin8u_table::@9 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@9 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7
sin8u_table::@10 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@10 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10
sin8u_table::@11 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@11 sin8u_table::@11 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@11
sin8u_table::@12 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@12 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11
sin8u_table::@13 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@13 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@1 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@1 dominated by main::@1 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@15 dominated by main::@1 sin8u_table::@15 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@15 dominated by main::@1 sin8u_table::@15 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@16 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@16 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@17 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@17 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@17 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@17 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@18 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@18 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@19 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@19 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@20 dominated by main::@1 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@20 dominated by main::@1 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@21 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@21 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@22 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@22 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@22 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@22 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@23 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@23 sin8u_table::@22 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@23 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@23 sin8u_table::@22 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@24 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@23 sin8u_table::@22 sin8u_table::@24 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@24 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@23 sin8u_table::@22 sin8u_table::@24 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@25 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@23 sin8u_table::@22 sin8u_table::@25 sin8u_table::@24 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@25 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@23 sin8u_table::@22 sin8u_table::@25 sin8u_table::@24 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8u_table::@return dominated by sin8u_table::@return main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@23 sin8u_table::@22 sin8u_table::@25 sin8u_table::@24 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8u_table::@return dominated by sin8u_table::@return main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@23 sin8u_table::@22 sin8u_table::@25 sin8u_table::@24 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_ln dominated by main::@1 print_ln sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_ln dominated by main::@1 print_ln sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_ln::@1 dominated by main::@1 print_ln sin8u_table print_ln::@1 main @35 @begin sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_ln::@1 dominated by main::@1 print_ln sin8u_table print_ln::@1 main @begin @36 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_ln::@return dominated by print_ln::@return main::@1 print_ln sin8u_table print_ln::@1 main @35 @begin sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_ln::@return dominated by print_ln::@return main::@1 print_ln sin8u_table print_ln::@1 main @begin @36 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_byte dominated by main::@1 sin8u_table print_byte main @35 @begin sin8u_table::@3 sin8u_table::@4 print_byte dominated by main::@1 sin8u_table print_byte main @begin @36 sin8u_table::@3 sin8u_table::@4
print_byte::@1 dominated by main::@1 sin8u_table print_byte::@1 print_byte main @35 @begin sin8u_table::@3 sin8u_table::@4 print_byte::@1 dominated by main::@1 sin8u_table print_byte::@1 print_byte main @begin @36 sin8u_table::@3 sin8u_table::@4
print_byte::@return dominated by main::@1 sin8u_table print_byte::@1 print_byte main @35 @begin print_byte::@return sin8u_table::@3 sin8u_table::@4 print_byte::@return dominated by main::@1 sin8u_table print_byte::@1 print_byte main @begin @36 print_byte::@return sin8u_table::@3 sin8u_table::@4
print_char dominated by main::@1 sin8u_table main print_char @35 @begin sin8u_table::@3 sin8u_table::@4 print_char dominated by main::@1 sin8u_table main print_char @begin @36 sin8u_table::@3 sin8u_table::@4
print_char::@return dominated by main::@1 sin8u_table main print_char print_char::@return @35 @begin sin8u_table::@3 sin8u_table::@4 print_char::@return dominated by main::@1 sin8u_table main print_char print_char::@return @begin @36 sin8u_table::@3 sin8u_table::@4
print_str dominated by main::@1 sin8u_table print_str main @35 @begin sin8u_table::@3 print_str dominated by main::@1 sin8u_table print_str main @begin @36 sin8u_table::@3
print_str::@1 dominated by main::@1 print_str::@1 sin8u_table print_str main @35 @begin sin8u_table::@3 print_str::@1 dominated by main::@1 print_str::@1 sin8u_table print_str main @begin @36 sin8u_table::@3
print_str::@return dominated by main::@1 print_str::@return print_str::@1 sin8u_table print_str main @35 @begin sin8u_table::@3 print_str::@return dominated by main::@1 print_str::@return print_str::@1 sin8u_table print_str main @begin @36 sin8u_table::@3
print_str::@2 dominated by main::@1 print_str::@1 print_str::@2 sin8u_table print_str main @35 @begin sin8u_table::@3 print_str::@2 dominated by main::@1 print_str::@1 print_str::@2 sin8u_table print_str main @begin @36 sin8u_table::@3
print_sword dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sword dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_sword::@2 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword print_sword::@2 main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sword::@2 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword print_sword::@2 main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_sword::@4 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword print_sword::@2 print_sword::@4 main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sword::@4 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword print_sword::@2 print_sword::@4 main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_sword::@1 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword print_sword::@1 main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sword::@1 dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword print_sword::@1 main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_sword::@return dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword print_sword::@1 main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sword::@return print_sword::@return dominated by main::@1 sin8u_table::@21 sin8u_table::@20 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sword print_sword::@1 main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sword::@return
print_word dominated by print_word main::@1 sin8u_table main @35 @begin sin8u_table::@3 sin8u_table::@4 print_word dominated by print_word main::@1 sin8u_table main @begin @36 sin8u_table::@3 sin8u_table::@4
print_word::@1 dominated by print_word main::@1 sin8u_table print_word::@1 main @35 @begin sin8u_table::@3 sin8u_table::@4 print_word::@1 dominated by print_word main::@1 sin8u_table print_word::@1 main @begin @36 sin8u_table::@3 sin8u_table::@4
print_word::@return dominated by print_word main::@1 print_word::@return sin8u_table print_word::@1 main @35 @begin sin8u_table::@3 sin8u_table::@4 print_word::@return dominated by print_word main::@1 print_word::@return sin8u_table print_word::@1 main @begin @36 sin8u_table::@3 sin8u_table::@4
print_sbyte dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sbyte dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_sbyte::@2 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main print_sbyte::@2 @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sbyte::@2 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main print_sbyte::@2 @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_sbyte::@4 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main print_sbyte::@4 print_sbyte::@2 @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sbyte::@4 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main print_sbyte::@4 print_sbyte::@2 @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_sbyte::@1 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main print_sbyte::@1 @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sbyte::@1 dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main print_sbyte::@1 @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
print_sbyte::@return dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main print_sbyte::@1 @35 @begin print_sbyte::@return sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 print_sbyte::@return dominated by main::@1 sin8u_table::@16 sin8u_table::@15 sin8u_table::@18 sin8u_table::@17 sin8u_table::@19 sin8u_table print_sbyte main print_sbyte::@1 @begin @36 print_sbyte::@return sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
mul8su dominated by main::@1 sin8u_table::@15 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su mul8su dominated by main::@1 sin8u_table::@15 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su
mul8su::@4 dominated by main::@1 sin8u_table::@15 mul8su::@4 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su mul8su::@4 dominated by main::@1 sin8u_table::@15 mul8su::@4 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su
mul8su::@2 dominated by main::@1 sin8u_table::@15 mul8su::@2 mul8su::@4 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su mul8su::@2 dominated by main::@1 sin8u_table::@15 mul8su::@2 mul8su::@4 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su
mul8su::@1 dominated by main::@1 mul8su::@1 sin8u_table::@15 mul8su::@4 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su mul8su::@1 dominated by main::@1 mul8su::@1 sin8u_table::@15 mul8su::@4 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su
mul8su::@return dominated by mul8su::@return main::@1 mul8su::@1 sin8u_table::@15 mul8su::@4 sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su mul8su::@return dominated by mul8su::@return main::@1 mul8su::@1 sin8u_table::@15 mul8su::@4 sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8su
mul8u dominated by main::@1 mul8u sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u dominated by main::@1 mul8u sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
mul8u::@1 dominated by main::@1 mul8u sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@1 mul8u::@1 dominated by main::@1 mul8u sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@1
mul8u::@return dominated by main::@1 mul8u sin8u_table mul8u::@return main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@1 mul8u::@return dominated by main::@1 mul8u sin8u_table mul8u::@return main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@1
mul8u::@2 dominated by main::@1 mul8u sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@2 mul8u::@1 mul8u::@2 dominated by main::@1 mul8u sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@2 mul8u::@1
mul8u::@7 dominated by main::@1 mul8u sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@7 mul8u::@2 mul8u::@1 mul8u::@7 dominated by main::@1 mul8u sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@7 mul8u::@2 mul8u::@1
mul8u::@4 dominated by main::@1 mul8u sin8u_table main @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@2 mul8u::@1 mul8u::@4 mul8u::@4 dominated by main::@1 mul8u sin8u_table main @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mul8u::@2 mul8u::@1 mul8u::@4
sin8s dominated by main::@1 sin8u_table main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s dominated by main::@1 sin8u_table main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@5 dominated by main::@1 sin8u_table main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@5 sin8s::@5 dominated by main::@1 sin8u_table main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@5
sin8s::@1 dominated by main::@1 sin8u_table main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@1 dominated by main::@1 sin8u_table main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@6 dominated by main::@1 sin8u_table main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@6 sin8s::@6 dominated by main::@1 sin8u_table main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@6
sin8s::@2 dominated by main::@1 sin8u_table main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@2 dominated by main::@1 sin8u_table main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@10 dominated by main::@1 sin8u_table sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@10 dominated by main::@1 sin8u_table sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@11 dominated by main::@1 sin8u_table sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@11 dominated by main::@1 sin8u_table sin8s::@11 sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@12 dominated by main::@1 sin8u_table sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@12 dominated by main::@1 sin8u_table sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@13 dominated by main::@1 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@13 dominated by main::@1 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@14 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@14 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@7 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@7 sin8s::@7 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@7
sin8s::@3 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@3 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@8 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@8 sin8s::@8 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@8
sin8s::@4 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@4 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@4 dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@4 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@return dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 sin8s::@return main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@4 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@return dominated by main::@1 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 sin8s::@return main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@4 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
sin8s::@18 dominated by main::@1 sin8s::@18 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 sin8s::@18 dominated by main::@1 sin8s::@18 sin8s::@14 sin8u_table sin8s::@13 sin8s::@12 sin8s::@11 sin8s::@10 main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8s::@3 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
mulu8_sel dominated by main::@1 sin8u_table mulu8_sel main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mulu8_sel dominated by main::@1 sin8u_table mulu8_sel main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
mulu8_sel::@2 dominated by mulu8_sel::@2 main::@1 sin8u_table mulu8_sel main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mulu8_sel::@2 dominated by mulu8_sel::@2 main::@1 sin8u_table mulu8_sel main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
mulu8_sel::@return dominated by mulu8_sel::@2 main::@1 mulu8_sel::@return sin8u_table mulu8_sel main sin8s @35 @begin sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13 mulu8_sel::@return dominated by mulu8_sel::@2 main::@1 mulu8_sel::@return sin8u_table mulu8_sel main sin8s @begin @36 sin8u_table::@1 sin8u_table::@3 sin8u_table::@8 sin8u_table::@9 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6 sin8u_table::@7 sin8s::@2 sin8s::@1 sin8u_table::@10 sin8u_table::@12 sin8u_table::@11 sin8u_table::@13
div16u dominated by main::@1 div16u sin8u_table main @35 @begin div16u dominated by main::@1 div16u sin8u_table main @begin @36
div16u::@2 dominated by main::@1 div16u div16u::@2 sin8u_table main @35 @begin div16u::@2 dominated by main::@1 div16u div16u::@2 sin8u_table main @begin @36
div16u::@return dominated by div16u::@return main::@1 div16u div16u::@2 sin8u_table main @35 @begin div16u::@return dominated by div16u::@return main::@1 div16u div16u::@2 sin8u_table main @begin @36
divr16u dominated by main::@1 div16u sin8u_table divr16u main @35 @begin divr16u dominated by main::@1 div16u sin8u_table divr16u main @begin @36
divr16u::@1 dominated by divr16u::@1 main::@1 div16u sin8u_table divr16u main @35 @begin divr16u::@1 dominated by divr16u::@1 main::@1 div16u sin8u_table divr16u main @begin @36
divr16u::@4 dominated by divr16u::@1 divr16u::@4 main::@1 div16u sin8u_table divr16u main @35 @begin divr16u::@4 dominated by divr16u::@1 divr16u::@4 main::@1 div16u sin8u_table divr16u main @begin @36
divr16u::@2 dominated by divr16u::@2 divr16u::@1 main::@1 div16u sin8u_table divr16u main @35 @begin divr16u::@2 dominated by divr16u::@2 divr16u::@1 main::@1 div16u sin8u_table divr16u main @begin @36
divr16u::@5 dominated by divr16u::@2 divr16u::@1 divr16u::@5 main::@1 div16u sin8u_table divr16u main @35 @begin divr16u::@5 dominated by divr16u::@2 divr16u::@1 divr16u::@5 main::@1 div16u sin8u_table divr16u main @begin @36
divr16u::@3 dominated by divr16u::@2 divr16u::@1 divr16u::@3 main::@1 div16u sin8u_table divr16u main @35 @begin divr16u::@3 dominated by divr16u::@2 divr16u::@1 divr16u::@3 main::@1 div16u sin8u_table divr16u main @begin @36
divr16u::@return dominated by divr16u::@2 divr16u::@1 divr16u::@3 main::@1 div16u sin8u_table divr16u::@return divr16u main @35 @begin divr16u::@return dominated by divr16u::@2 divr16u::@1 divr16u::@3 main::@1 div16u sin8u_table divr16u::@return divr16u main @begin @36
print_cls dominated by print_cls main @35 @begin print_cls dominated by print_cls main @begin @36
print_cls::@1 dominated by print_cls main @35 @begin print_cls::@1 print_cls::@1 dominated by print_cls main @begin @36 print_cls::@1
print_cls::@return dominated by print_cls main @35 @begin print_cls::@return print_cls::@1 print_cls::@return dominated by print_cls main @begin @36 print_cls::@return print_cls::@1
NATURAL LOOPS NATURAL LOOPS
Found back edge: Loop head: sin8u_table::@1 tails: sin8u_table::@25 blocks: null Found back edge: Loop head: sin8u_table::@1 tails: sin8u_table::@25 blocks: null
@ -6674,17 +6753,17 @@ INITIAL ASM
.label print_line_cursor = 8 .label print_line_cursor = 8
//SEG2 @begin //SEG2 @begin
bbegin: bbegin:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35] //SEG3 [1] phi from @begin to @36 [phi:@begin->@36]
b35_from_bbegin: b36_from_bbegin:
jmp b35 jmp b36
//SEG4 @35 //SEG4 @36
b35: b36:
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @35 to main [phi:@35->main] //SEG6 [4] phi from @36 to main [phi:@36->main]
main_from_b35: main_from_b36:
jsr main jsr main
//SEG7 [3] phi from @35 to @end [phi:@35->@end] //SEG7 [3] phi from @36 to @end [phi:@36->@end]
bend_from_b35: bend_from_b36:
jmp bend jmp bend
//SEG8 @end //SEG8 @end
bend: bend:
@ -8375,17 +8454,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_line_cursor = 8 .label print_line_cursor = 8
//SEG2 @begin //SEG2 @begin
bbegin: bbegin:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35] //SEG3 [1] phi from @begin to @36 [phi:@begin->@36]
b35_from_bbegin: b36_from_bbegin:
jmp b35 jmp b36
//SEG4 @35 //SEG4 @36
b35: b36:
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @35 to main [phi:@35->main] //SEG6 [4] phi from @36 to main [phi:@36->main]
main_from_b35: main_from_b36:
jsr main jsr main
//SEG7 [3] phi from @35 to @end [phi:@35->@end] //SEG7 [3] phi from @36 to @end [phi:@36->@end]
bend_from_b35: bend_from_b36:
jmp bend jmp bend
//SEG8 @end //SEG8 @end
bend: bend:
@ -9635,7 +9714,7 @@ print_cls: {
print_hextab: .text "0123456789abcdef" print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b35 Removing instruction jmp b36
Removing instruction jmp bend Removing instruction jmp bend
Removing instruction jmp b1 Removing instruction jmp b1
Removing instruction jmp breturn Removing instruction jmp breturn
@ -9748,9 +9827,9 @@ Replacing label b1_from_b3 with b1
Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1
Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1
Removing instruction bbegin: Removing instruction bbegin:
Removing instruction b35_from_bbegin: Removing instruction b36_from_bbegin:
Removing instruction main_from_b35: Removing instruction main_from_b36:
Removing instruction bend_from_b35: Removing instruction bend_from_b36:
Removing instruction b1_from_main: Removing instruction b1_from_main:
Removing instruction sin8u_table_from_b1: Removing instruction sin8u_table_from_b1:
Removing instruction b5_from_b4: Removing instruction b5_from_b4:
@ -9811,7 +9890,7 @@ Removing instruction b3_from_b2:
Removing instruction b3_from_b5: Removing instruction b3_from_b5:
Removing instruction b1_from_b1: Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b35: Removing instruction b36:
Removing instruction bend: Removing instruction bend:
Removing instruction print_cls_from_main: Removing instruction print_cls_from_main:
Removing instruction b1: Removing instruction b1:
@ -9912,7 +9991,7 @@ Fixing long branch [163] bcc b1 to bcs
Fixing long branch [169] bcc b1 to bcs Fixing long branch [169] bcc b1 to bcs
FINAL SYMBOL TABLE FINAL SYMBOL TABLE
(label) @35 (label) @36
(label) @begin (label) @begin
(label) @end (label) @end
(word) PI2_u4f12 (word) PI2_u4f12
@ -10291,12 +10370,12 @@ Score: 19469
.label print_char_cursor = $d .label print_char_cursor = $d
.label print_line_cursor = 8 .label print_line_cursor = 8
//SEG2 @begin //SEG2 @begin
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35] //SEG3 [1] phi from @begin to @36 [phi:@begin->@36]
//SEG4 @35 //SEG4 @36
//SEG5 [2] call main [ ] ( ) //SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @35 to main [phi:@35->main] //SEG6 [4] phi from @36 to main [phi:@36->main]
jsr main jsr main
//SEG7 [3] phi from @35 to @end [phi:@35->@end] //SEG7 [3] phi from @36 to @end [phi:@36->@end]
//SEG8 @end //SEG8 @end
//SEG9 main //SEG9 main
main: { main: {

View File

@ -1,4 +1,4 @@
(label) @35 (label) @36
(label) @begin (label) @begin
(label) @end (label) @end
(word) PI2_u4f12 (word) PI2_u4f12

View File

@ -208,8 +208,8 @@ REGISTER UPLIFT SCOPES
Uplift Scope [main] Uplift Scope [main]
Uplift Scope [] Uplift Scope []
Uplifting [main] best 1199 combination Uplifting [main] best 2915 combination
Uplifting [] best 1199 combination Uplifting [] best 2915 combination
ASSEMBLER BEFORE OPTIMIZATION ASSEMBLER BEFORE OPTIMIZATION
//SEG0 Basic Upstart //SEG0 Basic Upstart
@ -268,7 +268,7 @@ FINAL SYMBOL TABLE
FINAL ASSEMBLER FINAL ASSEMBLER
Score: 1136 Score: 2852
//SEG0 Basic Upstart //SEG0 Basic Upstart
.pc = $801 "Basic" .pc = $801 "Basic"