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;
}
/**
* 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
public int getLineBytes() {
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.
*
* @return true if any branch was rewritten
*/
private boolean step() {
@ -62,7 +63,15 @@ public class Pass5FixLongBranches extends Pass5AsmOptimization {
try {
//getLog().append("ASM");
//getLog().append(getProgram().getAsm().toString(false, true));
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) {
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
*
* @param idx The index of the ASM line with the long branch
* @return True if the branch was fixed
*/
@ -175,4 +185,8 @@ public class Pass5FixLongBranches extends Pass5AsmOptimization {
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;
import dk.camelot64.kickc.asm.AsmComment;
import dk.camelot64.kickc.asm.AsmInlineKickAsm;
import dk.camelot64.kickc.asm.AsmLine;
import dk.camelot64.kickc.asm.AsmSegment;
import dk.camelot64.kickc.model.Program;
@ -20,6 +21,10 @@ public class Pass5ReindexAsmLines extends Pass5AsmOptimization {
for(AsmLine asmLine : asmSegment.getLines()) {
if((asmLine instanceof AsmComment)) {
asmLine.setIndex(-1);
} else if(asmLine instanceof AsmInlineKickAsm) {
asmLine.setIndex(nextIndex);
AsmInlineKickAsm inlineKickAsm = (AsmInlineKickAsm) asmLine;
nextIndex += inlineKickAsm.getLineCount();
} else {
asmLine.setIndex(nextIndex++);
}

View File

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

View File

@ -9,11 +9,12 @@ const word XSIN_SIZE = 512;
signed word[512] align($100) xsin;
void main() {
asm { sei }
*BORDERCOL = WHITE;
*BGCOL = *BGCOL2 = DARK_GREY;
*BGCOL3 = BLACK;
*D018 = toD018(SCREEN, LOGO);
*D016 = VIC_MCM | VIC_CSEL;
*D016 = VIC_MCM;
fill(SCREEN, 1000, BLACK);
fill(COLS, 1000, WHITE|8);
for(byte ch: 0..239) {
@ -23,37 +24,76 @@ void main() {
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;
void loop() {
while(true) {
while(*RASTER!=$ff) {}
signed word xpos = *(xsin+xsin_idx>>1);
SCREEN[0] = <xpos;
SCREEN[1] = >xpos;
// Wait for the raster to reach the bottom of the screen
while(*RASTER!=$ff) {
}
(*BORDERCOL)++;
signed word xpos = *(xsin+xsin_idx);
render_logo(xpos);
xsin_idx += 2;
if(xsin_idx==XSIN_SIZE) {
if(xsin_idx==XSIN_SIZE*2) {
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
// sintab - the table to generate into
// 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 (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
(label) @1
(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 []
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 [main] best 2085 combination reg byte x [ main::ch#2 main::ch#1 ]
Uplifting [] best 2085 combination
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 3801 combination reg byte x [ main::ch#2 main::ch#1 ]
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
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 ]
@ -1711,7 +1711,7 @@ zp ZP_WORD:4 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
FINAL ASSEMBLER
Score: 1862
Score: 3578
//SEG0 Basic Upstart
.pc = $801 "Basic"

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@34
@34: scope:[] from @begin
to:@35
@35: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @34
@end: scope:[] from @35
[3] phi() [ ] ( )
main: scope:[main] from @34
main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] )
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
// sintab - the table to generate into
// 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_gen2::i ← ++ (word) sin16s_gen2::i
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 (byte) sin8s::usinx ← -- (byte) sin8s::usinx
@ -538,6 +556,7 @@ SYMBOLS
(label) @32
(label) @33
(label) @34
(label) @35
(label) @4
(label) @5
(label) @6
@ -1069,6 +1088,31 @@ SYMBOLS
(dword) sin16s_gen::step
(word) sin16s_gen::wavelength
(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)
(bool~) sin8s::$0
(bool~) sin8s::$1
@ -1667,6 +1711,39 @@ sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2
to:@return
@14: scope:[] from @13
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
(word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength
(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
return
to:@return
@15: scope:[] from @14
to:@16
@16: scope:[] from @15
to:@17
sin16s: scope:[sin16s] from
(byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28
@ -1751,8 +1828,8 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7
to:@return
sin16s::@7: scope:[sin16s] from
to:sin16s::@return
@16: scope:[] from @15
to:@17
@17: scope:[] from @16
to:@18
sin8s: scope:[sin8s] from
(byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12
@ -1822,8 +1899,8 @@ sin8s::@return: scope:[sin8s] from sin8s::@4 sin8s::@9
to:@return
sin8s::@9: scope:[sin8s] from
to:sin8s::@return
@17: scope:[] from @16
to:@18
@18: scope:[] from @17
to:@19
mulu16_sel: scope:[mulu16_sel] from
(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
@ -1836,8 +1913,8 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1
to:@return
mulu16_sel::@1: scope:[mulu16_sel] from
to:mulu16_sel::@return
@18: scope:[] from @17
to:@19
@19: scope:[] from @18
to:@20
mulu8_sel: scope:[mulu8_sel] from
(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
@ -1850,11 +1927,11 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1
to:@return
mulu8_sel::@1: scope:[mulu8_sel] from
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_line_cursor ← (byte*) print_screen
(byte*) print_char_cursor ← (byte*) print_line_cursor
to:@20
to:@21
print_str_lines: scope:[print_str_lines] from
to:print_str_lines::@1
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
return
to:@return
@20: scope:[] from @19
to:@21
@21: scope:[] from @20
to:@22
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::$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
return
to:@return
@21: scope:[] from @20
to:@22
@22: scope:[] from @21
to:@23
print_str: scope:[print_str] from
to:print_str::@1
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
return
to:@return
@22: scope:[] from @21
to:@23
@23: scope:[] from @22
to:@24
print_str_at: scope:[print_str_at] from
to:print_str_at::@1
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
return
to:@return
@23: scope:[] from @22
to:@24
@24: scope:[] from @23
to:@25
print_ln: scope:[print_ln] from
to: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
return
to:@return
@24: scope:[] from @23
to:@25
@25: scope:[] from @24
to:@26
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::$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
return
to:@return
@25: scope:[] from @24
to:@26
@26: scope:[] from @25
to:@27
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::$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
return
to:@return
@26: scope:[] from @25
to:@27
@27: scope:[] from @26
to:@28
print_word: scope:[print_word] from
(byte~) print_word::$0 ← > (word) print_word::w
(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
return
to:@return
@27: scope:[] from @26
to:@28
@28: scope:[] from @27
to:@29
print_dword: scope:[print_dword] from
(word~) print_dword::$0 ← > (dword) print_dword::dw
(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
return
to:@return
@28: scope:[] from @27
to:@29
@29: scope:[] from @28
to:@30
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::$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
return
to:@return
@29: scope:[] from @28
@30: scope:[] from @29
(byte[]) print_hextab ← (string) "0123456789abcdef"
to:@30
to:@31
print_byte: scope:[print_byte] from
(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)
@ -2056,8 +2133,8 @@ print_byte: scope:[print_byte] from
print_byte::@return: scope:[print_byte] from print_byte
return
to:@return
@30: scope:[] from @29
to:@31
@31: scope:[] from @30
to:@32
print_char: scope:[print_char] from
*((byte*) print_char_cursor) ← (byte) print_char::ch
(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
return
to:@return
@31: scope:[] from @30
to:@32
@32: scope:[] from @31
to:@33
print_cls: scope:[print_cls] from
(byte*) print_cls::sc ← (byte*) print_screen
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
return
to:@return
@32: scope:[] from @31
to:@33
@33: scope:[] from @32
to:@34
print_set_screen: scope:[print_set_screen] from
(byte*) print_screen ← (byte*) print_set_screen::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
return
to:@return
@33: scope:[] from @32
to:@34
@34: scope:[] from @33
to:@35
main: scope:[main] from
(word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120
(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
return
to:@return
@34: scope:[] from @33
@35: scope:[] from @34
call main
to:@end
@end: scope:[] from @34
@end: scope:[] from @35
Removing unused procedure div8s
Removing unused procedure div16s
Removing unused procedure mul8s
Removing unused procedure mul8su
Removing unused procedure mul16s
Removing unused procedure sin16s_gen2
Removing unused procedure sin8s_gen
Removing unused procedure print_str_lines
Removing unused procedure print_str_ln
@ -2147,6 +2224,7 @@ Removing unused procedure print_set_screen
Removing unused procedure div8u
Removing unused procedure div16u
Removing unused procedure divr16s
Removing unused procedure mul16s
Removing unused procedure sin8s
Removing unused procedure print_ln
Removing unused procedure print_dword
@ -2193,28 +2271,29 @@ Removing empty block @12
Removing empty block sin16s_gen::@2
Removing empty block @14
Removing empty block @15
Removing empty block sin16s::@7
Removing empty block @16
Removing empty block sin16s::@7
Removing empty block @17
Removing empty block mulu16_sel::@1
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 @22
Removing empty block print_str::@4
Removing empty block print_str::@3
Removing empty block print_str::@5
Removing empty block print_str::@6
Removing empty block @22
Removing empty block @23
Removing empty block @24
Removing empty block @25
Removing empty block @26
Removing empty block @27
Removing empty block @28
Removing empty block @30
Removing empty block @29
Removing empty block @31
Removing empty block @32
Removing empty block @33
Removing empty block @34
Removing empty block main::@4
PROCEDURE MODIFY VARIABLE ANALYSIS
divr16u modifies rem16u
@ -2417,7 +2496,7 @@ mul16u::@return: scope:[mul16u] from mul16u::@3
(dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713
(dword) PI_u4f28#0 ← (dword/signed dword) 843314857
(dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428
to:@19
to:@20
sin16s_gen: scope:[sin16s_gen] from main
(signed word*) sin16s_gen::sintab#5 ← phi( main/(signed word*) sin16s_gen::sintab#1 )
(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
return
to:@return
@19: scope:[] from @13
@20: scope:[] from @13
(word) rem16u#29 ← phi( @13/(word) rem16u#31 )
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor#0 ← (byte*) print_screen#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
(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 )
@ -2704,13 +2783,13 @@ print_word::@return: scope:[print_word] from print_word::@2
(byte*) print_char_cursor#8 ← (byte*) print_char_cursor#29
return
to:@return
@29: scope:[] from @19
(byte*) print_screen#7 ← phi( @19/(byte*) print_screen#0 )
(byte*) print_char_cursor#55 ← phi( @19/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#15 ← phi( @19/(byte*) print_line_cursor#0 )
(word) rem16u#28 ← phi( @19/(word) rem16u#29 )
@30: scope:[] from @20
(byte*) print_screen#7 ← phi( @20/(byte*) print_screen#0 )
(byte*) print_char_cursor#55 ← phi( @20/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#15 ← phi( @20/(byte*) print_line_cursor#0 )
(word) rem16u#28 ← phi( @20/(word) rem16u#29 )
(byte[]) print_hextab#0 ← (const string) $0
to:@34
to:@35
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_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
return
to:@return
main: scope:[main] from @34
(byte*) print_char_cursor#53 ← phi( @34/(byte*) print_char_cursor#50 )
(byte*) print_line_cursor#13 ← phi( @34/(byte*) print_line_cursor#12 )
(byte*) print_screen#5 ← phi( @34/(byte*) print_screen#6 )
(word) rem16u#23 ← phi( @34/(word) rem16u#25 )
main: scope:[main] from @35
(byte*) print_char_cursor#53 ← phi( @35/(byte*) print_char_cursor#50 )
(byte*) print_line_cursor#13 ← phi( @35/(byte*) print_line_cursor#12 )
(byte*) print_screen#5 ← phi( @35/(byte*) print_screen#6 )
(word) rem16u#23 ← phi( @35/(word) rem16u#25 )
(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*) 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
return
to:@return
@34: scope:[] from @29
(byte*) print_screen#6 ← phi( @29/(byte*) print_screen#7 )
(byte*) print_char_cursor#50 ← phi( @29/(byte*) print_char_cursor#55 )
(byte*) print_line_cursor#12 ← phi( @29/(byte*) print_line_cursor#15 )
(word) rem16u#25 ← phi( @29/(word) rem16u#28 )
@35: scope:[] from @30
(byte*) print_screen#6 ← phi( @30/(byte*) print_screen#7 )
(byte*) print_char_cursor#50 ← phi( @30/(byte*) print_char_cursor#55 )
(byte*) print_line_cursor#12 ← phi( @30/(byte*) print_line_cursor#15 )
(word) rem16u#25 ← phi( @30/(word) rem16u#28 )
call main
to:@35
@35: scope:[] from @34
(byte*) print_char_cursor#41 ← phi( @34/(byte*) print_char_cursor#20 )
(byte*) print_line_cursor#9 ← phi( @34/(byte*) print_line_cursor#4 )
(word) rem16u#19 ← phi( @34/(word) rem16u#9 )
to:@36
@36: scope:[] from @35
(byte*) print_char_cursor#41 ← phi( @35/(byte*) print_char_cursor#20 )
(byte*) print_line_cursor#9 ← phi( @35/(byte*) print_line_cursor#4 )
(word) rem16u#19 ← phi( @35/(word) rem16u#9 )
(word) rem16u#10 ← (word) rem16u#19
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9
(byte*) print_char_cursor#21 ← (byte*) print_char_cursor#41
to:@end
@end: scope:[] from @35
@end: scope:[] from @36
SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"
(label) @13
(label) @19
(label) @2
(label) @29
(label) @34
(label) @20
(label) @30
(label) @35
(label) @36
(label) @begin
(label) @end
(dword) PI2_u4f28
@ -4000,15 +4079,15 @@ Succesful SSA optimization Pass2NopCastElimination
Culled Empty Block (label) @2
Culled Empty Block (label) mul16u::@3
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_word::@2
Culled Empty Block (label) @29
Culled Empty Block (label) @30
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) main::@6
Culled Empty Block (label) main::@9
Culled Empty Block (label) @35
Culled Empty Block (label) @36
Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: rem16u#1 divr16u::rem#11
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
Identical Phi Values (word) divr16u::divisor#6 (const word) main::wavelength#0
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::@11(between main::@1 and main::@2)
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::@9(between divr16u::@1 and divr16u::@2)
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 @34
Adding NOP phi() at start of @35
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
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::@10
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 @34
Adding NOP phi() at start of @35
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5
@ -4452,14 +4531,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
to:@34
@34: scope:[] from @begin
to:@35
@35: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @34
@end: scope:[] from @35
[3] phi() [ ] ( )
main: scope:[main] from @34
main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] )
to:main::@5
@ -4772,76 +4851,76 @@ divr16u::@return: scope:[divr16u] from divr16u::@6
DOMINATORS
@begin dominated by @begin
@34 dominated by @34 @begin
@end dominated by @end @34 @begin
main dominated by main @34 @begin
main::@5 dominated by main main::@5 @34 @begin
main::@1 dominated by main main::@1 main::@5 @34 @begin
main::@3 dominated by main main::@1 main::@5 main::@3 @34 @begin
main::@2 dominated by main main::@1 main::@2 main::@5 @34 @begin
main::@7 dominated by main::@7 main main::@1 main::@2 main::@5 @34 @begin
main::@8 dominated by main::@7 main::@8 main main::@1 main::@2 main::@5 @34 @begin
main::@return dominated by main::@7 main::@8 main main::@1 main::@2 main::@5 @34 @begin main::@return
print_str dominated by main main::@1 main::@5 @34 @begin print_str
print_str::@1 dominated by main main::@1 main::@5 @34 @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::@2 dominated by main main::@1 main::@5 @34 @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::@2 dominated by print_sword::@2 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 @34 @begin print_sword
print_sword::@1 dominated by print_sword::@1 main main::@1 main::@2 main::@5 @34 @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_word dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @34 @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::@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_byte dominated by print_sword::@1 main print_word main::@1 main::@2 main::@5 @34 @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::@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_char dominated by main print_char main::@1 main::@2 main::@5 @34 @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_cls dominated by main main::@5 @34 @begin print_cls
print_cls::@1 dominated by main main::@5 @34 @begin print_cls::@1 print_cls
print_cls::@return dominated by main main::@5 @34 @begin print_cls::@return print_cls::@1 print_cls
sin16s_gen dominated by main @34 @begin sin16s_gen
sin16s_gen::@3 dominated by main @34 @begin sin16s_gen sin16s_gen::@3
sin16s_gen::@1 dominated by main @34 @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::@return dominated by main sin16s_gen::@return @34 @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::@4 dominated by main @34 sin16s @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::@5 dominated by main @34 sin16s @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::@8 dominated by main @34 sin16s @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::@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::@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::@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::@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::@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::@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::@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
mulu16_sel dominated by main @34 sin16s @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::@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
mul16u dominated by main mul16u @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 @34 sin16s @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::@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::@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::@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
div32u16u dominated by main @34 @begin sin16s_gen div32u16u
div32u16u::@2 dominated by main div32u16u::@2 @34 @begin sin16s_gen div32u16u
div32u16u::@3 dominated by main div32u16u::@2 div32u16u::@3 @34 @begin sin16s_gen div32u16u
div32u16u::@return dominated by main div32u16u::@2 div32u16u::@3 @34 @begin sin16s_gen div32u16u div32u16u::@return
divr16u dominated by divr16u main @34 @begin sin16s_gen div32u16u
divr16u::@1 dominated by divr16u divr16u::@1 main @34 @begin sin16s_gen div32u16u
divr16u::@4 dominated by divr16u divr16u::@1 main divr16u::@4 @34 @begin sin16s_gen div32u16u
divr16u::@2 dominated by divr16u divr16u::@2 divr16u::@1 main @34 @begin sin16s_gen div32u16u
divr16u::@5 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@5 @34 @begin sin16s_gen div32u16u
divr16u::@3 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 @34 @begin sin16s_gen div32u16u
divr16u::@6 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @34 @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
@35 dominated by @35 @begin
@end dominated by @end @35 @begin
main dominated by main @35 @begin
main::@5 dominated by main main::@5 @35 @begin
main::@1 dominated by main main::@1 main::@5 @35 @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 @35 @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 @35 @begin
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 @35 @begin 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 @35 @begin print_str::@return print_str::@1 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 @35 @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 @35 @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 @35 @begin print_sword::@return 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 @35 @begin 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 @35 @begin 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 @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 @35 @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 @35 @begin 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 @35 @begin print_cls::@return print_cls::@1 print_cls
sin16s_gen dominated by main @35 @begin sin16s_gen
sin16s_gen::@3 dominated by main @35 @begin sin16s_gen sin16s_gen::@3
sin16s_gen::@1 dominated by main @35 @begin sin16s_gen sin16s_gen::@3 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 @35 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1
sin16s dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1
sin16s::@4 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4
sin16s::@1 dominated by main sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1
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 sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 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 sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@9 sin16s::@8 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 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 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 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 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 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 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 sin16s @35 @begin sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@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 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 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 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 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 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 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 sin16s @35 @begin mul16u::@4 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 mulu16_sel sin16s::@2
div32u16u dominated by main @35 @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 @35 @begin sin16s_gen div32u16u
div32u16u::@return dominated by main div32u16u::@2 div32u16u::@3 @35 @begin sin16s_gen div32u16u div32u16u::@return
divr16u dominated by divr16u main @35 @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 @35 @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 @35 @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 @35 @begin sin16s_gen div32u16u
divr16u::@return dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @35 @begin sin16s_gen div32u16u divr16u::@return
NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@8 blocks: null
@ -5271,17 +5350,17 @@ INITIAL ASM
.label print_char_cursor = $a
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34]
b34_from_bbegin:
jmp b34
//SEG4 @34
b34:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b35_from_bbegin:
jmp b35
//SEG4 @35
b35:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main]
main_from_b34:
//SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b35:
jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end]
bend_from_b34:
//SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b35:
jmp bend
//SEG8 @end
bend:
@ -6789,17 +6868,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_char_cursor = 8
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34]
b34_from_bbegin:
jmp b34
//SEG4 @34
b34:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b35_from_bbegin:
jmp b35
//SEG4 @35
b35:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main]
main_from_b34:
//SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b35:
jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end]
bend_from_b34:
//SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b35:
jmp bend
//SEG8 @end
bend:
@ -7847,7 +7926,7 @@ divr16u: {
print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b34
Removing instruction jmp b35
Removing instruction jmp bend
Removing instruction jmp b5
Removing instruction jmp b1
@ -7931,9 +8010,9 @@ Replacing label b3_from_b2 with b3
Replacing label b3_from_b2 with b3
Replacing label b1_from_b3 with b1
Removing instruction bbegin:
Removing instruction b34_from_bbegin:
Removing instruction main_from_b34:
Removing instruction bend_from_b34:
Removing instruction b35_from_bbegin:
Removing instruction main_from_b35:
Removing instruction bend_from_b35:
Removing instruction b5_from_main:
Removing instruction print_cls_from_b5:
Removing instruction b1_from_b8:
@ -7964,7 +8043,7 @@ Removing instruction b2_from_b4:
Removing instruction b3_from_b2:
Removing instruction b3_from_b5:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b34:
Removing instruction b35:
Removing instruction bend:
Removing instruction sin16s_gen_from_main:
Removing instruction b5:
@ -8041,7 +8120,7 @@ Removing unreachable instruction jmp b3
Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE
(label) @34
(label) @35
(label) @begin
(label) @end
(dword) PI2_u4f28
@ -8330,12 +8409,12 @@ Score: 20867
.label rem16u = 2
.label print_char_cursor = 8
//SEG2 @begin
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34]
//SEG4 @34
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
//SEG4 @35
//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
//SEG7 [3] phi from @34 to @end [phi:@34->@end]
//SEG7 [3] phi from @35 to @end [phi:@35->@end]
//SEG8 @end
//SEG9 main
main: {

View File

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

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@36
@36: scope:[] from @begin
to:@37
@37: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @36
@end: scope:[] from @37
[3] phi() [ ] ( )
main: scope:[main] from @36
main: scope:[main] from @37
[4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] )
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
// sintab - the table to generate into
// 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_gen2::i ← ++ (word) sin16s_gen2::i
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 (byte) sin8s::usinx ← -- (byte) sin8s::usinx
@ -604,6 +622,7 @@ SYMBOLS
(label) @34
(label) @35
(label) @36
(label) @37
(label) @4
(label) @5
(label) @6
@ -1139,6 +1158,31 @@ SYMBOLS
(dword) sin16s_gen::step
(word) sin16s_gen::wavelength
(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)
(dword~) sin16s_genb::$0
(word~) sin16s_genb::$1
@ -1794,6 +1838,39 @@ sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2
to:@return
@14: scope:[] from @13
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
(word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength
(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
return
to:@return
@15: scope:[] from @14
to:@16
@16: scope:[] from @15
to:@17
sin16s: scope:[sin16s] from
(byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28
@ -1878,8 +1955,8 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7
to:@return
sin16s::@7: scope:[sin16s] from
to:sin16s::@return
@16: scope:[] from @15
to:@17
@17: scope:[] from @16
to:@18
sin8s: scope:[sin8s] from
(byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12
@ -1949,8 +2026,8 @@ sin8s::@return: scope:[sin8s] from sin8s::@4 sin8s::@9
to:@return
sin8s::@9: scope:[sin8s] from
to:sin8s::@return
@17: scope:[] from @16
to:@18
@18: scope:[] from @17
to:@19
mulu16_sel: scope:[mulu16_sel] from
(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
@ -1963,8 +2040,8 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1
to:@return
mulu16_sel::@1: scope:[mulu16_sel] from
to:mulu16_sel::@return
@18: scope:[] from @17
to:@19
@19: scope:[] from @18
to:@20
mulu8_sel: scope:[mulu8_sel] from
(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
@ -1977,8 +2054,8 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1
to:@return
mulu8_sel::@1: scope:[mulu8_sel] from
to:mulu8_sel::@return
@19: scope:[] from @18
to:@20
@20: scope:[] from @19
to:@21
sin16s_genb: scope:[sin16s_genb] from
(dword~) sin16s_genb::$0 ← call div32u16u (dword) PI2_u4f28 (word) sin16s_genb::wavelength
(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
return
to:@return
@20: scope:[] from @19
to:@21
@21: scope:[] from @20
to:@22
sin16sb: scope:[sin16sb] from
(byte) sin16sb::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16sb::$0 ← (word) sin16sb::x >= (word) PI_u4f12
@ -2064,11 +2141,11 @@ sin16sb::@return: scope:[sin16sb] from sin16sb::@3 sin16sb::@7
to:@return
sin16sb::@7: scope:[sin16sb] from
to:sin16sb::@return
@21: scope:[] from @20
@22: scope:[] from @21
(byte*) print_screen ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor ← (byte*) print_screen
(byte*) print_char_cursor ← (byte*) print_line_cursor
to:@22
to:@23
print_str_lines: scope:[print_str_lines] from
to:print_str_lines::@1
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
return
to:@return
@22: scope:[] from @21
to:@23
@23: scope:[] from @22
to:@24
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::$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
return
to:@return
@23: scope:[] from @22
to:@24
@24: scope:[] from @23
to:@25
print_str: scope:[print_str] from
to:print_str::@1
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
return
to:@return
@24: scope:[] from @23
to:@25
@25: scope:[] from @24
to:@26
print_str_at: scope:[print_str_at] from
to:print_str_at::@1
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
return
to:@return
@25: scope:[] from @24
to:@26
@26: scope:[] from @25
to:@27
print_ln: scope:[print_ln] from
to: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
return
to:@return
@26: scope:[] from @25
to:@27
@27: scope:[] from @26
to:@28
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::$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
return
to:@return
@27: scope:[] from @26
to:@28
@28: scope:[] from @27
to:@29
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::$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
return
to:@return
@28: scope:[] from @27
to:@29
@29: scope:[] from @28
to:@30
print_word: scope:[print_word] from
(byte~) print_word::$0 ← > (word) print_word::w
(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
return
to:@return
@29: scope:[] from @28
to:@30
@30: scope:[] from @29
to:@31
print_dword: scope:[print_dword] from
(word~) print_dword::$0 ← > (dword) print_dword::dw
(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
return
to:@return
@30: scope:[] from @29
to:@31
@31: scope:[] from @30
to:@32
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::$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
return
to:@return
@31: scope:[] from @30
@32: scope:[] from @31
(byte[]) print_hextab ← (string) "0123456789abcdef"
to:@32
to:@33
print_byte: scope:[print_byte] from
(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)
@ -2270,8 +2347,8 @@ print_byte: scope:[print_byte] from
print_byte::@return: scope:[print_byte] from print_byte
return
to:@return
@32: scope:[] from @31
to:@33
@33: scope:[] from @32
to:@34
print_char: scope:[print_char] from
*((byte*) print_char_cursor) ← (byte) print_char::ch
(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
return
to:@return
@33: scope:[] from @32
to:@34
@34: scope:[] from @33
to:@35
print_cls: scope:[print_cls] from
(byte*) print_cls::sc ← (byte*) print_screen
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
return
to:@return
@34: scope:[] from @33
to:@35
@35: scope:[] from @34
to:@36
print_set_screen: scope:[print_set_screen] from
(byte*) print_screen ← (byte*) print_set_screen::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
return
to:@return
@35: scope:[] from @34
to:@36
@36: scope:[] from @35
to:@37
main: scope:[main] from
(word) main::wavelength ← (byte/signed byte/word/signed word/dword/signed dword) 120
(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
return
to:@return
@36: scope:[] from @35
@37: scope:[] from @36
call main
to:@end
@end: scope:[] from @36
@end: scope:[] from @37
Removing unused procedure div8s
Removing unused procedure div16s
Removing unused procedure mul8s
Removing unused procedure mul8su
Removing unused procedure mul16s
Removing unused procedure sin16s_gen2
Removing unused procedure sin8s_gen
Removing unused procedure print_str_lines
Removing unused procedure print_str_ln
@ -2367,6 +2444,7 @@ Removing unused procedure print_set_screen
Removing unused procedure div8u
Removing unused procedure div16u
Removing unused procedure divr16s
Removing unused procedure mul16s
Removing unused procedure sin8s
Removing unused procedure print_ln
Removing unused procedure print_dword
@ -2412,32 +2490,33 @@ Removing empty block @12
Removing empty block sin16s_gen::@2
Removing empty block @14
Removing empty block @15
Removing empty block sin16s::@7
Removing empty block @16
Removing empty block sin16s::@7
Removing empty block @17
Removing empty block mulu16_sel::@1
Removing empty block @18
Removing empty block mulu16_sel::@1
Removing empty block @19
Removing empty block sin16s_genb::@2
Removing empty block @20
Removing empty block sin16s_genb::@2
Removing empty block @21
Removing empty block sin16sb::@7
Removing empty block @22
Removing empty block @23
Removing empty block @24
Removing empty block print_str::@4
Removing empty block print_str::@3
Removing empty block print_str::@5
Removing empty block print_str::@6
Removing empty block @24
Removing empty block @25
Removing empty block @26
Removing empty block @27
Removing empty block @28
Removing empty block @29
Removing empty block @30
Removing empty block @32
Removing empty block @31
Removing empty block @33
Removing empty block @34
Removing empty block @35
Removing empty block @36
Removing empty block main::@4
PROCEDURE MODIFY VARIABLE ANALYSIS
divr16u modifies rem16u
@ -2643,7 +2722,7 @@ mul16u::@return: scope:[mul16u] from mul16u::@3
(dword) PI_HALF_u4f28#0 ← (dword/signed dword) 421657428
(word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868
(word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434
to:@21
to:@22
sin16s_gen: scope:[sin16s_gen] from main
(signed word*) sin16s_gen::sintab#5 ← phi( main/(signed word*) sin16s_gen::sintab#1 )
(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
return
to:@return
@21: scope:[] from @13
@22: scope:[] from @13
(word) rem16u#38 ← phi( @13/(word) rem16u#40 )
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor#0 ← (byte*) print_screen#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
(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 )
@ -3106,13 +3185,13 @@ print_word::@return: scope:[print_word] from print_word::@2
(byte*) print_char_cursor#8 ← (byte*) print_char_cursor#29
return
to:@return
@31: scope:[] from @21
(byte*) print_screen#8 ← phi( @21/(byte*) print_screen#0 )
(byte*) print_char_cursor#55 ← phi( @21/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#15 ← phi( @21/(byte*) print_line_cursor#0 )
(word) rem16u#37 ← phi( @21/(word) rem16u#38 )
@32: scope:[] from @22
(byte*) print_screen#8 ← phi( @22/(byte*) print_screen#0 )
(byte*) print_char_cursor#55 ← phi( @22/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#15 ← phi( @22/(byte*) print_line_cursor#0 )
(word) rem16u#37 ← phi( @22/(word) rem16u#38 )
(byte[]) print_hextab#0 ← (const string) $0
to:@36
to:@37
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_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
return
to:@return
main: scope:[main] from @36
(byte*) print_char_cursor#56 ← phi( @36/(byte*) print_char_cursor#50 )
(byte*) print_line_cursor#16 ← phi( @36/(byte*) print_line_cursor#12 )
(byte*) print_screen#6 ← phi( @36/(byte*) print_screen#7 )
(word) rem16u#31 ← phi( @36/(word) rem16u#33 )
main: scope:[main] from @37
(byte*) print_char_cursor#56 ← phi( @37/(byte*) print_char_cursor#50 )
(byte*) print_line_cursor#16 ← phi( @37/(byte*) print_line_cursor#12 )
(byte*) print_screen#6 ← phi( @37/(byte*) print_screen#7 )
(word) rem16u#31 ← phi( @37/(word) rem16u#33 )
(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::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
return
to:@return
@36: scope:[] from @31
(byte*) print_screen#7 ← phi( @31/(byte*) print_screen#8 )
(byte*) print_char_cursor#50 ← phi( @31/(byte*) print_char_cursor#55 )
(byte*) print_line_cursor#12 ← phi( @31/(byte*) print_line_cursor#15 )
(word) rem16u#33 ← phi( @31/(word) rem16u#37 )
@37: scope:[] from @32
(byte*) print_screen#7 ← phi( @32/(byte*) print_screen#8 )
(byte*) print_char_cursor#50 ← phi( @32/(byte*) print_char_cursor#55 )
(byte*) print_line_cursor#12 ← phi( @32/(byte*) print_line_cursor#15 )
(word) rem16u#33 ← phi( @32/(word) rem16u#37 )
call main
to:@37
@37: scope:[] from @36
(byte*) print_char_cursor#41 ← phi( @36/(byte*) print_char_cursor#20 )
(byte*) print_line_cursor#9 ← phi( @36/(byte*) print_line_cursor#4 )
(word) rem16u#25 ← phi( @36/(word) rem16u#12 )
to:@38
@38: scope:[] from @37
(byte*) print_char_cursor#41 ← phi( @37/(byte*) print_char_cursor#20 )
(byte*) print_line_cursor#9 ← phi( @37/(byte*) print_line_cursor#4 )
(word) rem16u#25 ← phi( @37/(word) rem16u#12 )
(word) rem16u#13 ← (word) rem16u#25
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9
(byte*) print_char_cursor#21 ← (byte*) print_char_cursor#41
to:@end
@end: scope:[] from @37
@end: scope:[] from @38
SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"
(label) @13
(label) @2
(label) @21
(label) @31
(label) @36
(label) @22
(label) @32
(label) @37
(label) @38
(label) @begin
(label) @end
(dword) PI2_u4f28
@ -4782,15 +4861,15 @@ Succesful SSA optimization Pass2NopCastElimination
Culled Empty Block (label) @2
Culled Empty Block (label) mul16u::@3
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_word::@2
Culled Empty Block (label) @31
Culled Empty Block (label) @32
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) main::@7
Culled Empty Block (label) main::@10
Culled Empty Block (label) @37
Culled Empty Block (label) @38
Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1
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
Identical Phi Values (word) divr16u::divisor#6 (const word) main::wavelength#0
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::@12(between main::@1 and main::@2)
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.
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)
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 @36
Adding NOP phi() at start of @37
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
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::@14
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 @36
Adding NOP phi() at start of @37
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5
@ -5445,14 +5524,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
to:@36
@36: scope:[] from @begin
to:@37
@37: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @36
@end: scope:[] from @37
[3] phi() [ ] ( )
main: scope:[main] from @36
main: scope:[main] from @37
[4] phi() [ ] ( main:2 [ ] )
[5] call sin16s_gen [ ] ( main:2 [ ] )
to:main::@5
@ -5868,96 +5947,96 @@ sin16s::@15: scope:[sin16s] from sin16s::@12
DOMINATORS
@begin dominated by @begin
@36 dominated by @begin @36
@end dominated by @end @begin @36
main dominated by main @begin @36
main::@5 dominated by main main::@5 @begin @36
main::@6 dominated by main main::@5 main::@6 @begin @36
main::@1 dominated by main main::@1 main::@5 main::@6 @begin @36
main::@3 dominated by main main::@1 main::@5 main::@6 main::@3 @begin @36
main::@2 dominated by 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 @36
main::@9 dominated by main::@9 main::@8 main main::@1 main::@2 main::@5 main::@6 @begin @36
main::@return dominated by main::@9 main::@8 main main::@1 main::@2 main::@5 main::@6 @begin @36 main::@return
print_str dominated by main main::@1 main::@5 main::@6 @begin @36 print_str
print_str::@1 dominated by main main::@1 main::@5 main::@6 @begin @36 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::@2 dominated by main main::@1 main::@5 main::@6 @begin @36 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::@2 dominated by print_sword::@2 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 @36 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::@return dominated by print_sword::@1 main main::@1 main::@2 main::@5 main::@6 @begin @36 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::@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::@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_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::@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::@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_char dominated by main print_char main::@1 main::@2 main::@5 main::@6 @begin @36 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_cls dominated by main main::@5 main::@6 @begin @36 print_cls
print_cls::@1 dominated by main main::@5 main::@6 @begin @36 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
sin16s_genb dominated by main sin16s_genb main::@5 @begin @36
sin16s_genb::@3 dominated by main sin16s_genb main::@5 @begin @36 sin16s_genb::@3
sin16s_genb::@1 dominated by main sin16s_genb main::@5 @begin @36 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::@return dominated by sin16s_genb::@return main sin16s_genb main::@5 @begin @36 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::@4 dominated by main sin16s_genb main::@5 @begin @36 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::@5 dominated by main sin16s_genb sin16sb::@1 main::@5 @begin @36 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::@8 dominated by main sin16s_genb sin16sb::@2 sin16sb::@1 main::@5 @begin @36 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::@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::@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::@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::@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::@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::@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::@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
mulu16_sel dominated by main @begin @36 mulu16_sel
mulu16_sel::@2 dominated by main @begin @36 mulu16_sel mulu16_sel::@2
mulu16_sel::@return dominated by main @begin @36 mulu16_sel mulu16_sel::@return mulu16_sel::@2
mul16u dominated by main mul16u @begin @36 mulu16_sel
mul16u::@1 dominated by main mul16u mul16u::@1 @begin @36 mulu16_sel
mul16u::@return dominated by main mul16u mul16u::@1 @begin @36 mulu16_sel mul16u::@return
mul16u::@2 dominated by main mul16u mul16u::@1 mul16u::@2 @begin @36 mulu16_sel
mul16u::@7 dominated by main mul16u mul16u::@1 mul16u::@2 @begin @36 mul16u::@7 mulu16_sel
mul16u::@4 dominated by main mul16u mul16u::@1 mul16u::@2 @begin @36 mul16u::@4 mulu16_sel
div32u16u dominated by main @begin @36 div32u16u
div32u16u::@2 dominated by main div32u16u::@2 @begin @36 div32u16u
div32u16u::@3 dominated by main div32u16u::@2 div32u16u::@3 @begin @36 div32u16u
div32u16u::@return dominated by main div32u16u::@2 div32u16u::@3 @begin @36 div32u16u div32u16u::@return
divr16u dominated by divr16u main @begin @36 div32u16u
divr16u::@1 dominated by divr16u divr16u::@1 main @begin @36 div32u16u
divr16u::@4 dominated by divr16u divr16u::@1 main divr16u::@4 @begin @36 div32u16u
divr16u::@2 dominated by divr16u divr16u::@2 divr16u::@1 main @begin @36 div32u16u
divr16u::@5 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@5 @begin @36 div32u16u
divr16u::@3 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 @begin @36 div32u16u
divr16u::@6 dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin @36 div32u16u
divr16u::@return dominated by divr16u divr16u::@2 divr16u::@1 main divr16u::@3 divr16u::@6 @begin @36 div32u16u divr16u::@return
sin16s_gen dominated by main @begin @36 sin16s_gen
sin16s_gen::@3 dominated by main @begin @36 sin16s_gen sin16s_gen::@3
sin16s_gen::@1 dominated by main @begin @36 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::@return dominated by main sin16s_gen::@return @begin @36 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::@4 dominated by main sin16s @begin @36 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::@5 dominated by main sin16s @begin @36 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::@8 dominated by main sin16s @begin @36 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::@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::@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::@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::@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::@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::@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::@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
@37 dominated by @begin @37
@end dominated by @end @begin @37
main dominated by main @begin @37
main::@5 dominated by main main::@5 @begin @37
main::@6 dominated by main main::@5 main::@6 @begin @37
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 @37
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 @37
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 @37 main::@return
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 @37 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 @37 print_str::@1 print_str::@2 print_str
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 @37 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 @37 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 @37 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 @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 @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 @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 @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 @37 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 @37 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 @37 print_cls::@return print_cls::@1 print_cls
sin16s_genb dominated by main sin16s_genb main::@5 @begin @37
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 @37 sin16s_genb::@3 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 @37 sin16s_genb::@3 sin16s_genb::@4 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 @37 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@4
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 @37 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@5
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 @37 sin16sb sin16s_genb::@3 sin16s_genb::@1 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 @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 @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 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 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 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 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 sin16sb::@12 @37 sin16sb::@10 sin16sb::@15 sin16sb sin16s_genb::@3 sin16s_genb::@1 sin16sb::@9 sin16sb::@8
mulu16_sel dominated by main @begin @37 mulu16_sel
mulu16_sel::@2 dominated by main @begin @37 mulu16_sel 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 @37 mulu16_sel
mul16u::@1 dominated by main mul16u mul16u::@1 @begin @37 mulu16_sel
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 @37 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 @37 mul16u::@4 mulu16_sel
div32u16u dominated by main @begin @37 div32u16u
div32u16u::@2 dominated by main div32u16u::@2 @begin @37 div32u16u
div32u16u::@3 dominated by main div32u16u::@2 div32u16u::@3 @begin @37 div32u16u
div32u16u::@return dominated by main div32u16u::@2 div32u16u::@3 @begin @37 div32u16u div32u16u::@return
divr16u dominated by divr16u main @begin @37 div32u16u
divr16u::@1 dominated by divr16u divr16u::@1 main @begin @37 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 @37 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 @37 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 @37 div32u16u divr16u::@return
sin16s_gen dominated by main @begin @37 sin16s_gen
sin16s_gen::@3 dominated by main @begin @37 sin16s_gen sin16s_gen::@3
sin16s_gen::@1 dominated by main @begin @37 sin16s_gen sin16s_gen::@3 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 @37 sin16s_gen sin16s_gen::@3 sin16s_gen::@4 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 @37 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4
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 @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5
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 @37 sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 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 @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 @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 @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 @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 @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 @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 @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
Found back edge: Loop head: main::@1 tails: main::@9 blocks: null
@ -6544,17 +6623,17 @@ INITIAL ASM
.label print_char_cursor = $d
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @36 [phi:@begin->@36]
b36_from_bbegin:
jmp b36
//SEG4 @36
b36:
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
b37_from_bbegin:
jmp b37
//SEG4 @37
b37:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @36 to main [phi:@36->main]
main_from_b36:
//SEG6 [4] phi from @37 to main [phi:@37->main]
main_from_b37:
jsr main
//SEG7 [3] phi from @36 to @end [phi:@36->@end]
bend_from_b36:
//SEG7 [3] phi from @37 to @end [phi:@37->@end]
bend_from_b37:
jmp bend
//SEG8 @end
bend:
@ -8684,17 +8763,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_char_cursor = $b
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @36 [phi:@begin->@36]
b36_from_bbegin:
jmp b36
//SEG4 @36
b36:
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
b37_from_bbegin:
jmp b37
//SEG4 @37
b37:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @36 to main [phi:@36->main]
main_from_b36:
//SEG6 [4] phi from @37 to main [phi:@37->main]
main_from_b37:
jsr main
//SEG7 [3] phi from @36 to @end [phi:@36->@end]
bend_from_b36:
//SEG7 [3] phi from @37 to @end [phi:@37->@end]
bend_from_b37:
jmp bend
//SEG8 @end
bend:
@ -10145,7 +10224,7 @@ sin16s: {
print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b36
Removing instruction jmp b37
Removing instruction jmp bend
Removing instruction jmp b5
Removing instruction jmp b6
@ -10252,9 +10331,9 @@ Replacing label b2_from_b1 with b2
Replacing label b2_from_b1 with b2
Replacing label b3_from_b15 with b3
Removing instruction bbegin:
Removing instruction b36_from_bbegin:
Removing instruction main_from_b36:
Removing instruction bend_from_b36:
Removing instruction b37_from_bbegin:
Removing instruction main_from_b37:
Removing instruction bend_from_b37:
Removing instruction b5_from_main:
Removing instruction sin16s_genb_from_b5:
Removing instruction b6_from_b5:
@ -10293,7 +10372,7 @@ Removing instruction b3_from_b15:
Removing instruction b3_from_b6:
Removing instruction breturn:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b36:
Removing instruction b37:
Removing instruction bend:
Removing instruction sin16s_gen_from_main:
Removing instruction b5:
@ -10395,7 +10474,7 @@ Removing unreachable instruction jmp b3
Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE
(label) @36
(label) @37
(label) @begin
(label) @end
(dword) PI2_u4f28
@ -10777,12 +10856,12 @@ Score: 23127
.label rem16u = 2
.label print_char_cursor = $b
//SEG2 @begin
//SEG3 [1] phi from @begin to @36 [phi:@begin->@36]
//SEG4 @36
//SEG3 [1] phi from @begin to @37 [phi:@begin->@37]
//SEG4 @37
//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
//SEG7 [3] phi from @36 to @end [phi:@36->@end]
//SEG7 [3] phi from @37 to @end [phi:@37->@end]
//SEG8 @end
//SEG9 main
main: {

View File

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

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@34
@34: scope:[] from @begin
to:@35
@35: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @34
@end: scope:[] from @35
[3] phi() [ ] ( )
main: scope:[main] from @34
main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] )
[5] call sin8s_gen [ ] ( main:2 [ ] )
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) @end
(word) PI2_u4f12

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@34
@34: scope:[] from @begin
to:@35
@35: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @34
@end: scope:[] from @35
[3] phi() [ ] ( )
main: scope:[main] from @34
main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] )
[5] call sin8s_gen [ ] ( main:2 [ ] )
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
// sintab - the table to generate into
// 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_gen2::i ← ++ (word) sin16s_gen2::i
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 (byte) sin8s::usinx ← -- (byte) sin8s::usinx
@ -541,6 +559,7 @@ SYMBOLS
(label) @32
(label) @33
(label) @34
(label) @35
(label) @4
(label) @5
(label) @6
@ -1079,6 +1098,31 @@ SYMBOLS
(dword) sin16s_gen::step
(word) sin16s_gen::wavelength
(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)
(bool~) sin8s::$0
(bool~) sin8s::$1
@ -1677,6 +1721,39 @@ sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2
to:@return
@14: scope:[] from @13
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
(word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength
(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
return
to:@return
@15: scope:[] from @14
to:@16
@16: scope:[] from @15
to:@17
sin16s: scope:[sin16s] from
(byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28
@ -1761,8 +1838,8 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7
to:@return
sin16s::@7: scope:[sin16s] from
to:sin16s::@return
@16: scope:[] from @15
to:@17
@17: scope:[] from @16
to:@18
sin8s: scope:[sin8s] from
(byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12
@ -1832,8 +1909,8 @@ sin8s::@return: scope:[sin8s] from sin8s::@4 sin8s::@9
to:@return
sin8s::@9: scope:[sin8s] from
to:sin8s::@return
@17: scope:[] from @16
to:@18
@18: scope:[] from @17
to:@19
mulu16_sel: scope:[mulu16_sel] from
(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
@ -1846,8 +1923,8 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1
to:@return
mulu16_sel::@1: scope:[mulu16_sel] from
to:mulu16_sel::@return
@18: scope:[] from @17
to:@19
@19: scope:[] from @18
to:@20
mulu8_sel: scope:[mulu8_sel] from
(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
@ -1860,11 +1937,11 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1
to:@return
mulu8_sel::@1: scope:[mulu8_sel] from
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_line_cursor ← (byte*) print_screen
(byte*) print_char_cursor ← (byte*) print_line_cursor
to:@20
to:@21
print_str_lines: scope:[print_str_lines] from
to:print_str_lines::@1
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
return
to:@return
@20: scope:[] from @19
to:@21
@21: scope:[] from @20
to:@22
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::$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
return
to:@return
@21: scope:[] from @20
to:@22
@22: scope:[] from @21
to:@23
print_str: scope:[print_str] from
to:print_str::@1
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
return
to:@return
@22: scope:[] from @21
to:@23
@23: scope:[] from @22
to:@24
print_str_at: scope:[print_str_at] from
to:print_str_at::@1
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
return
to:@return
@23: scope:[] from @22
to:@24
@24: scope:[] from @23
to:@25
print_ln: scope:[print_ln] from
to: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
return
to:@return
@24: scope:[] from @23
to:@25
@25: scope:[] from @24
to:@26
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::$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
return
to:@return
@25: scope:[] from @24
to:@26
@26: scope:[] from @25
to:@27
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::$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
return
to:@return
@26: scope:[] from @25
to:@27
@27: scope:[] from @26
to:@28
print_word: scope:[print_word] from
(byte~) print_word::$0 ← > (word) print_word::w
(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
return
to:@return
@27: scope:[] from @26
to:@28
@28: scope:[] from @27
to:@29
print_dword: scope:[print_dword] from
(word~) print_dword::$0 ← > (dword) print_dword::dw
(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
return
to:@return
@28: scope:[] from @27
to:@29
@29: scope:[] from @28
to:@30
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::$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
return
to:@return
@29: scope:[] from @28
@30: scope:[] from @29
(byte[]) print_hextab ← (string) "0123456789abcdef"
to:@30
to:@31
print_byte: scope:[print_byte] from
(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)
@ -2066,8 +2143,8 @@ print_byte: scope:[print_byte] from
print_byte::@return: scope:[print_byte] from print_byte
return
to:@return
@30: scope:[] from @29
to:@31
@31: scope:[] from @30
to:@32
print_char: scope:[print_char] from
*((byte*) print_char_cursor) ← (byte) print_char::ch
(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
return
to:@return
@31: scope:[] from @30
to:@32
@32: scope:[] from @31
to:@33
print_cls: scope:[print_cls] from
(byte*) print_cls::sc ← (byte*) print_screen
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
return
to:@return
@32: scope:[] from @31
to:@33
@33: scope:[] from @32
to:@34
print_set_screen: scope:[print_set_screen] from
(byte*) print_screen ← (byte*) print_set_screen::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
return
to:@return
@33: scope:[] from @32
to:@34
@34: scope:[] from @33
to:@35
main: scope:[main] from
(word) main::wavelength ← (byte/word/signed word/dword/signed dword) 192
(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
return
to:@return
@34: scope:[] from @33
@35: scope:[] from @34
call main
to:@end
@end: scope:[] from @34
@end: scope:[] from @35
Removing unused procedure div8s
Removing unused procedure div16s
Removing unused procedure mul8s
Removing unused procedure mul8su
Removing unused procedure mul16s
Removing unused procedure sin16s_gen2
Removing unused procedure print_str_lines
Removing unused procedure print_str_ln
Removing unused procedure print_str_at
@ -2162,6 +2239,7 @@ Removing unused procedure print_sdword
Removing unused procedure print_set_screen
Removing unused procedure div8u
Removing unused procedure divr16s
Removing unused procedure mul16s
Removing unused procedure print_ln
Removing unused procedure print_dword
Removing unused procedure divr8u
@ -2206,32 +2284,33 @@ Removing empty block mul16u::@9
Removing empty block @12
Removing empty block sin16s_gen::@2
Removing empty block @14
Removing empty block sin8s_gen::@2
Removing empty block @15
Removing empty block sin16s::@7
Removing empty block sin8s_gen::@2
Removing empty block @16
Removing empty block sin8s::@9
Removing empty block sin16s::@7
Removing empty block @17
Removing empty block mulu16_sel::@1
Removing empty block sin8s::@9
Removing empty block @18
Removing empty block mulu16_sel::@1
Removing empty block @19
Removing empty block mulu8_sel::@1
Removing empty block @20
Removing empty block @21
Removing empty block @22
Removing empty block print_str::@4
Removing empty block print_str::@3
Removing empty block print_str::@5
Removing empty block print_str::@6
Removing empty block @22
Removing empty block @23
Removing empty block @24
Removing empty block @25
Removing empty block @26
Removing empty block @27
Removing empty block @28
Removing empty block @30
Removing empty block @29
Removing empty block @31
Removing empty block @32
Removing empty block @33
Removing empty block @34
Removing empty block main::@4
PROCEDURE MODIFY VARIABLE ANALYSIS
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) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868
(word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434
to:@19
to:@20
sin16s_gen: scope:[sin16s_gen] from main::@5
(signed word*) sin16s_gen::sintab#5 ← phi( main::@5/(signed word*) sin16s_gen::sintab#1 )
(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
return
to:@return
@19: scope:[] from @13
@20: scope:[] from @13
(word) rem16u#43 ← phi( @13/(word) rem16u#45 )
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor#0 ← (byte*) print_screen#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
(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 )
@ -2982,13 +3061,13 @@ print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@3
(byte*) print_char_cursor#5 ← (byte*) print_char_cursor#23
return
to:@return
@29: scope:[] from @19
(byte*) print_screen#8 ← phi( @19/(byte*) print_screen#0 )
(byte*) print_char_cursor#48 ← phi( @19/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#15 ← phi( @19/(byte*) print_line_cursor#0 )
(word) rem16u#42 ← phi( @19/(word) rem16u#43 )
@30: scope:[] from @20
(byte*) print_screen#8 ← phi( @20/(byte*) print_screen#0 )
(byte*) print_char_cursor#48 ← phi( @20/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#15 ← phi( @20/(byte*) print_line_cursor#0 )
(word) rem16u#42 ← phi( @20/(word) rem16u#43 )
(byte[]) print_hextab#0 ← (const string) $0
to:@34
to:@35
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_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
return
to:@return
main: scope:[main] from @34
(byte*) print_char_cursor#49 ← phi( @34/(byte*) print_char_cursor#43 )
(byte*) print_line_cursor#16 ← phi( @34/(byte*) print_line_cursor#12 )
(byte*) print_screen#6 ← phi( @34/(byte*) print_screen#7 )
(word) rem16u#36 ← phi( @34/(word) rem16u#38 )
main: scope:[main] from @35
(byte*) print_char_cursor#49 ← phi( @35/(byte*) print_char_cursor#43 )
(byte*) print_line_cursor#16 ← phi( @35/(byte*) print_line_cursor#12 )
(byte*) print_screen#6 ← phi( @35/(byte*) print_screen#7 )
(word) rem16u#36 ← phi( @35/(word) rem16u#38 )
(word) main::wavelength#0 ← (byte/word/signed word/dword/signed dword) 192
(signed byte[192]) main::sintabb#0 ← { fill( 192, 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
return
to:@return
@34: scope:[] from @29
(byte*) print_screen#7 ← phi( @29/(byte*) print_screen#8 )
(byte*) print_char_cursor#43 ← phi( @29/(byte*) print_char_cursor#48 )
(byte*) print_line_cursor#12 ← phi( @29/(byte*) print_line_cursor#15 )
(word) rem16u#38 ← phi( @29/(word) rem16u#42 )
@35: scope:[] from @30
(byte*) print_screen#7 ← phi( @30/(byte*) print_screen#8 )
(byte*) print_char_cursor#43 ← phi( @30/(byte*) print_char_cursor#48 )
(byte*) print_line_cursor#12 ← phi( @30/(byte*) print_line_cursor#15 )
(word) rem16u#38 ← phi( @30/(word) rem16u#42 )
call main
to:@35
@35: scope:[] from @34
(byte*) print_char_cursor#35 ← phi( @34/(byte*) print_char_cursor#17 )
(byte*) print_line_cursor#9 ← phi( @34/(byte*) print_line_cursor#4 )
(word) rem16u#29 ← phi( @34/(word) rem16u#14 )
to:@36
@36: scope:[] from @35
(byte*) print_char_cursor#35 ← phi( @35/(byte*) print_char_cursor#17 )
(byte*) print_line_cursor#9 ← phi( @35/(byte*) print_line_cursor#4 )
(word) rem16u#29 ← phi( @35/(word) rem16u#14 )
(word) rem16u#15 ← (word) rem16u#29
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#9
(byte*) print_char_cursor#18 ← (byte*) print_char_cursor#35
to:@end
@end: scope:[] from @35
@end: scope:[] from @36
SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"
(label) @13
(label) @19
(label) @2
(label) @29
(label) @34
(label) @20
(label) @30
(label) @35
(label) @36
(label) @begin
(label) @end
(word) PI2_u4f12
@ -4779,14 +4858,14 @@ Culled Empty Block (label) @2
Culled Empty Block (label) mul8u::@3
Culled Empty Block (label) mul16u::@3
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) @29
Culled Empty Block (label) @30
Culled Empty Block (label) print_byte::@2
Culled Empty Block (label) print_cls::@2
Culled Empty Block (label) main::@7
Culled Empty Block (label) main::@10
Culled Empty Block (label) @35
Culled Empty Block (label) @36
Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: rem16u#1 divr16u::rem#10
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
Identical Phi Values (word) divr16u::divisor#7 (const word) main::wavelength#0
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::@12(between main::@1 and main::@2)
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::@18(between sin8s::@3 and sin8s::@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 @34
Adding NOP phi() at start of @35
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
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::@15
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 @34
Adding NOP phi() at start of @35
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@5
@ -5441,14 +5520,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
to:@34
@34: scope:[] from @begin
to:@35
@35: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @34
@end: scope:[] from @35
[3] phi() [ ] ( )
main: scope:[main] from @34
main: scope:[main] from @35
[4] phi() [ ] ( main:2 [ ] )
[5] call sin8s_gen [ ] ( main:2 [ ] )
to:main::@5
@ -5913,107 +5992,107 @@ div16u::@return: scope:[div16u] from div16u::@2
DOMINATORS
@begin dominated by @begin
@34 dominated by @34 @begin
@end dominated by @end @34 @begin
main dominated by main @34 @begin
main::@5 dominated by main::@5 main @34 @begin
main::@6 dominated by main::@5 main::@6 main @34 @begin
main::@1 dominated by main::@1 main::@5 main::@6 main @34 @begin
main::@3 dominated by main::@1 main::@5 main::@6 main::@3 main @34 @begin
main::@2 dominated by 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 @34 @begin
main::@9 dominated by main::@9 main::@8 main::@1 main::@2 main::@5 main::@6 main @34 @begin
main::@return dominated by main::@9 main::@8 main::@1 main::@2 main::@5 main::@6 main::@return main @34 @begin
print_str dominated by main::@1 main::@5 main::@6 print_str main @34 @begin
print_str::@1 dominated by main::@1 main::@5 main::@6 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 @34 @begin
print_str::@2 dominated by main::@1 main::@5 main::@6 print_str::@1 print_str::@2 print_str main @34 @begin
print_sbyte dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main @34 @begin
print_sbyte::@2 dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main 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 @34 @begin
print_sbyte::@1 dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_sbyte::@1 @34 @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_byte dominated by main::@1 main::@2 main::@5 main::@6 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 @34 @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_char dominated by main::@1 main::@2 main::@5 main::@6 print_sbyte main print_char @34 @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_cls dominated by main::@5 main::@6 print_cls main @34 @begin
print_cls::@1 dominated by main::@5 main::@6 print_cls main @34 @begin print_cls::@1
print_cls::@return dominated by main::@5 main::@6 print_cls main @34 @begin print_cls::@return print_cls::@1
sin16s_gen dominated by main::@5 sin16s_gen main @34 @begin
sin16s_gen::@3 dominated by main::@5 sin16s_gen sin16s_gen::@3 main @34 @begin
sin16s_gen::@1 dominated by main::@5 sin16s_gen sin16s_gen::@3 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 @34 @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 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s_gen::@1 main @34 @begin
sin16s::@4 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s::@4 main @34 @begin
sin16s::@1 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 main @34 @begin
sin16s::@5 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 sin16s::@5 main @34 @begin
sin16s::@2 dominated by main::@5 sin16s sin16s_gen sin16s_gen::@3 sin16s::@1 sin16s_gen::@1 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 @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 @34 @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::@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::@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::@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::@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::@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::@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
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::@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::@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
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::@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::@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::@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::@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::@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
div32u16u dominated by main::@5 sin16s_gen div32u16u main @34 @begin
div32u16u::@2 dominated by main::@5 sin16s_gen div32u16u main div32u16u::@2 @34 @begin
div32u16u::@3 dominated by main::@5 sin16s_gen div32u16u main div32u16u::@2 div32u16u::@3 @34 @begin
div32u16u::@return dominated by main::@5 sin16s_gen div32u16u div32u16u::@return main div32u16u::@2 div32u16u::@3 @34 @begin
divr16u dominated by divr16u main @34 @begin
divr16u::@1 dominated by divr16u::@1 divr16u main @34 @begin
divr16u::@4 dominated by divr16u::@1 divr16u::@4 divr16u main @34 @begin
divr16u::@2 dominated by divr16u::@2 divr16u::@1 divr16u main @34 @begin
divr16u::@5 dominated by divr16u::@2 divr16u::@1 divr16u::@5 divr16u main @34 @begin
divr16u::@3 dominated by divr16u::@2 divr16u::@1 divr16u::@3 divr16u main @34 @begin
divr16u::@6 dominated by divr16u::@2 divr16u::@1 divr16u::@3 divr16u::@6 divr16u main @34 @begin
divr16u::@return dominated by divr16u::@2 divr16u::@1 divr16u::@3 divr16u::@6 divr16u::@return divr16u main @34 @begin
sin8s_gen dominated by sin8s_gen main @34 @begin
sin8s_gen::@3 dominated by sin8s_gen main @34 @begin sin8s_gen::@3
sin8s_gen::@1 dominated by sin8s_gen main @34 @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::@return dominated by sin8s_gen sin8s_gen::@return main @34 @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::@5 dominated by sin8s_gen main sin8s @34 @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::@6 dominated by sin8s_gen main sin8s @34 @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::@10 dominated by sin8s_gen 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 @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 @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 @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 @34 @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::@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::@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::@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::@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::@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
mulu8_sel dominated by 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 @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 @34 @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::@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::@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::@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::@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::@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
div16u dominated by div16u sin8s_gen main @34 @begin
div16u::@2 dominated by div16u sin8s_gen div16u::@2 main @34 @begin
div16u::@return dominated by div16u::@return div16u sin8s_gen div16u::@2 main @34 @begin
@35 dominated by @35 @begin
@end dominated by @end @35 @begin
main dominated by main @35 @begin
main::@5 dominated by main::@5 main @35 @begin
main::@6 dominated by main::@5 main::@6 main @35 @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 @35 @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 @35 @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 @35 @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 @35 @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 @35 @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 @35 @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 @35 @begin
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 @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 @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 @35 @begin print_byte::@return
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 print_char::@return @35 @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 @35 @begin 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 @35 @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 @35 @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 @35 @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 @35 @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 @35 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @35 @begin mul16u::@4
div32u16u dominated by main::@5 sin16s_gen div32u16u main @35 @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 @35 @begin
div32u16u::@return dominated by main::@5 sin16s_gen div32u16u div32u16u::@return main div32u16u::@2 div32u16u::@3 @35 @begin
divr16u dominated by divr16u main @35 @begin
divr16u::@1 dominated by divr16u::@1 divr16u main @35 @begin
divr16u::@4 dominated by divr16u::@1 divr16u::@4 divr16u main @35 @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 @35 @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 @35 @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 @35 @begin
sin8s_gen::@3 dominated by sin8s_gen main @35 @begin 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 @35 @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 @35 @begin 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 @35 @begin sin8s::@1 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 @35 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @35 @begin sin8s::@2 sin8s::@1 sin8s::@3 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 @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 @35 @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 @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 @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 @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 @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 @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 @35 @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 @35 @begin
NATURAL LOOPS
Found back edge: Loop head: main::@1 tails: main::@9 blocks: null
@ -6698,17 +6777,17 @@ INITIAL ASM
.label print_char_cursor = 7
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34]
b34_from_bbegin:
jmp b34
//SEG4 @34
b34:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b35_from_bbegin:
jmp b35
//SEG4 @35
b35:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main]
main_from_b34:
//SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b35:
jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end]
bend_from_b34:
//SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b35:
jmp bend
//SEG8 @end
bend:
@ -8942,17 +9021,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_char_cursor = 5
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34]
b34_from_bbegin:
jmp b34
//SEG4 @34
b34:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b35_from_bbegin:
jmp b35
//SEG4 @35
b35:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @34 to main [phi:@34->main]
main_from_b34:
//SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b35:
jsr main
//SEG7 [3] phi from @34 to @end [phi:@34->@end]
bend_from_b34:
//SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b35:
jmp bend
//SEG8 @end
bend:
@ -10459,7 +10538,7 @@ div16u: {
print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b34
Removing instruction jmp b35
Removing instruction jmp bend
Removing instruction jmp b5
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_b2 with b4
Removing instruction bbegin:
Removing instruction b34_from_bbegin:
Removing instruction main_from_b34:
Removing instruction bend_from_b34:
Removing instruction b35_from_bbegin:
Removing instruction main_from_b35:
Removing instruction bend_from_b35:
Removing instruction b5_from_main:
Removing instruction sin16s_gen_from_b5:
Removing instruction b6_from_b5:
@ -10627,7 +10706,7 @@ Removing instruction breturn:
Removing instruction b4_from_b2:
Removing instruction b4_from_b7:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b34:
Removing instruction b35:
Removing instruction bend:
Removing instruction sin8s_gen_from_main:
Removing instruction b5:
@ -10733,7 +10812,7 @@ Removing unreachable instruction jmp b3
Succesful ASM optimization Pass5UnreachableCodeElimination
FINAL SYMBOL TABLE
(label) @34
(label) @35
(label) @begin
(label) @end
(word) PI2_u4f12
@ -11188,12 +11267,12 @@ Score: 28323
.label rem16u = 2
.label print_char_cursor = 5
//SEG2 @begin
//SEG3 [1] phi from @begin to @34 [phi:@begin->@34]
//SEG4 @34
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
//SEG4 @35
//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
//SEG7 [3] phi from @34 to @end [phi:@34->@end]
//SEG7 [3] phi from @35 to @end [phi:@35->@end]
//SEG8 @end
//SEG9 main
main: {

View File

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

View File

@ -1,13 +1,13 @@
@begin: scope:[] from
[0] phi() [ ] ( )
to:@35
@35: scope:[] from @begin
to:@36
@36: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @35
@end: scope:[] from @36
[3] phi() [ ] ( )
main: scope:[main] from @35
main: scope:[main] from @36
[4] phi() [ ] ( main:2 [ ] )
[5] call print_cls [ ] ( main:2 [ ] )
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
// sintab - the table to generate into
// 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_gen2::i ← ++ (word) sin16s_gen2::i
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 (byte) sin8s::usinx ← -- (byte) sin8s::usinx
@ -589,6 +607,7 @@ SYMBOLS
(label) @33
(label) @34
(label) @35
(label) @36
(label) @4
(label) @5
(label) @6
@ -1105,6 +1124,31 @@ SYMBOLS
(dword) sin16s_gen::step
(word) sin16s_gen::wavelength
(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)
(bool~) sin8s::$0
(bool~) sin8s::$1
@ -1754,6 +1798,39 @@ sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@2
to:@return
@14: scope:[] from @13
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
(word~) sin8s_gen::$0 ← call div16u (word) PI2_u4f12 (word) sin8s_gen::wavelength
(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
return
to:@return
@15: scope:[] from @14
to:@16
@16: scope:[] from @15
to:@17
sin16s: scope:[sin16s] from
(byte) sin16s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin16s::$0 ← (dword) sin16s::x >= (dword) PI_u4f28
@ -1838,8 +1915,8 @@ sin16s::@return: scope:[sin16s] from sin16s::@3 sin16s::@7
to:@return
sin16s::@7: scope:[sin16s] from
to:sin16s::@return
@16: scope:[] from @15
to:@17
@17: scope:[] from @16
to:@18
sin8s: scope:[sin8s] from
(byte) sin8s::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0
(bool~) sin8s::$0 ← (word) sin8s::x >= (word) PI_u4f12
@ -1909,8 +1986,8 @@ sin8s::@return: scope:[sin8s] from sin8s::@4 sin8s::@9
to:@return
sin8s::@9: scope:[sin8s] from
to:sin8s::@return
@17: scope:[] from @16
to:@18
@18: scope:[] from @17
to:@19
mulu16_sel: scope:[mulu16_sel] from
(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
@ -1923,8 +2000,8 @@ mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel mulu16_sel::@1
to:@return
mulu16_sel::@1: scope:[mulu16_sel] from
to:mulu16_sel::@return
@18: scope:[] from @17
to:@19
@19: scope:[] from @18
to:@20
mulu8_sel: scope:[mulu8_sel] from
(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
@ -1937,11 +2014,11 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel mulu8_sel::@1
to:@return
mulu8_sel::@1: scope:[mulu8_sel] from
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_line_cursor ← (byte*) print_screen
(byte*) print_char_cursor ← (byte*) print_line_cursor
to:@20
to:@21
print_str_lines: scope:[print_str_lines] from
to:print_str_lines::@1
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
return
to:@return
@20: scope:[] from @19
to:@21
@21: scope:[] from @20
to:@22
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::$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
return
to:@return
@21: scope:[] from @20
to:@22
@22: scope:[] from @21
to:@23
print_str: scope:[print_str] from
to:print_str::@1
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
return
to:@return
@22: scope:[] from @21
to:@23
@23: scope:[] from @22
to:@24
print_str_at: scope:[print_str_at] from
to:print_str_at::@1
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
return
to:@return
@23: scope:[] from @22
to:@24
@24: scope:[] from @23
to:@25
print_ln: scope:[print_ln] from
to: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
return
to:@return
@24: scope:[] from @23
to:@25
@25: scope:[] from @24
to:@26
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::$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
return
to:@return
@25: scope:[] from @24
to:@26
@26: scope:[] from @25
to:@27
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::$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
return
to:@return
@26: scope:[] from @25
to:@27
@27: scope:[] from @26
to:@28
print_word: scope:[print_word] from
(byte~) print_word::$0 ← > (word) print_word::w
(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
return
to:@return
@27: scope:[] from @26
to:@28
@28: scope:[] from @27
to:@29
print_dword: scope:[print_dword] from
(word~) print_dword::$0 ← > (dword) print_dword::dw
(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
return
to:@return
@28: scope:[] from @27
to:@29
@29: scope:[] from @28
to:@30
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::$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
return
to:@return
@29: scope:[] from @28
@30: scope:[] from @29
(byte[]) print_hextab ← (string) "0123456789abcdef"
to:@30
to:@31
print_byte: scope:[print_byte] from
(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)
@ -2143,8 +2220,8 @@ print_byte: scope:[print_byte] from
print_byte::@return: scope:[print_byte] from print_byte
return
to:@return
@30: scope:[] from @29
to:@31
@31: scope:[] from @30
to:@32
print_char: scope:[print_char] from
*((byte*) print_char_cursor) ← (byte) print_char::ch
(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
return
to:@return
@31: scope:[] from @30
to:@32
@32: scope:[] from @31
to:@33
print_cls: scope:[print_cls] from
(byte*) print_cls::sc ← (byte*) print_screen
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
return
to:@return
@32: scope:[] from @31
to:@33
@33: scope:[] from @32
to:@34
print_set_screen: scope:[print_set_screen] from
(byte*) print_screen ← (byte*) print_set_screen::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
return
to:@return
@33: scope:[] from @32
to:@34
@34: scope:[] from @33
to:@35
main: scope:[main] from
(word) main::tabsize ← (byte/signed byte/word/signed word/dword/signed dword) 20
(byte[20]) main::sintab ← { fill( 20, 0) }
@ -2192,8 +2269,8 @@ main: scope:[main] from
main::@return: scope:[main] from main
return
to:@return
@34: scope:[] from @33
to:@35
@35: scope:[] from @34
to:@36
sin8u_table: scope:[sin8u_table] from
(byte~) sin8u_table::$0 ← (byte) sin8u_table::max - (byte) sin8u_table::min
(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
return
to:@return
@35: scope:[] from @34
@36: scope:[] from @35
call main
to:@end
@end: scope:[] from @35
@end: scope:[] from @36
Removing unused procedure div8s
Removing unused procedure div16s
Removing unused procedure mul8s
Removing unused procedure mul16s
Removing unused procedure sin16s_gen
Removing unused procedure sin16s_gen2
Removing unused procedure sin8s_gen
Removing unused procedure print_str_lines
Removing unused procedure print_str_ln
@ -2270,6 +2347,7 @@ Removing unused procedure print_set_screen
Removing unused procedure div8u
Removing unused procedure div32u16u
Removing unused procedure divr16s
Removing unused procedure mul16s
Removing unused procedure sin16s
Removing unused procedure print_dword
Removing unused procedure divr8u
@ -2343,28 +2421,29 @@ Removing empty block @12
Removing empty block @14
Removing empty block @15
Removing empty block @16
Removing empty block sin8s::@9
Removing empty block @17
Removing empty block sin8s::@9
Removing empty block @18
Removing empty block @19
Removing empty block mulu8_sel::@1
Removing empty block @20
Removing empty block @21
Removing empty block @22
Removing empty block print_str::@4
Removing empty block print_str::@3
Removing empty block print_str::@5
Removing empty block print_str::@6
Removing empty block @22
Removing empty block @23
Removing empty block @24
Removing empty block @25
Removing empty block @26
Removing empty block @27
Removing empty block @28
Removing empty block @30
Removing empty block @29
Removing empty block @31
Removing empty block @32
Removing empty block @33
Removing empty block @34
Removing empty block @35
Removing empty block sin8u_table::@2
PROCEDURE MODIFY VARIABLE ANALYSIS
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) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868
(word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434
to:@19
to:@20
sin8s: scope:[sin8s] from sin8u_table::@1
(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
@ -2766,12 +2845,12 @@ mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2
(byte) mulu8_sel::return#6 ← (byte) mulu8_sel::return#12
return
to:@return
@19: scope:[] from @13
@20: scope:[] from @13
(word) rem16u#26 ← phi( @13/(word) rem16u#28 )
(byte*) print_screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
(byte*) print_line_cursor#0 ← (byte*) print_screen#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
(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 )
@ -2913,13 +2992,13 @@ print_word::@return: scope:[print_word] from print_word::@2
(byte*) print_char_cursor#13 ← (byte*) print_char_cursor#58
return
to:@return
@29: scope:[] from @19
(byte*) print_screen#6 ← phi( @19/(byte*) print_screen#0 )
(word) rem16u#25 ← phi( @19/(word) rem16u#26 )
(byte*) print_char_cursor#107 ← phi( @19/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#30 ← phi( @19/(byte*) print_line_cursor#0 )
@30: scope:[] from @20
(byte*) print_screen#6 ← phi( @20/(byte*) print_screen#0 )
(word) rem16u#25 ← phi( @20/(word) rem16u#26 )
(byte*) print_char_cursor#107 ← phi( @20/(byte*) print_char_cursor#0 )
(byte*) print_line_cursor#30 ← phi( @20/(byte*) print_line_cursor#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
(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 )
@ -2980,11 +3059,11 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
(byte*) print_char_cursor#20 ← (byte*) print_char_cursor#64
return
to:@return
main: scope:[main] from @35
(word) rem16u#23 ← phi( @35/(word) rem16u#22 )
(byte*) print_char_cursor#98 ← phi( @35/(byte*) print_char_cursor#101 )
(byte*) print_line_cursor#24 ← phi( @35/(byte*) print_line_cursor#27 )
(byte*) print_screen#4 ← phi( @35/(byte*) print_screen#5 )
main: scope:[main] from @36
(word) rem16u#23 ← phi( @36/(word) rem16u#22 )
(byte*) print_char_cursor#98 ← phi( @36/(byte*) print_char_cursor#101 )
(byte*) print_line_cursor#24 ← phi( @36/(byte*) print_line_cursor#27 )
(byte*) print_screen#4 ← phi( @36/(byte*) print_screen#5 )
(word) main::tabsize#0 ← (byte/signed byte/word/signed word/dword/signed dword) 20
(byte[20]) main::sintab#0 ← { fill( 20, 0) }
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
return
to:@return
@35: scope:[] from @29
(byte*) print_screen#5 ← phi( @29/(byte*) print_screen#6 )
(word) rem16u#22 ← phi( @29/(word) rem16u#25 )
(byte*) print_char_cursor#101 ← phi( @29/(byte*) print_char_cursor#107 )
(byte*) print_line_cursor#27 ← phi( @29/(byte*) print_line_cursor#30 )
@36: scope:[] from @30
(byte*) print_screen#5 ← phi( @30/(byte*) print_screen#6 )
(word) rem16u#22 ← phi( @30/(word) rem16u#25 )
(byte*) print_char_cursor#101 ← phi( @30/(byte*) print_char_cursor#107 )
(byte*) print_line_cursor#27 ← phi( @30/(byte*) print_line_cursor#30 )
call main
to:@36
@36: scope:[] from @35
(word) rem16u#17 ← phi( @35/(word) rem16u#6 )
(byte*) print_char_cursor#89 ← phi( @35/(byte*) print_char_cursor#23 )
(byte*) print_line_cursor#22 ← phi( @35/(byte*) print_line_cursor#7 )
to:@37
@37: scope:[] from @36
(word) rem16u#17 ← phi( @36/(word) rem16u#6 )
(byte*) print_char_cursor#89 ← phi( @36/(byte*) print_char_cursor#23 )
(byte*) print_line_cursor#22 ← phi( @36/(byte*) print_line_cursor#7 )
(byte*) print_line_cursor#11 ← (byte*) print_line_cursor#22
(byte*) print_char_cursor#45 ← (byte*) print_char_cursor#89
(word) rem16u#9 ← (word) rem16u#17
to:@end
@end: scope:[] from @36
@end: scope:[] from @37
SYMBOL TABLE SSA
(const string) $0 = (string) "0123456789abcdef"
(label) @13
(label) @19
(label) @2
(label) @29
(label) @35
(label) @20
(label) @30
(label) @36
(label) @37
(label) @begin
(label) @end
(word) PI2_u4f12
@ -5117,17 +5196,17 @@ Culled Empty Block (label) @2
Culled Empty Block (label) divr16u::@6
Culled Empty Block (label) mul8u::@3
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_sword::@3
Culled Empty Block (label) print_sbyte::@3
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_cls::@2
Culled Empty Block (label) main::@2
Culled Empty Block (label) sin8u_table::@14
Culled Empty Block (label) @36
Culled Empty Block (label) @37
Succesful SSA optimization Pass2CullEmptyBlocks
Not aliassing across scopes: divr16u::return#2 divr16u::return#0
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#5 = (const string) sin8u_table::str4
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 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)
@ -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::@10(between divr16u::@2 and divr16u::@3)
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 @35
Adding NOP phi() at start of @36
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
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::@9
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 @35
Adding NOP phi() at start of @36
Adding NOP phi() at start of @end
Adding NOP phi() at start of main
Adding NOP phi() at start of main::@1
@ -5663,14 +5742,14 @@ Propagating live ranges...
FINAL CONTROL FLOW GRAPH
@begin: scope:[] from
[0] phi() [ ] ( )
to:@35
@35: scope:[] from @begin
to:@36
@36: scope:[] from @begin
[1] phi() [ ] ( )
[2] call main [ ] ( )
to:@end
@end: scope:[] from @35
@end: scope:[] from @36
[3] phi() [ ] ( )
main: scope:[main] from @35
main: scope:[main] from @36
[4] phi() [ ] ( main:2 [ ] )
[5] call print_cls [ ] ( main:2 [ ] )
to:main::@1
@ -6096,104 +6175,104 @@ print_cls::@return: scope:[print_cls] from print_cls::@1
DOMINATORS
@begin dominated by @begin
@35 dominated by @35 @begin
@end dominated by @end @35 @begin
main dominated by main @35 @begin
main::@1 dominated by main::@1 main @35 @begin
main::@return dominated by main::@1 main::@return main @35 @begin
sin8u_table dominated by main::@1 sin8u_table main @35 @begin
sin8u_table::@3 dominated by main::@1 sin8u_table main @35 @begin sin8u_table::@3
sin8u_table::@4 dominated by main::@1 sin8u_table main @35 @begin 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::@6 dominated by main::@1 sin8u_table main @35 @begin 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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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
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::@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::@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_byte dominated by main::@1 sin8u_table 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 @35 @begin 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_char dominated by main::@1 sin8u_table main print_char @35 @begin 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_str dominated by main::@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 @35 @begin 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::@2 dominated by main::@1 print_str::@1 print_str::@2 sin8u_table print_str main @35 @begin 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::@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::@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::@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::@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_word dominated by print_word main::@1 sin8u_table main @35 @begin 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::@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_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::@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::@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::@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::@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
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::@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::@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::@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::@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
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::@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::@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::@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::@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::@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
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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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::@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
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::@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::@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
div16u dominated by main::@1 div16u sin8u_table main @35 @begin
div16u::@2 dominated by main::@1 div16u div16u::@2 sin8u_table main @35 @begin
div16u::@return dominated by div16u::@return main::@1 div16u div16u::@2 sin8u_table main @35 @begin
divr16u dominated by main::@1 div16u sin8u_table divr16u main @35 @begin
divr16u::@1 dominated by divr16u::@1 main::@1 div16u sin8u_table divr16u main @35 @begin
divr16u::@4 dominated by divr16u::@1 divr16u::@4 main::@1 div16u sin8u_table divr16u main @35 @begin
divr16u::@2 dominated by divr16u::@2 divr16u::@1 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 @35 @begin
divr16u::@3 dominated by divr16u::@2 divr16u::@1 divr16u::@3 main::@1 div16u sin8u_table divr16u main @35 @begin
divr16u::@return dominated by divr16u::@2 divr16u::@1 divr16u::@3 main::@1 div16u sin8u_table divr16u::@return divr16u main @35 @begin
print_cls dominated by print_cls main @35 @begin
print_cls::@1 dominated by print_cls main @35 @begin print_cls::@1
print_cls::@return dominated by print_cls main @35 @begin print_cls::@return print_cls::@1
@36 dominated by @begin @36
@end dominated by @end @begin @36
main dominated by main @begin @36
main::@1 dominated by main::@1 main @begin @36
main::@return dominated by main::@1 main::@return main @begin @36
sin8u_table dominated by main::@1 sin8u_table main @begin @36
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 @begin @36 sin8u_table::@3 sin8u_table::@4
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 @begin @36 sin8u_table::@3 sin8u_table::@4 sin8u_table::@5 sin8u_table::@6
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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @begin @36 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 @begin @36 print_byte::@return 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 @begin @36 sin8u_table::@3 sin8u_table::@4
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 @begin @36 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 @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 @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 @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 @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 @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 @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 @begin @36 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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @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 @begin @36
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 @begin @36
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 @begin @36
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 @begin @36
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 @begin @36
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 @begin @36
print_cls::@1 dominated by print_cls main @begin @36 print_cls::@1
print_cls::@return dominated by print_cls main @begin @36 print_cls::@return print_cls::@1
NATURAL LOOPS
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
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b35_from_bbegin:
jmp b35
//SEG4 @35
b35:
//SEG3 [1] phi from @begin to @36 [phi:@begin->@36]
b36_from_bbegin:
jmp b36
//SEG4 @36
b36:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b35:
//SEG6 [4] phi from @36 to main [phi:@36->main]
main_from_b36:
jsr main
//SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b35:
//SEG7 [3] phi from @36 to @end [phi:@36->@end]
bend_from_b36:
jmp bend
//SEG8 @end
bend:
@ -8375,17 +8454,17 @@ ASSEMBLER BEFORE OPTIMIZATION
.label print_line_cursor = 8
//SEG2 @begin
bbegin:
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
b35_from_bbegin:
jmp b35
//SEG4 @35
b35:
//SEG3 [1] phi from @begin to @36 [phi:@begin->@36]
b36_from_bbegin:
jmp b36
//SEG4 @36
b36:
//SEG5 [2] call main [ ] ( )
//SEG6 [4] phi from @35 to main [phi:@35->main]
main_from_b35:
//SEG6 [4] phi from @36 to main [phi:@36->main]
main_from_b36:
jsr main
//SEG7 [3] phi from @35 to @end [phi:@35->@end]
bend_from_b35:
//SEG7 [3] phi from @36 to @end [phi:@36->@end]
bend_from_b36:
jmp bend
//SEG8 @end
bend:
@ -9635,7 +9714,7 @@ print_cls: {
print_hextab: .text "0123456789abcdef"
ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b35
Removing instruction jmp b36
Removing instruction jmp bend
Removing instruction jmp b1
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
Removing instruction bbegin:
Removing instruction b35_from_bbegin:
Removing instruction main_from_b35:
Removing instruction bend_from_b35:
Removing instruction b36_from_bbegin:
Removing instruction main_from_b36:
Removing instruction bend_from_b36:
Removing instruction b1_from_main:
Removing instruction sin8u_table_from_b1:
Removing instruction b5_from_b4:
@ -9811,7 +9890,7 @@ Removing instruction b3_from_b2:
Removing instruction b3_from_b5:
Removing instruction b1_from_b1:
Succesful ASM optimization Pass5RedundantLabelElimination
Removing instruction b35:
Removing instruction b36:
Removing instruction bend:
Removing instruction print_cls_from_main:
Removing instruction b1:
@ -9912,7 +9991,7 @@ Fixing long branch [163] bcc b1 to bcs
Fixing long branch [169] bcc b1 to bcs
FINAL SYMBOL TABLE
(label) @35
(label) @36
(label) @begin
(label) @end
(word) PI2_u4f12
@ -10291,12 +10370,12 @@ Score: 19469
.label print_char_cursor = $d
.label print_line_cursor = 8
//SEG2 @begin
//SEG3 [1] phi from @begin to @35 [phi:@begin->@35]
//SEG4 @35
//SEG3 [1] phi from @begin to @36 [phi:@begin->@36]
//SEG4 @36
//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
//SEG7 [3] phi from @35 to @end [phi:@35->@end]
//SEG7 [3] phi from @36 to @end [phi:@36->@end]
//SEG8 @end
//SEG9 main
main: {

View File

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

View File

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