From 6702baa875ce740c2cf468438758367fe71ac591 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Fri, 23 Feb 2018 22:15:10 +0100 Subject: [PATCH] Fixed lo/hi of dwords in constants. --- .../camelot64/kickc/fragment/AsmFormat.java | 23 + .../kickc/fragment/asm/vduz1=vduz1_rol_3.asm | 12 + .../kickc/fragment/asm/vduz1=vduz2_rol_3.asm | 20 + .../fragment/asm/vwuz1_ge_vwuc1_then_la1.asm | 8 + .../dk/camelot64/kickc/test/TestPrograms.java | 5 + .../dk/camelot64/kickc/test/kc/sinusgen.kc | 37 +- .../camelot64/kickc/test/kc/test-lohiconst.kc | 10 + .../dk/camelot64/kickc/test/ref/sinusgen.asm | 43 +- .../dk/camelot64/kickc/test/ref/sinusgen.cfg | 106 +- .../dk/camelot64/kickc/test/ref/sinusgen.log | 1938 ++++++++--------- .../dk/camelot64/kickc/test/ref/sinusgen.sym | 26 +- .../kickc/test/ref/test-lohiconst.asm | 17 + .../kickc/test/ref/test-lohiconst.log | 14 + .../kickc/test/ref/test-lohiconst.prg | Bin 0 -> 38 bytes .../kickc/test/ref/test-lohiconst.vs | 3 + 15 files changed, 1156 insertions(+), 1106 deletions(-) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vduz1_rol_3.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vduz2_rol_3.asm create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_ge_vwuc1_then_la1.asm create mode 100644 src/test/java/dk/camelot64/kickc/test/kc/test-lohiconst.kc create mode 100644 src/test/java/dk/camelot64/kickc/test/ref/test-lohiconst.asm create mode 100644 src/test/java/dk/camelot64/kickc/test/ref/test-lohiconst.log create mode 100644 src/test/java/dk/camelot64/kickc/test/ref/test-lohiconst.prg create mode 100644 src/test/java/dk/camelot64/kickc/test/ref/test-lohiconst.vs diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFormat.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFormat.java index 5f230b79e..d4f51c0e3 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFormat.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFormat.java @@ -4,6 +4,7 @@ import dk.camelot64.kickc.model.*; /** Formatting of numbers, constants, names and more for KickAssembler */ public class AsmFormat { + /** * Get ASM code for a constant value * @@ -83,6 +84,28 @@ public class AsmFormat { } else { return "$ffffffff & " + getAsmConstant(program, operand, Operator.BOOL_AND.getPrecedence(), codeScope); } + } else if(Operator.LOWBYTE.equals(operator)) { + SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand); + if(SymbolType.isByte(operandType) || SymbolType.isSByte(operandType)) { + return getAsmConstant(program, operand, outerPrecedence, codeScope); + } else if(SymbolType.isWord(operandType) || SymbolType.isSWord(operandType)) { + return "<" + getAsmConstant(program, operand, outerPrecedence, codeScope); + } else if(SymbolType.isDWord(operandType) || SymbolType.isSDWord(operandType)) { + return getAsmConstant(program, operand, outerPrecedence, codeScope) + "&$ffff"; + } else { + throw new CompileError("Unhandled type "+operand); + } + } else if(Operator.HIBYTE.equals(operator)) { + SymbolType operandType = SymbolTypeInference.inferType(program.getScope(), operand); + if(SymbolType.isByte(operandType) || SymbolType.isSByte(operandType)) { + return getAsmConstant(program, operand, outerPrecedence, codeScope); + } else if(SymbolType.isWord(operandType) || SymbolType.isSWord(operandType)) { + return ">" + getAsmConstant(program, operand, outerPrecedence, codeScope); + } else if(SymbolType.isDWord(operandType) || SymbolType.isSDWord(operandType)) { + return getAsmConstant(program, operand, outerPrecedence, codeScope) + ">>16"; + } else { + throw new CompileError("Unhandled type "+operand); + } } else if(Operator.INCREMENT.equals(operator)) { return getAsmConstant(program, operand, Operator.PLUS.getPrecedence(), codeScope) + "+1"; } else if(Operator.DECREMENT.equals(operator)) { diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vduz1_rol_3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vduz1_rol_3.asm new file mode 100644 index 000000000..9c554d431 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vduz1_rol_3.asm @@ -0,0 +1,12 @@ +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vduz2_rol_3.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vduz2_rol_3.asm new file mode 100644 index 000000000..d1cab4764 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vduz1=vduz2_rol_3.asm @@ -0,0 +1,20 @@ +lda {z2} +sta {z1} +lda {z2}+1 +sta {z1}+1 +lda {z2}+2 +sta {z1}+2 +lda {z2}+3 +sta {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 +asl {z1} +rol {z1}+1 +rol {z1}+2 +rol {z1}+3 \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_ge_vwuc1_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_ge_vwuc1_then_la1.asm new file mode 100644 index 000000000..fbb93bed4 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwuz1_ge_vwuc1_then_la1.asm @@ -0,0 +1,8 @@ +lda {z1}+1 +cmp #>{c1} +bcc !+ +bne {la1} +lda {z1} +cmp #<{c1} +bcs {la1} +!: diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index 67d055807..66ea870e2 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -45,6 +45,11 @@ public class TestPrograms { AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false); } + @Test + public void testLoHiConst() throws IOException, URISyntaxException { + compileAndCompare("test-lohiconst"); + } + @Test public void testSinusGen() throws IOException, URISyntaxException { compileAndCompare("sinusgen"); diff --git a/src/test/java/dk/camelot64/kickc/test/kc/sinusgen.kc b/src/test/java/dk/camelot64/kickc/test/kc/sinusgen.kc index 3e32ec984..515c0896f 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/sinusgen.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/sinusgen.kc @@ -19,12 +19,6 @@ void main() { } } -// PI*2 in u[4.12] format -const word PI2_u4f12 = $6488; -// PI in u[4.12] format -const word PI_u4f12 = $3244; -// PI/2 in u[4.12] format -const word PI_HALF_u4f12 = $1922; // PI*2 in u[4.28] format const dword PI2_u4f28 = $6487ed51; // PI in u[4.28] format @@ -32,26 +26,29 @@ const dword PI_u4f28 = $3243f6a9; // PI/2 in u[4.28] format const dword PI_HALF_u4f28 = $1921FB54; +// PI*2 in u[4.12] format +const word PI2_u4f12 = $6488; +// PI in u[4.12] format +const word PI_u4f12 = $3244; +// PI/2 in u[4.12] format +const word PI_HALF_u4f12 = $1922; + // Generate signed word sinus table // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) void sin16s_gen(signed word* sintab, word wavelength) { // u[4.12] step = PI*2/wavelength - word stepi = divr16u(PI2_u4f12, wavelength, 0); - word stepf = divr16u(0, wavelength, rem16u); + word stepi = divr16u(>PI2_u4f28, wavelength, 0); + word stepf = divr16u(x; // u[4.12] byte isUpper = 0; if(x1 >= PI_u4f12 ) { - x1 = x1-PI_u4f12; + x1 = x1 - PI_u4f12; isUpper = 1; } if(x1 >= PI_HALF_u4f12 ) { @@ -60,22 +57,22 @@ void sin16s_gen(signed word* sintab, word wavelength) { // s[4.12] sinx = x - x^3/6 + x5/128; word x2 = mul_u4f12(x1, x1); // u[4.12] word x3 = mul_u4f12(x2, x1); // u[4.12] - word x3_6 = >mul16u(x3, div6); // u[4.12] + word x3_6 = >mul16u(x3, $10000/6); // u[4.12] - u[0.16] div6 = 1/6; word usinx = x1 - x3_6; // u[4.12] word x4 = mul_u4f12(x3, x1); // u[4.12] word x5 = mul_u4f12(x4, x1); // u[4.12] - word x5_128 = >mul16u(x5, div128); // u[4.12] + word x5_128 = >mul16u(x5, $10000/128); // u[4.12] - u[0.16] div128 = 1/128; usinx = usinx + x5_128; - signed word sinx = (signed word)usinx; // s[4.12] + signed word sinx; if(isUpper!=0) { - sinx = -sinx; - } + sinx = -(signed word)usinx; // s[4.12]; + } else { + sinx = (signed word)usinx; // s[4.12] + } *sintab = sinx; sintab = sintab + 2; x = x + step; } - - } // Calculate val*val for val u[4.12] to val*val u[4.28] diff --git a/src/test/java/dk/camelot64/kickc/test/kc/test-lohiconst.kc b/src/test/java/dk/camelot64/kickc/test/kc/test-lohiconst.kc new file mode 100644 index 000000000..2d8bf39e1 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/kc/test-lohiconst.kc @@ -0,0 +1,10 @@ +// PI in u[4.28] format +const dword PI_u4f28 = $3243f6a9; + +void main() { + byte* SCREEN = $400; + SCREEN[0] = > > PI_u4f28; + SCREEN[1] = < > PI_u4f28; + SCREEN[2] = > < PI_u4f28; + SCREEN[3] = < < PI_u4f28; +} \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.asm index be5245d21..27b868a9f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.asm @@ -2,7 +2,7 @@ :BasicUpstart(main) .pc = $80d "Program" .label SCREEN = $400 - .const PI2_u4f12 = $6488 + .const PI2_u4f28 = $6487ed51 .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 .label rem16u = 4 @@ -151,10 +151,8 @@ print_cls: { rts } sin16s_gen: { - .const div6 = $10000/6 - .const div128 = $10000/$80 - .label _13 = $12 - .label _18 = $12 + .label _14 = $12 + .label _20 = $12 .label stepi = $e .label stepf = $c .label step = $1a @@ -164,17 +162,17 @@ sin16s_gen: { .label usinx = $c .label x4 = $10 .label x5 = $10 + .label sinx = $c .label sintab = 2 .label x = 8 .label i = 4 - .label sinx = $c lda #main.wavelength sta divr16u.divisor+1 - lda #>16 sta divr16u.dividend - lda #>PI2_u4f12 + lda #>PI2_u4f28>>16 sta divr16u.dividend+1 lda #<0 sta divr16u.rem @@ -188,8 +186,9 @@ sin16s_gen: { sta divr16u.divisor lda #>main.wavelength sta divr16u.divisor+1 - lda #<0 + lda #PI2_u4f28&$ffff sta divr16u.dividend+1 jsr divr16u lda stepi @@ -218,11 +217,11 @@ sin16s_gen: { lda x+3 sta x1+1 cmp #>PI_u4f12 - bcc b5 + bcc b4 bne !+ lda x1 cmp #div6 + lda #>$10000/6 sta mul16u.b+1 jsr mul16u lda x1 sec - sbc _13+2 + sbc _14+2 sta usinx lda x1+1 - sbc _13+3 + sbc _14+3 sta usinx+1 lda x3 sta mul_u4f12.v1 @@ -284,20 +283,20 @@ sin16s_gen: { sta mul_u4f12.v1+1 jsr mul_u4f12 jsr mul_u4f12 - lda #div128 + lda #>$10000/$80 sta mul16u.b+1 jsr mul16u lda usinx clc - adc _18+2 + adc _20+2 sta usinx lda usinx+1 - adc _18+3 + adc _20+3 sta usinx+1 cpx #0 - beq b4 + beq b5 sec lda sinx eor #$ff @@ -307,7 +306,7 @@ sin16s_gen: { eor #$ff adc #0 sta sinx+1 - b4: + b5: ldy #0 lda sinx sta (sintab),y diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.cfg index 0c485b1ab..0c70b9a32 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.cfg @@ -117,103 +117,103 @@ sin16s_gen: scope:[sin16s_gen] from main [53] phi() [ ] ( main:2::sin16s_gen:5 [ ] ) [54] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 rem16u#1 ] ) [55] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#2 rem16u#1 ] ) - to:sin16s_gen::@9 -sin16s_gen::@9: scope:[sin16s_gen] from sin16s_gen + to:sin16s_gen::@11 +sin16s_gen::@11: scope:[sin16s_gen] from sin16s_gen [56] (word) sin16s_gen::stepi#0 ← (word) divr16u::return#2 [ sin16s_gen::stepi#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 rem16u#1 ] ) [57] (word) divr16u::rem#4 ← (word) rem16u#1 [ sin16s_gen::stepi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::rem#4 ] ) [58] call divr16u param-assignment [ divr16u::return#0 sin16s_gen::stepi#0 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 sin16s_gen::stepi#0 ] ) [59] (word) divr16u::return#3 ← (word) divr16u::return#0 [ sin16s_gen::stepi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::return#3 ] ) - to:sin16s_gen::@10 -sin16s_gen::@10: scope:[sin16s_gen] from sin16s_gen::@9 + to:sin16s_gen::@12 +sin16s_gen::@12: scope:[sin16s_gen] from sin16s_gen::@11 [60] (word) sin16s_gen::stepf#0 ← (word) divr16u::return#3 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ) [61] (dword) sin16s_gen::step#0 ← (word) sin16s_gen::stepi#0 dw= (word) sin16s_gen::stepf#0 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) to:sin16s_gen::@1 -sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@10 sin16s_gen::@4 - [62] (word) sin16s_gen::i#10 ← phi( sin16s_gen::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(word) sin16s_gen::i#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) - [62] (signed word*) sin16s_gen::sintab#10 ← phi( sin16s_gen::@10/(const signed word[128]) main::sintab1#0 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) - [62] (dword) sin16s_gen::x#10 ← phi( sin16s_gen::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(dword) sin16s_gen::x#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) +sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@12 sin16s_gen::@5 + [62] (word) sin16s_gen::i#10 ← phi( sin16s_gen::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@5/(word) sin16s_gen::i#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) + [62] (signed word*) sin16s_gen::sintab#10 ← phi( sin16s_gen::@12/(const signed word[128]) main::sintab1#0 sin16s_gen::@5/(signed word*) sin16s_gen::sintab#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) + [62] (dword) sin16s_gen::x#10 ← phi( sin16s_gen::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@5/(dword) sin16s_gen::x#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) [63] (word) sin16s_gen::x1#0 ← > (dword) sin16s_gen::x#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ) [64] if((word) sin16s_gen::x1#0<(const word) PI_u4f12#0) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ) - to:sin16s_gen::@5 -sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@1 + to:sin16s_gen::@6 +sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@1 [65] (word) sin16s_gen::x1#1 ← (word) sin16s_gen::x1#0 - (const word) PI_u4f12#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#1 ] ) to:sin16s_gen::@2 -sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@5 - [66] (byte) sin16s_gen::isUpper#10 ← phi( sin16s_gen::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) - [66] (word) sin16s_gen::x1#3 ← phi( sin16s_gen::@1/(word) sin16s_gen::x1#0 sin16s_gen::@5/(word) sin16s_gen::x1#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) +sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@6 + [66] (byte) sin16s_gen::isUpper#10 ← phi( sin16s_gen::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@6/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) + [66] (word) sin16s_gen::x1#3 ← phi( sin16s_gen::@1/(word) sin16s_gen::x1#0 sin16s_gen::@6/(word) sin16s_gen::x1#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) [67] if((word) sin16s_gen::x1#3<(const word) PI_HALF_u4f12#0) goto sin16s_gen::@3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) - to:sin16s_gen::@6 -sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@2 + to:sin16s_gen::@7 +sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@2 [68] (word) sin16s_gen::x1#2 ← (const word) PI_u4f12#0 - (word) sin16s_gen::x1#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#2 ] ) to:sin16s_gen::@3 -sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@6 - [69] (word) sin16s_gen::x1#10 ← phi( sin16s_gen::@2/(word) sin16s_gen::x1#3 sin16s_gen::@6/(word) sin16s_gen::x1#2 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] ) +sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@7 + [69] (word) sin16s_gen::x1#10 ← phi( sin16s_gen::@2/(word) sin16s_gen::x1#3 sin16s_gen::@7/(word) sin16s_gen::x1#2 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] ) [70] (word) mul_u4f12::v1#0 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 ] ) [71] (word) mul_u4f12::v2#0 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 mul_u4f12::v2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 mul_u4f12::v2#0 ] ) [72] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ) [73] (word) mul_u4f12::return#0 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] ) - to:sin16s_gen::@11 -sin16s_gen::@11: scope:[sin16s_gen] from sin16s_gen::@3 + to:sin16s_gen::@13 +sin16s_gen::@13: scope:[sin16s_gen] from sin16s_gen::@3 [74] (word) sin16s_gen::x2#0 ← (word) mul_u4f12::return#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ) [75] (word) mul_u4f12::v1#1 ← (word) sin16s_gen::x2#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] ) [76] (word) mul_u4f12::v2#1 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] ) [77] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ) [78] (word) mul_u4f12::return#1 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ) - to:sin16s_gen::@12 -sin16s_gen::@12: scope:[sin16s_gen] from sin16s_gen::@11 + to:sin16s_gen::@14 +sin16s_gen::@14: scope:[sin16s_gen] from sin16s_gen::@13 [79] (word) sin16s_gen::x3#0 ← (word) mul_u4f12::return#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ) [80] (word) mul16u::a#1 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#1 ] ) [81] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ) [82] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ) - to:sin16s_gen::@13 -sin16s_gen::@13: scope:[sin16s_gen] from sin16s_gen::@12 - [83] (dword~) sin16s_gen::$13 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ) - [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$13 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) + to:sin16s_gen::@15 +sin16s_gen::@15: scope:[sin16s_gen] from sin16s_gen::@14 + [83] (dword~) sin16s_gen::$14 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ) + [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) [85] (word) sin16s_gen::usinx#0 ← (word) sin16s_gen::x1#10 - (word) sin16s_gen::x3_6#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ) [86] (word) mul_u4f12::v1#2 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] ) [87] (word) mul_u4f12::v2#2 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] ) [88] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) [89] (word) mul_u4f12::return#2 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ) - to:sin16s_gen::@14 -sin16s_gen::@14: scope:[sin16s_gen] from sin16s_gen::@13 + to:sin16s_gen::@16 +sin16s_gen::@16: scope:[sin16s_gen] from sin16s_gen::@15 [90] (word) sin16s_gen::x4#0 ← (word) mul_u4f12::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ) [91] (word) mul_u4f12::v1#3 ← (word) sin16s_gen::x4#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] ) [92] (word) mul_u4f12::v2#3 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] ) [93] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) [94] (word) mul_u4f12::return#3 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ) - to:sin16s_gen::@15 -sin16s_gen::@15: scope:[sin16s_gen] from sin16s_gen::@14 + to:sin16s_gen::@17 +sin16s_gen::@17: scope:[sin16s_gen] from sin16s_gen::@16 [95] (word) sin16s_gen::x5#0 ← (word) mul_u4f12::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ) [96] (word) mul16u::a#2 ← (word) sin16s_gen::x5#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] ) [97] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ) [98] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ) - to:sin16s_gen::@16 -sin16s_gen::@16: scope:[sin16s_gen] from sin16s_gen::@15 - [99] (dword~) sin16s_gen::$18 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ) - [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$18 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) + to:sin16s_gen::@18 +sin16s_gen::@18: scope:[sin16s_gen] from sin16s_gen::@17 + [99] (dword~) sin16s_gen::$20 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ) + [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) [101] (word) sin16s_gen::usinx#1 ← (word) sin16s_gen::usinx#0 + (word) sin16s_gen::x5_128#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ) - [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) - to:sin16s_gen::@7 -sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@16 + [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@22 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) + to:sin16s_gen::@8 +sin16s_gen::@8: scope:[sin16s_gen] from sin16s_gen::@18 [103] (signed word) sin16s_gen::sinx#1 ← - (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ) - to:sin16s_gen::@4 -sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@20 sin16s_gen::@7 - [104] (signed word) sin16s_gen::sinx#2 ← phi( sin16s_gen::@20/(signed word~) sin16s_gen::sinx#4 sin16s_gen::@7/(signed word) sin16s_gen::sinx#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ) + to:sin16s_gen::@5 +sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@22 sin16s_gen::@8 + [104] (signed word) sin16s_gen::sinx#2 ← phi( sin16s_gen::@22/(signed word~) sin16s_gen::sinx#3 sin16s_gen::@8/(signed word) sin16s_gen::sinx#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ) [105] *((signed word*) sin16s_gen::sintab#10) ← (signed word) sin16s_gen::sinx#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) [106] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::i#10 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::i#10 sin16s_gen::sintab#1 ] ) [107] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#10 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#10 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#10 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ) [108] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#10 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) [109] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) to:sin16s_gen::@return -sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4 +sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@5 [110] return [ ] ( main:2::sin16s_gen:5 [ ] ) to:@return -sin16s_gen::@20: scope:[sin16s_gen] from sin16s_gen::@16 - [111] (signed word~) sin16s_gen::sinx#4 ← (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#4 ] ) - to:sin16s_gen::@4 -mul16u: scope:[mul16u] from mul_u4f12 sin16s_gen::@12 sin16s_gen::@15 - [112] (word) mul16u::a#7 ← phi( mul_u4f12/(word) mul16u::a#3 sin16s_gen::@12/(word) mul16u::a#1 sin16s_gen::@15/(word) mul16u::a#2 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] ) - [112] (word) mul16u::b#3 ← phi( mul_u4f12/(word) mul16u::b#2 sin16s_gen::@12/(const word) sin16s_gen::div6#0 sin16s_gen::@15/(const word) sin16s_gen::div128#0 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] ) +sin16s_gen::@22: scope:[sin16s_gen] from sin16s_gen::@18 + [111] (signed word~) sin16s_gen::sinx#3 ← (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] ) + to:sin16s_gen::@5 +mul16u: scope:[mul16u] from mul_u4f12 sin16s_gen::@14 sin16s_gen::@17 + [112] (word) mul16u::a#7 ← phi( mul_u4f12/(word) mul16u::a#3 sin16s_gen::@14/(word) mul16u::a#1 sin16s_gen::@17/(word) mul16u::a#2 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] ) + [112] (word) mul16u::b#3 ← phi( mul_u4f12/(word) mul16u::b#2 sin16s_gen::@14/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 sin16s_gen::@17/(dword/signed dword) 65536/(byte/word/signed word/dword/signed dword) 128 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] ) [113] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#3 [ mul16u::a#7 mul16u::mb#0 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#7 mul16u::mb#0 ] ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 @@ -237,9 +237,9 @@ mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 [121] (word) mul16u::a#0 ← (word) mul16u::a#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) [122] (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_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) to:mul16u::@1 -mul_u4f12: scope:[mul_u4f12] from sin16s_gen::@11 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@3 - [123] (word) mul_u4f12::v2#4 ← phi( sin16s_gen::@11/(word) mul_u4f12::v2#1 sin16s_gen::@13/(word) mul_u4f12::v2#2 sin16s_gen::@14/(word) mul_u4f12::v2#3 sin16s_gen::@3/(word) mul_u4f12::v2#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] ) - [123] (word) mul_u4f12::v1#4 ← phi( sin16s_gen::@11/(word) mul_u4f12::v1#1 sin16s_gen::@13/(word) mul_u4f12::v1#2 sin16s_gen::@14/(word) mul_u4f12::v1#3 sin16s_gen::@3/(word) mul_u4f12::v1#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] ) +mul_u4f12: scope:[mul_u4f12] from sin16s_gen::@13 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@3 + [123] (word) mul_u4f12::v2#4 ← phi( sin16s_gen::@13/(word) mul_u4f12::v2#1 sin16s_gen::@15/(word) mul_u4f12::v2#2 sin16s_gen::@16/(word) mul_u4f12::v2#3 sin16s_gen::@3/(word) mul_u4f12::v2#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] ) + [123] (word) mul_u4f12::v1#4 ← phi( sin16s_gen::@13/(word) mul_u4f12::v1#1 sin16s_gen::@15/(word) mul_u4f12::v1#2 sin16s_gen::@16/(word) mul_u4f12::v1#3 sin16s_gen::@3/(word) mul_u4f12::v1#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] ) [124] (word) mul16u::a#3 ← (word) mul_u4f12::v1#4 [ mul16u::a#3 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#3 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#3 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#3 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#3 mul_u4f12::v2#4 ] ) [125] (word) mul16u::b#2 ← (word) mul_u4f12::v2#4 [ mul16u::b#2 mul16u::a#3 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#2 mul16u::a#3 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#2 mul16u::a#3 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#2 mul16u::a#3 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#2 mul16u::a#3 ] ) [126] call mul16u param-assignment [ mul16u::res#2 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 ] ) @@ -253,10 +253,10 @@ mul_u4f12::@2: scope:[mul_u4f12] from mul_u4f12 mul_u4f12::@return: scope:[mul_u4f12] from mul_u4f12::@2 [131] return [ mul_u4f12::return#10 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#10 ] ) to:@return -divr16u: scope:[divr16u] from sin16s_gen sin16s_gen::@9 - [132] (word) divr16u::divisor#6 ← phi( sin16s_gen/(const word) main::wavelength#0 sin16s_gen::@9/(const word) main::wavelength#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) - [132] (word) divr16u::dividend#5 ← phi( sin16s_gen/(const word) PI2_u4f12#0 sin16s_gen::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) - [132] (word) divr16u::rem#10 ← phi( sin16s_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@9/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) +divr16u: scope:[divr16u] from sin16s_gen sin16s_gen::@11 + [132] (word) divr16u::divisor#6 ← phi( sin16s_gen/(const word) main::wavelength#0 sin16s_gen::@11/(const word) main::wavelength#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [132] (word) divr16u::dividend#5 ← phi( sin16s_gen/>(const dword) PI2_u4f28#0 sin16s_gen::@11/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [132] (word) divr16u::rem#10 ← phi( sin16s_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@11/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 [133] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.log b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.log index de7b9d50c..790047a6f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.log @@ -20,12 +20,6 @@ void main() { } } -// PI*2 in u[4.12] format -const word PI2_u4f12 = $6488; -// PI in u[4.12] format -const word PI_u4f12 = $3244; -// PI/2 in u[4.12] format -const word PI_HALF_u4f12 = $1922; // PI*2 in u[4.28] format const dword PI2_u4f28 = $6487ed51; // PI in u[4.28] format @@ -33,26 +27,29 @@ const dword PI_u4f28 = $3243f6a9; // PI/2 in u[4.28] format const dword PI_HALF_u4f28 = $1921FB54; +// PI*2 in u[4.12] format +const word PI2_u4f12 = $6488; +// PI in u[4.12] format +const word PI_u4f12 = $3244; +// PI/2 in u[4.12] format +const word PI_HALF_u4f12 = $1922; + // Generate signed word sinus table // sintab - the table to generate into // wavelength - the number of sinus points in a total sinus wavelength (the size of the table) void sin16s_gen(signed word* sintab, word wavelength) { // u[4.12] step = PI*2/wavelength - word stepi = divr16u(PI2_u4f12, wavelength, 0); - word stepf = divr16u(0, wavelength, rem16u); + word stepi = divr16u(>PI2_u4f28, wavelength, 0); + word stepf = divr16u(x; // u[4.12] byte isUpper = 0; if(x1 >= PI_u4f12 ) { - x1 = x1-PI_u4f12; + x1 = x1 - PI_u4f12; isUpper = 1; } if(x1 >= PI_HALF_u4f12 ) { @@ -61,22 +58,22 @@ void sin16s_gen(signed word* sintab, word wavelength) { // s[4.12] sinx = x - x^3/6 + x5/128; word x2 = mul_u4f12(x1, x1); // u[4.12] word x3 = mul_u4f12(x2, x1); // u[4.12] - word x3_6 = >mul16u(x3, div6); // u[4.12] + word x3_6 = >mul16u(x3, $10000/6); // u[4.12] - u[0.16] div6 = 1/6; word usinx = x1 - x3_6; // u[4.12] word x4 = mul_u4f12(x3, x1); // u[4.12] word x5 = mul_u4f12(x4, x1); // u[4.12] - word x5_128 = >mul16u(x5, div128); // u[4.12] + word x5_128 = >mul16u(x5, $10000/128); // u[4.12] - u[0.16] div128 = 1/128; usinx = usinx + x5_128; - signed word sinx = (signed word)usinx; // s[4.12] + signed word sinx; if(isUpper!=0) { - sinx = -sinx; - } + sinx = -(signed word)usinx; // s[4.12]; + } else { + sinx = (signed word)usinx; // s[4.12] + } *sintab = sinx; sintab = sintab + 2; x = x + step; } - - } // Calculate val*val for val u[4.12] to val*val u[4.28] @@ -815,23 +812,21 @@ main::@1: main::@return: return endproc // main() - (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 - (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 - (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 (dword) PI_u4f28 ← (dword/signed dword) 843314857 (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 + (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 + (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 + (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 proc (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) - (word~) sin16s_gen::$0 ← call divr16u (word) PI2_u4f12 (word) sin16s_gen::wavelength (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s_gen::stepi ← (word~) sin16s_gen::$0 - (word~) sin16s_gen::$1 ← call divr16u (byte/signed byte/word/signed word/dword/signed dword) 0 (word) sin16s_gen::wavelength (word) rem16u - (word) sin16s_gen::stepf ← (word~) sin16s_gen::$1 + (word~) sin16s_gen::$0 ← > (dword) PI2_u4f28 + (word~) sin16s_gen::$1 ← call divr16u (word~) sin16s_gen::$0 (word) sin16s_gen::wavelength (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s_gen::stepi ← (word~) sin16s_gen::$1 + (word~) sin16s_gen::$2 ← < (dword) PI2_u4f28 + (word~) sin16s_gen::$3 ← call divr16u (word~) sin16s_gen::$2 (word) sin16s_gen::wavelength (word) rem16u + (word) sin16s_gen::stepf ← (word~) sin16s_gen::$3 (dword) sin16s_gen::step ← { (word) sin16s_gen::stepi, (word) sin16s_gen::stepf } (dword) sin16s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word/signed word/dword/signed dword~) sin16s_gen::$2 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 - (word) sin16s_gen::div6 ← (word/signed word/dword/signed dword~) sin16s_gen::$2 - (word/signed word/dword/signed dword~) sin16s_gen::$3 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 - (word) sin16s_gen::div128 ← (word/signed word/dword/signed dword~) sin16s_gen::$3 (word) sin16s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@1: (word~) sin16s_gen::$4 ← > (dword) sin16s_gen::x @@ -854,36 +849,41 @@ sin16s_gen::@3: (word) sin16s_gen::x2 ← (word~) sin16s_gen::$11 (word~) sin16s_gen::$12 ← call mul_u4f12 (word) sin16s_gen::x2 (word) sin16s_gen::x1 (word) sin16s_gen::x3 ← (word~) sin16s_gen::$12 - (dword~) sin16s_gen::$13 ← call mul16u (word) sin16s_gen::x3 (word) sin16s_gen::div6 - (word~) sin16s_gen::$14 ← > (dword~) sin16s_gen::$13 - (word) sin16s_gen::x3_6 ← (word~) sin16s_gen::$14 - (word~) sin16s_gen::$15 ← (word) sin16s_gen::x1 - (word) sin16s_gen::x3_6 - (word) sin16s_gen::usinx ← (word~) sin16s_gen::$15 - (word~) sin16s_gen::$16 ← call mul_u4f12 (word) sin16s_gen::x3 (word) sin16s_gen::x1 - (word) sin16s_gen::x4 ← (word~) sin16s_gen::$16 - (word~) sin16s_gen::$17 ← call mul_u4f12 (word) sin16s_gen::x4 (word) sin16s_gen::x1 - (word) sin16s_gen::x5 ← (word~) sin16s_gen::$17 - (dword~) sin16s_gen::$18 ← call mul16u (word) sin16s_gen::x5 (word) sin16s_gen::div128 - (word~) sin16s_gen::$19 ← > (dword~) sin16s_gen::$18 - (word) sin16s_gen::x5_128 ← (word~) sin16s_gen::$19 - (word~) sin16s_gen::$20 ← (word) sin16s_gen::usinx + (word) sin16s_gen::x5_128 - (word) sin16s_gen::usinx ← (word~) sin16s_gen::$20 - (signed word~) sin16s_gen::$21 ← ((signed word)) (word) sin16s_gen::usinx - (signed word) sin16s_gen::sinx ← (signed word~) sin16s_gen::$21 - (boolean~) sin16s_gen::$22 ← (byte) sin16s_gen::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) sin16s_gen::$23 ← ! (boolean~) sin16s_gen::$22 - if((boolean~) sin16s_gen::$23) goto sin16s_gen::@4 - (signed word~) sin16s_gen::$24 ← - (signed word) sin16s_gen::sinx - (signed word) sin16s_gen::sinx ← (signed word~) sin16s_gen::$24 + (word/signed word/dword/signed dword~) sin16s_gen::$13 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (dword~) sin16s_gen::$14 ← call mul16u (word) sin16s_gen::x3 (word/signed word/dword/signed dword~) sin16s_gen::$13 + (word~) sin16s_gen::$15 ← > (dword~) sin16s_gen::$14 + (word) sin16s_gen::x3_6 ← (word~) sin16s_gen::$15 + (word~) sin16s_gen::$16 ← (word) sin16s_gen::x1 - (word) sin16s_gen::x3_6 + (word) sin16s_gen::usinx ← (word~) sin16s_gen::$16 + (word~) sin16s_gen::$17 ← call mul_u4f12 (word) sin16s_gen::x3 (word) sin16s_gen::x1 + (word) sin16s_gen::x4 ← (word~) sin16s_gen::$17 + (word~) sin16s_gen::$18 ← call mul_u4f12 (word) sin16s_gen::x4 (word) sin16s_gen::x1 + (word) sin16s_gen::x5 ← (word~) sin16s_gen::$18 + (word/signed word/dword/signed dword~) sin16s_gen::$19 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 + (dword~) sin16s_gen::$20 ← call mul16u (word) sin16s_gen::x5 (word/signed word/dword/signed dword~) sin16s_gen::$19 + (word~) sin16s_gen::$21 ← > (dword~) sin16s_gen::$20 + (word) sin16s_gen::x5_128 ← (word~) sin16s_gen::$21 + (word~) sin16s_gen::$22 ← (word) sin16s_gen::usinx + (word) sin16s_gen::x5_128 + (word) sin16s_gen::usinx ← (word~) sin16s_gen::$22 + (boolean~) sin16s_gen::$23 ← (byte) sin16s_gen::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s_gen::$24 ← ! (boolean~) sin16s_gen::$23 + if((boolean~) sin16s_gen::$24) goto sin16s_gen::@4 + (signed word~) sin16s_gen::$25 ← ((signed word)) (word) sin16s_gen::usinx + (signed word~) sin16s_gen::$26 ← - (signed word~) sin16s_gen::$25 + (signed word) sin16s_gen::sinx ← (signed word~) sin16s_gen::$26 + goto sin16s_gen::@5 sin16s_gen::@4: + (signed word~) sin16s_gen::$27 ← ((signed word)) (word) sin16s_gen::usinx + (signed word) sin16s_gen::sinx ← (signed word~) sin16s_gen::$27 +sin16s_gen::@5: *((signed word*) sin16s_gen::sintab) ← (signed word) sin16s_gen::sinx - (signed word*~) sin16s_gen::$25 ← (signed word*) sin16s_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_gen::sintab ← (signed word*~) sin16s_gen::$25 - (dword~) sin16s_gen::$26 ← (dword) sin16s_gen::x + (dword) sin16s_gen::step - (dword) sin16s_gen::x ← (dword~) sin16s_gen::$26 + (signed word*~) sin16s_gen::$28 ← (signed word*) sin16s_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) sin16s_gen::sintab ← (signed word*~) sin16s_gen::$28 + (dword~) sin16s_gen::$29 ← (dword) sin16s_gen::x + (dword) sin16s_gen::step + (dword) sin16s_gen::x ← (dword~) sin16s_gen::$29 (word) sin16s_gen::i ← ++ (word) sin16s_gen::i - (boolean~) sin16s_gen::$27 ← (word) sin16s_gen::i < (word) sin16s_gen::wavelength - if((boolean~) sin16s_gen::$27) goto sin16s_gen::@1 + (boolean~) sin16s_gen::$30 ← (word) sin16s_gen::i < (word) sin16s_gen::wavelength + if((boolean~) sin16s_gen::$30) goto sin16s_gen::@1 sin16s_gen::@return: return endproc // sin16s_gen() @@ -1225,23 +1225,26 @@ SYMBOLS (word~) sin16s_gen::$10 (word~) sin16s_gen::$11 (word~) sin16s_gen::$12 -(dword~) sin16s_gen::$13 -(word~) sin16s_gen::$14 +(word/signed word/dword/signed dword~) sin16s_gen::$13 +(dword~) sin16s_gen::$14 (word~) sin16s_gen::$15 (word~) sin16s_gen::$16 (word~) sin16s_gen::$17 -(dword~) sin16s_gen::$18 -(word~) sin16s_gen::$19 -(word/signed word/dword/signed dword~) sin16s_gen::$2 -(word~) sin16s_gen::$20 -(signed word~) sin16s_gen::$21 -(boolean~) sin16s_gen::$22 +(word~) sin16s_gen::$18 +(word/signed word/dword/signed dword~) sin16s_gen::$19 +(word~) sin16s_gen::$2 +(dword~) sin16s_gen::$20 +(word~) sin16s_gen::$21 +(word~) sin16s_gen::$22 (boolean~) sin16s_gen::$23 -(signed word~) sin16s_gen::$24 -(signed word*~) sin16s_gen::$25 -(dword~) sin16s_gen::$26 -(boolean~) sin16s_gen::$27 -(word/signed word/dword/signed dword~) sin16s_gen::$3 +(boolean~) sin16s_gen::$24 +(signed word~) sin16s_gen::$25 +(signed word~) sin16s_gen::$26 +(signed word~) sin16s_gen::$27 +(signed word*~) sin16s_gen::$28 +(dword~) sin16s_gen::$29 +(word~) sin16s_gen::$3 +(boolean~) sin16s_gen::$30 (word~) sin16s_gen::$4 (boolean~) sin16s_gen::$5 (boolean~) sin16s_gen::$6 @@ -1252,9 +1255,8 @@ SYMBOLS (label) sin16s_gen::@2 (label) sin16s_gen::@3 (label) sin16s_gen::@4 +(label) sin16s_gen::@5 (label) sin16s_gen::@return -(word) sin16s_gen::div128 -(word) sin16s_gen::div6 (word) sin16s_gen::i (byte) sin16s_gen::isUpper (signed word*) sin16s_gen::sintab @@ -1903,90 +1905,95 @@ main::@return: scope:[main] from main::@2 return to:@return @21: scope:[] from @20 - (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 - (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 - (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 (dword) PI_u4f28 ← (dword/signed dword) 843314857 (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 + (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 + (word) PI_u4f12 ← (word/signed word/dword/signed dword) 12868 + (word) PI_HALF_u4f12 ← (word/signed word/dword/signed dword) 6434 to:@22 sin16s_gen: scope:[sin16s_gen] from - (word~) sin16s_gen::$0 ← call divr16u (word) PI2_u4f12 (word) sin16s_gen::wavelength (byte/signed byte/word/signed word/dword/signed dword) 0 - (word) sin16s_gen::stepi ← (word~) sin16s_gen::$0 - (word~) sin16s_gen::$1 ← call divr16u (byte/signed byte/word/signed word/dword/signed dword) 0 (word) sin16s_gen::wavelength (word) rem16u - (word) sin16s_gen::stepf ← (word~) sin16s_gen::$1 + (word~) sin16s_gen::$0 ← > (dword) PI2_u4f28 + (word~) sin16s_gen::$1 ← call divr16u (word~) sin16s_gen::$0 (word) sin16s_gen::wavelength (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s_gen::stepi ← (word~) sin16s_gen::$1 + (word~) sin16s_gen::$2 ← < (dword) PI2_u4f28 + (word~) sin16s_gen::$3 ← call divr16u (word~) sin16s_gen::$2 (word) sin16s_gen::wavelength (word) rem16u + (word) sin16s_gen::stepf ← (word~) sin16s_gen::$3 (dword) sin16s_gen::step ← { (word) sin16s_gen::stepi, (word) sin16s_gen::stepf } (dword) sin16s_gen::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word/signed word/dword/signed dword~) sin16s_gen::$2 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 - (word) sin16s_gen::div6 ← (word/signed word/dword/signed dword~) sin16s_gen::$2 - (word/signed word/dword/signed dword~) sin16s_gen::$3 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 - (word) sin16s_gen::div128 ← (word/signed word/dword/signed dword~) sin16s_gen::$3 (word) sin16s_gen::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:sin16s_gen::@1 -sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen sin16s_gen::@4 +sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen sin16s_gen::@5 (word~) sin16s_gen::$4 ← > (dword) sin16s_gen::x (word) sin16s_gen::x1 ← (word~) sin16s_gen::$4 (byte) sin16s_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 0 (boolean~) sin16s_gen::$5 ← (word) sin16s_gen::x1 >= (word) PI_u4f12 (boolean~) sin16s_gen::$6 ← ! (boolean~) sin16s_gen::$5 if((boolean~) sin16s_gen::$6) goto sin16s_gen::@2 - to:sin16s_gen::@5 -sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@5 + to:sin16s_gen::@6 +sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@6 (boolean~) sin16s_gen::$8 ← (word) sin16s_gen::x1 >= (word) PI_HALF_u4f12 (boolean~) sin16s_gen::$9 ← ! (boolean~) sin16s_gen::$8 if((boolean~) sin16s_gen::$9) goto sin16s_gen::@3 - to:sin16s_gen::@6 -sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@1 + to:sin16s_gen::@7 +sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@1 (word~) sin16s_gen::$7 ← (word) sin16s_gen::x1 - (word) PI_u4f12 (word) sin16s_gen::x1 ← (word~) sin16s_gen::$7 (byte) sin16s_gen::isUpper ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:sin16s_gen::@2 -sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@6 +sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@7 (word~) sin16s_gen::$11 ← call mul_u4f12 (word) sin16s_gen::x1 (word) sin16s_gen::x1 (word) sin16s_gen::x2 ← (word~) sin16s_gen::$11 (word~) sin16s_gen::$12 ← call mul_u4f12 (word) sin16s_gen::x2 (word) sin16s_gen::x1 (word) sin16s_gen::x3 ← (word~) sin16s_gen::$12 - (dword~) sin16s_gen::$13 ← call mul16u (word) sin16s_gen::x3 (word) sin16s_gen::div6 - (word~) sin16s_gen::$14 ← > (dword~) sin16s_gen::$13 - (word) sin16s_gen::x3_6 ← (word~) sin16s_gen::$14 - (word~) sin16s_gen::$15 ← (word) sin16s_gen::x1 - (word) sin16s_gen::x3_6 - (word) sin16s_gen::usinx ← (word~) sin16s_gen::$15 - (word~) sin16s_gen::$16 ← call mul_u4f12 (word) sin16s_gen::x3 (word) sin16s_gen::x1 - (word) sin16s_gen::x4 ← (word~) sin16s_gen::$16 - (word~) sin16s_gen::$17 ← call mul_u4f12 (word) sin16s_gen::x4 (word) sin16s_gen::x1 - (word) sin16s_gen::x5 ← (word~) sin16s_gen::$17 - (dword~) sin16s_gen::$18 ← call mul16u (word) sin16s_gen::x5 (word) sin16s_gen::div128 - (word~) sin16s_gen::$19 ← > (dword~) sin16s_gen::$18 - (word) sin16s_gen::x5_128 ← (word~) sin16s_gen::$19 - (word~) sin16s_gen::$20 ← (word) sin16s_gen::usinx + (word) sin16s_gen::x5_128 - (word) sin16s_gen::usinx ← (word~) sin16s_gen::$20 - (signed word~) sin16s_gen::$21 ← ((signed word)) (word) sin16s_gen::usinx - (signed word) sin16s_gen::sinx ← (signed word~) sin16s_gen::$21 - (boolean~) sin16s_gen::$22 ← (byte) sin16s_gen::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) sin16s_gen::$23 ← ! (boolean~) sin16s_gen::$22 - if((boolean~) sin16s_gen::$23) goto sin16s_gen::@4 - to:sin16s_gen::@7 -sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@2 + (word/signed word/dword/signed dword~) sin16s_gen::$13 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 + (dword~) sin16s_gen::$14 ← call mul16u (word) sin16s_gen::x3 (word/signed word/dword/signed dword~) sin16s_gen::$13 + (word~) sin16s_gen::$15 ← > (dword~) sin16s_gen::$14 + (word) sin16s_gen::x3_6 ← (word~) sin16s_gen::$15 + (word~) sin16s_gen::$16 ← (word) sin16s_gen::x1 - (word) sin16s_gen::x3_6 + (word) sin16s_gen::usinx ← (word~) sin16s_gen::$16 + (word~) sin16s_gen::$17 ← call mul_u4f12 (word) sin16s_gen::x3 (word) sin16s_gen::x1 + (word) sin16s_gen::x4 ← (word~) sin16s_gen::$17 + (word~) sin16s_gen::$18 ← call mul_u4f12 (word) sin16s_gen::x4 (word) sin16s_gen::x1 + (word) sin16s_gen::x5 ← (word~) sin16s_gen::$18 + (word/signed word/dword/signed dword~) sin16s_gen::$19 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 + (dword~) sin16s_gen::$20 ← call mul16u (word) sin16s_gen::x5 (word/signed word/dword/signed dword~) sin16s_gen::$19 + (word~) sin16s_gen::$21 ← > (dword~) sin16s_gen::$20 + (word) sin16s_gen::x5_128 ← (word~) sin16s_gen::$21 + (word~) sin16s_gen::$22 ← (word) sin16s_gen::usinx + (word) sin16s_gen::x5_128 + (word) sin16s_gen::usinx ← (word~) sin16s_gen::$22 + (boolean~) sin16s_gen::$23 ← (byte) sin16s_gen::isUpper != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s_gen::$24 ← ! (boolean~) sin16s_gen::$23 + if((boolean~) sin16s_gen::$24) goto sin16s_gen::@4 + to:sin16s_gen::@8 +sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@2 (word~) sin16s_gen::$10 ← (word) PI_u4f12 - (word) sin16s_gen::x1 (word) sin16s_gen::x1 ← (word~) sin16s_gen::$10 to:sin16s_gen::@3 -sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@7 +sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@9 + (signed word~) sin16s_gen::$27 ← ((signed word)) (word) sin16s_gen::usinx + (signed word) sin16s_gen::sinx ← (signed word~) sin16s_gen::$27 + to:sin16s_gen::@5 +sin16s_gen::@8: scope:[sin16s_gen] from sin16s_gen::@3 + (signed word~) sin16s_gen::$25 ← ((signed word)) (word) sin16s_gen::usinx + (signed word~) sin16s_gen::$26 ← - (signed word~) sin16s_gen::$25 + (signed word) sin16s_gen::sinx ← (signed word~) sin16s_gen::$26 + to:sin16s_gen::@5 +sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@4 sin16s_gen::@8 *((signed word*) sin16s_gen::sintab) ← (signed word) sin16s_gen::sinx - (signed word*~) sin16s_gen::$25 ← (signed word*) sin16s_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_gen::sintab ← (signed word*~) sin16s_gen::$25 - (dword~) sin16s_gen::$26 ← (dword) sin16s_gen::x + (dword) sin16s_gen::step - (dword) sin16s_gen::x ← (dword~) sin16s_gen::$26 + (signed word*~) sin16s_gen::$28 ← (signed word*) sin16s_gen::sintab + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) sin16s_gen::sintab ← (signed word*~) sin16s_gen::$28 + (dword~) sin16s_gen::$29 ← (dword) sin16s_gen::x + (dword) sin16s_gen::step + (dword) sin16s_gen::x ← (dword~) sin16s_gen::$29 (word) sin16s_gen::i ← ++ (word) sin16s_gen::i - (boolean~) sin16s_gen::$27 ← (word) sin16s_gen::i < (word) sin16s_gen::wavelength - if((boolean~) sin16s_gen::$27) goto sin16s_gen::@1 - to:sin16s_gen::@8 -sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@3 - (signed word~) sin16s_gen::$24 ← - (signed word) sin16s_gen::sinx - (signed word) sin16s_gen::sinx ← (signed word~) sin16s_gen::$24 + (boolean~) sin16s_gen::$30 ← (word) sin16s_gen::i < (word) sin16s_gen::wavelength + if((boolean~) sin16s_gen::$30) goto sin16s_gen::@1 + to:sin16s_gen::@10 +sin16s_gen::@9: scope:[sin16s_gen] from to:sin16s_gen::@4 -sin16s_gen::@8: scope:[sin16s_gen] from sin16s_gen::@4 +sin16s_gen::@10: scope:[sin16s_gen] from sin16s_gen::@5 to:sin16s_gen::@return -sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@8 +sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@10 return to:@return @22: scope:[] from @21 @@ -2033,9 +2040,9 @@ Eliminating unused variable - keeping the call (void~) main::$0 Eliminating unused variable - keeping the call (void~) main::$1 Eliminating unused variable - keeping the call (void~) main::$2 Eliminating unused variable - keeping the call (void~) main::$3 -Eliminating unused variable (dword) PI2_u4f28 and assignment [107] (dword) PI2_u4f28 ← (dword/signed dword) 1686629713 -Eliminating unused variable (dword) PI_u4f28 and assignment [108] (dword) PI_u4f28 ← (dword/signed dword) 843314857 -Eliminating unused variable (dword) PI_HALF_u4f28 and assignment [109] (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 +Eliminating unused variable (dword) PI_u4f28 and assignment [105] (dword) PI_u4f28 ← (dword/signed dword) 843314857 +Eliminating unused variable (dword) PI_HALF_u4f28 and assignment [106] (dword) PI_HALF_u4f28 ← (dword/signed dword) 421657428 +Eliminating unused variable (word) PI2_u4f12 and assignment [107] (word) PI2_u4f12 ← (word/signed word/dword/signed dword) 25736 Creating constant string variable for inline (const string) print_byte::$4 "0123456789abcdef" Creating constant string variable for inline (const string) main::str " @" Removing empty block @1 @@ -2066,7 +2073,8 @@ Removing empty block @18 Removing empty block @19 Removing empty block @20 Removing empty block main::@2 -Removing empty block sin16s_gen::@8 +Removing empty block sin16s_gen::@9 +Removing empty block sin16s_gen::@10 Removing empty block @22 Removing empty block mul_u4f12::@1 PROCEDURE MODIFY VARIABLE ANALYSIS @@ -2096,6 +2104,7 @@ Completing Phi functions... Completing Phi functions... Completing Phi functions... Completing Phi functions... +Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from @@ -2103,10 +2112,10 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @2: scope:[] from @begin (word) rem16u#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:@10 -divr16u: scope:[divr16u] from sin16s_gen sin16s_gen::@9 - (word) divr16u::divisor#6 ← phi( sin16s_gen/(word) divr16u::divisor#0 sin16s_gen::@9/(word) divr16u::divisor#1 ) - (word) divr16u::dividend#5 ← phi( sin16s_gen/(word) divr16u::dividend#1 sin16s_gen::@9/(word) divr16u::dividend#2 ) - (word) divr16u::rem#10 ← phi( sin16s_gen/(word) divr16u::rem#3 sin16s_gen::@9/(word) divr16u::rem#4 ) +divr16u: scope:[divr16u] from sin16s_gen sin16s_gen::@11 + (word) divr16u::divisor#6 ← phi( sin16s_gen/(word) divr16u::divisor#0 sin16s_gen::@11/(word) divr16u::divisor#1 ) + (word) divr16u::dividend#5 ← phi( sin16s_gen/(word) divr16u::dividend#1 sin16s_gen::@11/(word) divr16u::dividend#2 ) + (word) divr16u::rem#10 ← phi( sin16s_gen/(word) divr16u::rem#3 sin16s_gen::@11/(word) divr16u::rem#4 ) (word) divr16u::quotient#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) divr16u::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:divr16u::@1 @@ -2180,9 +2189,9 @@ divr16u::@return: scope:[divr16u] from divr16u::@6 (word) rem16u#2 ← (word) rem16u#9 return to:@return -mul16u: scope:[mul16u] from mul_u4f12 sin16s_gen::@12 sin16s_gen::@15 - (word) mul16u::a#7 ← phi( mul_u4f12/(word) mul16u::a#3 sin16s_gen::@12/(word) mul16u::a#1 sin16s_gen::@15/(word) mul16u::a#2 ) - (word) mul16u::b#3 ← phi( mul_u4f12/(word) mul16u::b#2 sin16s_gen::@12/(word) mul16u::b#0 sin16s_gen::@15/(word) mul16u::b#1 ) +mul16u: scope:[mul16u] from mul_u4f12 sin16s_gen::@14 sin16s_gen::@17 + (word) mul16u::a#7 ← phi( mul_u4f12/(word) mul16u::a#3 sin16s_gen::@14/(word) mul16u::a#1 sin16s_gen::@17/(word) mul16u::a#2 ) + (word) mul16u::b#3 ← phi( mul_u4f12/(word) mul16u::b#2 sin16s_gen::@14/(word) mul16u::b#0 sin16s_gen::@17/(word) mul16u::b#1 ) (dword) mul16u::res#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#3 to:mul16u::@1 @@ -2446,122 +2455,110 @@ main::@return: scope:[main] from main::@6 (byte*) char_cursor#51 ← phi( @10/(byte*) char_cursor#0 ) (byte*) line_cursor#15 ← phi( @10/(byte*) line_cursor#0 ) (word) rem16u#24 ← phi( @10/(word) rem16u#26 ) - (word) PI2_u4f12#0 ← (word/signed word/dword/signed dword) 25736 + (dword) PI2_u4f28#0 ← (dword/signed dword) 1686629713 (word) PI_u4f12#0 ← (word/signed word/dword/signed dword) 12868 (word) PI_HALF_u4f12#0 ← (word/signed word/dword/signed dword) 6434 to:@23 sin16s_gen: scope:[sin16s_gen] from main - (signed word*) sin16s_gen::sintab#17 ← phi( main/(signed word*) sin16s_gen::sintab#0 ) + (signed word*) sin16s_gen::sintab#18 ← phi( main/(signed word*) sin16s_gen::sintab#0 ) (word) rem16u#18 ← phi( main/(word) rem16u#16 ) (word) sin16s_gen::wavelength#1 ← phi( main/(word) sin16s_gen::wavelength#0 ) - (word) divr16u::dividend#1 ← (word) PI2_u4f12#0 + (word~) sin16s_gen::$0 ← > (dword) PI2_u4f28#0 + (word) divr16u::dividend#1 ← (word~) sin16s_gen::$0 (word) divr16u::divisor#0 ← (word) sin16s_gen::wavelength#1 (word) divr16u::rem#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0 call divr16u param-assignment (word) divr16u::return#2 ← (word) divr16u::return#1 - to:sin16s_gen::@9 -sin16s_gen::@9: scope:[sin16s_gen] from sin16s_gen - (signed word*) sin16s_gen::sintab#16 ← phi( sin16s_gen/(signed word*) sin16s_gen::sintab#17 ) + to:sin16s_gen::@11 +sin16s_gen::@11: scope:[sin16s_gen] from sin16s_gen + (signed word*) sin16s_gen::sintab#17 ← phi( sin16s_gen/(signed word*) sin16s_gen::sintab#18 ) (word) sin16s_gen::wavelength#2 ← phi( sin16s_gen/(word) sin16s_gen::wavelength#1 ) (word) rem16u#12 ← phi( sin16s_gen/(word) rem16u#2 ) (word) divr16u::return#5 ← phi( sin16s_gen/(word) divr16u::return#2 ) - (word~) sin16s_gen::$0 ← (word) divr16u::return#5 + (word~) sin16s_gen::$1 ← (word) divr16u::return#5 (word) rem16u#5 ← (word) rem16u#12 - (word) sin16s_gen::stepi#0 ← (word~) sin16s_gen::$0 - (word) divr16u::dividend#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + (word) sin16s_gen::stepi#0 ← (word~) sin16s_gen::$1 + (word~) sin16s_gen::$2 ← < (dword) PI2_u4f28#0 + (word) divr16u::dividend#2 ← (word~) sin16s_gen::$2 (word) divr16u::divisor#1 ← (word) sin16s_gen::wavelength#2 (word) divr16u::rem#4 ← (word) rem16u#5 call divr16u param-assignment (word) divr16u::return#3 ← (word) divr16u::return#1 - to:sin16s_gen::@10 -sin16s_gen::@10: scope:[sin16s_gen] from sin16s_gen::@9 - (word) sin16s_gen::wavelength#16 ← phi( sin16s_gen::@9/(word) sin16s_gen::wavelength#2 ) - (signed word*) sin16s_gen::sintab#15 ← phi( sin16s_gen::@9/(signed word*) sin16s_gen::sintab#16 ) - (word) sin16s_gen::stepi#1 ← phi( sin16s_gen::@9/(word) sin16s_gen::stepi#0 ) - (word) rem16u#13 ← phi( sin16s_gen::@9/(word) rem16u#2 ) - (word) divr16u::return#6 ← phi( sin16s_gen::@9/(word) divr16u::return#3 ) - (word~) sin16s_gen::$1 ← (word) divr16u::return#6 + to:sin16s_gen::@12 +sin16s_gen::@12: scope:[sin16s_gen] from sin16s_gen::@11 + (word) sin16s_gen::wavelength#17 ← phi( sin16s_gen::@11/(word) sin16s_gen::wavelength#2 ) + (signed word*) sin16s_gen::sintab#16 ← phi( sin16s_gen::@11/(signed word*) sin16s_gen::sintab#17 ) + (word) sin16s_gen::stepi#1 ← phi( sin16s_gen::@11/(word) sin16s_gen::stepi#0 ) + (word) rem16u#13 ← phi( sin16s_gen::@11/(word) rem16u#2 ) + (word) divr16u::return#6 ← phi( sin16s_gen::@11/(word) divr16u::return#3 ) + (word~) sin16s_gen::$3 ← (word) divr16u::return#6 (word) rem16u#6 ← (word) rem16u#13 - (word) sin16s_gen::stepf#0 ← (word~) sin16s_gen::$1 + (word) sin16s_gen::stepf#0 ← (word~) sin16s_gen::$3 (dword) sin16s_gen::step#0 ← { (word) sin16s_gen::stepi#1, (word) sin16s_gen::stepf#0 } (dword) sin16s_gen::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 - (word/signed word/dword/signed dword~) sin16s_gen::$2 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 - (word) sin16s_gen::div6#0 ← (word/signed word/dword/signed dword~) sin16s_gen::$2 - (word/signed word/dword/signed dword~) sin16s_gen::$3 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 - (word) sin16s_gen::div128#0 ← (word/signed word/dword/signed dword~) sin16s_gen::$3 (word) sin16s_gen::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:sin16s_gen::@1 -sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@10 sin16s_gen::@4 - (word) rem16u#36 ← phi( sin16s_gen::@10/(word) rem16u#6 sin16s_gen::@4/(word) rem16u#19 ) - (word) sin16s_gen::wavelength#14 ← phi( sin16s_gen::@10/(word) sin16s_gen::wavelength#16 sin16s_gen::@4/(word) sin16s_gen::wavelength#3 ) - (word) sin16s_gen::i#13 ← phi( sin16s_gen::@10/(word) sin16s_gen::i#0 sin16s_gen::@4/(word) sin16s_gen::i#1 ) - (dword) sin16s_gen::step#12 ← phi( sin16s_gen::@10/(dword) sin16s_gen::step#0 sin16s_gen::@4/(dword) sin16s_gen::step#1 ) - (signed word*) sin16s_gen::sintab#13 ← phi( sin16s_gen::@10/(signed word*) sin16s_gen::sintab#15 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#1 ) - (word) sin16s_gen::div128#9 ← phi( sin16s_gen::@10/(word) sin16s_gen::div128#0 sin16s_gen::@4/(word) sin16s_gen::div128#11 ) - (word) sin16s_gen::div6#6 ← phi( sin16s_gen::@10/(word) sin16s_gen::div6#0 sin16s_gen::@4/(word) sin16s_gen::div6#8 ) - (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@10/(dword) sin16s_gen::x#0 sin16s_gen::@4/(dword) sin16s_gen::x#1 ) +sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@12 sin16s_gen::@5 + (word) rem16u#37 ← phi( sin16s_gen::@12/(word) rem16u#6 sin16s_gen::@5/(word) rem16u#19 ) + (word) sin16s_gen::wavelength#15 ← phi( sin16s_gen::@12/(word) sin16s_gen::wavelength#17 sin16s_gen::@5/(word) sin16s_gen::wavelength#3 ) + (word) sin16s_gen::i#14 ← phi( sin16s_gen::@12/(word) sin16s_gen::i#0 sin16s_gen::@5/(word) sin16s_gen::i#1 ) + (dword) sin16s_gen::step#13 ← phi( sin16s_gen::@12/(dword) sin16s_gen::step#0 sin16s_gen::@5/(dword) sin16s_gen::step#1 ) + (signed word*) sin16s_gen::sintab#14 ← phi( sin16s_gen::@12/(signed word*) sin16s_gen::sintab#16 sin16s_gen::@5/(signed word*) sin16s_gen::sintab#1 ) + (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@12/(dword) sin16s_gen::x#0 sin16s_gen::@5/(dword) sin16s_gen::x#1 ) (word~) sin16s_gen::$4 ← > (dword) sin16s_gen::x#2 (word) sin16s_gen::x1#0 ← (word~) sin16s_gen::$4 (byte) sin16s_gen::isUpper#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (boolean~) sin16s_gen::$5 ← (word) sin16s_gen::x1#0 >= (word) PI_u4f12#0 (boolean~) sin16s_gen::$6 ← ! (boolean~) sin16s_gen::$5 if((boolean~) sin16s_gen::$6) goto sin16s_gen::@2 - to:sin16s_gen::@5 -sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@5 - (word) rem16u#34 ← phi( sin16s_gen::@1/(word) rem16u#36 sin16s_gen::@5/(word) rem16u#37 ) - (word) sin16s_gen::wavelength#12 ← phi( sin16s_gen::@1/(word) sin16s_gen::wavelength#14 sin16s_gen::@5/(word) sin16s_gen::wavelength#15 ) - (word) sin16s_gen::i#11 ← phi( sin16s_gen::@1/(word) sin16s_gen::i#13 sin16s_gen::@5/(word) sin16s_gen::i#14 ) - (dword) sin16s_gen::step#10 ← phi( sin16s_gen::@1/(dword) sin16s_gen::step#12 sin16s_gen::@5/(dword) sin16s_gen::step#13 ) - (dword) sin16s_gen::x#12 ← phi( sin16s_gen::@1/(dword) sin16s_gen::x#2 sin16s_gen::@5/(dword) sin16s_gen::x#14 ) - (signed word*) sin16s_gen::sintab#11 ← phi( sin16s_gen::@1/(signed word*) sin16s_gen::sintab#13 sin16s_gen::@5/(signed word*) sin16s_gen::sintab#14 ) - (byte) sin16s_gen::isUpper#9 ← phi( sin16s_gen::@1/(byte) sin16s_gen::isUpper#0 sin16s_gen::@5/(byte) sin16s_gen::isUpper#1 ) - (word) sin16s_gen::div128#7 ← phi( sin16s_gen::@1/(word) sin16s_gen::div128#9 sin16s_gen::@5/(word) sin16s_gen::div128#10 ) - (word) sin16s_gen::div6#4 ← phi( sin16s_gen::@1/(word) sin16s_gen::div6#6 sin16s_gen::@5/(word) sin16s_gen::div6#7 ) - (word) sin16s_gen::x1#3 ← phi( sin16s_gen::@1/(word) sin16s_gen::x1#0 sin16s_gen::@5/(word) sin16s_gen::x1#1 ) + to:sin16s_gen::@6 +sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@6 + (word) rem16u#35 ← phi( sin16s_gen::@1/(word) rem16u#37 sin16s_gen::@6/(word) rem16u#38 ) + (word) sin16s_gen::wavelength#13 ← phi( sin16s_gen::@1/(word) sin16s_gen::wavelength#15 sin16s_gen::@6/(word) sin16s_gen::wavelength#16 ) + (word) sin16s_gen::i#12 ← phi( sin16s_gen::@1/(word) sin16s_gen::i#14 sin16s_gen::@6/(word) sin16s_gen::i#15 ) + (dword) sin16s_gen::step#11 ← phi( sin16s_gen::@1/(dword) sin16s_gen::step#13 sin16s_gen::@6/(dword) sin16s_gen::step#14 ) + (dword) sin16s_gen::x#13 ← phi( sin16s_gen::@1/(dword) sin16s_gen::x#2 sin16s_gen::@6/(dword) sin16s_gen::x#15 ) + (signed word*) sin16s_gen::sintab#12 ← phi( sin16s_gen::@1/(signed word*) sin16s_gen::sintab#14 sin16s_gen::@6/(signed word*) sin16s_gen::sintab#15 ) + (byte) sin16s_gen::isUpper#9 ← phi( sin16s_gen::@1/(byte) sin16s_gen::isUpper#0 sin16s_gen::@6/(byte) sin16s_gen::isUpper#1 ) + (word) sin16s_gen::x1#3 ← phi( sin16s_gen::@1/(word) sin16s_gen::x1#0 sin16s_gen::@6/(word) sin16s_gen::x1#1 ) (boolean~) sin16s_gen::$8 ← (word) sin16s_gen::x1#3 >= (word) PI_HALF_u4f12#0 (boolean~) sin16s_gen::$9 ← ! (boolean~) sin16s_gen::$8 if((boolean~) sin16s_gen::$9) goto sin16s_gen::@3 - to:sin16s_gen::@6 -sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@1 - (word) rem16u#37 ← phi( sin16s_gen::@1/(word) rem16u#36 ) - (word) sin16s_gen::wavelength#15 ← phi( sin16s_gen::@1/(word) sin16s_gen::wavelength#14 ) - (word) sin16s_gen::i#14 ← phi( sin16s_gen::@1/(word) sin16s_gen::i#13 ) - (dword) sin16s_gen::step#13 ← phi( sin16s_gen::@1/(dword) sin16s_gen::step#12 ) - (dword) sin16s_gen::x#14 ← phi( sin16s_gen::@1/(dword) sin16s_gen::x#2 ) - (signed word*) sin16s_gen::sintab#14 ← phi( sin16s_gen::@1/(signed word*) sin16s_gen::sintab#13 ) - (word) sin16s_gen::div128#10 ← phi( sin16s_gen::@1/(word) sin16s_gen::div128#9 ) - (word) sin16s_gen::div6#7 ← phi( sin16s_gen::@1/(word) sin16s_gen::div6#6 ) + to:sin16s_gen::@7 +sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@1 + (word) rem16u#38 ← phi( sin16s_gen::@1/(word) rem16u#37 ) + (word) sin16s_gen::wavelength#16 ← phi( sin16s_gen::@1/(word) sin16s_gen::wavelength#15 ) + (word) sin16s_gen::i#15 ← phi( sin16s_gen::@1/(word) sin16s_gen::i#14 ) + (dword) sin16s_gen::step#14 ← phi( sin16s_gen::@1/(dword) sin16s_gen::step#13 ) + (dword) sin16s_gen::x#15 ← phi( sin16s_gen::@1/(dword) sin16s_gen::x#2 ) + (signed word*) sin16s_gen::sintab#15 ← phi( sin16s_gen::@1/(signed word*) sin16s_gen::sintab#14 ) (word) sin16s_gen::x1#4 ← phi( sin16s_gen::@1/(word) sin16s_gen::x1#0 ) (word~) sin16s_gen::$7 ← (word) sin16s_gen::x1#4 - (word) PI_u4f12#0 (word) sin16s_gen::x1#1 ← (word~) sin16s_gen::$7 (byte) sin16s_gen::isUpper#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1 to:sin16s_gen::@2 -sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@6 - (word) rem16u#33 ← phi( sin16s_gen::@2/(word) rem16u#34 sin16s_gen::@6/(word) rem16u#35 ) - (word) sin16s_gen::wavelength#11 ← phi( sin16s_gen::@2/(word) sin16s_gen::wavelength#12 sin16s_gen::@6/(word) sin16s_gen::wavelength#13 ) - (word) sin16s_gen::i#10 ← phi( sin16s_gen::@2/(word) sin16s_gen::i#11 sin16s_gen::@6/(word) sin16s_gen::i#12 ) - (dword) sin16s_gen::step#9 ← phi( sin16s_gen::@2/(dword) sin16s_gen::step#10 sin16s_gen::@6/(dword) sin16s_gen::step#11 ) - (dword) sin16s_gen::x#11 ← phi( sin16s_gen::@2/(dword) sin16s_gen::x#12 sin16s_gen::@6/(dword) sin16s_gen::x#13 ) - (signed word*) sin16s_gen::sintab#10 ← phi( sin16s_gen::@2/(signed word*) sin16s_gen::sintab#11 sin16s_gen::@6/(signed word*) sin16s_gen::sintab#12 ) - (byte) sin16s_gen::isUpper#8 ← phi( sin16s_gen::@2/(byte) sin16s_gen::isUpper#9 sin16s_gen::@6/(byte) sin16s_gen::isUpper#10 ) - (word) sin16s_gen::div128#6 ← phi( sin16s_gen::@2/(word) sin16s_gen::div128#7 sin16s_gen::@6/(word) sin16s_gen::div128#8 ) - (word) sin16s_gen::div6#3 ← phi( sin16s_gen::@2/(word) sin16s_gen::div6#4 sin16s_gen::@6/(word) sin16s_gen::div6#5 ) - (word) sin16s_gen::x1#5 ← phi( sin16s_gen::@2/(word) sin16s_gen::x1#3 sin16s_gen::@6/(word) sin16s_gen::x1#2 ) +sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@7 + (word) rem16u#34 ← phi( sin16s_gen::@2/(word) rem16u#35 sin16s_gen::@7/(word) rem16u#36 ) + (word) sin16s_gen::wavelength#12 ← phi( sin16s_gen::@2/(word) sin16s_gen::wavelength#13 sin16s_gen::@7/(word) sin16s_gen::wavelength#14 ) + (word) sin16s_gen::i#11 ← phi( sin16s_gen::@2/(word) sin16s_gen::i#12 sin16s_gen::@7/(word) sin16s_gen::i#13 ) + (dword) sin16s_gen::step#10 ← phi( sin16s_gen::@2/(dword) sin16s_gen::step#11 sin16s_gen::@7/(dword) sin16s_gen::step#12 ) + (dword) sin16s_gen::x#12 ← phi( sin16s_gen::@2/(dword) sin16s_gen::x#13 sin16s_gen::@7/(dword) sin16s_gen::x#14 ) + (signed word*) sin16s_gen::sintab#11 ← phi( sin16s_gen::@2/(signed word*) sin16s_gen::sintab#12 sin16s_gen::@7/(signed word*) sin16s_gen::sintab#13 ) + (byte) sin16s_gen::isUpper#8 ← phi( sin16s_gen::@2/(byte) sin16s_gen::isUpper#9 sin16s_gen::@7/(byte) sin16s_gen::isUpper#10 ) + (word) sin16s_gen::x1#5 ← phi( sin16s_gen::@2/(word) sin16s_gen::x1#3 sin16s_gen::@7/(word) sin16s_gen::x1#2 ) (word) mul_u4f12::v1#0 ← (word) sin16s_gen::x1#5 (word) mul_u4f12::v2#0 ← (word) sin16s_gen::x1#5 call mul_u4f12 param-assignment (word) mul_u4f12::return#0 ← (word) mul_u4f12::return#5 - to:sin16s_gen::@11 -sin16s_gen::@11: scope:[sin16s_gen] from sin16s_gen::@3 - (word) rem16u#32 ← phi( sin16s_gen::@3/(word) rem16u#33 ) - (word) sin16s_gen::wavelength#10 ← phi( sin16s_gen::@3/(word) sin16s_gen::wavelength#11 ) - (word) sin16s_gen::i#9 ← phi( sin16s_gen::@3/(word) sin16s_gen::i#10 ) - (dword) sin16s_gen::step#8 ← phi( sin16s_gen::@3/(dword) sin16s_gen::step#9 ) - (dword) sin16s_gen::x#10 ← phi( sin16s_gen::@3/(dword) sin16s_gen::x#11 ) - (signed word*) sin16s_gen::sintab#9 ← phi( sin16s_gen::@3/(signed word*) sin16s_gen::sintab#10 ) + to:sin16s_gen::@13 +sin16s_gen::@13: scope:[sin16s_gen] from sin16s_gen::@3 + (word) rem16u#33 ← phi( sin16s_gen::@3/(word) rem16u#34 ) + (word) sin16s_gen::wavelength#11 ← phi( sin16s_gen::@3/(word) sin16s_gen::wavelength#12 ) + (word) sin16s_gen::i#10 ← phi( sin16s_gen::@3/(word) sin16s_gen::i#11 ) + (dword) sin16s_gen::step#9 ← phi( sin16s_gen::@3/(dword) sin16s_gen::step#10 ) + (dword) sin16s_gen::x#11 ← phi( sin16s_gen::@3/(dword) sin16s_gen::x#12 ) + (signed word*) sin16s_gen::sintab#10 ← phi( sin16s_gen::@3/(signed word*) sin16s_gen::sintab#11 ) (byte) sin16s_gen::isUpper#7 ← phi( sin16s_gen::@3/(byte) sin16s_gen::isUpper#8 ) - (word) sin16s_gen::div128#5 ← phi( sin16s_gen::@3/(word) sin16s_gen::div128#6 ) - (word) sin16s_gen::div6#2 ← phi( sin16s_gen::@3/(word) sin16s_gen::div6#3 ) (word) sin16s_gen::x1#6 ← phi( sin16s_gen::@3/(word) sin16s_gen::x1#5 ) (word) mul_u4f12::return#6 ← phi( sin16s_gen::@3/(word) mul_u4f12::return#0 ) (word~) sin16s_gen::$11 ← (word) mul_u4f12::return#6 @@ -2570,165 +2567,161 @@ sin16s_gen::@11: scope:[sin16s_gen] from sin16s_gen::@3 (word) mul_u4f12::v2#1 ← (word) sin16s_gen::x1#6 call mul_u4f12 param-assignment (word) mul_u4f12::return#1 ← (word) mul_u4f12::return#5 - to:sin16s_gen::@12 -sin16s_gen::@12: scope:[sin16s_gen] from sin16s_gen::@11 - (word) rem16u#31 ← phi( sin16s_gen::@11/(word) rem16u#32 ) - (word) sin16s_gen::wavelength#9 ← phi( sin16s_gen::@11/(word) sin16s_gen::wavelength#10 ) - (word) sin16s_gen::i#8 ← phi( sin16s_gen::@11/(word) sin16s_gen::i#9 ) - (dword) sin16s_gen::step#7 ← phi( sin16s_gen::@11/(dword) sin16s_gen::step#8 ) - (dword) sin16s_gen::x#9 ← phi( sin16s_gen::@11/(dword) sin16s_gen::x#10 ) - (signed word*) sin16s_gen::sintab#8 ← phi( sin16s_gen::@11/(signed word*) sin16s_gen::sintab#9 ) - (byte) sin16s_gen::isUpper#6 ← phi( sin16s_gen::@11/(byte) sin16s_gen::isUpper#7 ) - (word) sin16s_gen::div128#4 ← phi( sin16s_gen::@11/(word) sin16s_gen::div128#5 ) - (word) sin16s_gen::x1#10 ← phi( sin16s_gen::@11/(word) sin16s_gen::x1#6 ) - (word) sin16s_gen::div6#1 ← phi( sin16s_gen::@11/(word) sin16s_gen::div6#2 ) - (word) mul_u4f12::return#7 ← phi( sin16s_gen::@11/(word) mul_u4f12::return#1 ) + to:sin16s_gen::@14 +sin16s_gen::@14: scope:[sin16s_gen] from sin16s_gen::@13 + (word) rem16u#32 ← phi( sin16s_gen::@13/(word) rem16u#33 ) + (word) sin16s_gen::wavelength#10 ← phi( sin16s_gen::@13/(word) sin16s_gen::wavelength#11 ) + (word) sin16s_gen::i#9 ← phi( sin16s_gen::@13/(word) sin16s_gen::i#10 ) + (dword) sin16s_gen::step#8 ← phi( sin16s_gen::@13/(dword) sin16s_gen::step#9 ) + (dword) sin16s_gen::x#10 ← phi( sin16s_gen::@13/(dword) sin16s_gen::x#11 ) + (signed word*) sin16s_gen::sintab#9 ← phi( sin16s_gen::@13/(signed word*) sin16s_gen::sintab#10 ) + (byte) sin16s_gen::isUpper#6 ← phi( sin16s_gen::@13/(byte) sin16s_gen::isUpper#7 ) + (word) sin16s_gen::x1#10 ← phi( sin16s_gen::@13/(word) sin16s_gen::x1#6 ) + (word) mul_u4f12::return#7 ← phi( sin16s_gen::@13/(word) mul_u4f12::return#1 ) (word~) sin16s_gen::$12 ← (word) mul_u4f12::return#7 (word) sin16s_gen::x3#0 ← (word~) sin16s_gen::$12 + (word/signed word/dword/signed dword~) sin16s_gen::$13 ← (dword/signed dword) 65536 / (byte/signed byte/word/signed word/dword/signed dword) 6 (word) mul16u::a#1 ← (word) sin16s_gen::x3#0 - (word) mul16u::b#0 ← (word) sin16s_gen::div6#1 + (word) mul16u::b#0 ← (word/signed word/dword/signed dword~) sin16s_gen::$13 call mul16u param-assignment (dword) mul16u::return#2 ← (dword) mul16u::return#1 - to:sin16s_gen::@13 -sin16s_gen::@13: scope:[sin16s_gen] from sin16s_gen::@12 - (word) sin16s_gen::div6#13 ← phi( sin16s_gen::@12/(word) sin16s_gen::div6#1 ) - (word) rem16u#30 ← phi( sin16s_gen::@12/(word) rem16u#31 ) - (word) sin16s_gen::wavelength#8 ← phi( sin16s_gen::@12/(word) sin16s_gen::wavelength#9 ) - (word) sin16s_gen::i#7 ← phi( sin16s_gen::@12/(word) sin16s_gen::i#8 ) - (dword) sin16s_gen::step#6 ← phi( sin16s_gen::@12/(dword) sin16s_gen::step#7 ) - (dword) sin16s_gen::x#8 ← phi( sin16s_gen::@12/(dword) sin16s_gen::x#9 ) - (signed word*) sin16s_gen::sintab#7 ← phi( sin16s_gen::@12/(signed word*) sin16s_gen::sintab#8 ) - (byte) sin16s_gen::isUpper#5 ← phi( sin16s_gen::@12/(byte) sin16s_gen::isUpper#6 ) - (word) sin16s_gen::div128#3 ← phi( sin16s_gen::@12/(word) sin16s_gen::div128#4 ) - (word) sin16s_gen::x3#1 ← phi( sin16s_gen::@12/(word) sin16s_gen::x3#0 ) - (word) sin16s_gen::x1#7 ← phi( sin16s_gen::@12/(word) sin16s_gen::x1#10 ) - (dword) mul16u::return#6 ← phi( sin16s_gen::@12/(dword) mul16u::return#2 ) - (dword~) sin16s_gen::$13 ← (dword) mul16u::return#6 - (word~) sin16s_gen::$14 ← > (dword~) sin16s_gen::$13 - (word) sin16s_gen::x3_6#0 ← (word~) sin16s_gen::$14 - (word~) sin16s_gen::$15 ← (word) sin16s_gen::x1#7 - (word) sin16s_gen::x3_6#0 - (word) sin16s_gen::usinx#0 ← (word~) sin16s_gen::$15 + to:sin16s_gen::@15 +sin16s_gen::@15: scope:[sin16s_gen] from sin16s_gen::@14 + (word) rem16u#31 ← phi( sin16s_gen::@14/(word) rem16u#32 ) + (word) sin16s_gen::wavelength#9 ← phi( sin16s_gen::@14/(word) sin16s_gen::wavelength#10 ) + (word) sin16s_gen::i#8 ← phi( sin16s_gen::@14/(word) sin16s_gen::i#9 ) + (dword) sin16s_gen::step#7 ← phi( sin16s_gen::@14/(dword) sin16s_gen::step#8 ) + (dword) sin16s_gen::x#9 ← phi( sin16s_gen::@14/(dword) sin16s_gen::x#10 ) + (signed word*) sin16s_gen::sintab#8 ← phi( sin16s_gen::@14/(signed word*) sin16s_gen::sintab#9 ) + (byte) sin16s_gen::isUpper#5 ← phi( sin16s_gen::@14/(byte) sin16s_gen::isUpper#6 ) + (word) sin16s_gen::x3#1 ← phi( sin16s_gen::@14/(word) sin16s_gen::x3#0 ) + (word) sin16s_gen::x1#7 ← phi( sin16s_gen::@14/(word) sin16s_gen::x1#10 ) + (dword) mul16u::return#6 ← phi( sin16s_gen::@14/(dword) mul16u::return#2 ) + (dword~) sin16s_gen::$14 ← (dword) mul16u::return#6 + (word~) sin16s_gen::$15 ← > (dword~) sin16s_gen::$14 + (word) sin16s_gen::x3_6#0 ← (word~) sin16s_gen::$15 + (word~) sin16s_gen::$16 ← (word) sin16s_gen::x1#7 - (word) sin16s_gen::x3_6#0 + (word) sin16s_gen::usinx#0 ← (word~) sin16s_gen::$16 (word) mul_u4f12::v1#2 ← (word) sin16s_gen::x3#1 (word) mul_u4f12::v2#2 ← (word) sin16s_gen::x1#7 call mul_u4f12 param-assignment (word) mul_u4f12::return#2 ← (word) mul_u4f12::return#5 - to:sin16s_gen::@14 -sin16s_gen::@14: scope:[sin16s_gen] from sin16s_gen::@13 - (word) sin16s_gen::div6#12 ← phi( sin16s_gen::@13/(word) sin16s_gen::div6#13 ) - (word) rem16u#29 ← phi( sin16s_gen::@13/(word) rem16u#30 ) - (word) sin16s_gen::wavelength#7 ← phi( sin16s_gen::@13/(word) sin16s_gen::wavelength#8 ) - (word) sin16s_gen::i#6 ← phi( sin16s_gen::@13/(word) sin16s_gen::i#7 ) - (dword) sin16s_gen::step#5 ← phi( sin16s_gen::@13/(dword) sin16s_gen::step#6 ) - (dword) sin16s_gen::x#7 ← phi( sin16s_gen::@13/(dword) sin16s_gen::x#8 ) - (signed word*) sin16s_gen::sintab#6 ← phi( sin16s_gen::@13/(signed word*) sin16s_gen::sintab#7 ) - (byte) sin16s_gen::isUpper#4 ← phi( sin16s_gen::@13/(byte) sin16s_gen::isUpper#5 ) - (word) sin16s_gen::usinx#4 ← phi( sin16s_gen::@13/(word) sin16s_gen::usinx#0 ) - (word) sin16s_gen::div128#2 ← phi( sin16s_gen::@13/(word) sin16s_gen::div128#3 ) - (word) sin16s_gen::x1#8 ← phi( sin16s_gen::@13/(word) sin16s_gen::x1#7 ) - (word) mul_u4f12::return#8 ← phi( sin16s_gen::@13/(word) mul_u4f12::return#2 ) - (word~) sin16s_gen::$16 ← (word) mul_u4f12::return#8 - (word) sin16s_gen::x4#0 ← (word~) sin16s_gen::$16 + to:sin16s_gen::@16 +sin16s_gen::@16: scope:[sin16s_gen] from sin16s_gen::@15 + (word) rem16u#30 ← phi( sin16s_gen::@15/(word) rem16u#31 ) + (word) sin16s_gen::wavelength#8 ← phi( sin16s_gen::@15/(word) sin16s_gen::wavelength#9 ) + (word) sin16s_gen::i#7 ← phi( sin16s_gen::@15/(word) sin16s_gen::i#8 ) + (dword) sin16s_gen::step#6 ← phi( sin16s_gen::@15/(dword) sin16s_gen::step#7 ) + (dword) sin16s_gen::x#8 ← phi( sin16s_gen::@15/(dword) sin16s_gen::x#9 ) + (signed word*) sin16s_gen::sintab#7 ← phi( sin16s_gen::@15/(signed word*) sin16s_gen::sintab#8 ) + (byte) sin16s_gen::isUpper#4 ← phi( sin16s_gen::@15/(byte) sin16s_gen::isUpper#5 ) + (word) sin16s_gen::usinx#6 ← phi( sin16s_gen::@15/(word) sin16s_gen::usinx#0 ) + (word) sin16s_gen::x1#8 ← phi( sin16s_gen::@15/(word) sin16s_gen::x1#7 ) + (word) mul_u4f12::return#8 ← phi( sin16s_gen::@15/(word) mul_u4f12::return#2 ) + (word~) sin16s_gen::$17 ← (word) mul_u4f12::return#8 + (word) sin16s_gen::x4#0 ← (word~) sin16s_gen::$17 (word) mul_u4f12::v1#3 ← (word) sin16s_gen::x4#0 (word) mul_u4f12::v2#3 ← (word) sin16s_gen::x1#8 call mul_u4f12 param-assignment (word) mul_u4f12::return#3 ← (word) mul_u4f12::return#5 - to:sin16s_gen::@15 -sin16s_gen::@15: scope:[sin16s_gen] from sin16s_gen::@14 - (word) sin16s_gen::div6#11 ← phi( sin16s_gen::@14/(word) sin16s_gen::div6#12 ) - (word) rem16u#27 ← phi( sin16s_gen::@14/(word) rem16u#29 ) - (word) sin16s_gen::wavelength#6 ← phi( sin16s_gen::@14/(word) sin16s_gen::wavelength#7 ) - (word) sin16s_gen::i#5 ← phi( sin16s_gen::@14/(word) sin16s_gen::i#6 ) - (dword) sin16s_gen::step#4 ← phi( sin16s_gen::@14/(dword) sin16s_gen::step#5 ) - (dword) sin16s_gen::x#6 ← phi( sin16s_gen::@14/(dword) sin16s_gen::x#7 ) - (signed word*) sin16s_gen::sintab#5 ← phi( sin16s_gen::@14/(signed word*) sin16s_gen::sintab#6 ) - (byte) sin16s_gen::isUpper#3 ← phi( sin16s_gen::@14/(byte) sin16s_gen::isUpper#4 ) - (word) sin16s_gen::usinx#3 ← phi( sin16s_gen::@14/(word) sin16s_gen::usinx#4 ) - (word) sin16s_gen::div128#1 ← phi( sin16s_gen::@14/(word) sin16s_gen::div128#2 ) - (word) mul_u4f12::return#9 ← phi( sin16s_gen::@14/(word) mul_u4f12::return#3 ) - (word~) sin16s_gen::$17 ← (word) mul_u4f12::return#9 - (word) sin16s_gen::x5#0 ← (word~) sin16s_gen::$17 + to:sin16s_gen::@17 +sin16s_gen::@17: scope:[sin16s_gen] from sin16s_gen::@16 + (word) rem16u#29 ← phi( sin16s_gen::@16/(word) rem16u#30 ) + (word) sin16s_gen::wavelength#7 ← phi( sin16s_gen::@16/(word) sin16s_gen::wavelength#8 ) + (word) sin16s_gen::i#6 ← phi( sin16s_gen::@16/(word) sin16s_gen::i#7 ) + (dword) sin16s_gen::step#5 ← phi( sin16s_gen::@16/(dword) sin16s_gen::step#6 ) + (dword) sin16s_gen::x#7 ← phi( sin16s_gen::@16/(dword) sin16s_gen::x#8 ) + (signed word*) sin16s_gen::sintab#6 ← phi( sin16s_gen::@16/(signed word*) sin16s_gen::sintab#7 ) + (byte) sin16s_gen::isUpper#3 ← phi( sin16s_gen::@16/(byte) sin16s_gen::isUpper#4 ) + (word) sin16s_gen::usinx#5 ← phi( sin16s_gen::@16/(word) sin16s_gen::usinx#6 ) + (word) mul_u4f12::return#9 ← phi( sin16s_gen::@16/(word) mul_u4f12::return#3 ) + (word~) sin16s_gen::$18 ← (word) mul_u4f12::return#9 + (word) sin16s_gen::x5#0 ← (word~) sin16s_gen::$18 + (word/signed word/dword/signed dword~) sin16s_gen::$19 ← (dword/signed dword) 65536 / (byte/word/signed word/dword/signed dword) 128 (word) mul16u::a#2 ← (word) sin16s_gen::x5#0 - (word) mul16u::b#1 ← (word) sin16s_gen::div128#1 + (word) mul16u::b#1 ← (word/signed word/dword/signed dword~) sin16s_gen::$19 call mul16u param-assignment (dword) mul16u::return#3 ← (dword) mul16u::return#1 - to:sin16s_gen::@16 -sin16s_gen::@16: scope:[sin16s_gen] from sin16s_gen::@15 - (word) sin16s_gen::div128#12 ← phi( sin16s_gen::@15/(word) sin16s_gen::div128#1 ) - (word) sin16s_gen::div6#9 ← phi( sin16s_gen::@15/(word) sin16s_gen::div6#11 ) - (word) rem16u#22 ← phi( sin16s_gen::@15/(word) rem16u#27 ) - (word) sin16s_gen::wavelength#4 ← phi( sin16s_gen::@15/(word) sin16s_gen::wavelength#6 ) - (word) sin16s_gen::i#3 ← phi( sin16s_gen::@15/(word) sin16s_gen::i#5 ) - (dword) sin16s_gen::step#2 ← phi( sin16s_gen::@15/(dword) sin16s_gen::step#4 ) - (dword) sin16s_gen::x#4 ← phi( sin16s_gen::@15/(dword) sin16s_gen::x#6 ) - (signed word*) sin16s_gen::sintab#3 ← phi( sin16s_gen::@15/(signed word*) sin16s_gen::sintab#5 ) - (byte) sin16s_gen::isUpper#2 ← phi( sin16s_gen::@15/(byte) sin16s_gen::isUpper#3 ) - (word) sin16s_gen::usinx#2 ← phi( sin16s_gen::@15/(word) sin16s_gen::usinx#3 ) - (dword) mul16u::return#7 ← phi( sin16s_gen::@15/(dword) mul16u::return#3 ) - (dword~) sin16s_gen::$18 ← (dword) mul16u::return#7 - (word~) sin16s_gen::$19 ← > (dword~) sin16s_gen::$18 - (word) sin16s_gen::x5_128#0 ← (word~) sin16s_gen::$19 - (word~) sin16s_gen::$20 ← (word) sin16s_gen::usinx#2 + (word) sin16s_gen::x5_128#0 - (word) sin16s_gen::usinx#1 ← (word~) sin16s_gen::$20 - (signed word~) sin16s_gen::$21 ← ((signed word)) (word) sin16s_gen::usinx#1 - (signed word) sin16s_gen::sinx#0 ← (signed word~) sin16s_gen::$21 - (boolean~) sin16s_gen::$22 ← (byte) sin16s_gen::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 - (boolean~) sin16s_gen::$23 ← ! (boolean~) sin16s_gen::$22 - if((boolean~) sin16s_gen::$23) goto sin16s_gen::@4 - to:sin16s_gen::@7 -sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@2 - (word) rem16u#35 ← phi( sin16s_gen::@2/(word) rem16u#34 ) - (word) sin16s_gen::wavelength#13 ← phi( sin16s_gen::@2/(word) sin16s_gen::wavelength#12 ) - (word) sin16s_gen::i#12 ← phi( sin16s_gen::@2/(word) sin16s_gen::i#11 ) - (dword) sin16s_gen::step#11 ← phi( sin16s_gen::@2/(dword) sin16s_gen::step#10 ) - (dword) sin16s_gen::x#13 ← phi( sin16s_gen::@2/(dword) sin16s_gen::x#12 ) - (signed word*) sin16s_gen::sintab#12 ← phi( sin16s_gen::@2/(signed word*) sin16s_gen::sintab#11 ) + to:sin16s_gen::@18 +sin16s_gen::@18: scope:[sin16s_gen] from sin16s_gen::@17 + (word) rem16u#27 ← phi( sin16s_gen::@17/(word) rem16u#29 ) + (word) sin16s_gen::wavelength#6 ← phi( sin16s_gen::@17/(word) sin16s_gen::wavelength#7 ) + (word) sin16s_gen::i#5 ← phi( sin16s_gen::@17/(word) sin16s_gen::i#6 ) + (dword) sin16s_gen::step#4 ← phi( sin16s_gen::@17/(dword) sin16s_gen::step#5 ) + (dword) sin16s_gen::x#6 ← phi( sin16s_gen::@17/(dword) sin16s_gen::x#7 ) + (signed word*) sin16s_gen::sintab#5 ← phi( sin16s_gen::@17/(signed word*) sin16s_gen::sintab#6 ) + (byte) sin16s_gen::isUpper#2 ← phi( sin16s_gen::@17/(byte) sin16s_gen::isUpper#3 ) + (word) sin16s_gen::usinx#2 ← phi( sin16s_gen::@17/(word) sin16s_gen::usinx#5 ) + (dword) mul16u::return#7 ← phi( sin16s_gen::@17/(dword) mul16u::return#3 ) + (dword~) sin16s_gen::$20 ← (dword) mul16u::return#7 + (word~) sin16s_gen::$21 ← > (dword~) sin16s_gen::$20 + (word) sin16s_gen::x5_128#0 ← (word~) sin16s_gen::$21 + (word~) sin16s_gen::$22 ← (word) sin16s_gen::usinx#2 + (word) sin16s_gen::x5_128#0 + (word) sin16s_gen::usinx#1 ← (word~) sin16s_gen::$22 + (boolean~) sin16s_gen::$23 ← (byte) sin16s_gen::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 + (boolean~) sin16s_gen::$24 ← ! (boolean~) sin16s_gen::$23 + if((boolean~) sin16s_gen::$24) goto sin16s_gen::@4 + to:sin16s_gen::@8 +sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@2 + (word) rem16u#36 ← phi( sin16s_gen::@2/(word) rem16u#35 ) + (word) sin16s_gen::wavelength#14 ← phi( sin16s_gen::@2/(word) sin16s_gen::wavelength#13 ) + (word) sin16s_gen::i#13 ← phi( sin16s_gen::@2/(word) sin16s_gen::i#12 ) + (dword) sin16s_gen::step#12 ← phi( sin16s_gen::@2/(dword) sin16s_gen::step#11 ) + (dword) sin16s_gen::x#14 ← phi( sin16s_gen::@2/(dword) sin16s_gen::x#13 ) + (signed word*) sin16s_gen::sintab#13 ← phi( sin16s_gen::@2/(signed word*) sin16s_gen::sintab#12 ) (byte) sin16s_gen::isUpper#10 ← phi( sin16s_gen::@2/(byte) sin16s_gen::isUpper#9 ) - (word) sin16s_gen::div128#8 ← phi( sin16s_gen::@2/(word) sin16s_gen::div128#7 ) - (word) sin16s_gen::div6#5 ← phi( sin16s_gen::@2/(word) sin16s_gen::div6#4 ) (word) sin16s_gen::x1#9 ← phi( sin16s_gen::@2/(word) sin16s_gen::x1#3 ) (word~) sin16s_gen::$10 ← (word) PI_u4f12#0 - (word) sin16s_gen::x1#9 (word) sin16s_gen::x1#2 ← (word~) sin16s_gen::$10 to:sin16s_gen::@3 -sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@16 sin16s_gen::@7 - (word) sin16s_gen::div128#11 ← phi( sin16s_gen::@16/(word) sin16s_gen::div128#12 sin16s_gen::@7/(word) sin16s_gen::div128#13 ) - (word) sin16s_gen::div6#8 ← phi( sin16s_gen::@16/(word) sin16s_gen::div6#9 sin16s_gen::@7/(word) sin16s_gen::div6#10 ) - (word) rem16u#19 ← phi( sin16s_gen::@16/(word) rem16u#22 sin16s_gen::@7/(word) rem16u#23 ) - (word) sin16s_gen::wavelength#3 ← phi( sin16s_gen::@16/(word) sin16s_gen::wavelength#4 sin16s_gen::@7/(word) sin16s_gen::wavelength#5 ) - (word) sin16s_gen::i#2 ← phi( sin16s_gen::@16/(word) sin16s_gen::i#3 sin16s_gen::@7/(word) sin16s_gen::i#4 ) - (dword) sin16s_gen::step#1 ← phi( sin16s_gen::@16/(dword) sin16s_gen::step#2 sin16s_gen::@7/(dword) sin16s_gen::step#3 ) - (dword) sin16s_gen::x#3 ← phi( sin16s_gen::@16/(dword) sin16s_gen::x#4 sin16s_gen::@7/(dword) sin16s_gen::x#5 ) - (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@16/(signed word*) sin16s_gen::sintab#3 sin16s_gen::@7/(signed word*) sin16s_gen::sintab#4 ) - (signed word) sin16s_gen::sinx#2 ← phi( sin16s_gen::@16/(signed word) sin16s_gen::sinx#0 sin16s_gen::@7/(signed word) sin16s_gen::sinx#1 ) +sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@18 + (word) rem16u#22 ← phi( sin16s_gen::@18/(word) rem16u#27 ) + (word) sin16s_gen::wavelength#4 ← phi( sin16s_gen::@18/(word) sin16s_gen::wavelength#6 ) + (word) sin16s_gen::i#3 ← phi( sin16s_gen::@18/(word) sin16s_gen::i#5 ) + (dword) sin16s_gen::step#2 ← phi( sin16s_gen::@18/(dword) sin16s_gen::step#4 ) + (dword) sin16s_gen::x#4 ← phi( sin16s_gen::@18/(dword) sin16s_gen::x#6 ) + (signed word*) sin16s_gen::sintab#3 ← phi( sin16s_gen::@18/(signed word*) sin16s_gen::sintab#5 ) + (word) sin16s_gen::usinx#3 ← phi( sin16s_gen::@18/(word) sin16s_gen::usinx#1 ) + (signed word~) sin16s_gen::$27 ← ((signed word)) (word) sin16s_gen::usinx#3 + (signed word) sin16s_gen::sinx#0 ← (signed word~) sin16s_gen::$27 + to:sin16s_gen::@5 +sin16s_gen::@8: scope:[sin16s_gen] from sin16s_gen::@18 + (word) rem16u#23 ← phi( sin16s_gen::@18/(word) rem16u#27 ) + (word) sin16s_gen::wavelength#5 ← phi( sin16s_gen::@18/(word) sin16s_gen::wavelength#6 ) + (word) sin16s_gen::i#4 ← phi( sin16s_gen::@18/(word) sin16s_gen::i#5 ) + (dword) sin16s_gen::step#3 ← phi( sin16s_gen::@18/(dword) sin16s_gen::step#4 ) + (dword) sin16s_gen::x#5 ← phi( sin16s_gen::@18/(dword) sin16s_gen::x#6 ) + (signed word*) sin16s_gen::sintab#4 ← phi( sin16s_gen::@18/(signed word*) sin16s_gen::sintab#5 ) + (word) sin16s_gen::usinx#4 ← phi( sin16s_gen::@18/(word) sin16s_gen::usinx#1 ) + (signed word~) sin16s_gen::$25 ← ((signed word)) (word) sin16s_gen::usinx#4 + (signed word~) sin16s_gen::$26 ← - (signed word~) sin16s_gen::$25 + (signed word) sin16s_gen::sinx#1 ← (signed word~) sin16s_gen::$26 + to:sin16s_gen::@5 +sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@4 sin16s_gen::@8 + (word) rem16u#19 ← phi( sin16s_gen::@4/(word) rem16u#22 sin16s_gen::@8/(word) rem16u#23 ) + (word) sin16s_gen::wavelength#3 ← phi( sin16s_gen::@4/(word) sin16s_gen::wavelength#4 sin16s_gen::@8/(word) sin16s_gen::wavelength#5 ) + (word) sin16s_gen::i#2 ← phi( sin16s_gen::@4/(word) sin16s_gen::i#3 sin16s_gen::@8/(word) sin16s_gen::i#4 ) + (dword) sin16s_gen::step#1 ← phi( sin16s_gen::@4/(dword) sin16s_gen::step#2 sin16s_gen::@8/(dword) sin16s_gen::step#3 ) + (dword) sin16s_gen::x#3 ← phi( sin16s_gen::@4/(dword) sin16s_gen::x#4 sin16s_gen::@8/(dword) sin16s_gen::x#5 ) + (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@4/(signed word*) sin16s_gen::sintab#3 sin16s_gen::@8/(signed word*) sin16s_gen::sintab#4 ) + (signed word) sin16s_gen::sinx#2 ← phi( sin16s_gen::@4/(signed word) sin16s_gen::sinx#0 sin16s_gen::@8/(signed word) sin16s_gen::sinx#1 ) *((signed word*) sin16s_gen::sintab#2) ← (signed word) sin16s_gen::sinx#2 - (signed word*~) sin16s_gen::$25 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 - (signed word*) sin16s_gen::sintab#1 ← (signed word*~) sin16s_gen::$25 - (dword~) sin16s_gen::$26 ← (dword) sin16s_gen::x#3 + (dword) sin16s_gen::step#1 - (dword) sin16s_gen::x#1 ← (dword~) sin16s_gen::$26 + (signed word*~) sin16s_gen::$28 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 + (signed word*) sin16s_gen::sintab#1 ← (signed word*~) sin16s_gen::$28 + (dword~) sin16s_gen::$29 ← (dword) sin16s_gen::x#3 + (dword) sin16s_gen::step#1 + (dword) sin16s_gen::x#1 ← (dword~) sin16s_gen::$29 (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 - (boolean~) sin16s_gen::$27 ← (word) sin16s_gen::i#1 < (word) sin16s_gen::wavelength#3 - if((boolean~) sin16s_gen::$27) goto sin16s_gen::@1 + (boolean~) sin16s_gen::$30 ← (word) sin16s_gen::i#1 < (word) sin16s_gen::wavelength#3 + if((boolean~) sin16s_gen::$30) goto sin16s_gen::@1 to:sin16s_gen::@return -sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@16 - (word) sin16s_gen::div128#13 ← phi( sin16s_gen::@16/(word) sin16s_gen::div128#12 ) - (word) sin16s_gen::div6#10 ← phi( sin16s_gen::@16/(word) sin16s_gen::div6#9 ) - (word) rem16u#23 ← phi( sin16s_gen::@16/(word) rem16u#22 ) - (word) sin16s_gen::wavelength#5 ← phi( sin16s_gen::@16/(word) sin16s_gen::wavelength#4 ) - (word) sin16s_gen::i#4 ← phi( sin16s_gen::@16/(word) sin16s_gen::i#3 ) - (dword) sin16s_gen::step#3 ← phi( sin16s_gen::@16/(dword) sin16s_gen::step#2 ) - (dword) sin16s_gen::x#5 ← phi( sin16s_gen::@16/(dword) sin16s_gen::x#4 ) - (signed word*) sin16s_gen::sintab#4 ← phi( sin16s_gen::@16/(signed word*) sin16s_gen::sintab#3 ) - (signed word) sin16s_gen::sinx#3 ← phi( sin16s_gen::@16/(signed word) sin16s_gen::sinx#0 ) - (signed word~) sin16s_gen::$24 ← - (signed word) sin16s_gen::sinx#3 - (signed word) sin16s_gen::sinx#1 ← (signed word~) sin16s_gen::$24 - to:sin16s_gen::@4 -sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4 - (word) rem16u#14 ← phi( sin16s_gen::@4/(word) rem16u#19 ) +sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@5 + (word) rem16u#14 ← phi( sin16s_gen::@5/(word) rem16u#19 ) (word) rem16u#7 ← (word) rem16u#14 return to:@return -mul_u4f12: scope:[mul_u4f12] from sin16s_gen::@11 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@3 - (word) mul_u4f12::v2#4 ← phi( sin16s_gen::@11/(word) mul_u4f12::v2#1 sin16s_gen::@13/(word) mul_u4f12::v2#2 sin16s_gen::@14/(word) mul_u4f12::v2#3 sin16s_gen::@3/(word) mul_u4f12::v2#0 ) - (word) mul_u4f12::v1#4 ← phi( sin16s_gen::@11/(word) mul_u4f12::v1#1 sin16s_gen::@13/(word) mul_u4f12::v1#2 sin16s_gen::@14/(word) mul_u4f12::v1#3 sin16s_gen::@3/(word) mul_u4f12::v1#0 ) +mul_u4f12: scope:[mul_u4f12] from sin16s_gen::@13 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@3 + (word) mul_u4f12::v2#4 ← phi( sin16s_gen::@13/(word) mul_u4f12::v2#1 sin16s_gen::@15/(word) mul_u4f12::v2#2 sin16s_gen::@16/(word) mul_u4f12::v2#3 sin16s_gen::@3/(word) mul_u4f12::v2#0 ) + (word) mul_u4f12::v1#4 ← phi( sin16s_gen::@13/(word) mul_u4f12::v1#1 sin16s_gen::@15/(word) mul_u4f12::v1#2 sin16s_gen::@16/(word) mul_u4f12::v1#3 sin16s_gen::@3/(word) mul_u4f12::v1#0 ) (word) mul16u::a#3 ← (word) mul_u4f12::v1#4 (word) mul16u::b#2 ← (word) mul_u4f12::v2#4 call mul16u param-assignment @@ -2770,8 +2763,8 @@ SYMBOL TABLE SSA (label) @24 (label) @begin (label) @end -(word) PI2_u4f12 -(word) PI2_u4f12#0 +(dword) PI2_u4f28 +(dword) PI2_u4f28#0 (word) PI_HALF_u4f12 (word) PI_HALF_u4f12#0 (word) PI_u4f12 @@ -3140,6 +3133,7 @@ SYMBOL TABLE SSA (word) rem16u#35 (word) rem16u#36 (word) rem16u#37 +(word) rem16u#38 (word) rem16u#4 (word) rem16u#5 (word) rem16u#6 @@ -3152,23 +3146,26 @@ SYMBOL TABLE SSA (word~) sin16s_gen::$10 (word~) sin16s_gen::$11 (word~) sin16s_gen::$12 -(dword~) sin16s_gen::$13 -(word~) sin16s_gen::$14 +(word/signed word/dword/signed dword~) sin16s_gen::$13 +(dword~) sin16s_gen::$14 (word~) sin16s_gen::$15 (word~) sin16s_gen::$16 (word~) sin16s_gen::$17 -(dword~) sin16s_gen::$18 -(word~) sin16s_gen::$19 -(word/signed word/dword/signed dword~) sin16s_gen::$2 -(word~) sin16s_gen::$20 -(signed word~) sin16s_gen::$21 -(boolean~) sin16s_gen::$22 +(word~) sin16s_gen::$18 +(word/signed word/dword/signed dword~) sin16s_gen::$19 +(word~) sin16s_gen::$2 +(dword~) sin16s_gen::$20 +(word~) sin16s_gen::$21 +(word~) sin16s_gen::$22 (boolean~) sin16s_gen::$23 -(signed word~) sin16s_gen::$24 -(signed word*~) sin16s_gen::$25 -(dword~) sin16s_gen::$26 -(boolean~) sin16s_gen::$27 -(word/signed word/dword/signed dword~) sin16s_gen::$3 +(boolean~) sin16s_gen::$24 +(signed word~) sin16s_gen::$25 +(signed word~) sin16s_gen::$26 +(signed word~) sin16s_gen::$27 +(signed word*~) sin16s_gen::$28 +(dword~) sin16s_gen::$29 +(word~) sin16s_gen::$3 +(boolean~) sin16s_gen::$30 (word~) sin16s_gen::$4 (boolean~) sin16s_gen::$5 (boolean~) sin16s_gen::$6 @@ -3176,51 +3173,22 @@ SYMBOL TABLE SSA (boolean~) sin16s_gen::$8 (boolean~) sin16s_gen::$9 (label) sin16s_gen::@1 -(label) sin16s_gen::@10 (label) sin16s_gen::@11 (label) sin16s_gen::@12 (label) sin16s_gen::@13 (label) sin16s_gen::@14 (label) sin16s_gen::@15 (label) sin16s_gen::@16 +(label) sin16s_gen::@17 +(label) sin16s_gen::@18 (label) sin16s_gen::@2 (label) sin16s_gen::@3 (label) sin16s_gen::@4 (label) sin16s_gen::@5 (label) sin16s_gen::@6 (label) sin16s_gen::@7 -(label) sin16s_gen::@9 +(label) sin16s_gen::@8 (label) sin16s_gen::@return -(word) sin16s_gen::div128 -(word) sin16s_gen::div128#0 -(word) sin16s_gen::div128#1 -(word) sin16s_gen::div128#10 -(word) sin16s_gen::div128#11 -(word) sin16s_gen::div128#12 -(word) sin16s_gen::div128#13 -(word) sin16s_gen::div128#2 -(word) sin16s_gen::div128#3 -(word) sin16s_gen::div128#4 -(word) sin16s_gen::div128#5 -(word) sin16s_gen::div128#6 -(word) sin16s_gen::div128#7 -(word) sin16s_gen::div128#8 -(word) sin16s_gen::div128#9 -(word) sin16s_gen::div6 -(word) sin16s_gen::div6#0 -(word) sin16s_gen::div6#1 -(word) sin16s_gen::div6#10 -(word) sin16s_gen::div6#11 -(word) sin16s_gen::div6#12 -(word) sin16s_gen::div6#13 -(word) sin16s_gen::div6#2 -(word) sin16s_gen::div6#3 -(word) sin16s_gen::div6#4 -(word) sin16s_gen::div6#5 -(word) sin16s_gen::div6#6 -(word) sin16s_gen::div6#7 -(word) sin16s_gen::div6#8 -(word) sin16s_gen::div6#9 (word) sin16s_gen::i (word) sin16s_gen::i#0 (word) sin16s_gen::i#1 @@ -3229,6 +3197,7 @@ SYMBOL TABLE SSA (word) sin16s_gen::i#12 (word) sin16s_gen::i#13 (word) sin16s_gen::i#14 +(word) sin16s_gen::i#15 (word) sin16s_gen::i#2 (word) sin16s_gen::i#3 (word) sin16s_gen::i#4 @@ -3260,6 +3229,7 @@ SYMBOL TABLE SSA (signed word*) sin16s_gen::sintab#15 (signed word*) sin16s_gen::sintab#16 (signed word*) sin16s_gen::sintab#17 +(signed word*) sin16s_gen::sintab#18 (signed word*) sin16s_gen::sintab#2 (signed word*) sin16s_gen::sintab#3 (signed word*) sin16s_gen::sintab#4 @@ -3272,7 +3242,6 @@ SYMBOL TABLE SSA (signed word) sin16s_gen::sinx#0 (signed word) sin16s_gen::sinx#1 (signed word) sin16s_gen::sinx#2 -(signed word) sin16s_gen::sinx#3 (dword) sin16s_gen::step (dword) sin16s_gen::step#0 (dword) sin16s_gen::step#1 @@ -3280,6 +3249,7 @@ SYMBOL TABLE SSA (dword) sin16s_gen::step#11 (dword) sin16s_gen::step#12 (dword) sin16s_gen::step#13 +(dword) sin16s_gen::step#14 (dword) sin16s_gen::step#2 (dword) sin16s_gen::step#3 (dword) sin16s_gen::step#4 @@ -3299,6 +3269,8 @@ SYMBOL TABLE SSA (word) sin16s_gen::usinx#2 (word) sin16s_gen::usinx#3 (word) sin16s_gen::usinx#4 +(word) sin16s_gen::usinx#5 +(word) sin16s_gen::usinx#6 (word) sin16s_gen::wavelength (word) sin16s_gen::wavelength#0 (word) sin16s_gen::wavelength#1 @@ -3309,6 +3281,7 @@ SYMBOL TABLE SSA (word) sin16s_gen::wavelength#14 (word) sin16s_gen::wavelength#15 (word) sin16s_gen::wavelength#16 +(word) sin16s_gen::wavelength#17 (word) sin16s_gen::wavelength#2 (word) sin16s_gen::wavelength#3 (word) sin16s_gen::wavelength#4 @@ -3325,6 +3298,7 @@ SYMBOL TABLE SSA (dword) sin16s_gen::x#12 (dword) sin16s_gen::x#13 (dword) sin16s_gen::x#14 +(dword) sin16s_gen::x#15 (dword) sin16s_gen::x#2 (dword) sin16s_gen::x#3 (dword) sin16s_gen::x#4 @@ -3366,7 +3340,7 @@ Inversing boolean not (boolean~) mul16u::$3 ← (byte~) mul16u::$1 == (byte/sign Inversing boolean not (boolean~) print_sword::$1 ← (signed word) print_sword::w#2 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) print_sword::$0 ← (signed word) print_sword::w#2 < (byte/signed byte/word/signed word/dword/signed dword) 0 Inversing boolean not (boolean~) sin16s_gen::$6 ← (word) sin16s_gen::x1#0 < (word) PI_u4f12#0 from (boolean~) sin16s_gen::$5 ← (word) sin16s_gen::x1#0 >= (word) PI_u4f12#0 Inversing boolean not (boolean~) sin16s_gen::$9 ← (word) sin16s_gen::x1#3 < (word) PI_HALF_u4f12#0 from (boolean~) sin16s_gen::$8 ← (word) sin16s_gen::x1#3 >= (word) PI_HALF_u4f12#0 -Inversing boolean not (boolean~) sin16s_gen::$23 ← (byte) sin16s_gen::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) sin16s_gen::$22 ← (byte) sin16s_gen::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 +Inversing boolean not (boolean~) sin16s_gen::$24 ← (byte) sin16s_gen::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from (boolean~) sin16s_gen::$23 ← (byte) sin16s_gen::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2UnaryNotSimplification Not aliassing across scopes: divr16u::rem#10 divr16u::rem#3 Not aliassing across scopes: divr16u::dividend#5 divr16u::dividend#1 @@ -3404,17 +3378,16 @@ Not aliassing across scopes: char_cursor#36 char_cursor#5 Not aliassing across scopes: char_cursor#37 char_cursor#2 Not aliassing across scopes: sin16s_gen::wavelength#1 sin16s_gen::wavelength#0 Not aliassing across scopes: rem16u#18 rem16u#16 -Not aliassing across scopes: sin16s_gen::sintab#17 sin16s_gen::sintab#0 -Not aliassing across scopes: divr16u::dividend#1 PI2_u4f12#0 +Not aliassing across scopes: sin16s_gen::sintab#18 sin16s_gen::sintab#0 Not aliassing across scopes: divr16u::divisor#0 sin16s_gen::wavelength#1 Not aliassing across scopes: divr16u::return#2 divr16u::return#1 Not aliassing across scopes: rem16u#12 rem16u#2 -Not aliassing across scopes: sin16s_gen::$0 divr16u::return#5 +Not aliassing across scopes: sin16s_gen::$1 divr16u::return#5 Not aliassing across scopes: divr16u::divisor#1 sin16s_gen::wavelength#2 Not aliassing across scopes: divr16u::rem#4 rem16u#5 Not aliassing across scopes: divr16u::return#3 divr16u::return#1 Not aliassing across scopes: rem16u#13 rem16u#2 -Not aliassing across scopes: sin16s_gen::$1 divr16u::return#6 +Not aliassing across scopes: sin16s_gen::$3 divr16u::return#6 Not aliassing across scopes: mul_u4f12::v1#0 sin16s_gen::x1#5 Not aliassing across scopes: mul_u4f12::v2#0 sin16s_gen::x1#5 Not aliassing across scopes: mul_u4f12::return#0 mul_u4f12::return#5 @@ -3424,21 +3397,19 @@ Not aliassing across scopes: mul_u4f12::v2#1 sin16s_gen::x1#6 Not aliassing across scopes: mul_u4f12::return#1 mul_u4f12::return#5 Not aliassing across scopes: sin16s_gen::$12 mul_u4f12::return#7 Not aliassing across scopes: mul16u::a#1 sin16s_gen::x3#0 -Not aliassing across scopes: mul16u::b#0 sin16s_gen::div6#1 Not aliassing across scopes: mul16u::return#2 mul16u::return#1 -Not aliassing across scopes: sin16s_gen::$13 mul16u::return#6 +Not aliassing across scopes: sin16s_gen::$14 mul16u::return#6 Not aliassing across scopes: mul_u4f12::v1#2 sin16s_gen::x3#1 Not aliassing across scopes: mul_u4f12::v2#2 sin16s_gen::x1#7 Not aliassing across scopes: mul_u4f12::return#2 mul_u4f12::return#5 -Not aliassing across scopes: sin16s_gen::$16 mul_u4f12::return#8 +Not aliassing across scopes: sin16s_gen::$17 mul_u4f12::return#8 Not aliassing across scopes: mul_u4f12::v1#3 sin16s_gen::x4#0 Not aliassing across scopes: mul_u4f12::v2#3 sin16s_gen::x1#8 Not aliassing across scopes: mul_u4f12::return#3 mul_u4f12::return#5 -Not aliassing across scopes: sin16s_gen::$17 mul_u4f12::return#9 +Not aliassing across scopes: sin16s_gen::$18 mul_u4f12::return#9 Not aliassing across scopes: mul16u::a#2 sin16s_gen::x5#0 -Not aliassing across scopes: mul16u::b#1 sin16s_gen::div128#1 Not aliassing across scopes: mul16u::return#3 mul16u::return#1 -Not aliassing across scopes: sin16s_gen::$18 mul16u::return#7 +Not aliassing across scopes: sin16s_gen::$20 mul16u::return#7 Not aliassing across scopes: mul_u4f12::v1#4 mul_u4f12::v1#1 Not aliassing across scopes: mul_u4f12::v2#4 mul_u4f12::v2#1 Not aliassing across scopes: mul16u::a#3 mul_u4f12::v1#4 @@ -3503,65 +3474,61 @@ Alias (byte*) line_cursor#11 = (byte*) line_cursor#14 (byte*) line_cursor#16 (by Alias (byte*) char_cursor#17 = (byte*) char_cursor#36 Alias (byte*) char_cursor#18 = (byte*) char_cursor#37 (byte*) char_cursor#38 (byte*) char_cursor#19 Alias (signed word*) main::st1#1 = (signed word*~) main::$4 +Alias (word) divr16u::dividend#1 = (word~) sin16s_gen::$0 Alias (word) divr16u::return#2 = (word) divr16u::return#5 -Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#2 (word) sin16s_gen::wavelength#16 -Alias (signed word*) sin16s_gen::sintab#15 = (signed word*) sin16s_gen::sintab#16 (signed word*) sin16s_gen::sintab#17 +Alias (word) sin16s_gen::wavelength#1 = (word) sin16s_gen::wavelength#2 (word) sin16s_gen::wavelength#17 +Alias (signed word*) sin16s_gen::sintab#16 = (signed word*) sin16s_gen::sintab#17 (signed word*) sin16s_gen::sintab#18 Alias (word) rem16u#12 = (word) rem16u#5 -Alias (word) sin16s_gen::stepi#0 = (word~) sin16s_gen::$0 (word) sin16s_gen::stepi#1 +Alias (word) sin16s_gen::stepi#0 = (word~) sin16s_gen::$1 (word) sin16s_gen::stepi#1 +Alias (word) divr16u::dividend#2 = (word~) sin16s_gen::$2 Alias (word) divr16u::return#3 = (word) divr16u::return#6 Alias (word) rem16u#13 = (word) rem16u#6 -Alias (word) sin16s_gen::stepf#0 = (word~) sin16s_gen::$1 -Alias (word) sin16s_gen::div6#0 = (word/signed word/dword/signed dword~) sin16s_gen::$2 -Alias (word) sin16s_gen::div128#0 = (word/signed word/dword/signed dword~) sin16s_gen::$3 +Alias (word) sin16s_gen::stepf#0 = (word~) sin16s_gen::$3 Alias (word) sin16s_gen::x1#0 = (word~) sin16s_gen::$4 (word) sin16s_gen::x1#4 -Alias (word) sin16s_gen::div6#6 = (word) sin16s_gen::div6#7 -Alias (word) sin16s_gen::div128#10 = (word) sin16s_gen::div128#9 -Alias (signed word*) sin16s_gen::sintab#13 = (signed word*) sin16s_gen::sintab#14 -Alias (dword) sin16s_gen::x#14 = (dword) sin16s_gen::x#2 -Alias (dword) sin16s_gen::step#12 = (dword) sin16s_gen::step#13 -Alias (word) sin16s_gen::i#13 = (word) sin16s_gen::i#14 -Alias (word) sin16s_gen::wavelength#14 = (word) sin16s_gen::wavelength#15 -Alias (word) rem16u#36 = (word) rem16u#37 +Alias (signed word*) sin16s_gen::sintab#14 = (signed word*) sin16s_gen::sintab#15 +Alias (dword) sin16s_gen::x#15 = (dword) sin16s_gen::x#2 +Alias (dword) sin16s_gen::step#13 = (dword) sin16s_gen::step#14 +Alias (word) sin16s_gen::i#14 = (word) sin16s_gen::i#15 +Alias (word) sin16s_gen::wavelength#15 = (word) sin16s_gen::wavelength#16 +Alias (word) rem16u#37 = (word) rem16u#38 Alias (word) sin16s_gen::x1#1 = (word~) sin16s_gen::$7 Alias (word) mul_u4f12::return#0 = (word) mul_u4f12::return#6 Alias (word) sin16s_gen::x1#10 = (word) sin16s_gen::x1#6 (word) sin16s_gen::x1#5 (word) sin16s_gen::x1#7 (word) sin16s_gen::x1#8 -Alias (word) sin16s_gen::div6#1 = (word) sin16s_gen::div6#2 (word) sin16s_gen::div6#3 (word) sin16s_gen::div6#13 (word) sin16s_gen::div6#12 (word) sin16s_gen::div6#11 (word) sin16s_gen::div6#9 (word) sin16s_gen::div6#10 -Alias (word) sin16s_gen::div128#1 = (word) sin16s_gen::div128#5 (word) sin16s_gen::div128#6 (word) sin16s_gen::div128#4 (word) sin16s_gen::div128#3 (word) sin16s_gen::div128#2 (word) sin16s_gen::div128#12 (word) sin16s_gen::div128#13 Alias (byte) sin16s_gen::isUpper#2 = (byte) sin16s_gen::isUpper#7 (byte) sin16s_gen::isUpper#8 (byte) sin16s_gen::isUpper#6 (byte) sin16s_gen::isUpper#5 (byte) sin16s_gen::isUpper#4 (byte) sin16s_gen::isUpper#3 -Alias (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#9 (signed word*) sin16s_gen::sintab#8 (signed word*) sin16s_gen::sintab#7 (signed word*) sin16s_gen::sintab#6 (signed word*) sin16s_gen::sintab#5 (signed word*) sin16s_gen::sintab#3 (signed word*) sin16s_gen::sintab#4 -Alias (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#11 (dword) sin16s_gen::x#9 (dword) sin16s_gen::x#8 (dword) sin16s_gen::x#7 (dword) sin16s_gen::x#6 (dword) sin16s_gen::x#4 (dword) sin16s_gen::x#5 -Alias (dword) sin16s_gen::step#2 = (dword) sin16s_gen::step#8 (dword) sin16s_gen::step#9 (dword) sin16s_gen::step#7 (dword) sin16s_gen::step#6 (dword) sin16s_gen::step#5 (dword) sin16s_gen::step#4 (dword) sin16s_gen::step#3 -Alias (word) sin16s_gen::i#10 = (word) sin16s_gen::i#9 (word) sin16s_gen::i#8 (word) sin16s_gen::i#7 (word) sin16s_gen::i#6 (word) sin16s_gen::i#5 (word) sin16s_gen::i#3 (word) sin16s_gen::i#4 -Alias (word) sin16s_gen::wavelength#10 = (word) sin16s_gen::wavelength#11 (word) sin16s_gen::wavelength#9 (word) sin16s_gen::wavelength#8 (word) sin16s_gen::wavelength#7 (word) sin16s_gen::wavelength#6 (word) sin16s_gen::wavelength#4 (word) sin16s_gen::wavelength#5 -Alias (word) rem16u#22 = (word) rem16u#32 (word) rem16u#33 (word) rem16u#31 (word) rem16u#30 (word) rem16u#29 (word) rem16u#27 (word) rem16u#23 +Alias (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#11 (signed word*) sin16s_gen::sintab#9 (signed word*) sin16s_gen::sintab#8 (signed word*) sin16s_gen::sintab#7 (signed word*) sin16s_gen::sintab#6 (signed word*) sin16s_gen::sintab#5 (signed word*) sin16s_gen::sintab#3 (signed word*) sin16s_gen::sintab#4 +Alias (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#11 (dword) sin16s_gen::x#12 (dword) sin16s_gen::x#9 (dword) sin16s_gen::x#8 (dword) sin16s_gen::x#7 (dword) sin16s_gen::x#6 (dword) sin16s_gen::x#4 (dword) sin16s_gen::x#5 +Alias (dword) sin16s_gen::step#10 = (dword) sin16s_gen::step#9 (dword) sin16s_gen::step#8 (dword) sin16s_gen::step#7 (dword) sin16s_gen::step#6 (dword) sin16s_gen::step#5 (dword) sin16s_gen::step#4 (dword) sin16s_gen::step#2 (dword) sin16s_gen::step#3 +Alias (word) sin16s_gen::i#10 = (word) sin16s_gen::i#11 (word) sin16s_gen::i#9 (word) sin16s_gen::i#8 (word) sin16s_gen::i#7 (word) sin16s_gen::i#6 (word) sin16s_gen::i#5 (word) sin16s_gen::i#3 (word) sin16s_gen::i#4 +Alias (word) sin16s_gen::wavelength#10 = (word) sin16s_gen::wavelength#11 (word) sin16s_gen::wavelength#12 (word) sin16s_gen::wavelength#9 (word) sin16s_gen::wavelength#8 (word) sin16s_gen::wavelength#7 (word) sin16s_gen::wavelength#6 (word) sin16s_gen::wavelength#4 (word) sin16s_gen::wavelength#5 +Alias (word) rem16u#22 = (word) rem16u#33 (word) rem16u#34 (word) rem16u#32 (word) rem16u#31 (word) rem16u#30 (word) rem16u#29 (word) rem16u#27 (word) rem16u#23 Alias (word) sin16s_gen::x2#0 = (word~) sin16s_gen::$11 Alias (word) mul_u4f12::return#1 = (word) mul_u4f12::return#7 Alias (word) sin16s_gen::x3#0 = (word~) sin16s_gen::$12 (word) sin16s_gen::x3#1 +Alias (word) mul16u::b#0 = (word/signed word/dword/signed dword~) sin16s_gen::$13 Alias (dword) mul16u::return#2 = (dword) mul16u::return#6 -Alias (word) sin16s_gen::x3_6#0 = (word~) sin16s_gen::$14 -Alias (word) sin16s_gen::usinx#0 = (word~) sin16s_gen::$15 (word) sin16s_gen::usinx#4 (word) sin16s_gen::usinx#3 (word) sin16s_gen::usinx#2 +Alias (word) sin16s_gen::x3_6#0 = (word~) sin16s_gen::$15 +Alias (word) sin16s_gen::usinx#0 = (word~) sin16s_gen::$16 (word) sin16s_gen::usinx#6 (word) sin16s_gen::usinx#5 (word) sin16s_gen::usinx#2 Alias (word) mul_u4f12::return#2 = (word) mul_u4f12::return#8 -Alias (word) sin16s_gen::x4#0 = (word~) sin16s_gen::$16 +Alias (word) sin16s_gen::x4#0 = (word~) sin16s_gen::$17 Alias (word) mul_u4f12::return#3 = (word) mul_u4f12::return#9 -Alias (word) sin16s_gen::x5#0 = (word~) sin16s_gen::$17 +Alias (word) sin16s_gen::x5#0 = (word~) sin16s_gen::$18 +Alias (word) mul16u::b#1 = (word/signed word/dword/signed dword~) sin16s_gen::$19 Alias (dword) mul16u::return#3 = (dword) mul16u::return#7 -Alias (word) sin16s_gen::x5_128#0 = (word~) sin16s_gen::$19 -Alias (word) sin16s_gen::usinx#1 = (word~) sin16s_gen::$20 -Alias (signed word) sin16s_gen::sinx#0 = (signed word~) sin16s_gen::$21 (signed word) sin16s_gen::sinx#3 +Alias (word) sin16s_gen::x5_128#0 = (word~) sin16s_gen::$21 +Alias (word) sin16s_gen::usinx#1 = (word~) sin16s_gen::$22 (word) sin16s_gen::usinx#3 (word) sin16s_gen::usinx#4 Alias (word) sin16s_gen::x1#3 = (word) sin16s_gen::x1#9 -Alias (word) sin16s_gen::div6#4 = (word) sin16s_gen::div6#5 -Alias (word) sin16s_gen::div128#7 = (word) sin16s_gen::div128#8 Alias (byte) sin16s_gen::isUpper#10 = (byte) sin16s_gen::isUpper#9 -Alias (signed word*) sin16s_gen::sintab#11 = (signed word*) sin16s_gen::sintab#12 -Alias (dword) sin16s_gen::x#12 = (dword) sin16s_gen::x#13 -Alias (dword) sin16s_gen::step#10 = (dword) sin16s_gen::step#11 -Alias (word) sin16s_gen::i#11 = (word) sin16s_gen::i#12 -Alias (word) sin16s_gen::wavelength#12 = (word) sin16s_gen::wavelength#13 -Alias (word) rem16u#34 = (word) rem16u#35 +Alias (signed word*) sin16s_gen::sintab#12 = (signed word*) sin16s_gen::sintab#13 +Alias (dword) sin16s_gen::x#13 = (dword) sin16s_gen::x#14 +Alias (dword) sin16s_gen::step#11 = (dword) sin16s_gen::step#12 +Alias (word) sin16s_gen::i#12 = (word) sin16s_gen::i#13 +Alias (word) sin16s_gen::wavelength#13 = (word) sin16s_gen::wavelength#14 +Alias (word) rem16u#35 = (word) rem16u#36 Alias (word) sin16s_gen::x1#2 = (word~) sin16s_gen::$10 -Alias (signed word*) sin16s_gen::sintab#1 = (signed word*~) sin16s_gen::$25 -Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$26 -Alias (signed word) sin16s_gen::sinx#1 = (signed word~) sin16s_gen::$24 +Alias (signed word) sin16s_gen::sinx#0 = (signed word~) sin16s_gen::$27 +Alias (signed word) sin16s_gen::sinx#1 = (signed word~) sin16s_gen::$26 +Alias (signed word*) sin16s_gen::sintab#1 = (signed word*~) sin16s_gen::$28 +Alias (dword) sin16s_gen::x#1 = (dword~) sin16s_gen::$29 Alias (word) rem16u#14 = (word) rem16u#19 (word) rem16u#7 Alias (dword) mul16u::return#4 = (dword) mul16u::return#8 Alias (word) mul_u4f12::return#10 = (word) mul_u4f12::return#4 (word~) mul_u4f12::$2 (word) mul_u4f12::return#5 @@ -3605,8 +3572,7 @@ Not aliassing across scopes: char_cursor#17 char_cursor#23 Not aliassing across scopes: char_cursor#18 char_cursor#2 Not aliassing across scopes: sin16s_gen::wavelength#1 sin16s_gen::wavelength#0 Not aliassing across scopes: rem16u#18 rem16u#16 -Not aliassing across scopes: sin16s_gen::sintab#15 sin16s_gen::sintab#0 -Not aliassing across scopes: divr16u::dividend#1 PI2_u4f12#0 +Not aliassing across scopes: sin16s_gen::sintab#16 sin16s_gen::sintab#0 Not aliassing across scopes: divr16u::divisor#0 sin16s_gen::wavelength#1 Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: rem16u#12 rem16u#1 @@ -3625,9 +3591,8 @@ Not aliassing across scopes: mul_u4f12::v2#1 sin16s_gen::x1#10 Not aliassing across scopes: mul_u4f12::return#1 mul_u4f12::return#10 Not aliassing across scopes: sin16s_gen::x3#0 mul_u4f12::return#1 Not aliassing across scopes: mul16u::a#1 sin16s_gen::x3#0 -Not aliassing across scopes: mul16u::b#0 sin16s_gen::div6#1 Not aliassing across scopes: mul16u::return#2 mul16u::res#2 -Not aliassing across scopes: sin16s_gen::$13 mul16u::return#2 +Not aliassing across scopes: sin16s_gen::$14 mul16u::return#2 Not aliassing across scopes: mul_u4f12::v1#2 sin16s_gen::x3#0 Not aliassing across scopes: mul_u4f12::v2#2 sin16s_gen::x1#10 Not aliassing across scopes: mul_u4f12::return#2 mul_u4f12::return#10 @@ -3637,9 +3602,8 @@ Not aliassing across scopes: mul_u4f12::v2#3 sin16s_gen::x1#10 Not aliassing across scopes: mul_u4f12::return#3 mul_u4f12::return#10 Not aliassing across scopes: sin16s_gen::x5#0 mul_u4f12::return#3 Not aliassing across scopes: mul16u::a#2 sin16s_gen::x5#0 -Not aliassing across scopes: mul16u::b#1 sin16s_gen::div128#1 Not aliassing across scopes: mul16u::return#3 mul16u::res#2 -Not aliassing across scopes: sin16s_gen::$18 mul16u::return#3 +Not aliassing across scopes: sin16s_gen::$20 mul16u::return#3 Not aliassing across scopes: mul_u4f12::v1#4 mul_u4f12::v1#1 Not aliassing across scopes: mul_u4f12::v2#4 mul_u4f12::v2#1 Not aliassing across scopes: mul16u::a#3 mul_u4f12::v1#4 @@ -3656,14 +3620,12 @@ Alias (byte) divr16u::i#2 = (byte) divr16u::i#3 (byte) divr16u::i#5 Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#6 Alias (word) mul16u::a#4 = (word) mul16u::a#6 Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3 -Alias (word) sin16s_gen::div6#1 = (word) sin16s_gen::div6#4 (word) sin16s_gen::div6#6 (word) sin16s_gen::div6#8 -Alias (word) sin16s_gen::div128#1 = (word) sin16s_gen::div128#7 (word) sin16s_gen::div128#10 (word) sin16s_gen::div128#11 -Alias (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#11 (signed word*) sin16s_gen::sintab#13 (signed word*) sin16s_gen::sintab#2 -Alias (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#12 (dword) sin16s_gen::x#14 (dword) sin16s_gen::x#3 -Alias (dword) sin16s_gen::step#1 = (dword) sin16s_gen::step#10 (dword) sin16s_gen::step#12 (dword) sin16s_gen::step#2 -Alias (word) sin16s_gen::i#10 = (word) sin16s_gen::i#11 (word) sin16s_gen::i#13 (word) sin16s_gen::i#2 -Alias (word) sin16s_gen::wavelength#10 = (word) sin16s_gen::wavelength#12 (word) sin16s_gen::wavelength#14 (word) sin16s_gen::wavelength#3 -Alias (word) rem16u#14 = (word) rem16u#34 (word) rem16u#36 (word) rem16u#22 +Alias (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#12 (signed word*) sin16s_gen::sintab#14 (signed word*) sin16s_gen::sintab#2 +Alias (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#13 (dword) sin16s_gen::x#15 (dword) sin16s_gen::x#3 +Alias (dword) sin16s_gen::step#1 = (dword) sin16s_gen::step#11 (dword) sin16s_gen::step#13 (dword) sin16s_gen::step#10 +Alias (word) sin16s_gen::i#10 = (word) sin16s_gen::i#12 (word) sin16s_gen::i#14 (word) sin16s_gen::i#2 +Alias (word) sin16s_gen::wavelength#10 = (word) sin16s_gen::wavelength#13 (word) sin16s_gen::wavelength#15 (word) sin16s_gen::wavelength#3 +Alias (word) rem16u#14 = (word) rem16u#35 (word) rem16u#37 (word) rem16u#22 Alias (byte) sin16s_gen::isUpper#10 = (byte) sin16s_gen::isUpper#2 Succesful SSA optimization Pass2AliasElimination Not aliassing across scopes: divr16u::rem#10 divr16u::rem#3 @@ -3702,8 +3664,7 @@ Not aliassing across scopes: char_cursor#17 char_cursor#23 Not aliassing across scopes: char_cursor#18 char_cursor#2 Not aliassing across scopes: sin16s_gen::wavelength#1 sin16s_gen::wavelength#0 Not aliassing across scopes: rem16u#18 rem16u#16 -Not aliassing across scopes: sin16s_gen::sintab#15 sin16s_gen::sintab#0 -Not aliassing across scopes: divr16u::dividend#1 PI2_u4f12#0 +Not aliassing across scopes: sin16s_gen::sintab#16 sin16s_gen::sintab#0 Not aliassing across scopes: divr16u::divisor#0 sin16s_gen::wavelength#1 Not aliassing across scopes: divr16u::return#2 divr16u::return#0 Not aliassing across scopes: rem16u#12 rem16u#1 @@ -3722,9 +3683,8 @@ Not aliassing across scopes: mul_u4f12::v2#1 sin16s_gen::x1#10 Not aliassing across scopes: mul_u4f12::return#1 mul_u4f12::return#10 Not aliassing across scopes: sin16s_gen::x3#0 mul_u4f12::return#1 Not aliassing across scopes: mul16u::a#1 sin16s_gen::x3#0 -Not aliassing across scopes: mul16u::b#0 sin16s_gen::div6#1 Not aliassing across scopes: mul16u::return#2 mul16u::res#2 -Not aliassing across scopes: sin16s_gen::$13 mul16u::return#2 +Not aliassing across scopes: sin16s_gen::$14 mul16u::return#2 Not aliassing across scopes: mul_u4f12::v1#2 sin16s_gen::x3#0 Not aliassing across scopes: mul_u4f12::v2#2 sin16s_gen::x1#10 Not aliassing across scopes: mul_u4f12::return#2 mul_u4f12::return#10 @@ -3734,9 +3694,8 @@ Not aliassing across scopes: mul_u4f12::v2#3 sin16s_gen::x1#10 Not aliassing across scopes: mul_u4f12::return#3 mul_u4f12::return#10 Not aliassing across scopes: sin16s_gen::x5#0 mul_u4f12::return#3 Not aliassing across scopes: mul16u::a#2 sin16s_gen::x5#0 -Not aliassing across scopes: mul16u::b#1 sin16s_gen::div128#1 Not aliassing across scopes: mul16u::return#3 mul16u::res#2 -Not aliassing across scopes: sin16s_gen::$18 mul16u::return#3 +Not aliassing across scopes: sin16s_gen::$20 mul16u::return#3 Not aliassing across scopes: mul_u4f12::v1#4 mul_u4f12::v1#1 Not aliassing across scopes: mul_u4f12::v2#4 mul_u4f12::v2#1 Not aliassing across scopes: mul16u::a#3 mul_u4f12::v1#4 @@ -3750,8 +3709,6 @@ Self Phi Eliminated (word) divr16u::divisor#2 Self Phi Eliminated (word) main::wavelength#1 Self Phi Eliminated (word) rem16u#11 Self Phi Eliminated (byte*) line_cursor#11 -Self Phi Eliminated (word) sin16s_gen::div6#1 -Self Phi Eliminated (word) sin16s_gen::div128#1 Self Phi Eliminated (dword) sin16s_gen::step#1 Self Phi Eliminated (word) sin16s_gen::wavelength#10 Self Phi Eliminated (word) rem16u#14 @@ -3782,11 +3739,9 @@ Redundant Phi (byte*) char_cursor#17 (byte*) char_cursor#23 Redundant Phi (byte*) char_cursor#18 (byte*) char_cursor#2 Redundant Phi (word) sin16s_gen::wavelength#1 (word) sin16s_gen::wavelength#0 Redundant Phi (word) rem16u#18 (word) rem16u#16 -Redundant Phi (signed word*) sin16s_gen::sintab#15 (signed word*) sin16s_gen::sintab#0 +Redundant Phi (signed word*) sin16s_gen::sintab#16 (signed word*) sin16s_gen::sintab#0 Redundant Phi (word) rem16u#12 (word) rem16u#1 Redundant Phi (word) rem16u#13 (word) rem16u#1 -Redundant Phi (word) sin16s_gen::div6#1 (word) sin16s_gen::div6#0 -Redundant Phi (word) sin16s_gen::div128#1 (word) sin16s_gen::div128#0 Redundant Phi (dword) sin16s_gen::step#1 (dword) sin16s_gen::step#0 Redundant Phi (word) sin16s_gen::wavelength#10 (word) sin16s_gen::wavelength#1 Redundant Phi (word) rem16u#14 (word) rem16u#13 @@ -3805,8 +3760,8 @@ Simple Condition (boolean~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) p Simple Condition (boolean~) main::$7 if((signed word*) main::st1#1<(signed word*~) main::$6) goto main::@1 Simple Condition (boolean~) sin16s_gen::$6 if((word) sin16s_gen::x1#0<(word) PI_u4f12#0) goto sin16s_gen::@2 Simple Condition (boolean~) sin16s_gen::$9 if((word) sin16s_gen::x1#3<(word) PI_HALF_u4f12#0) goto sin16s_gen::@3 -Simple Condition (boolean~) sin16s_gen::$23 if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@4 -Simple Condition (boolean~) sin16s_gen::$27 if((word) sin16s_gen::i#1<(word) sin16s_gen::wavelength#0) goto sin16s_gen::@1 +Simple Condition (boolean~) sin16s_gen::$24 if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@4 +Simple Condition (boolean~) sin16s_gen::$30 if((word) sin16s_gen::i#1<(word) sin16s_gen::wavelength#0) goto sin16s_gen::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 @@ -3818,17 +3773,16 @@ Constant (const string) print_byte::hextab#0 = print_byte::$4 Constant (const word) main::wavelength#0 = 128 Constant (const signed word[128]) main::sintab1#0 = { fill( 128, 0) } Constant (const string) print_str::str#1 = main::str -Constant (const word) PI2_u4f12#0 = 25736 +Constant (const dword) PI2_u4f28#0 = 1686629713 Constant (const word) PI_u4f12#0 = 12868 Constant (const word) PI_HALF_u4f12#0 = 6434 Constant (const word) divr16u::rem#3 = 0 -Constant (const word) divr16u::dividend#2 = 0 Constant (const dword) sin16s_gen::x#0 = 0 -Constant (const word) sin16s_gen::div6#0 = 65536/6 -Constant (const word) sin16s_gen::div128#0 = 65536/128 Constant (const word) sin16s_gen::i#0 = 0 Constant (const byte) sin16s_gen::isUpper#0 = 0 Constant (const byte) sin16s_gen::isUpper#1 = 1 +Constant (const word) mul16u::b#0 = 65536/6 +Constant (const word) mul16u::b#1 = 65536/128 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = SCREEN#0 Constant (const byte*) print_cls::$0 = SCREEN#0+1000 @@ -3836,21 +3790,21 @@ Constant (const byte*) line_cursor#1 = SCREEN#0 Constant (const signed word[128]) sin16s_gen::sintab#0 = main::sintab1#0 Constant (const word) sin16s_gen::wavelength#0 = main::wavelength#0 Constant (const word) main::$5 = main::wavelength#0*2 -Constant (const word) divr16u::dividend#1 = PI2_u4f12#0 -Constant (const word) mul16u::b#0 = sin16s_gen::div6#0 -Constant (const word) mul16u::b#1 = sin16s_gen::div128#0 +Constant (const word) divr16u::dividend#1 = >PI2_u4f28#0 +Constant (const word) divr16u::dividend#2 = (const dword) PI2_u4f28#0 +Constant inlined divr16u::dividend#2 = <(const dword) PI2_u4f28#0 +Constant inlined mul16u::b#0 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul16u::res#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_char::ch#0 = (byte) '-' @@ -4068,20 +4026,20 @@ Constant inlined print_byte::$4 = (const string) print_byte::hextab#0 Constant inlined divr16u::divisor#1 = (const word) main::wavelength#0 Constant inlined divr16u::divisor#0 = (const word) main::wavelength#0 Succesful SSA optimization Pass2ConstantInlining -Block Sequence Planned @begin @23 @end main main::@3 main::@1 main::@5 main::@6 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::@9 sin16s_gen::@10 sin16s_gen::@1 sin16s_gen::@5 sin16s_gen::@2 sin16s_gen::@6 sin16s_gen::@3 sin16s_gen::@11 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@7 sin16s_gen::@4 sin16s_gen::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul_u4f12 mul_u4f12::@2 mul_u4f12::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return +Block Sequence Planned @begin @23 @end main main::@3 main::@1 main::@5 main::@6 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::@11 sin16s_gen::@12 sin16s_gen::@1 sin16s_gen::@6 sin16s_gen::@2 sin16s_gen::@7 sin16s_gen::@3 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@17 sin16s_gen::@18 sin16s_gen::@8 sin16s_gen::@5 sin16s_gen::@return mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul_u4f12 mul_u4f12::@2 mul_u4f12::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return Added new block during phi lifting main::@7(between main::@6 and main::@1) Added new block during phi lifting print_sword::@5(between print_sword and print_sword::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) -Added new block during phi lifting sin16s_gen::@17(between sin16s_gen::@4 and sin16s_gen::@1) -Added new block during phi lifting sin16s_gen::@18(between sin16s_gen::@1 and sin16s_gen::@2) -Fixing phi predecessor for sin16s_gen::isUpper#10 to new block ( sin16s_gen::@1 -> sin16s_gen::@18 ) during phi lifting. -Added new block during phi lifting sin16s_gen::@19(between sin16s_gen::@2 and sin16s_gen::@3) -Added new block during phi lifting sin16s_gen::@20(between sin16s_gen::@16 and sin16s_gen::@4) +Added new block during phi lifting sin16s_gen::@19(between sin16s_gen::@5 and sin16s_gen::@1) +Added new block during phi lifting sin16s_gen::@20(between sin16s_gen::@1 and sin16s_gen::@2) +Fixing phi predecessor for sin16s_gen::isUpper#10 to new block ( sin16s_gen::@1 -> sin16s_gen::@20 ) during phi lifting. +Added new block during phi lifting sin16s_gen::@21(between sin16s_gen::@2 and sin16s_gen::@3) +Added new block during phi lifting sin16s_gen::@22(between sin16s_gen::@18 and sin16s_gen::@5) 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 @23 @end main main::@3 main::@1 main::@5 main::@6 main::@return main::@7 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::@9 sin16s_gen::@10 sin16s_gen::@1 sin16s_gen::@5 sin16s_gen::@2 sin16s_gen::@6 sin16s_gen::@3 sin16s_gen::@11 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@7 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@17 sin16s_gen::@20 sin16s_gen::@19 sin16s_gen::@18 mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 mul_u4f12 mul_u4f12::@2 mul_u4f12::@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 @23 @end main main::@3 main::@1 main::@5 main::@6 main::@return main::@7 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::@11 sin16s_gen::@12 sin16s_gen::@1 sin16s_gen::@6 sin16s_gen::@2 sin16s_gen::@7 sin16s_gen::@3 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@17 sin16s_gen::@18 sin16s_gen::@8 sin16s_gen::@5 sin16s_gen::@return sin16s_gen::@19 sin16s_gen::@22 sin16s_gen::@21 sin16s_gen::@20 mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul16u::@10 mul_u4f12 mul_u4f12::@2 mul_u4f12::@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 @23 Adding NOP phi() at start of @end @@ -4190,10 +4148,10 @@ Coalesced [114] mul_u4f12::v2#6 ← mul_u4f12::v2#2 Coalesced [120] mul_u4f12::v1#7 ← mul_u4f12::v1#3 Coalesced [121] mul_u4f12::v2#7 ← mul_u4f12::v2#3 Coalesced [126] mul16u::a#11 ← mul16u::a#2 -Coalesced [134] sin16s_gen::sinx#5 ← sin16s_gen::sinx#1 -Coalesced [142] sin16s_gen::x#15 ← sin16s_gen::x#1 -Coalesced [143] sin16s_gen::sintab#18 ← sin16s_gen::sintab#1 -Coalesced [144] sin16s_gen::i#15 ← sin16s_gen::i#1 +Coalesced [134] sin16s_gen::sinx#4 ← sin16s_gen::sinx#1 +Coalesced [142] sin16s_gen::x#16 ← sin16s_gen::x#1 +Coalesced [143] sin16s_gen::sintab#19 ← sin16s_gen::sintab#1 +Coalesced [144] sin16s_gen::i#16 ← sin16s_gen::i#1 Coalesced [146] sin16s_gen::x1#13 ← sin16s_gen::x1#3 Coalesced [147] sin16s_gen::x1#11 ← sin16s_gen::x1#0 Coalesced [150] mul16u::a#12 ← mul16u::a#7 @@ -4221,14 +4179,14 @@ Coalesced down to 24 phi equivalence classes Culled Empty Block (label) main::@7 Culled Empty Block (label) print_sword::@5 Culled Empty Block (label) print_cls::@3 -Culled Empty Block (label) sin16s_gen::@17 Culled Empty Block (label) sin16s_gen::@19 -Culled Empty Block (label) sin16s_gen::@18 +Culled Empty Block (label) sin16s_gen::@21 +Culled Empty Block (label) sin16s_gen::@20 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 @23 @end main main::@3 main::@1 main::@5 main::@6 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::@9 sin16s_gen::@10 sin16s_gen::@1 sin16s_gen::@5 sin16s_gen::@2 sin16s_gen::@6 sin16s_gen::@3 sin16s_gen::@11 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@7 sin16s_gen::@4 sin16s_gen::@return sin16s_gen::@20 mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul_u4f12 mul_u4f12::@2 mul_u4f12::@return divr16u divr16u::@1 divr16u::@4 divr16u::@2 divr16u::@5 divr16u::@3 divr16u::@6 divr16u::@return +Block Sequence Planned @begin @23 @end main main::@3 main::@1 main::@5 main::@6 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::@11 sin16s_gen::@12 sin16s_gen::@1 sin16s_gen::@6 sin16s_gen::@2 sin16s_gen::@7 sin16s_gen::@3 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@17 sin16s_gen::@18 sin16s_gen::@8 sin16s_gen::@5 sin16s_gen::@return sin16s_gen::@22 mul16u mul16u::@1 mul16u::@return mul16u::@2 mul16u::@7 mul16u::@4 mul_u4f12 mul_u4f12::@2 mul_u4f12::@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 @23 Adding NOP phi() at start of @end @@ -4405,103 +4363,103 @@ sin16s_gen: scope:[sin16s_gen] from main [53] phi() [ ] ( main:2::sin16s_gen:5 [ ] ) [54] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 rem16u#1 ] ) [55] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#2 rem16u#1 ] ) - to:sin16s_gen::@9 -sin16s_gen::@9: scope:[sin16s_gen] from sin16s_gen + to:sin16s_gen::@11 +sin16s_gen::@11: scope:[sin16s_gen] from sin16s_gen [56] (word) sin16s_gen::stepi#0 ← (word) divr16u::return#2 [ sin16s_gen::stepi#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 rem16u#1 ] ) [57] (word) divr16u::rem#4 ← (word) rem16u#1 [ sin16s_gen::stepi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::rem#4 ] ) [58] call divr16u param-assignment [ divr16u::return#0 sin16s_gen::stepi#0 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 sin16s_gen::stepi#0 ] ) [59] (word) divr16u::return#3 ← (word) divr16u::return#0 [ sin16s_gen::stepi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::return#3 ] ) - to:sin16s_gen::@10 -sin16s_gen::@10: scope:[sin16s_gen] from sin16s_gen::@9 + to:sin16s_gen::@12 +sin16s_gen::@12: scope:[sin16s_gen] from sin16s_gen::@11 [60] (word) sin16s_gen::stepf#0 ← (word) divr16u::return#3 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ) [61] (dword) sin16s_gen::step#0 ← (word) sin16s_gen::stepi#0 dw= (word) sin16s_gen::stepf#0 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) to:sin16s_gen::@1 -sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@10 sin16s_gen::@4 - [62] (word) sin16s_gen::i#10 ← phi( sin16s_gen::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(word) sin16s_gen::i#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) - [62] (signed word*) sin16s_gen::sintab#10 ← phi( sin16s_gen::@10/(const signed word[128]) main::sintab1#0 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) - [62] (dword) sin16s_gen::x#10 ← phi( sin16s_gen::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(dword) sin16s_gen::x#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) +sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@12 sin16s_gen::@5 + [62] (word) sin16s_gen::i#10 ← phi( sin16s_gen::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@5/(word) sin16s_gen::i#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) + [62] (signed word*) sin16s_gen::sintab#10 ← phi( sin16s_gen::@12/(const signed word[128]) main::sintab1#0 sin16s_gen::@5/(signed word*) sin16s_gen::sintab#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) + [62] (dword) sin16s_gen::x#10 ← phi( sin16s_gen::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@5/(dword) sin16s_gen::x#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) [63] (word) sin16s_gen::x1#0 ← > (dword) sin16s_gen::x#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ) [64] if((word) sin16s_gen::x1#0<(const word) PI_u4f12#0) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ) - to:sin16s_gen::@5 -sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@1 + to:sin16s_gen::@6 +sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@1 [65] (word) sin16s_gen::x1#1 ← (word) sin16s_gen::x1#0 - (const word) PI_u4f12#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#1 ] ) to:sin16s_gen::@2 -sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@5 - [66] (byte) sin16s_gen::isUpper#10 ← phi( sin16s_gen::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) - [66] (word) sin16s_gen::x1#3 ← phi( sin16s_gen::@1/(word) sin16s_gen::x1#0 sin16s_gen::@5/(word) sin16s_gen::x1#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) +sin16s_gen::@2: scope:[sin16s_gen] from sin16s_gen::@1 sin16s_gen::@6 + [66] (byte) sin16s_gen::isUpper#10 ← phi( sin16s_gen::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@6/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) + [66] (word) sin16s_gen::x1#3 ← phi( sin16s_gen::@1/(word) sin16s_gen::x1#0 sin16s_gen::@6/(word) sin16s_gen::x1#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) [67] if((word) sin16s_gen::x1#3<(const word) PI_HALF_u4f12#0) goto sin16s_gen::@3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#3 sin16s_gen::isUpper#10 ] ) - to:sin16s_gen::@6 -sin16s_gen::@6: scope:[sin16s_gen] from sin16s_gen::@2 + to:sin16s_gen::@7 +sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@2 [68] (word) sin16s_gen::x1#2 ← (const word) PI_u4f12#0 - (word) sin16s_gen::x1#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#2 ] ) to:sin16s_gen::@3 -sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@6 - [69] (word) sin16s_gen::x1#10 ← phi( sin16s_gen::@2/(word) sin16s_gen::x1#3 sin16s_gen::@6/(word) sin16s_gen::x1#2 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] ) +sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen::@2 sin16s_gen::@7 + [69] (word) sin16s_gen::x1#10 ← phi( sin16s_gen::@2/(word) sin16s_gen::x1#3 sin16s_gen::@7/(word) sin16s_gen::x1#2 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 ] ) [70] (word) mul_u4f12::v1#0 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 ] ) [71] (word) mul_u4f12::v2#0 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 mul_u4f12::v2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 mul_u4f12::v2#0 ] ) [72] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ) [73] (word) mul_u4f12::return#0 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] ) - to:sin16s_gen::@11 -sin16s_gen::@11: scope:[sin16s_gen] from sin16s_gen::@3 + to:sin16s_gen::@13 +sin16s_gen::@13: scope:[sin16s_gen] from sin16s_gen::@3 [74] (word) sin16s_gen::x2#0 ← (word) mul_u4f12::return#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ) [75] (word) mul_u4f12::v1#1 ← (word) sin16s_gen::x2#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] ) [76] (word) mul_u4f12::v2#1 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] ) [77] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ) [78] (word) mul_u4f12::return#1 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ) - to:sin16s_gen::@12 -sin16s_gen::@12: scope:[sin16s_gen] from sin16s_gen::@11 + to:sin16s_gen::@14 +sin16s_gen::@14: scope:[sin16s_gen] from sin16s_gen::@13 [79] (word) sin16s_gen::x3#0 ← (word) mul_u4f12::return#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ) [80] (word) mul16u::a#1 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#1 ] ) [81] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ) [82] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ) - to:sin16s_gen::@13 -sin16s_gen::@13: scope:[sin16s_gen] from sin16s_gen::@12 - [83] (dword~) sin16s_gen::$13 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ) - [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$13 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) + to:sin16s_gen::@15 +sin16s_gen::@15: scope:[sin16s_gen] from sin16s_gen::@14 + [83] (dword~) sin16s_gen::$14 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ) + [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) [85] (word) sin16s_gen::usinx#0 ← (word) sin16s_gen::x1#10 - (word) sin16s_gen::x3_6#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ) [86] (word) mul_u4f12::v1#2 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] ) [87] (word) mul_u4f12::v2#2 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] ) [88] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) [89] (word) mul_u4f12::return#2 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ) - to:sin16s_gen::@14 -sin16s_gen::@14: scope:[sin16s_gen] from sin16s_gen::@13 + to:sin16s_gen::@16 +sin16s_gen::@16: scope:[sin16s_gen] from sin16s_gen::@15 [90] (word) sin16s_gen::x4#0 ← (word) mul_u4f12::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ) [91] (word) mul_u4f12::v1#3 ← (word) sin16s_gen::x4#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] ) [92] (word) mul_u4f12::v2#3 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] ) [93] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) [94] (word) mul_u4f12::return#3 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ) - to:sin16s_gen::@15 -sin16s_gen::@15: scope:[sin16s_gen] from sin16s_gen::@14 + to:sin16s_gen::@17 +sin16s_gen::@17: scope:[sin16s_gen] from sin16s_gen::@16 [95] (word) sin16s_gen::x5#0 ← (word) mul_u4f12::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ) [96] (word) mul16u::a#2 ← (word) sin16s_gen::x5#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] ) [97] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ) [98] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ) - to:sin16s_gen::@16 -sin16s_gen::@16: scope:[sin16s_gen] from sin16s_gen::@15 - [99] (dword~) sin16s_gen::$18 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ) - [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$18 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) + to:sin16s_gen::@18 +sin16s_gen::@18: scope:[sin16s_gen] from sin16s_gen::@17 + [99] (dword~) sin16s_gen::$20 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ) + [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) [101] (word) sin16s_gen::usinx#1 ← (word) sin16s_gen::usinx#0 + (word) sin16s_gen::x5_128#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ) - [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) - to:sin16s_gen::@7 -sin16s_gen::@7: scope:[sin16s_gen] from sin16s_gen::@16 + [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@22 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) + to:sin16s_gen::@8 +sin16s_gen::@8: scope:[sin16s_gen] from sin16s_gen::@18 [103] (signed word) sin16s_gen::sinx#1 ← - (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ) - to:sin16s_gen::@4 -sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@20 sin16s_gen::@7 - [104] (signed word) sin16s_gen::sinx#2 ← phi( sin16s_gen::@20/(signed word~) sin16s_gen::sinx#4 sin16s_gen::@7/(signed word) sin16s_gen::sinx#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ) + to:sin16s_gen::@5 +sin16s_gen::@5: scope:[sin16s_gen] from sin16s_gen::@22 sin16s_gen::@8 + [104] (signed word) sin16s_gen::sinx#2 ← phi( sin16s_gen::@22/(signed word~) sin16s_gen::sinx#3 sin16s_gen::@8/(signed word) sin16s_gen::sinx#1 ) [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#2 ] ) [105] *((signed word*) sin16s_gen::sintab#10) ← (signed word) sin16s_gen::sinx#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) [106] (signed word*) sin16s_gen::sintab#1 ← (signed word*) sin16s_gen::sintab#10 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::i#10 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::i#10 sin16s_gen::sintab#1 ] ) [107] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#10 + (dword) sin16s_gen::step#0 [ sin16s_gen::step#0 sin16s_gen::i#10 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::i#10 sin16s_gen::x#1 sin16s_gen::sintab#1 ] ) [108] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#10 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) [109] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) to:sin16s_gen::@return -sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4 +sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@5 [110] return [ ] ( main:2::sin16s_gen:5 [ ] ) to:@return -sin16s_gen::@20: scope:[sin16s_gen] from sin16s_gen::@16 - [111] (signed word~) sin16s_gen::sinx#4 ← (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#4 ] ) - to:sin16s_gen::@4 -mul16u: scope:[mul16u] from mul_u4f12 sin16s_gen::@12 sin16s_gen::@15 - [112] (word) mul16u::a#7 ← phi( mul_u4f12/(word) mul16u::a#3 sin16s_gen::@12/(word) mul16u::a#1 sin16s_gen::@15/(word) mul16u::a#2 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] ) - [112] (word) mul16u::b#3 ← phi( mul_u4f12/(word) mul16u::b#2 sin16s_gen::@12/(const word) sin16s_gen::div6#0 sin16s_gen::@15/(const word) sin16s_gen::div128#0 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] ) +sin16s_gen::@22: scope:[sin16s_gen] from sin16s_gen::@18 + [111] (signed word~) sin16s_gen::sinx#3 ← (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] ) + to:sin16s_gen::@5 +mul16u: scope:[mul16u] from mul_u4f12 sin16s_gen::@14 sin16s_gen::@17 + [112] (word) mul16u::a#7 ← phi( mul_u4f12/(word) mul16u::a#3 sin16s_gen::@14/(word) mul16u::a#1 sin16s_gen::@17/(word) mul16u::a#2 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] ) + [112] (word) mul16u::b#3 ← phi( mul_u4f12/(word) mul16u::b#2 sin16s_gen::@14/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 sin16s_gen::@17/(dword/signed dword) 65536/(byte/word/signed word/dword/signed dword) 128 ) [ mul16u::b#3 mul16u::a#7 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#3 mul16u::a#7 ] ) [113] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#3 [ mul16u::a#7 mul16u::mb#0 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#7 mul16u::mb#0 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#7 mul16u::mb#0 ] ) to:mul16u::@1 mul16u::@1: scope:[mul16u] from mul16u mul16u::@4 @@ -4525,9 +4483,9 @@ mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7 [121] (word) mul16u::a#0 ← (word) mul16u::a#4 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:2::sin16s_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ) [122] (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_gen:5::mul16u:81 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul16u:97 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:72::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:77::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:88::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::mul_u4f12:93::mul16u:126 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] ) to:mul16u::@1 -mul_u4f12: scope:[mul_u4f12] from sin16s_gen::@11 sin16s_gen::@13 sin16s_gen::@14 sin16s_gen::@3 - [123] (word) mul_u4f12::v2#4 ← phi( sin16s_gen::@11/(word) mul_u4f12::v2#1 sin16s_gen::@13/(word) mul_u4f12::v2#2 sin16s_gen::@14/(word) mul_u4f12::v2#3 sin16s_gen::@3/(word) mul_u4f12::v2#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] ) - [123] (word) mul_u4f12::v1#4 ← phi( sin16s_gen::@11/(word) mul_u4f12::v1#1 sin16s_gen::@13/(word) mul_u4f12::v1#2 sin16s_gen::@14/(word) mul_u4f12::v1#3 sin16s_gen::@3/(word) mul_u4f12::v1#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] ) +mul_u4f12: scope:[mul_u4f12] from sin16s_gen::@13 sin16s_gen::@15 sin16s_gen::@16 sin16s_gen::@3 + [123] (word) mul_u4f12::v2#4 ← phi( sin16s_gen::@13/(word) mul_u4f12::v2#1 sin16s_gen::@15/(word) mul_u4f12::v2#2 sin16s_gen::@16/(word) mul_u4f12::v2#3 sin16s_gen::@3/(word) mul_u4f12::v2#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] ) + [123] (word) mul_u4f12::v1#4 ← phi( sin16s_gen::@13/(word) mul_u4f12::v1#1 sin16s_gen::@15/(word) mul_u4f12::v1#2 sin16s_gen::@16/(word) mul_u4f12::v1#3 sin16s_gen::@3/(word) mul_u4f12::v1#0 ) [ mul_u4f12::v1#4 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#4 mul_u4f12::v2#4 ] ) [124] (word) mul16u::a#3 ← (word) mul_u4f12::v1#4 [ mul16u::a#3 mul_u4f12::v2#4 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#3 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::a#3 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::a#3 mul_u4f12::v2#4 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#3 mul_u4f12::v2#4 ] ) [125] (word) mul16u::b#2 ← (word) mul_u4f12::v2#4 [ mul16u::b#2 mul16u::a#3 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#2 mul16u::a#3 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::b#2 mul16u::a#3 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::b#2 mul16u::a#3 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::b#2 mul16u::a#3 ] ) [126] call mul16u param-assignment [ mul16u::res#2 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul16u::res#2 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::res#2 ] ) @@ -4541,10 +4499,10 @@ mul_u4f12::@2: scope:[mul_u4f12] from mul_u4f12 mul_u4f12::@return: scope:[mul_u4f12] from mul_u4f12::@2 [131] return [ mul_u4f12::return#10 ] ( main:2::sin16s_gen:5::mul_u4f12:72 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:77 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:88 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#10 ] main:2::sin16s_gen:5::mul_u4f12:93 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#10 ] ) to:@return -divr16u: scope:[divr16u] from sin16s_gen sin16s_gen::@9 - [132] (word) divr16u::divisor#6 ← phi( sin16s_gen/(const word) main::wavelength#0 sin16s_gen::@9/(const word) main::wavelength#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) - [132] (word) divr16u::dividend#5 ← phi( sin16s_gen/(const word) PI2_u4f12#0 sin16s_gen::@9/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) - [132] (word) divr16u::rem#10 ← phi( sin16s_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@9/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) +divr16u: scope:[divr16u] from sin16s_gen sin16s_gen::@11 + [132] (word) divr16u::divisor#6 ← phi( sin16s_gen/(const word) main::wavelength#0 sin16s_gen::@11/(const word) main::wavelength#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [132] (word) divr16u::dividend#5 ← phi( sin16s_gen/>(const dword) PI2_u4f28#0 sin16s_gen::@11/<(const dword) PI2_u4f28#0 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) + [132] (word) divr16u::rem#10 ← phi( sin16s_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@11/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ) to:divr16u::@1 divr16u::@1: scope:[divr16u] from divr16u divr16u::@3 [133] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_gen:5::divr16u:54 [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::divr16u:58 [ sin16s_gen::stepi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ) @@ -4613,32 +4571,32 @@ print_cls dominated by @23 main main::@3 @begin print_cls print_cls::@1 dominated by @23 main main::@3 @begin print_cls::@1 print_cls print_cls::@return dominated by @23 main main::@3 @begin print_cls::@return print_cls::@1 print_cls sin16s_gen dominated by @23 main @begin sin16s_gen -sin16s_gen::@9 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen -sin16s_gen::@10 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@10 -sin16s_gen::@1 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@1 sin16s_gen::@10 -sin16s_gen::@5 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@1 sin16s_gen::@5 sin16s_gen::@10 -sin16s_gen::@2 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 -sin16s_gen::@6 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@6 sin16s_gen::@10 -sin16s_gen::@3 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 -sin16s_gen::@11 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 sin16s_gen::@11 -sin16s_gen::@12 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@10 sin16s_gen::@11 -sin16s_gen::@13 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@10 sin16s_gen::@11 -sin16s_gen::@14 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@14 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@10 sin16s_gen::@11 -sin16s_gen::@15 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@10 sin16s_gen::@11 -sin16s_gen::@16 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@16 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@10 sin16s_gen::@11 -sin16s_gen::@7 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@7 sin16s_gen::@16 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@10 sin16s_gen::@11 -sin16s_gen::@4 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@16 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@10 sin16s_gen::@11 -sin16s_gen::@return dominated by @23 main sin16s_gen::@9 sin16s_gen::@return @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@4 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@16 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@10 sin16s_gen::@11 -sin16s_gen::@20 dominated by @23 main sin16s_gen::@9 sin16s_gen::@20 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@16 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@10 sin16s_gen::@11 -mul16u dominated by @23 main sin16s_gen::@9 mul16u @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 -mul16u::@1 dominated by @23 main sin16s_gen::@9 mul16u mul16u::@1 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 -mul16u::@return dominated by @23 main sin16s_gen::@9 mul16u mul16u::@1 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 mul16u::@return -mul16u::@2 dominated by @23 main sin16s_gen::@9 mul16u mul16u::@1 mul16u::@2 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 -mul16u::@7 dominated by @23 main sin16s_gen::@9 mul16u mul16u::@1 mul16u::@2 @begin mul16u::@7 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 -mul16u::@4 dominated by @23 main sin16s_gen::@9 mul16u mul16u::@1 mul16u::@2 @begin mul16u::@4 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 -mul_u4f12 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 mul_u4f12 -mul_u4f12::@2 dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@10 mul_u4f12::@2 mul_u4f12 -mul_u4f12::@return dominated by @23 main sin16s_gen::@9 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 mul_u4f12::@return sin16s_gen::@10 mul_u4f12::@2 mul_u4f12 +sin16s_gen::@11 dominated by @23 main @begin sin16s_gen sin16s_gen::@11 +sin16s_gen::@12 dominated by @23 main @begin sin16s_gen sin16s_gen::@12 sin16s_gen::@11 +sin16s_gen::@1 dominated by @23 main @begin sin16s_gen sin16s_gen::@1 sin16s_gen::@12 sin16s_gen::@11 +sin16s_gen::@6 dominated by @23 main @begin sin16s_gen sin16s_gen::@1 sin16s_gen::@6 sin16s_gen::@12 sin16s_gen::@11 +sin16s_gen::@2 dominated by @23 main @begin sin16s_gen sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 +sin16s_gen::@7 dominated by @23 main @begin sin16s_gen sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@7 sin16s_gen::@12 sin16s_gen::@11 +sin16s_gen::@3 dominated by @23 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 +sin16s_gen::@13 dominated by @23 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +sin16s_gen::@14 dominated by @23 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@14 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +sin16s_gen::@15 dominated by @23 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +sin16s_gen::@16 dominated by @23 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@16 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +sin16s_gen::@17 dominated by @23 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@16 sin16s_gen::@17 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +sin16s_gen::@18 dominated by @23 sin16s_gen::@18 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@16 sin16s_gen::@17 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +sin16s_gen::@8 dominated by @23 sin16s_gen::@18 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@8 sin16s_gen::@16 sin16s_gen::@17 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +sin16s_gen::@5 dominated by @23 sin16s_gen::@18 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@5 sin16s_gen::@16 sin16s_gen::@17 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +sin16s_gen::@return dominated by @23 sin16s_gen::@18 main sin16s_gen::@return @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@5 sin16s_gen::@16 sin16s_gen::@17 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +sin16s_gen::@22 dominated by @23 sin16s_gen::@18 main sin16s_gen::@22 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@16 sin16s_gen::@17 sin16s_gen::@14 sin16s_gen::@15 sin16s_gen::@12 sin16s_gen::@13 sin16s_gen::@11 +mul16u dominated by @23 main mul16u @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 +mul16u::@1 dominated by @23 main mul16u mul16u::@1 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 +mul16u::@return dominated by @23 main mul16u mul16u::@1 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 mul16u::@return +mul16u::@2 dominated by @23 main mul16u mul16u::@1 mul16u::@2 @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 +mul16u::@7 dominated by @23 main mul16u mul16u::@1 mul16u::@2 @begin mul16u::@7 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 +mul16u::@4 dominated by @23 main mul16u mul16u::@1 mul16u::@2 @begin mul16u::@4 sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 +mul_u4f12 dominated by @23 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 mul_u4f12 +mul_u4f12::@2 dominated by @23 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 sin16s_gen::@12 sin16s_gen::@11 mul_u4f12::@2 mul_u4f12 +mul_u4f12::@return dominated by @23 main @begin sin16s_gen sin16s_gen::@3 sin16s_gen::@1 sin16s_gen::@2 mul_u4f12::@return sin16s_gen::@12 sin16s_gen::@11 mul_u4f12::@2 mul_u4f12 divr16u dominated by divr16u @23 main @begin sin16s_gen divr16u::@1 dominated by divr16u @23 divr16u::@1 main @begin sin16s_gen divr16u::@4 dominated by divr16u @23 divr16u::@1 main divr16u::@4 @begin sin16s_gen @@ -4652,19 +4610,19 @@ NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@6 blocks: null Found back edge: Loop head: print_str::@1 tails: print_str::@2 blocks: null Found back edge: Loop head: print_cls::@1 tails: print_cls::@1 blocks: null -Found back edge: Loop head: sin16s_gen::@1 tails: sin16s_gen::@4 blocks: null +Found back edge: Loop head: sin16s_gen::@1 tails: sin16s_gen::@5 blocks: null Found back edge: Loop head: mul16u::@1 tails: mul16u::@4 blocks: null Found back edge: Loop head: divr16u::@1 tails: divr16u::@3 blocks: null Populated: Loop head: main::@1 tails: main::@6 blocks: main::@6 main::@5 main::@1 Populated: Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 Populated: Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 -Populated: Loop head: sin16s_gen::@1 tails: sin16s_gen::@4 blocks: sin16s_gen::@4 sin16s_gen::@20 sin16s_gen::@7 sin16s_gen::@16 sin16s_gen::@15 sin16s_gen::@14 sin16s_gen::@13 sin16s_gen::@12 sin16s_gen::@11 sin16s_gen::@3 sin16s_gen::@2 sin16s_gen::@6 sin16s_gen::@1 sin16s_gen::@5 +Populated: Loop head: sin16s_gen::@1 tails: sin16s_gen::@5 blocks: sin16s_gen::@5 sin16s_gen::@22 sin16s_gen::@8 sin16s_gen::@18 sin16s_gen::@17 sin16s_gen::@16 sin16s_gen::@15 sin16s_gen::@14 sin16s_gen::@13 sin16s_gen::@3 sin16s_gen::@2 sin16s_gen::@7 sin16s_gen::@1 sin16s_gen::@6 Populated: Loop head: mul16u::@1 tails: mul16u::@4 blocks: mul16u::@4 mul16u::@2 mul16u::@7 mul16u::@1 Populated: Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 Loop head: main::@1 tails: main::@6 blocks: main::@6 main::@5 main::@1 Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 -Loop head: sin16s_gen::@1 tails: sin16s_gen::@4 blocks: sin16s_gen::@4 sin16s_gen::@20 sin16s_gen::@7 sin16s_gen::@16 sin16s_gen::@15 sin16s_gen::@14 sin16s_gen::@13 sin16s_gen::@12 sin16s_gen::@11 sin16s_gen::@3 sin16s_gen::@2 sin16s_gen::@6 sin16s_gen::@1 sin16s_gen::@5 +Loop head: sin16s_gen::@1 tails: sin16s_gen::@5 blocks: sin16s_gen::@5 sin16s_gen::@22 sin16s_gen::@8 sin16s_gen::@18 sin16s_gen::@17 sin16s_gen::@16 sin16s_gen::@15 sin16s_gen::@14 sin16s_gen::@13 sin16s_gen::@3 sin16s_gen::@2 sin16s_gen::@7 sin16s_gen::@1 sin16s_gen::@6 Loop head: mul16u::@1 tails: mul16u::@4 blocks: mul16u::@4 mul16u::@2 mul16u::@7 mul16u::@1 Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 @@ -4673,7 +4631,7 @@ Found 0 loops in scope [] Found 1 loops in scope [main] Loop head: main::@1 tails: main::@6 blocks: main::@6 main::@5 main::@1 Found 1 loops in scope [sin16s_gen] - Loop head: sin16s_gen::@1 tails: sin16s_gen::@4 blocks: sin16s_gen::@4 sin16s_gen::@20 sin16s_gen::@7 sin16s_gen::@16 sin16s_gen::@15 sin16s_gen::@14 sin16s_gen::@13 sin16s_gen::@12 sin16s_gen::@11 sin16s_gen::@3 sin16s_gen::@2 sin16s_gen::@6 sin16s_gen::@1 sin16s_gen::@5 + Loop head: sin16s_gen::@1 tails: sin16s_gen::@5 blocks: sin16s_gen::@5 sin16s_gen::@22 sin16s_gen::@8 sin16s_gen::@18 sin16s_gen::@17 sin16s_gen::@16 sin16s_gen::@15 sin16s_gen::@14 sin16s_gen::@13 sin16s_gen::@3 sin16s_gen::@2 sin16s_gen::@7 sin16s_gen::@1 sin16s_gen::@6 Found 1 loops in scope [print_cls] Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 Found 0 loops in scope [print_sword] @@ -4690,13 +4648,13 @@ Found 0 loops in scope [print_byte] Loop head: main::@1 tails: main::@6 blocks: main::@6 main::@5 main::@1 depth: 1 Loop head: print_str::@1 tails: print_str::@2 blocks: print_str::@2 print_str::@1 depth: 2 Loop head: print_cls::@1 tails: print_cls::@1 blocks: print_cls::@1 depth: 1 -Loop head: sin16s_gen::@1 tails: sin16s_gen::@4 blocks: sin16s_gen::@4 sin16s_gen::@20 sin16s_gen::@7 sin16s_gen::@16 sin16s_gen::@15 sin16s_gen::@14 sin16s_gen::@13 sin16s_gen::@12 sin16s_gen::@11 sin16s_gen::@3 sin16s_gen::@2 sin16s_gen::@6 sin16s_gen::@1 sin16s_gen::@5 depth: 1 +Loop head: sin16s_gen::@1 tails: sin16s_gen::@5 blocks: sin16s_gen::@5 sin16s_gen::@22 sin16s_gen::@8 sin16s_gen::@18 sin16s_gen::@17 sin16s_gen::@16 sin16s_gen::@15 sin16s_gen::@14 sin16s_gen::@13 sin16s_gen::@3 sin16s_gen::@2 sin16s_gen::@7 sin16s_gen::@1 sin16s_gen::@6 depth: 1 Loop head: mul16u::@1 tails: mul16u::@4 blocks: mul16u::@4 mul16u::@2 mul16u::@7 mul16u::@1 depth: 2 Loop head: divr16u::@1 tails: divr16u::@3 blocks: divr16u::@3 divr16u::@2 divr16u::@5 divr16u::@1 divr16u::@4 depth: 1 VARIABLE REGISTER WEIGHTS -(word) PI2_u4f12 +(dword) PI2_u4f28 (word) PI_HALF_u4f12 (word) PI_u4f12 (byte*) SCREEN @@ -4820,10 +4778,8 @@ VARIABLE REGISTER WEIGHTS (word) rem16u (word) rem16u#1 0.8 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(dword~) sin16s_gen::$13 22.0 -(dword~) sin16s_gen::$18 22.0 -(word) sin16s_gen::div128 -(word) sin16s_gen::div6 +(dword~) sin16s_gen::$14 22.0 +(dword~) sin16s_gen::$20 22.0 (word) sin16s_gen::i (word) sin16s_gen::i#1 16.5 (word) sin16s_gen::i#10 0.46808510638297873 @@ -4835,7 +4791,7 @@ VARIABLE REGISTER WEIGHTS (signed word) sin16s_gen::sinx (signed word) sin16s_gen::sinx#1 22.0 (signed word) sin16s_gen::sinx#2 33.0 -(signed word~) sin16s_gen::sinx#4 22.0 +(signed word~) sin16s_gen::sinx#3 22.0 (dword) sin16s_gen::step (dword) sin16s_gen::step#0 0.26 (word) sin16s_gen::stepf @@ -4881,7 +4837,7 @@ Initial phi equivalence classes [ sin16s_gen::i#10 sin16s_gen::i#1 ] [ sin16s_gen::isUpper#10 ] [ sin16s_gen::x1#10 sin16s_gen::x1#3 sin16s_gen::x1#0 sin16s_gen::x1#1 sin16s_gen::x1#2 ] -[ sin16s_gen::sinx#2 sin16s_gen::sinx#4 sin16s_gen::sinx#1 ] +[ sin16s_gen::sinx#2 sin16s_gen::sinx#3 sin16s_gen::sinx#1 ] [ mul16u::b#3 mul16u::b#2 ] [ mul16u::a#4 mul16u::a#7 mul16u::a#3 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] @@ -4905,7 +4861,7 @@ Added variable sin16s_gen::x2#0 to zero page equivalence class [ sin16s_gen::x2# Added variable mul_u4f12::return#1 to zero page equivalence class [ mul_u4f12::return#1 ] Added variable sin16s_gen::x3#0 to zero page equivalence class [ sin16s_gen::x3#0 ] Added variable mul16u::return#2 to zero page equivalence class [ mul16u::return#2 ] -Added variable sin16s_gen::$13 to zero page equivalence class [ sin16s_gen::$13 ] +Added variable sin16s_gen::$14 to zero page equivalence class [ sin16s_gen::$14 ] Added variable sin16s_gen::x3_6#0 to zero page equivalence class [ sin16s_gen::x3_6#0 ] Added variable sin16s_gen::usinx#0 to zero page equivalence class [ sin16s_gen::usinx#0 ] Added variable mul_u4f12::return#2 to zero page equivalence class [ mul_u4f12::return#2 ] @@ -4913,7 +4869,7 @@ Added variable sin16s_gen::x4#0 to zero page equivalence class [ sin16s_gen::x4# Added variable mul_u4f12::return#3 to zero page equivalence class [ mul_u4f12::return#3 ] Added variable sin16s_gen::x5#0 to zero page equivalence class [ sin16s_gen::x5#0 ] Added variable mul16u::return#3 to zero page equivalence class [ mul16u::return#3 ] -Added variable sin16s_gen::$18 to zero page equivalence class [ sin16s_gen::$18 ] +Added variable sin16s_gen::$20 to zero page equivalence class [ sin16s_gen::$20 ] Added variable sin16s_gen::x5_128#0 to zero page equivalence class [ sin16s_gen::x5_128#0 ] Added variable sin16s_gen::usinx#1 to zero page equivalence class [ sin16s_gen::usinx#1 ] Added variable mul16u::$1 to zero page equivalence class [ mul16u::$1 ] @@ -4937,7 +4893,7 @@ Complete equivalence classes [ sin16s_gen::i#10 sin16s_gen::i#1 ] [ sin16s_gen::isUpper#10 ] [ sin16s_gen::x1#10 sin16s_gen::x1#3 sin16s_gen::x1#0 sin16s_gen::x1#1 sin16s_gen::x1#2 ] -[ sin16s_gen::sinx#2 sin16s_gen::sinx#4 sin16s_gen::sinx#1 ] +[ sin16s_gen::sinx#2 sin16s_gen::sinx#3 sin16s_gen::sinx#1 ] [ mul16u::b#3 mul16u::b#2 ] [ mul16u::a#4 mul16u::a#7 mul16u::a#3 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] @@ -4961,7 +4917,7 @@ Complete equivalence classes [ mul_u4f12::return#1 ] [ sin16s_gen::x3#0 ] [ mul16u::return#2 ] -[ sin16s_gen::$13 ] +[ sin16s_gen::$14 ] [ sin16s_gen::x3_6#0 ] [ sin16s_gen::usinx#0 ] [ mul_u4f12::return#2 ] @@ -4969,7 +4925,7 @@ Complete equivalence classes [ mul_u4f12::return#3 ] [ sin16s_gen::x5#0 ] [ mul16u::return#3 ] -[ sin16s_gen::$18 ] +[ sin16s_gen::$20 ] [ sin16s_gen::x5_128#0 ] [ sin16s_gen::usinx#1 ] [ mul16u::$1 ] @@ -4992,7 +4948,7 @@ Allocated zp ZP_WORD:18 [ sin16s_gen::sintab#10 sin16s_gen::sintab#1 ] Allocated zp ZP_WORD:20 [ sin16s_gen::i#10 sin16s_gen::i#1 ] Allocated zp ZP_BYTE:22 [ sin16s_gen::isUpper#10 ] Allocated zp ZP_WORD:23 [ sin16s_gen::x1#10 sin16s_gen::x1#3 sin16s_gen::x1#0 sin16s_gen::x1#1 sin16s_gen::x1#2 ] -Allocated zp ZP_WORD:25 [ sin16s_gen::sinx#2 sin16s_gen::sinx#4 sin16s_gen::sinx#1 ] +Allocated zp ZP_WORD:25 [ sin16s_gen::sinx#2 sin16s_gen::sinx#3 sin16s_gen::sinx#1 ] Allocated zp ZP_WORD:27 [ mul16u::b#3 mul16u::b#2 ] Allocated zp ZP_WORD:29 [ mul16u::a#4 mul16u::a#7 mul16u::a#3 mul16u::a#1 mul16u::a#2 mul16u::a#0 ] Allocated zp ZP_DWORD:31 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] @@ -5016,7 +4972,7 @@ Allocated zp ZP_WORD:68 [ sin16s_gen::x2#0 ] Allocated zp ZP_WORD:70 [ mul_u4f12::return#1 ] Allocated zp ZP_WORD:72 [ sin16s_gen::x3#0 ] Allocated zp ZP_DWORD:74 [ mul16u::return#2 ] -Allocated zp ZP_DWORD:78 [ sin16s_gen::$13 ] +Allocated zp ZP_DWORD:78 [ sin16s_gen::$14 ] Allocated zp ZP_WORD:82 [ sin16s_gen::x3_6#0 ] Allocated zp ZP_WORD:84 [ sin16s_gen::usinx#0 ] Allocated zp ZP_WORD:86 [ mul_u4f12::return#2 ] @@ -5024,7 +4980,7 @@ Allocated zp ZP_WORD:88 [ sin16s_gen::x4#0 ] Allocated zp ZP_WORD:90 [ mul_u4f12::return#3 ] Allocated zp ZP_WORD:92 [ sin16s_gen::x5#0 ] Allocated zp ZP_DWORD:94 [ mul16u::return#3 ] -Allocated zp ZP_DWORD:98 [ sin16s_gen::$18 ] +Allocated zp ZP_DWORD:98 [ sin16s_gen::$20 ] Allocated zp ZP_WORD:102 [ sin16s_gen::x5_128#0 ] Allocated zp ZP_WORD:104 [ sin16s_gen::usinx#1 ] Allocated zp ZP_BYTE:106 [ mul16u::$1 ] @@ -5043,7 +4999,7 @@ INITIAL ASM .pc = $80d "Program" //SEG1 Global Constants & labels .label SCREEN = $400 - .const PI2_u4f12 = $6488 + .const PI2_u4f28 = $6487ed51 .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 .label rem16u = $7b @@ -5376,10 +5332,8 @@ print_cls: { } //SEG112 sin16s_gen sin16s_gen: { - .const div6 = $10000/6 - .const div128 = $10000/$80 - .label _13 = $4e - .label _18 = $62 + .label _14 = $4e + .label _20 = $62 .label stepi = $38 .label stepf = $3c .label step = $3e @@ -5392,10 +5346,10 @@ sin16s_gen: { .label x5 = $5c .label x5_128 = $66 .label usinx_1 = $68 + .label sinx = $19 .label sintab = $12 .label x = $e .label i = $14 - .label sinx = $19 .label isUpper = $16 //SEG113 [54] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 rem16u#1 ] ) //SEG114 [132] phi from sin16s_gen to divr16u [phi:sin16s_gen->divr16u] @@ -5405,10 +5359,10 @@ sin16s_gen: { sta divr16u.divisor lda #>main.wavelength sta divr16u.divisor+1 - //SEG116 [132] phi (word) divr16u::dividend#5 = (const word) PI2_u4f12#0 [phi:sin16s_gen->divr16u#1] -- vwuz1=vwuc1 - lda #(const dword) PI2_u4f28#0 [phi:sin16s_gen->divr16u#1] -- vwuz1=vwuc1 + lda #>16 sta divr16u.dividend - lda #>PI2_u4f12 + lda #>PI2_u4f28>>16 sta divr16u.dividend+1 //SEG117 [132] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen->divr16u#2] -- vwuz1=vbuc1 lda #<0 @@ -5421,9 +5375,9 @@ sin16s_gen: { sta divr16u.return_2 lda divr16u.return+1 sta divr16u.return_2+1 - jmp b9 - //SEG119 sin16s_gen::@9 - b9: + jmp b11 + //SEG119 sin16s_gen::@11 + b11: //SEG120 [56] (word) sin16s_gen::stepi#0 ← (word) divr16u::return#2 [ sin16s_gen::stepi#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 rem16u#1 ] ) -- vwuz1=vwuz2 lda divr16u.return_2 sta stepi @@ -5435,28 +5389,28 @@ sin16s_gen: { lda rem16u+1 sta divr16u.rem+1 //SEG122 [58] call divr16u param-assignment [ divr16u::return#0 sin16s_gen::stepi#0 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 sin16s_gen::stepi#0 ] ) - //SEG123 [132] phi from sin16s_gen::@9 to divr16u [phi:sin16s_gen::@9->divr16u] - divr16u_from_b9: - //SEG124 [132] phi (word) divr16u::divisor#6 = (const word) main::wavelength#0 [phi:sin16s_gen::@9->divr16u#0] -- vwuz1=vwuc1 + //SEG123 [132] phi from sin16s_gen::@11 to divr16u [phi:sin16s_gen::@11->divr16u] + divr16u_from_b11: + //SEG124 [132] phi (word) divr16u::divisor#6 = (const word) main::wavelength#0 [phi:sin16s_gen::@11->divr16u#0] -- vwuz1=vwuc1 lda #main.wavelength sta divr16u.divisor+1 - //SEG125 [132] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@9->divr16u#1] -- vwuz1=vbuc1 - lda #<0 + //SEG125 [132] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:sin16s_gen::@11->divr16u#1] -- vwuz1=vwuc1 + lda #0 + lda #>PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG126 [132] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:sin16s_gen::@9->divr16u#2] -- register_copy + //SEG126 [132] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:sin16s_gen::@11->divr16u#2] -- register_copy jsr divr16u //SEG127 [59] (word) divr16u::return#3 ← (word) divr16u::return#0 [ sin16s_gen::stepi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::return#3 ] ) -- vwuz1=vwuz2 lda divr16u.return sta divr16u.return_3 lda divr16u.return+1 sta divr16u.return_3+1 - jmp b10 - //SEG128 sin16s_gen::@10 - b10: + jmp b12 + //SEG128 sin16s_gen::@12 + b12: //SEG129 [60] (word) sin16s_gen::stepf#0 ← (word) divr16u::return#3 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ) -- vwuz1=vwuz2 lda divr16u.return_3 sta stepf @@ -5471,19 +5425,19 @@ sin16s_gen: { sta step lda stepf+1 sta step+1 - //SEG131 [62] phi from sin16s_gen::@10 to sin16s_gen::@1 [phi:sin16s_gen::@10->sin16s_gen::@1] - b1_from_b10: - //SEG132 [62] phi (word) sin16s_gen::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@10->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG131 [62] phi from sin16s_gen::@12 to sin16s_gen::@1 [phi:sin16s_gen::@12->sin16s_gen::@1] + b1_from_b12: + //SEG132 [62] phi (word) sin16s_gen::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@12->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG133 [62] phi (signed word*) sin16s_gen::sintab#10 = (const signed word[128]) main::sintab1#0 [phi:sin16s_gen::@10->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG133 [62] phi (signed word*) sin16s_gen::sintab#10 = (const signed word[128]) main::sintab1#0 [phi:sin16s_gen::@12->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG134 [62] phi (dword) sin16s_gen::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@10->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG134 [62] phi (dword) sin16s_gen::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@12->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -5491,11 +5445,11 @@ sin16s_gen: { sta x+2 sta x+3 jmp b1 - //SEG135 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] - b1_from_b4: - //SEG136 [62] phi (word) sin16s_gen::i#10 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG137 [62] phi (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#1 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG138 [62] phi (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG135 [62] phi from sin16s_gen::@5 to sin16s_gen::@1 [phi:sin16s_gen::@5->sin16s_gen::@1] + b1_from_b5: + //SEG136 [62] phi (word) sin16s_gen::i#10 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@5->sin16s_gen::@1#0] -- register_copy + //SEG137 [62] phi (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#1 [phi:sin16s_gen::@5->sin16s_gen::@1#1] -- register_copy + //SEG138 [62] phi (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@5->sin16s_gen::@1#2] -- register_copy jmp b1 //SEG139 sin16s_gen::@1 b1: @@ -5513,9 +5467,9 @@ sin16s_gen: { cmp #PI_u4f12 sta x1+1 - //SEG144 [66] phi from sin16s_gen::@5 to sin16s_gen::@2 [phi:sin16s_gen::@5->sin16s_gen::@2] - b2_from_b5: - //SEG145 [66] phi (byte) sin16s_gen::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s_gen::@5->sin16s_gen::@2#0] -- vbuz1=vbuc1 + //SEG144 [66] phi from sin16s_gen::@6 to sin16s_gen::@2 [phi:sin16s_gen::@6->sin16s_gen::@2] + b2_from_b6: + //SEG145 [66] phi (byte) sin16s_gen::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s_gen::@6->sin16s_gen::@2#0] -- vbuz1=vbuc1 lda #1 sta isUpper - //SEG146 [66] phi (word) sin16s_gen::x1#3 = (word) sin16s_gen::x1#1 [phi:sin16s_gen::@5->sin16s_gen::@2#1] -- register_copy + //SEG146 [66] phi (word) sin16s_gen::x1#3 = (word) sin16s_gen::x1#1 [phi:sin16s_gen::@6->sin16s_gen::@2#1] -- register_copy jmp b2 //SEG147 [66] phi from sin16s_gen::@1 to sin16s_gen::@2 [phi:sin16s_gen::@1->sin16s_gen::@2] b2_from_b1: @@ -5549,9 +5503,9 @@ sin16s_gen: { cmp #PI_u4f12 sbc x1+1 sta x1+1 - //SEG154 [69] phi from sin16s_gen::@2 sin16s_gen::@6 to sin16s_gen::@3 [phi:sin16s_gen::@2/sin16s_gen::@6->sin16s_gen::@3] + //SEG154 [69] phi from sin16s_gen::@2 sin16s_gen::@7 to sin16s_gen::@3 [phi:sin16s_gen::@2/sin16s_gen::@7->sin16s_gen::@3] b3_from_b2: - b3_from_b6: - //SEG155 [69] phi (word) sin16s_gen::x1#10 = (word) sin16s_gen::x1#3 [phi:sin16s_gen::@2/sin16s_gen::@6->sin16s_gen::@3#0] -- register_copy + b3_from_b7: + //SEG155 [69] phi (word) sin16s_gen::x1#10 = (word) sin16s_gen::x1#3 [phi:sin16s_gen::@2/sin16s_gen::@7->sin16s_gen::@3#0] -- register_copy jmp b3 //SEG156 sin16s_gen::@3 b3: @@ -5588,9 +5542,9 @@ sin16s_gen: { sta mul_u4f12.return lda mul_u4f12.return_10+1 sta mul_u4f12.return+1 - jmp b11 - //SEG164 sin16s_gen::@11 - b11: + jmp b13 + //SEG164 sin16s_gen::@13 + b13: //SEG165 [74] (word) sin16s_gen::x2#0 ← (word) mul_u4f12::return#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ) -- vwuz1=vwuz2 lda mul_u4f12.return sta x2 @@ -5607,19 +5561,19 @@ sin16s_gen: { lda x1+1 sta mul_u4f12.v2+1 //SEG168 [77] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ) - //SEG169 [123] phi from sin16s_gen::@11 to mul_u4f12 [phi:sin16s_gen::@11->mul_u4f12] - mul_u4f12_from_b11: - //SEG170 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#1 [phi:sin16s_gen::@11->mul_u4f12#0] -- register_copy - //SEG171 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#1 [phi:sin16s_gen::@11->mul_u4f12#1] -- register_copy + //SEG169 [123] phi from sin16s_gen::@13 to mul_u4f12 [phi:sin16s_gen::@13->mul_u4f12] + mul_u4f12_from_b13: + //SEG170 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#1 [phi:sin16s_gen::@13->mul_u4f12#0] -- register_copy + //SEG171 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#1 [phi:sin16s_gen::@13->mul_u4f12#1] -- register_copy jsr mul_u4f12 //SEG172 [78] (word) mul_u4f12::return#1 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ) -- vwuz1=vwuz2 lda mul_u4f12.return_10 sta mul_u4f12.return_1 lda mul_u4f12.return_10+1 sta mul_u4f12.return_1+1 - jmp b12 - //SEG173 sin16s_gen::@12 - b12: + jmp b14 + //SEG173 sin16s_gen::@14 + b14: //SEG174 [79] (word) sin16s_gen::x3#0 ← (word) mul_u4f12::return#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ) -- vwuz1=vwuz2 lda mul_u4f12.return_1 sta x3 @@ -5631,13 +5585,13 @@ sin16s_gen: { lda x3+1 sta mul16u.a+1 //SEG176 [81] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ) - //SEG177 [112] phi from sin16s_gen::@12 to mul16u [phi:sin16s_gen::@12->mul16u] - mul16u_from_b12: - //SEG178 [112] phi (word) mul16u::a#7 = (word) mul16u::a#1 [phi:sin16s_gen::@12->mul16u#0] -- register_copy - //SEG179 [112] phi (word) mul16u::b#3 = (const word) sin16s_gen::div6#0 [phi:sin16s_gen::@12->mul16u#1] -- vwuz1=vwuc1 - lda #mul16u] + mul16u_from_b14: + //SEG178 [112] phi (word) mul16u::a#7 = (word) mul16u::a#1 [phi:sin16s_gen::@14->mul16u#0] -- register_copy + //SEG179 [112] phi (word) mul16u::b#3 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s_gen::@14->mul16u#1] -- vwuz1=vwuc1 + lda #<$10000/6 sta mul16u.b - lda #>div6 + lda #>$10000/6 sta mul16u.b+1 jsr mul16u //SEG180 [82] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ) -- vduz1=vduz2 @@ -5649,22 +5603,22 @@ sin16s_gen: { sta mul16u.return+2 lda mul16u.res+3 sta mul16u.return+3 - jmp b13 - //SEG181 sin16s_gen::@13 - b13: - //SEG182 [83] (dword~) sin16s_gen::$13 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ) -- vduz1=vduz2 + jmp b15 + //SEG181 sin16s_gen::@15 + b15: + //SEG182 [83] (dword~) sin16s_gen::$14 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ) -- vduz1=vduz2 lda mul16u.return - sta _13 + sta _14 lda mul16u.return+1 - sta _13+1 + sta _14+1 lda mul16u.return+2 - sta _13+2 + sta _14+2 lda mul16u.return+3 - sta _13+3 - //SEG183 [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$13 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) -- vwuz1=_hi_vduz2 - lda _13+2 + sta _14+3 + //SEG183 [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) -- vwuz1=_hi_vduz2 + lda _14+2 sta x3_6 - lda _13+3 + lda _14+3 sta x3_6+1 //SEG184 [85] (word) sin16s_gen::usinx#0 ← (word) sin16s_gen::x1#10 - (word) sin16s_gen::x3_6#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ) -- vwuz1=vwuz2_minus_vwuz3 lda x1 @@ -5685,19 +5639,19 @@ sin16s_gen: { lda x1+1 sta mul_u4f12.v2+1 //SEG187 [88] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) - //SEG188 [123] phi from sin16s_gen::@13 to mul_u4f12 [phi:sin16s_gen::@13->mul_u4f12] - mul_u4f12_from_b13: - //SEG189 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#2 [phi:sin16s_gen::@13->mul_u4f12#0] -- register_copy - //SEG190 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#2 [phi:sin16s_gen::@13->mul_u4f12#1] -- register_copy + //SEG188 [123] phi from sin16s_gen::@15 to mul_u4f12 [phi:sin16s_gen::@15->mul_u4f12] + mul_u4f12_from_b15: + //SEG189 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#2 [phi:sin16s_gen::@15->mul_u4f12#0] -- register_copy + //SEG190 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#2 [phi:sin16s_gen::@15->mul_u4f12#1] -- register_copy jsr mul_u4f12 //SEG191 [89] (word) mul_u4f12::return#2 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ) -- vwuz1=vwuz2 lda mul_u4f12.return_10 sta mul_u4f12.return_2 lda mul_u4f12.return_10+1 sta mul_u4f12.return_2+1 - jmp b14 - //SEG192 sin16s_gen::@14 - b14: + jmp b16 + //SEG192 sin16s_gen::@16 + b16: //SEG193 [90] (word) sin16s_gen::x4#0 ← (word) mul_u4f12::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ) -- vwuz1=vwuz2 lda mul_u4f12.return_2 sta x4 @@ -5714,19 +5668,19 @@ sin16s_gen: { lda x1+1 sta mul_u4f12.v2+1 //SEG196 [93] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) - //SEG197 [123] phi from sin16s_gen::@14 to mul_u4f12 [phi:sin16s_gen::@14->mul_u4f12] - mul_u4f12_from_b14: - //SEG198 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#3 [phi:sin16s_gen::@14->mul_u4f12#0] -- register_copy - //SEG199 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#3 [phi:sin16s_gen::@14->mul_u4f12#1] -- register_copy + //SEG197 [123] phi from sin16s_gen::@16 to mul_u4f12 [phi:sin16s_gen::@16->mul_u4f12] + mul_u4f12_from_b16: + //SEG198 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#3 [phi:sin16s_gen::@16->mul_u4f12#0] -- register_copy + //SEG199 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#3 [phi:sin16s_gen::@16->mul_u4f12#1] -- register_copy jsr mul_u4f12 //SEG200 [94] (word) mul_u4f12::return#3 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ) -- vwuz1=vwuz2 lda mul_u4f12.return_10 sta mul_u4f12.return_3 lda mul_u4f12.return_10+1 sta mul_u4f12.return_3+1 - jmp b15 - //SEG201 sin16s_gen::@15 - b15: + jmp b17 + //SEG201 sin16s_gen::@17 + b17: //SEG202 [95] (word) sin16s_gen::x5#0 ← (word) mul_u4f12::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ) -- vwuz1=vwuz2 lda mul_u4f12.return_3 sta x5 @@ -5738,13 +5692,13 @@ sin16s_gen: { lda x5+1 sta mul16u.a+1 //SEG204 [97] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ) - //SEG205 [112] phi from sin16s_gen::@15 to mul16u [phi:sin16s_gen::@15->mul16u] - mul16u_from_b15: - //SEG206 [112] phi (word) mul16u::a#7 = (word) mul16u::a#2 [phi:sin16s_gen::@15->mul16u#0] -- register_copy - //SEG207 [112] phi (word) mul16u::b#3 = (const word) sin16s_gen::div128#0 [phi:sin16s_gen::@15->mul16u#1] -- vwuz1=vwuc1 - lda #mul16u] + mul16u_from_b17: + //SEG206 [112] phi (word) mul16u::a#7 = (word) mul16u::a#2 [phi:sin16s_gen::@17->mul16u#0] -- register_copy + //SEG207 [112] phi (word) mul16u::b#3 = (dword/signed dword) 65536/(byte/word/signed word/dword/signed dword) 128 [phi:sin16s_gen::@17->mul16u#1] -- vwuz1=vwuc1 + lda #<$10000/$80 sta mul16u.b - lda #>div128 + lda #>$10000/$80 sta mul16u.b+1 jsr mul16u //SEG208 [98] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ) -- vduz1=vduz2 @@ -5756,22 +5710,22 @@ sin16s_gen: { sta mul16u.return_3+2 lda mul16u.res+3 sta mul16u.return_3+3 - jmp b16 - //SEG209 sin16s_gen::@16 - b16: - //SEG210 [99] (dword~) sin16s_gen::$18 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ) -- vduz1=vduz2 + jmp b18 + //SEG209 sin16s_gen::@18 + b18: + //SEG210 [99] (dword~) sin16s_gen::$20 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ) -- vduz1=vduz2 lda mul16u.return_3 - sta _18 + sta _20 lda mul16u.return_3+1 - sta _18+1 + sta _20+1 lda mul16u.return_3+2 - sta _18+2 + sta _20+2 lda mul16u.return_3+3 - sta _18+3 - //SEG211 [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$18 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) -- vwuz1=_hi_vduz2 - lda _18+2 + sta _20+3 + //SEG211 [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) -- vwuz1=_hi_vduz2 + lda _20+2 sta x5_128 - lda _18+3 + lda _20+3 sta x5_128+1 //SEG212 [101] (word) sin16s_gen::usinx#1 ← (word) sin16s_gen::usinx#0 + (word) sin16s_gen::x5_128#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ) -- vwuz1=vwuz2_plus_vwuz3 lda usinx_1 @@ -5781,12 +5735,12 @@ sin16s_gen: { lda usinx_1+1 adc usinx+1 sta x5_128+1 - //SEG213 [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) -- vbuz1_eq_0_then_la1 + //SEG213 [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@22 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) -- vbuz1_eq_0_then_la1 lda isUpper - beq b20 - jmp b7 - //SEG214 sin16s_gen::@7 - b7: + beq b22 + jmp b8 + //SEG214 sin16s_gen::@8 + b8: //SEG215 [103] (signed word) sin16s_gen::sinx#1 ← - (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ) -- vwsz1=_neg_vwsz2 sec lda usinx_1 @@ -5797,13 +5751,13 @@ sin16s_gen: { eor #$ff adc #0 sta sinx+1 - //SEG216 [104] phi from sin16s_gen::@20 sin16s_gen::@7 to sin16s_gen::@4 [phi:sin16s_gen::@20/sin16s_gen::@7->sin16s_gen::@4] - b4_from_b20: - b4_from_b7: - //SEG217 [104] phi (signed word) sin16s_gen::sinx#2 = (signed word~) sin16s_gen::sinx#4 [phi:sin16s_gen::@20/sin16s_gen::@7->sin16s_gen::@4#0] -- register_copy - jmp b4 - //SEG218 sin16s_gen::@4 - b4: + //SEG216 [104] phi from sin16s_gen::@22 sin16s_gen::@8 to sin16s_gen::@5 [phi:sin16s_gen::@22/sin16s_gen::@8->sin16s_gen::@5] + b5_from_b22: + b5_from_b8: + //SEG217 [104] phi (signed word) sin16s_gen::sinx#2 = (signed word~) sin16s_gen::sinx#3 [phi:sin16s_gen::@22/sin16s_gen::@8->sin16s_gen::@5#0] -- register_copy + jmp b5 + //SEG218 sin16s_gen::@5 + b5: //SEG219 [105] *((signed word*) sin16s_gen::sintab#10) ← (signed word) sin16s_gen::sinx#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) -- _deref_pwsz1=vwsz2 ldy #0 lda sinx @@ -5841,25 +5795,25 @@ sin16s_gen: { //SEG223 [109] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength - bcc b1_from_b4 + bcc b1_from_b5 bne !+ lda i cmp #divr16u] divr16u_from_sin16s_gen: @@ -6783,10 +6735,10 @@ sin16s_gen: { sta divr16u.divisor lda #>main.wavelength sta divr16u.divisor+1 - //SEG116 [132] phi (word) divr16u::dividend#5 = (const word) PI2_u4f12#0 [phi:sin16s_gen->divr16u#1] -- vwuz1=vwuc1 - lda #(const dword) PI2_u4f28#0 [phi:sin16s_gen->divr16u#1] -- vwuz1=vwuc1 + lda #>16 sta divr16u.dividend - lda #>PI2_u4f12 + lda #>PI2_u4f28>>16 sta divr16u.dividend+1 //SEG117 [132] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen->divr16u#2] -- vwuz1=vbuc1 lda #<0 @@ -6796,9 +6748,9 @@ sin16s_gen: { jsr divr16u //SEG118 [55] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#2 rem16u#1 ] ) // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:12 - jmp b9 - //SEG119 sin16s_gen::@9 - b9: + jmp b11 + //SEG119 sin16s_gen::@11 + b11: //SEG120 [56] (word) sin16s_gen::stepi#0 ← (word) divr16u::return#2 [ sin16s_gen::stepi#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 rem16u#1 ] ) -- vwuz1=vwuz2 lda divr16u.return sta stepi @@ -6807,25 +6759,25 @@ sin16s_gen: { //SEG121 [57] (word) divr16u::rem#4 ← (word) rem16u#1 [ sin16s_gen::stepi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::rem#4 ] ) // (word) divr16u::rem#4 = (word) rem16u#1 // register copy zp ZP_WORD:4 //SEG122 [58] call divr16u param-assignment [ divr16u::return#0 sin16s_gen::stepi#0 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 sin16s_gen::stepi#0 ] ) - //SEG123 [132] phi from sin16s_gen::@9 to divr16u [phi:sin16s_gen::@9->divr16u] - divr16u_from_b9: - //SEG124 [132] phi (word) divr16u::divisor#6 = (const word) main::wavelength#0 [phi:sin16s_gen::@9->divr16u#0] -- vwuz1=vwuc1 + //SEG123 [132] phi from sin16s_gen::@11 to divr16u [phi:sin16s_gen::@11->divr16u] + divr16u_from_b11: + //SEG124 [132] phi (word) divr16u::divisor#6 = (const word) main::wavelength#0 [phi:sin16s_gen::@11->divr16u#0] -- vwuz1=vwuc1 lda #main.wavelength sta divr16u.divisor+1 - //SEG125 [132] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@9->divr16u#1] -- vwuz1=vbuc1 - lda #<0 + //SEG125 [132] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:sin16s_gen::@11->divr16u#1] -- vwuz1=vwuc1 + lda #0 + lda #>PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG126 [132] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:sin16s_gen::@9->divr16u#2] -- register_copy + //SEG126 [132] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:sin16s_gen::@11->divr16u#2] -- register_copy jsr divr16u //SEG127 [59] (word) divr16u::return#3 ← (word) divr16u::return#0 [ sin16s_gen::stepi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::return#3 ] ) // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:12 - jmp b10 - //SEG128 sin16s_gen::@10 - b10: + jmp b12 + //SEG128 sin16s_gen::@12 + b12: //SEG129 [60] (word) sin16s_gen::stepf#0 ← (word) divr16u::return#3 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ) // (word) sin16s_gen::stepf#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:12 //SEG130 [61] (dword) sin16s_gen::step#0 ← (word) sin16s_gen::stepi#0 dw= (word) sin16s_gen::stepf#0 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) -- vduz1=vwuz2_dword_vwuz3 @@ -6837,19 +6789,19 @@ sin16s_gen: { sta step lda stepf+1 sta step+1 - //SEG131 [62] phi from sin16s_gen::@10 to sin16s_gen::@1 [phi:sin16s_gen::@10->sin16s_gen::@1] - b1_from_b10: - //SEG132 [62] phi (word) sin16s_gen::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@10->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG131 [62] phi from sin16s_gen::@12 to sin16s_gen::@1 [phi:sin16s_gen::@12->sin16s_gen::@1] + b1_from_b12: + //SEG132 [62] phi (word) sin16s_gen::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@12->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i lda #>0 sta i+1 - //SEG133 [62] phi (signed word*) sin16s_gen::sintab#10 = (const signed word[128]) main::sintab1#0 [phi:sin16s_gen::@10->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG133 [62] phi (signed word*) sin16s_gen::sintab#10 = (const signed word[128]) main::sintab1#0 [phi:sin16s_gen::@12->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG134 [62] phi (dword) sin16s_gen::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@10->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG134 [62] phi (dword) sin16s_gen::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@12->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x lda #0 @@ -6857,11 +6809,11 @@ sin16s_gen: { sta x+2 sta x+3 jmp b1 - //SEG135 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] - b1_from_b4: - //SEG136 [62] phi (word) sin16s_gen::i#10 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG137 [62] phi (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#1 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG138 [62] phi (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG135 [62] phi from sin16s_gen::@5 to sin16s_gen::@1 [phi:sin16s_gen::@5->sin16s_gen::@1] + b1_from_b5: + //SEG136 [62] phi (word) sin16s_gen::i#10 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@5->sin16s_gen::@1#0] -- register_copy + //SEG137 [62] phi (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#1 [phi:sin16s_gen::@5->sin16s_gen::@1#1] -- register_copy + //SEG138 [62] phi (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@5->sin16s_gen::@1#2] -- register_copy jmp b1 //SEG139 sin16s_gen::@1 b1: @@ -6879,9 +6831,9 @@ sin16s_gen: { cmp #PI_u4f12 sta x1+1 - //SEG144 [66] phi from sin16s_gen::@5 to sin16s_gen::@2 [phi:sin16s_gen::@5->sin16s_gen::@2] - b2_from_b5: - //SEG145 [66] phi (byte) sin16s_gen::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s_gen::@5->sin16s_gen::@2#0] -- vbuxx=vbuc1 + //SEG144 [66] phi from sin16s_gen::@6 to sin16s_gen::@2 [phi:sin16s_gen::@6->sin16s_gen::@2] + b2_from_b6: + //SEG145 [66] phi (byte) sin16s_gen::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s_gen::@6->sin16s_gen::@2#0] -- vbuxx=vbuc1 ldx #1 - //SEG146 [66] phi (word) sin16s_gen::x1#3 = (word) sin16s_gen::x1#1 [phi:sin16s_gen::@5->sin16s_gen::@2#1] -- register_copy + //SEG146 [66] phi (word) sin16s_gen::x1#3 = (word) sin16s_gen::x1#1 [phi:sin16s_gen::@6->sin16s_gen::@2#1] -- register_copy jmp b2 //SEG147 [66] phi from sin16s_gen::@1 to sin16s_gen::@2 [phi:sin16s_gen::@1->sin16s_gen::@2] b2_from_b1: @@ -6913,9 +6865,9 @@ sin16s_gen: { cmp #PI_u4f12 sbc x1+1 sta x1+1 - //SEG154 [69] phi from sin16s_gen::@2 sin16s_gen::@6 to sin16s_gen::@3 [phi:sin16s_gen::@2/sin16s_gen::@6->sin16s_gen::@3] + //SEG154 [69] phi from sin16s_gen::@2 sin16s_gen::@7 to sin16s_gen::@3 [phi:sin16s_gen::@2/sin16s_gen::@7->sin16s_gen::@3] b3_from_b2: - b3_from_b6: - //SEG155 [69] phi (word) sin16s_gen::x1#10 = (word) sin16s_gen::x1#3 [phi:sin16s_gen::@2/sin16s_gen::@6->sin16s_gen::@3#0] -- register_copy + b3_from_b7: + //SEG155 [69] phi (word) sin16s_gen::x1#10 = (word) sin16s_gen::x1#3 [phi:sin16s_gen::@2/sin16s_gen::@7->sin16s_gen::@3#0] -- register_copy jmp b3 //SEG156 sin16s_gen::@3 b3: @@ -6946,9 +6898,9 @@ sin16s_gen: { jsr mul_u4f12 //SEG163 [73] (word) mul_u4f12::return#0 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] ) // (word) mul_u4f12::return#0 = (word) mul_u4f12::return#10 // register copy zp ZP_WORD:16 - jmp b11 - //SEG164 sin16s_gen::@11 - b11: + jmp b13 + //SEG164 sin16s_gen::@13 + b13: //SEG165 [74] (word) sin16s_gen::x2#0 ← (word) mul_u4f12::return#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ) // (word) sin16s_gen::x2#0 = (word) mul_u4f12::return#0 // register copy zp ZP_WORD:16 //SEG166 [75] (word) mul_u4f12::v1#1 ← (word) sin16s_gen::x2#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] ) @@ -6956,16 +6908,16 @@ sin16s_gen: { //SEG167 [76] (word) mul_u4f12::v2#1 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] ) // (word) mul_u4f12::v2#1 = (word) sin16s_gen::x1#10 // register copy zp ZP_WORD:6 //SEG168 [77] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ) - //SEG169 [123] phi from sin16s_gen::@11 to mul_u4f12 [phi:sin16s_gen::@11->mul_u4f12] - mul_u4f12_from_b11: - //SEG170 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#1 [phi:sin16s_gen::@11->mul_u4f12#0] -- register_copy - //SEG171 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#1 [phi:sin16s_gen::@11->mul_u4f12#1] -- register_copy + //SEG169 [123] phi from sin16s_gen::@13 to mul_u4f12 [phi:sin16s_gen::@13->mul_u4f12] + mul_u4f12_from_b13: + //SEG170 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#1 [phi:sin16s_gen::@13->mul_u4f12#0] -- register_copy + //SEG171 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#1 [phi:sin16s_gen::@13->mul_u4f12#1] -- register_copy jsr mul_u4f12 //SEG172 [78] (word) mul_u4f12::return#1 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ) // (word) mul_u4f12::return#1 = (word) mul_u4f12::return#10 // register copy zp ZP_WORD:16 - jmp b12 - //SEG173 sin16s_gen::@12 - b12: + jmp b14 + //SEG173 sin16s_gen::@14 + b14: //SEG174 [79] (word) sin16s_gen::x3#0 ← (word) mul_u4f12::return#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ) -- vwuz1=vwuz2 lda mul_u4f12.return sta x3 @@ -6977,31 +6929,31 @@ sin16s_gen: { lda x3+1 sta mul16u.a+1 //SEG176 [81] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ) - //SEG177 [112] phi from sin16s_gen::@12 to mul16u [phi:sin16s_gen::@12->mul16u] - mul16u_from_b12: - //SEG178 [112] phi (word) mul16u::a#7 = (word) mul16u::a#1 [phi:sin16s_gen::@12->mul16u#0] -- register_copy - //SEG179 [112] phi (word) mul16u::b#3 = (const word) sin16s_gen::div6#0 [phi:sin16s_gen::@12->mul16u#1] -- vwuz1=vwuc1 - lda #mul16u] + mul16u_from_b14: + //SEG178 [112] phi (word) mul16u::a#7 = (word) mul16u::a#1 [phi:sin16s_gen::@14->mul16u#0] -- register_copy + //SEG179 [112] phi (word) mul16u::b#3 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s_gen::@14->mul16u#1] -- vwuz1=vwuc1 + lda #<$10000/6 sta mul16u.b - lda #>div6 + lda #>$10000/6 sta mul16u.b+1 jsr mul16u //SEG180 [82] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ) // (dword) mul16u::return#2 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:18 - jmp b13 - //SEG181 sin16s_gen::@13 - b13: - //SEG182 [83] (dword~) sin16s_gen::$13 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ) - // (dword~) sin16s_gen::$13 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:18 - //SEG183 [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$13 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) - // [84] sin16s_gen::x3_6#0 ← > sin16s_gen::$13 // ALU + jmp b15 + //SEG181 sin16s_gen::@15 + b15: + //SEG182 [83] (dword~) sin16s_gen::$14 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ) + // (dword~) sin16s_gen::$14 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:18 + //SEG183 [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) + // [84] sin16s_gen::x3_6#0 ← > sin16s_gen::$14 // ALU //SEG184 [85] (word) sin16s_gen::usinx#0 ← (word) sin16s_gen::x1#10 - (word) sin16s_gen::x3_6#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ) -- vwuz1=vwuz2_minus__hi_vduz3 lda x1 sec - sbc _13+2 + sbc _14+2 sta usinx lda x1+1 - sbc _13+3 + sbc _14+3 sta usinx+1 //SEG185 [86] (word) mul_u4f12::v1#2 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] ) -- vwuz1=vwuz2 lda x3 @@ -7011,16 +6963,16 @@ sin16s_gen: { //SEG186 [87] (word) mul_u4f12::v2#2 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] ) // (word) mul_u4f12::v2#2 = (word) sin16s_gen::x1#10 // register copy zp ZP_WORD:6 //SEG187 [88] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) - //SEG188 [123] phi from sin16s_gen::@13 to mul_u4f12 [phi:sin16s_gen::@13->mul_u4f12] - mul_u4f12_from_b13: - //SEG189 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#2 [phi:sin16s_gen::@13->mul_u4f12#0] -- register_copy - //SEG190 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#2 [phi:sin16s_gen::@13->mul_u4f12#1] -- register_copy + //SEG188 [123] phi from sin16s_gen::@15 to mul_u4f12 [phi:sin16s_gen::@15->mul_u4f12] + mul_u4f12_from_b15: + //SEG189 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#2 [phi:sin16s_gen::@15->mul_u4f12#0] -- register_copy + //SEG190 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#2 [phi:sin16s_gen::@15->mul_u4f12#1] -- register_copy jsr mul_u4f12 //SEG191 [89] (word) mul_u4f12::return#2 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ) // (word) mul_u4f12::return#2 = (word) mul_u4f12::return#10 // register copy zp ZP_WORD:16 - jmp b14 - //SEG192 sin16s_gen::@14 - b14: + jmp b16 + //SEG192 sin16s_gen::@16 + b16: //SEG193 [90] (word) sin16s_gen::x4#0 ← (word) mul_u4f12::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ) // (word) sin16s_gen::x4#0 = (word) mul_u4f12::return#2 // register copy zp ZP_WORD:16 //SEG194 [91] (word) mul_u4f12::v1#3 ← (word) sin16s_gen::x4#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] ) @@ -7028,53 +6980,53 @@ sin16s_gen: { //SEG195 [92] (word) mul_u4f12::v2#3 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] ) // (word) mul_u4f12::v2#3 = (word) sin16s_gen::x1#10 // register copy zp ZP_WORD:6 //SEG196 [93] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) - //SEG197 [123] phi from sin16s_gen::@14 to mul_u4f12 [phi:sin16s_gen::@14->mul_u4f12] - mul_u4f12_from_b14: - //SEG198 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#3 [phi:sin16s_gen::@14->mul_u4f12#0] -- register_copy - //SEG199 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#3 [phi:sin16s_gen::@14->mul_u4f12#1] -- register_copy + //SEG197 [123] phi from sin16s_gen::@16 to mul_u4f12 [phi:sin16s_gen::@16->mul_u4f12] + mul_u4f12_from_b16: + //SEG198 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#3 [phi:sin16s_gen::@16->mul_u4f12#0] -- register_copy + //SEG199 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#3 [phi:sin16s_gen::@16->mul_u4f12#1] -- register_copy jsr mul_u4f12 //SEG200 [94] (word) mul_u4f12::return#3 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ) // (word) mul_u4f12::return#3 = (word) mul_u4f12::return#10 // register copy zp ZP_WORD:16 - jmp b15 - //SEG201 sin16s_gen::@15 - b15: + jmp b17 + //SEG201 sin16s_gen::@17 + b17: //SEG202 [95] (word) sin16s_gen::x5#0 ← (word) mul_u4f12::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ) // (word) sin16s_gen::x5#0 = (word) mul_u4f12::return#3 // register copy zp ZP_WORD:16 //SEG203 [96] (word) mul16u::a#2 ← (word) sin16s_gen::x5#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] ) // (word) mul16u::a#2 = (word) sin16s_gen::x5#0 // register copy zp ZP_WORD:16 //SEG204 [97] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ) - //SEG205 [112] phi from sin16s_gen::@15 to mul16u [phi:sin16s_gen::@15->mul16u] - mul16u_from_b15: - //SEG206 [112] phi (word) mul16u::a#7 = (word) mul16u::a#2 [phi:sin16s_gen::@15->mul16u#0] -- register_copy - //SEG207 [112] phi (word) mul16u::b#3 = (const word) sin16s_gen::div128#0 [phi:sin16s_gen::@15->mul16u#1] -- vwuz1=vwuc1 - lda #mul16u] + mul16u_from_b17: + //SEG206 [112] phi (word) mul16u::a#7 = (word) mul16u::a#2 [phi:sin16s_gen::@17->mul16u#0] -- register_copy + //SEG207 [112] phi (word) mul16u::b#3 = (dword/signed dword) 65536/(byte/word/signed word/dword/signed dword) 128 [phi:sin16s_gen::@17->mul16u#1] -- vwuz1=vwuc1 + lda #<$10000/$80 sta mul16u.b - lda #>div128 + lda #>$10000/$80 sta mul16u.b+1 jsr mul16u //SEG208 [98] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ) // (dword) mul16u::return#3 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:18 - jmp b16 - //SEG209 sin16s_gen::@16 - b16: - //SEG210 [99] (dword~) sin16s_gen::$18 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ) - // (dword~) sin16s_gen::$18 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:18 - //SEG211 [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$18 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) - // [100] sin16s_gen::x5_128#0 ← > sin16s_gen::$18 // ALU + jmp b18 + //SEG209 sin16s_gen::@18 + b18: + //SEG210 [99] (dword~) sin16s_gen::$20 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ) + // (dword~) sin16s_gen::$20 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:18 + //SEG211 [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) + // [100] sin16s_gen::x5_128#0 ← > sin16s_gen::$20 // ALU //SEG212 [101] (word) sin16s_gen::usinx#1 ← (word) sin16s_gen::usinx#0 + (word) sin16s_gen::x5_128#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ) -- vwuz1=vwuz1_plus__hi_vduz2 lda usinx clc - adc _18+2 + adc _20+2 sta usinx lda usinx+1 - adc _18+3 + adc _20+3 sta usinx+1 - //SEG213 [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) -- vbuxx_eq_0_then_la1 + //SEG213 [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@22 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) -- vbuxx_eq_0_then_la1 cpx #0 - beq b20 - jmp b7 - //SEG214 sin16s_gen::@7 - b7: + beq b22 + jmp b8 + //SEG214 sin16s_gen::@8 + b8: //SEG215 [103] (signed word) sin16s_gen::sinx#1 ← - (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ) -- vwsz1=_neg_vwsz1 sec lda sinx @@ -7085,13 +7037,13 @@ sin16s_gen: { eor #$ff adc #0 sta sinx+1 - //SEG216 [104] phi from sin16s_gen::@20 sin16s_gen::@7 to sin16s_gen::@4 [phi:sin16s_gen::@20/sin16s_gen::@7->sin16s_gen::@4] - b4_from_b20: - b4_from_b7: - //SEG217 [104] phi (signed word) sin16s_gen::sinx#2 = (signed word~) sin16s_gen::sinx#4 [phi:sin16s_gen::@20/sin16s_gen::@7->sin16s_gen::@4#0] -- register_copy - jmp b4 - //SEG218 sin16s_gen::@4 - b4: + //SEG216 [104] phi from sin16s_gen::@22 sin16s_gen::@8 to sin16s_gen::@5 [phi:sin16s_gen::@22/sin16s_gen::@8->sin16s_gen::@5] + b5_from_b22: + b5_from_b8: + //SEG217 [104] phi (signed word) sin16s_gen::sinx#2 = (signed word~) sin16s_gen::sinx#3 [phi:sin16s_gen::@22/sin16s_gen::@8->sin16s_gen::@5#0] -- register_copy + jmp b5 + //SEG218 sin16s_gen::@5 + b5: //SEG219 [105] *((signed word*) sin16s_gen::sintab#10) ← (signed word) sin16s_gen::sinx#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) -- _deref_pwsz1=vwsz2 ldy #0 lda sinx @@ -7129,22 +7081,22 @@ sin16s_gen: { //SEG223 [109] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#1 sin16s_gen::i#1 ] ) -- vwuz1_lt_vwuc1_then_la1 lda i+1 cmp #>main.wavelength - bcc b1_from_b4 + bcc b1_from_b5 bne !+ lda i cmp #0 Removing instruction lda #>0 -Removing instruction lda #>0 Removing instruction lda #0 Removing instruction lda x1+1 Removing instruction lda #0 @@ -7465,9 +7416,9 @@ Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 Replacing label b3_from_b2 with b3 Replacing label b3_from_b2 with b3 -Replacing label b1_from_b4 with b1 -Replacing label b1_from_b4 with b1 -Replacing label b4_from_b20 with b4 +Replacing label b1_from_b5 with b1 +Replacing label b1_from_b5 with b1 +Replacing label b5_from_b22 with b5 Replacing label b4_from_b2 with b4 Replacing label b2_from_b1 with b2 Replacing label b3_from_b2 with b3 @@ -7487,11 +7438,11 @@ Removing instruction print_char_from_b2: Removing instruction b1_from_print_sword: Removing instruction b1_from_b4: Removing instruction b1_from_b1: -Removing instruction b1_from_b4: +Removing instruction b1_from_b5: Removing instruction b3_from_b2: -Removing instruction b3_from_b6: -Removing instruction b4_from_b20: -Removing instruction b4_from_b7: +Removing instruction b3_from_b7: +Removing instruction b5_from_b22: +Removing instruction b5_from_b8: Removing instruction b4_from_b2: Removing instruction b4_from_b7: Removing instruction b1_from_b3: @@ -7526,26 +7477,26 @@ Removing instruction breturn: Removing instruction b1_from_print_cls: Removing instruction breturn: Removing instruction divr16u_from_sin16s_gen: -Removing instruction b9: -Removing instruction divr16u_from_b9: -Removing instruction b10: -Removing instruction b1_from_b10: -Removing instruction b5: -Removing instruction b2_from_b5: -Removing instruction b6: -Removing instruction mul_u4f12_from_b3: Removing instruction b11: -Removing instruction mul_u4f12_from_b11: +Removing instruction divr16u_from_b11: Removing instruction b12: -Removing instruction mul16u_from_b12: +Removing instruction b1_from_b12: +Removing instruction b6: +Removing instruction b2_from_b6: +Removing instruction b7: +Removing instruction mul_u4f12_from_b3: Removing instruction b13: Removing instruction mul_u4f12_from_b13: Removing instruction b14: -Removing instruction mul_u4f12_from_b14: +Removing instruction mul16u_from_b14: Removing instruction b15: -Removing instruction mul16u_from_b15: +Removing instruction mul_u4f12_from_b15: Removing instruction b16: -Removing instruction b7: +Removing instruction mul_u4f12_from_b16: +Removing instruction b17: +Removing instruction mul16u_from_b17: +Removing instruction b18: +Removing instruction b8: Removing instruction breturn: Removing instruction b1_from_mul16u: Removing instruction breturn: @@ -7560,9 +7511,9 @@ Removing instruction b5: Removing instruction b6: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Skipping double jump to b4 in beq b20 +Skipping double jump to b5 in beq b22 Succesful ASM optimization Pass5DoubleJumpElimination -Relabelling long label b2_from_b1 to b5 +Relabelling long label b2_from_b1 to b4 Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 Removing instruction jmp b1 @@ -7571,19 +7522,19 @@ Removing instruction jmp b1 Succesful ASM optimization Pass5NextJumpElimination Removing instruction lda #0 Succesful ASM optimization Pass5UnnecesaryLoadElimination -Removing instruction b20: +Removing instruction b22: Succesful ASM optimization Pass5UnusedLabelElimination -Removing unreachable instruction jmp b4 +Removing unreachable instruction jmp b5 Succesful ASM optimization Pass5UnreachableCodeElimination -Fixing long branch [342] bcc b1 to bcs -Fixing long branch [348] bcc b1 to bcs +Fixing long branch [341] bcc b1 to bcs +Fixing long branch [347] bcc b1 to bcs FINAL SYMBOL TABLE (label) @23 (label) @begin (label) @end -(word) PI2_u4f12 -(const word) PI2_u4f12#0 PI2_u4f12 = (word/signed word/dword/signed dword) 25736 +(dword) PI2_u4f28 +(const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713 (word) PI_HALF_u4f12 (const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434 (word) PI_u4f12 @@ -7747,29 +7698,25 @@ FINAL SYMBOL TABLE (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:4 0.8 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(dword~) sin16s_gen::$13 $13 zp ZP_DWORD:18 22.0 -(dword~) sin16s_gen::$18 $18 zp ZP_DWORD:18 22.0 +(dword~) sin16s_gen::$14 $14 zp ZP_DWORD:18 22.0 +(dword~) sin16s_gen::$20 $20 zp ZP_DWORD:18 22.0 (label) sin16s_gen::@1 -(label) sin16s_gen::@10 (label) sin16s_gen::@11 (label) sin16s_gen::@12 (label) sin16s_gen::@13 (label) sin16s_gen::@14 (label) sin16s_gen::@15 (label) sin16s_gen::@16 +(label) sin16s_gen::@17 +(label) sin16s_gen::@18 (label) sin16s_gen::@2 -(label) sin16s_gen::@20 +(label) sin16s_gen::@22 (label) sin16s_gen::@3 -(label) sin16s_gen::@4 (label) sin16s_gen::@5 (label) sin16s_gen::@6 (label) sin16s_gen::@7 -(label) sin16s_gen::@9 +(label) sin16s_gen::@8 (label) sin16s_gen::@return -(word) sin16s_gen::div128 -(const word) sin16s_gen::div128#0 div128 = (dword/signed dword) 65536/(byte/word/signed word/dword/signed dword) 128 -(word) sin16s_gen::div6 -(const word) sin16s_gen::div6#0 div6 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 (word) sin16s_gen::i (word) sin16s_gen::i#1 i zp ZP_WORD:4 16.5 (word) sin16s_gen::i#10 i zp ZP_WORD:4 0.46808510638297873 @@ -7781,7 +7728,7 @@ FINAL SYMBOL TABLE (signed word) sin16s_gen::sinx (signed word) sin16s_gen::sinx#1 sinx zp ZP_WORD:12 22.0 (signed word) sin16s_gen::sinx#2 sinx zp ZP_WORD:12 33.0 -(signed word~) sin16s_gen::sinx#4 sinx zp ZP_WORD:12 22.0 +(signed word~) sin16s_gen::sinx#3 sinx zp ZP_WORD:12 22.0 (dword) sin16s_gen::step (dword) sin16s_gen::step#0 step zp ZP_DWORD:26 0.26 (word) sin16s_gen::stepf @@ -7821,10 +7768,10 @@ reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] zp ZP_WORD:6 [ char_cursor#32 char_cursor#44 char_cursor#41 char_cursor#46 char_cursor#2 char_cursor#12 char_cursor#1 sin16s_gen::x1#10 sin16s_gen::x1#3 sin16s_gen::x1#0 sin16s_gen::x1#1 sin16s_gen::x1#2 mul_u4f12::v2#4 mul_u4f12::v2#1 mul_u4f12::v2#2 mul_u4f12::v2#3 mul_u4f12::v2#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_DWORD:8 [ sin16s_gen::x#10 sin16s_gen::x#1 ] reg byte x [ sin16s_gen::isUpper#10 ] -zp ZP_WORD:12 [ sin16s_gen::sinx#2 sin16s_gen::sinx#4 sin16s_gen::sinx#1 sin16s_gen::usinx#1 sin16s_gen::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 sin16s_gen::stepf#0 ] +zp ZP_WORD:12 [ sin16s_gen::sinx#2 sin16s_gen::sinx#3 sin16s_gen::sinx#1 sin16s_gen::usinx#1 sin16s_gen::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 sin16s_gen::stepf#0 ] zp ZP_WORD:14 [ mul16u::b#3 mul16u::b#2 sin16s_gen::stepi#0 ] zp ZP_WORD:16 [ mul16u::a#4 mul16u::a#7 mul16u::a#3 mul16u::a#1 mul16u::a#2 mul16u::a#0 mul_u4f12::v1#4 mul_u4f12::v1#1 mul_u4f12::v1#2 mul_u4f12::v1#3 mul_u4f12::v1#0 sin16s_gen::x2#0 mul_u4f12::return#0 sin16s_gen::x4#0 mul_u4f12::return#2 mul_u4f12::return#10 mul_u4f12::return#1 mul_u4f12::return#3 sin16s_gen::x5#0 ] -zp ZP_DWORD:18 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 sin16s_gen::$13 mul16u::return#3 sin16s_gen::$18 mul16u::return#4 mul_u4f12::$0 mul_u4f12::$1 ] +zp ZP_DWORD:18 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 sin16s_gen::$14 mul16u::return#3 sin16s_gen::$20 mul16u::return#4 mul_u4f12::$0 mul_u4f12::$1 ] zp ZP_DWORD:22 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte a [ print_byte::$0 ] @@ -7839,7 +7786,7 @@ reg byte a [ divr16u::$2 ] FINAL ASSEMBLER -Score: 23296 +Score: 23298 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -7847,7 +7794,7 @@ Score: 23296 .pc = $80d "Program" //SEG1 Global Constants & labels .label SCREEN = $400 - .const PI2_u4f12 = $6488 + .const PI2_u4f28 = $6487ed51 .const PI_u4f12 = $3244 .const PI_HALF_u4f12 = $1922 .label rem16u = 4 @@ -8107,10 +8054,8 @@ print_cls: { } //SEG112 sin16s_gen sin16s_gen: { - .const div6 = $10000/6 - .const div128 = $10000/$80 - .label _13 = $12 - .label _18 = $12 + .label _14 = $12 + .label _20 = $12 .label stepi = $e .label stepf = $c .label step = $1a @@ -8120,10 +8065,10 @@ sin16s_gen: { .label usinx = $c .label x4 = $10 .label x5 = $10 + .label sinx = $c .label sintab = 2 .label x = 8 .label i = 4 - .label sinx = $c //SEG113 [54] call divr16u param-assignment [ divr16u::return#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 rem16u#1 ] ) //SEG114 [132] phi from sin16s_gen to divr16u [phi:sin16s_gen->divr16u] //SEG115 [132] phi (word) divr16u::divisor#6 = (const word) main::wavelength#0 [phi:sin16s_gen->divr16u#0] -- vwuz1=vwuc1 @@ -8131,10 +8076,10 @@ sin16s_gen: { sta divr16u.divisor lda #>main.wavelength sta divr16u.divisor+1 - //SEG116 [132] phi (word) divr16u::dividend#5 = (const word) PI2_u4f12#0 [phi:sin16s_gen->divr16u#1] -- vwuz1=vwuc1 - lda #(const dword) PI2_u4f28#0 [phi:sin16s_gen->divr16u#1] -- vwuz1=vwuc1 + lda #>16 sta divr16u.dividend - lda #>PI2_u4f12 + lda #>PI2_u4f28>>16 sta divr16u.dividend+1 //SEG117 [132] phi (word) divr16u::rem#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen->divr16u#2] -- vwuz1=vbuc1 lda #<0 @@ -8143,7 +8088,7 @@ sin16s_gen: { jsr divr16u //SEG118 [55] (word) divr16u::return#2 ← (word) divr16u::return#0 [ divr16u::return#2 rem16u#1 ] ( main:2::sin16s_gen:5 [ divr16u::return#2 rem16u#1 ] ) // (word) divr16u::return#2 = (word) divr16u::return#0 // register copy zp ZP_WORD:12 - //SEG119 sin16s_gen::@9 + //SEG119 sin16s_gen::@11 //SEG120 [56] (word) sin16s_gen::stepi#0 ← (word) divr16u::return#2 [ sin16s_gen::stepi#0 rem16u#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 rem16u#1 ] ) -- vwuz1=vwuz2 lda divr16u.return sta stepi @@ -8152,21 +8097,22 @@ sin16s_gen: { //SEG121 [57] (word) divr16u::rem#4 ← (word) rem16u#1 [ sin16s_gen::stepi#0 divr16u::rem#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::rem#4 ] ) // (word) divr16u::rem#4 = (word) rem16u#1 // register copy zp ZP_WORD:4 //SEG122 [58] call divr16u param-assignment [ divr16u::return#0 sin16s_gen::stepi#0 ] ( main:2::sin16s_gen:5 [ divr16u::return#0 sin16s_gen::stepi#0 ] ) - //SEG123 [132] phi from sin16s_gen::@9 to divr16u [phi:sin16s_gen::@9->divr16u] - //SEG124 [132] phi (word) divr16u::divisor#6 = (const word) main::wavelength#0 [phi:sin16s_gen::@9->divr16u#0] -- vwuz1=vwuc1 + //SEG123 [132] phi from sin16s_gen::@11 to divr16u [phi:sin16s_gen::@11->divr16u] + //SEG124 [132] phi (word) divr16u::divisor#6 = (const word) main::wavelength#0 [phi:sin16s_gen::@11->divr16u#0] -- vwuz1=vwuc1 lda #main.wavelength sta divr16u.divisor+1 - //SEG125 [132] phi (word) divr16u::dividend#5 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@9->divr16u#1] -- vwuz1=vbuc1 - lda #<0 + //SEG125 [132] phi (word) divr16u::dividend#5 = <(const dword) PI2_u4f28#0 [phi:sin16s_gen::@11->divr16u#1] -- vwuz1=vwuc1 + lda #PI2_u4f28&$ffff sta divr16u.dividend+1 - //SEG126 [132] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:sin16s_gen::@9->divr16u#2] -- register_copy + //SEG126 [132] phi (word) divr16u::rem#10 = (word) divr16u::rem#4 [phi:sin16s_gen::@11->divr16u#2] -- register_copy jsr divr16u //SEG127 [59] (word) divr16u::return#3 ← (word) divr16u::return#0 [ sin16s_gen::stepi#0 divr16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 divr16u::return#3 ] ) // (word) divr16u::return#3 = (word) divr16u::return#0 // register copy zp ZP_WORD:12 - //SEG128 sin16s_gen::@10 + //SEG128 sin16s_gen::@12 //SEG129 [60] (word) sin16s_gen::stepf#0 ← (word) divr16u::return#3 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::stepi#0 sin16s_gen::stepf#0 ] ) // (word) sin16s_gen::stepf#0 = (word) divr16u::return#3 // register copy zp ZP_WORD:12 //SEG130 [61] (dword) sin16s_gen::step#0 ← (word) sin16s_gen::stepi#0 dw= (word) sin16s_gen::stepf#0 [ sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 ] ) -- vduz1=vwuz2_dword_vwuz3 @@ -8178,26 +8124,26 @@ sin16s_gen: { sta step lda stepf+1 sta step+1 - //SEG131 [62] phi from sin16s_gen::@10 to sin16s_gen::@1 [phi:sin16s_gen::@10->sin16s_gen::@1] - //SEG132 [62] phi (word) sin16s_gen::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@10->sin16s_gen::@1#0] -- vwuz1=vbuc1 + //SEG131 [62] phi from sin16s_gen::@12 to sin16s_gen::@1 [phi:sin16s_gen::@12->sin16s_gen::@1] + //SEG132 [62] phi (word) sin16s_gen::i#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@12->sin16s_gen::@1#0] -- vwuz1=vbuc1 lda #<0 sta i sta i+1 - //SEG133 [62] phi (signed word*) sin16s_gen::sintab#10 = (const signed word[128]) main::sintab1#0 [phi:sin16s_gen::@10->sin16s_gen::@1#1] -- pwsz1=pwsc1 + //SEG133 [62] phi (signed word*) sin16s_gen::sintab#10 = (const signed word[128]) main::sintab1#0 [phi:sin16s_gen::@12->sin16s_gen::@1#1] -- pwsz1=pwsc1 lda #main.sintab1 sta sintab+1 - //SEG134 [62] phi (dword) sin16s_gen::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@10->sin16s_gen::@1#2] -- vduz1=vbuc1 + //SEG134 [62] phi (dword) sin16s_gen::x#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@12->sin16s_gen::@1#2] -- vduz1=vbuc1 lda #0 sta x sta x+1 sta x+2 sta x+3 - //SEG135 [62] phi from sin16s_gen::@4 to sin16s_gen::@1 [phi:sin16s_gen::@4->sin16s_gen::@1] - //SEG136 [62] phi (word) sin16s_gen::i#10 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@4->sin16s_gen::@1#0] -- register_copy - //SEG137 [62] phi (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#1 [phi:sin16s_gen::@4->sin16s_gen::@1#1] -- register_copy - //SEG138 [62] phi (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@4->sin16s_gen::@1#2] -- register_copy + //SEG135 [62] phi from sin16s_gen::@5 to sin16s_gen::@1 [phi:sin16s_gen::@5->sin16s_gen::@1] + //SEG136 [62] phi (word) sin16s_gen::i#10 = (word) sin16s_gen::i#1 [phi:sin16s_gen::@5->sin16s_gen::@1#0] -- register_copy + //SEG137 [62] phi (signed word*) sin16s_gen::sintab#10 = (signed word*) sin16s_gen::sintab#1 [phi:sin16s_gen::@5->sin16s_gen::@1#1] -- register_copy + //SEG138 [62] phi (dword) sin16s_gen::x#10 = (dword) sin16s_gen::x#1 [phi:sin16s_gen::@5->sin16s_gen::@1#2] -- register_copy //SEG139 sin16s_gen::@1 b1: //SEG140 [63] (word) sin16s_gen::x1#0 ← > (dword) sin16s_gen::x#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ) -- vwuz1=_hi_vduz2 @@ -8207,13 +8153,13 @@ sin16s_gen: { sta x1+1 //SEG141 [64] if((word) sin16s_gen::x1#0<(const word) PI_u4f12#0) goto sin16s_gen::@2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::x1#0 ] ) -- vwuz1_lt_vwuc1_then_la1 cmp #>PI_u4f12 - bcc b5 + bcc b4 bne !+ lda x1 cmp #PI_u4f12 sta x1+1 - //SEG144 [66] phi from sin16s_gen::@5 to sin16s_gen::@2 [phi:sin16s_gen::@5->sin16s_gen::@2] - //SEG145 [66] phi (byte) sin16s_gen::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s_gen::@5->sin16s_gen::@2#0] -- vbuxx=vbuc1 + //SEG144 [66] phi from sin16s_gen::@6 to sin16s_gen::@2 [phi:sin16s_gen::@6->sin16s_gen::@2] + //SEG145 [66] phi (byte) sin16s_gen::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 1 [phi:sin16s_gen::@6->sin16s_gen::@2#0] -- vbuxx=vbuc1 ldx #1 - //SEG146 [66] phi (word) sin16s_gen::x1#3 = (word) sin16s_gen::x1#1 [phi:sin16s_gen::@5->sin16s_gen::@2#1] -- register_copy + //SEG146 [66] phi (word) sin16s_gen::x1#3 = (word) sin16s_gen::x1#1 [phi:sin16s_gen::@6->sin16s_gen::@2#1] -- register_copy jmp b2 //SEG147 [66] phi from sin16s_gen::@1 to sin16s_gen::@2 [phi:sin16s_gen::@1->sin16s_gen::@2] - b5: + b4: //SEG148 [66] phi (byte) sin16s_gen::isUpper#10 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:sin16s_gen::@1->sin16s_gen::@2#0] -- vbuxx=vbuc1 ldx #0 //SEG149 [66] phi (word) sin16s_gen::x1#3 = (word) sin16s_gen::x1#0 [phi:sin16s_gen::@1->sin16s_gen::@2#1] -- register_copy @@ -8243,7 +8189,7 @@ sin16s_gen: { cmp #PI_u4f12 sbc x1+1 sta x1+1 - //SEG154 [69] phi from sin16s_gen::@2 sin16s_gen::@6 to sin16s_gen::@3 [phi:sin16s_gen::@2/sin16s_gen::@6->sin16s_gen::@3] - //SEG155 [69] phi (word) sin16s_gen::x1#10 = (word) sin16s_gen::x1#3 [phi:sin16s_gen::@2/sin16s_gen::@6->sin16s_gen::@3#0] -- register_copy + //SEG154 [69] phi from sin16s_gen::@2 sin16s_gen::@7 to sin16s_gen::@3 [phi:sin16s_gen::@2/sin16s_gen::@7->sin16s_gen::@3] + //SEG155 [69] phi (word) sin16s_gen::x1#10 = (word) sin16s_gen::x1#3 [phi:sin16s_gen::@2/sin16s_gen::@7->sin16s_gen::@3#0] -- register_copy //SEG156 sin16s_gen::@3 b3: //SEG157 [70] (word) mul_u4f12::v1#0 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#0 ] ) -- vwuz1=vwuz2 @@ -8270,7 +8216,7 @@ sin16s_gen: { jsr mul_u4f12 //SEG163 [73] (word) mul_u4f12::return#0 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#0 ] ) // (word) mul_u4f12::return#0 = (word) mul_u4f12::return#10 // register copy zp ZP_WORD:16 - //SEG164 sin16s_gen::@11 + //SEG164 sin16s_gen::@13 //SEG165 [74] (word) sin16s_gen::x2#0 ← (word) mul_u4f12::return#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x2#0 ] ) // (word) sin16s_gen::x2#0 = (word) mul_u4f12::return#0 // register copy zp ZP_WORD:16 //SEG166 [75] (word) mul_u4f12::v1#1 ← (word) sin16s_gen::x2#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 ] ) @@ -8278,13 +8224,13 @@ sin16s_gen: { //SEG167 [76] (word) mul_u4f12::v2#1 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::v1#1 mul_u4f12::v2#1 ] ) // (word) mul_u4f12::v2#1 = (word) sin16s_gen::x1#10 // register copy zp ZP_WORD:6 //SEG168 [77] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 ] ) - //SEG169 [123] phi from sin16s_gen::@11 to mul_u4f12 [phi:sin16s_gen::@11->mul_u4f12] - //SEG170 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#1 [phi:sin16s_gen::@11->mul_u4f12#0] -- register_copy - //SEG171 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#1 [phi:sin16s_gen::@11->mul_u4f12#1] -- register_copy + //SEG169 [123] phi from sin16s_gen::@13 to mul_u4f12 [phi:sin16s_gen::@13->mul_u4f12] + //SEG170 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#1 [phi:sin16s_gen::@13->mul_u4f12#0] -- register_copy + //SEG171 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#1 [phi:sin16s_gen::@13->mul_u4f12#1] -- register_copy jsr mul_u4f12 //SEG172 [78] (word) mul_u4f12::return#1 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#1 ] ) // (word) mul_u4f12::return#1 = (word) mul_u4f12::return#10 // register copy zp ZP_WORD:16 - //SEG173 sin16s_gen::@12 + //SEG173 sin16s_gen::@14 //SEG174 [79] (word) sin16s_gen::x3#0 ← (word) mul_u4f12::return#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 ] ) -- vwuz1=vwuz2 lda mul_u4f12.return sta x3 @@ -8296,28 +8242,28 @@ sin16s_gen: { lda x3+1 sta mul16u.a+1 //SEG176 [81] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::res#2 ] ) - //SEG177 [112] phi from sin16s_gen::@12 to mul16u [phi:sin16s_gen::@12->mul16u] - //SEG178 [112] phi (word) mul16u::a#7 = (word) mul16u::a#1 [phi:sin16s_gen::@12->mul16u#0] -- register_copy - //SEG179 [112] phi (word) mul16u::b#3 = (const word) sin16s_gen::div6#0 [phi:sin16s_gen::@12->mul16u#1] -- vwuz1=vwuc1 - lda #mul16u] + //SEG178 [112] phi (word) mul16u::a#7 = (word) mul16u::a#1 [phi:sin16s_gen::@14->mul16u#0] -- register_copy + //SEG179 [112] phi (word) mul16u::b#3 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 [phi:sin16s_gen::@14->mul16u#1] -- vwuz1=vwuc1 + lda #<$10000/6 sta mul16u.b - lda #>div6 + lda #>$10000/6 sta mul16u.b+1 jsr mul16u //SEG180 [82] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 mul16u::return#2 ] ) // (dword) mul16u::return#2 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:18 - //SEG181 sin16s_gen::@13 - //SEG182 [83] (dword~) sin16s_gen::$13 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$13 ] ) - // (dword~) sin16s_gen::$13 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:18 - //SEG183 [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$13 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) - // [84] sin16s_gen::x3_6#0 ← > sin16s_gen::$13 // ALU + //SEG181 sin16s_gen::@15 + //SEG182 [83] (dword~) sin16s_gen::$14 ← (dword) mul16u::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::$14 ] ) + // (dword~) sin16s_gen::$14 = (dword) mul16u::return#2 // register copy zp ZP_DWORD:18 + //SEG183 [84] (word) sin16s_gen::x3_6#0 ← > (dword~) sin16s_gen::$14 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::x3_6#0 ] ) + // [84] sin16s_gen::x3_6#0 ← > sin16s_gen::$14 // ALU //SEG184 [85] (word) sin16s_gen::usinx#0 ← (word) sin16s_gen::x1#10 - (word) sin16s_gen::x3_6#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::x3#0 sin16s_gen::usinx#0 ] ) -- vwuz1=vwuz2_minus__hi_vduz3 lda x1 sec - sbc _13+2 + sbc _14+2 sta usinx lda x1+1 - sbc _13+3 + sbc _14+3 sta usinx+1 //SEG185 [86] (word) mul_u4f12::v1#2 ← (word) sin16s_gen::x3#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 ] ) -- vwuz1=vwuz2 lda x3 @@ -8327,13 +8273,13 @@ sin16s_gen: { //SEG186 [87] (word) mul_u4f12::v2#2 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#2 mul_u4f12::v2#2 ] ) // (word) mul_u4f12::v2#2 = (word) sin16s_gen::x1#10 // register copy zp ZP_WORD:6 //SEG187 [88] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) - //SEG188 [123] phi from sin16s_gen::@13 to mul_u4f12 [phi:sin16s_gen::@13->mul_u4f12] - //SEG189 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#2 [phi:sin16s_gen::@13->mul_u4f12#0] -- register_copy - //SEG190 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#2 [phi:sin16s_gen::@13->mul_u4f12#1] -- register_copy + //SEG188 [123] phi from sin16s_gen::@15 to mul_u4f12 [phi:sin16s_gen::@15->mul_u4f12] + //SEG189 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#2 [phi:sin16s_gen::@15->mul_u4f12#0] -- register_copy + //SEG190 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#2 [phi:sin16s_gen::@15->mul_u4f12#1] -- register_copy jsr mul_u4f12 //SEG191 [89] (word) mul_u4f12::return#2 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::return#2 ] ) // (word) mul_u4f12::return#2 = (word) mul_u4f12::return#10 // register copy zp ZP_WORD:16 - //SEG192 sin16s_gen::@14 + //SEG192 sin16s_gen::@16 //SEG193 [90] (word) sin16s_gen::x4#0 ← (word) mul_u4f12::return#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 sin16s_gen::x4#0 ] ) // (word) sin16s_gen::x4#0 = (word) mul_u4f12::return#2 // register copy zp ZP_WORD:16 //SEG194 [91] (word) mul_u4f12::v1#3 ← (word) sin16s_gen::x4#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::x1#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 ] ) @@ -8341,45 +8287,45 @@ sin16s_gen: { //SEG195 [92] (word) mul_u4f12::v2#3 ← (word) sin16s_gen::x1#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::v1#3 mul_u4f12::v2#3 ] ) // (word) mul_u4f12::v2#3 = (word) sin16s_gen::x1#10 // register copy zp ZP_WORD:6 //SEG196 [93] call mul_u4f12 param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul_u4f12::return#10 sin16s_gen::usinx#0 ] ) - //SEG197 [123] phi from sin16s_gen::@14 to mul_u4f12 [phi:sin16s_gen::@14->mul_u4f12] - //SEG198 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#3 [phi:sin16s_gen::@14->mul_u4f12#0] -- register_copy - //SEG199 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#3 [phi:sin16s_gen::@14->mul_u4f12#1] -- register_copy + //SEG197 [123] phi from sin16s_gen::@16 to mul_u4f12 [phi:sin16s_gen::@16->mul_u4f12] + //SEG198 [123] phi (word) mul_u4f12::v2#4 = (word) mul_u4f12::v2#3 [phi:sin16s_gen::@16->mul_u4f12#0] -- register_copy + //SEG199 [123] phi (word) mul_u4f12::v1#4 = (word) mul_u4f12::v1#3 [phi:sin16s_gen::@16->mul_u4f12#1] -- register_copy jsr mul_u4f12 //SEG200 [94] (word) mul_u4f12::return#3 ← (word) mul_u4f12::return#10 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul_u4f12::return#3 ] ) // (word) mul_u4f12::return#3 = (word) mul_u4f12::return#10 // register copy zp ZP_WORD:16 - //SEG201 sin16s_gen::@15 + //SEG201 sin16s_gen::@17 //SEG202 [95] (word) sin16s_gen::x5#0 ← (word) mul_u4f12::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5#0 ] ) // (word) sin16s_gen::x5#0 = (word) mul_u4f12::return#3 // register copy zp ZP_WORD:16 //SEG203 [96] (word) mul16u::a#2 ← (word) sin16s_gen::x5#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::a#2 ] ) // (word) mul16u::a#2 = (word) sin16s_gen::x5#0 // register copy zp ZP_WORD:16 //SEG204 [97] call mul16u param-assignment [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 mul16u::res#2 sin16s_gen::usinx#0 ] ) - //SEG205 [112] phi from sin16s_gen::@15 to mul16u [phi:sin16s_gen::@15->mul16u] - //SEG206 [112] phi (word) mul16u::a#7 = (word) mul16u::a#2 [phi:sin16s_gen::@15->mul16u#0] -- register_copy - //SEG207 [112] phi (word) mul16u::b#3 = (const word) sin16s_gen::div128#0 [phi:sin16s_gen::@15->mul16u#1] -- vwuz1=vwuc1 - lda #mul16u] + //SEG206 [112] phi (word) mul16u::a#7 = (word) mul16u::a#2 [phi:sin16s_gen::@17->mul16u#0] -- register_copy + //SEG207 [112] phi (word) mul16u::b#3 = (dword/signed dword) 65536/(byte/word/signed word/dword/signed dword) 128 [phi:sin16s_gen::@17->mul16u#1] -- vwuz1=vwuc1 + lda #<$10000/$80 sta mul16u.b - lda #>div128 + lda #>$10000/$80 sta mul16u.b+1 jsr mul16u //SEG208 [98] (dword) mul16u::return#3 ← (dword) mul16u::res#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 mul16u::return#3 ] ) // (dword) mul16u::return#3 = (dword) mul16u::res#2 // register copy zp ZP_DWORD:18 - //SEG209 sin16s_gen::@16 - //SEG210 [99] (dword~) sin16s_gen::$18 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$18 ] ) - // (dword~) sin16s_gen::$18 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:18 - //SEG211 [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$18 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) - // [100] sin16s_gen::x5_128#0 ← > sin16s_gen::$18 // ALU + //SEG209 sin16s_gen::@18 + //SEG210 [99] (dword~) sin16s_gen::$20 ← (dword) mul16u::return#3 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::$20 ] ) + // (dword~) sin16s_gen::$20 = (dword) mul16u::return#3 // register copy zp ZP_DWORD:18 + //SEG211 [100] (word) sin16s_gen::x5_128#0 ← > (dword~) sin16s_gen::$20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#0 sin16s_gen::x5_128#0 ] ) + // [100] sin16s_gen::x5_128#0 ← > sin16s_gen::$20 // ALU //SEG212 [101] (word) sin16s_gen::usinx#1 ← (word) sin16s_gen::usinx#0 + (word) sin16s_gen::x5_128#0 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::isUpper#10 sin16s_gen::usinx#1 ] ) -- vwuz1=vwuz1_plus__hi_vduz2 lda usinx clc - adc _18+2 + adc _20+2 sta usinx lda usinx+1 - adc _18+3 + adc _20+3 sta usinx+1 - //SEG213 [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@20 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) -- vbuxx_eq_0_then_la1 + //SEG213 [102] if((byte) sin16s_gen::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s_gen::@22 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::usinx#1 ] ) -- vbuxx_eq_0_then_la1 cpx #0 - beq b4 - //SEG214 sin16s_gen::@7 + beq b5 + //SEG214 sin16s_gen::@8 //SEG215 [103] (signed word) sin16s_gen::sinx#1 ← - (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#1 ] ) -- vwsz1=_neg_vwsz1 sec lda sinx @@ -8390,10 +8336,10 @@ sin16s_gen: { eor #$ff adc #0 sta sinx+1 - //SEG216 [104] phi from sin16s_gen::@20 sin16s_gen::@7 to sin16s_gen::@4 [phi:sin16s_gen::@20/sin16s_gen::@7->sin16s_gen::@4] - //SEG217 [104] phi (signed word) sin16s_gen::sinx#2 = (signed word~) sin16s_gen::sinx#4 [phi:sin16s_gen::@20/sin16s_gen::@7->sin16s_gen::@4#0] -- register_copy - //SEG218 sin16s_gen::@4 - b4: + //SEG216 [104] phi from sin16s_gen::@22 sin16s_gen::@8 to sin16s_gen::@5 [phi:sin16s_gen::@22/sin16s_gen::@8->sin16s_gen::@5] + //SEG217 [104] phi (signed word) sin16s_gen::sinx#2 = (signed word~) sin16s_gen::sinx#3 [phi:sin16s_gen::@22/sin16s_gen::@8->sin16s_gen::@5#0] -- register_copy + //SEG218 sin16s_gen::@5 + b5: //SEG219 [105] *((signed word*) sin16s_gen::sintab#10) ← (signed word) sin16s_gen::sinx#2 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 ] ) -- _deref_pwsz1=vwsz2 ldy #0 lda sinx @@ -8444,9 +8390,9 @@ sin16s_gen: { //SEG224 sin16s_gen::@return //SEG225 [110] return [ ] ( main:2::sin16s_gen:5 [ ] ) rts - //SEG226 sin16s_gen::@20 - //SEG227 [111] (signed word~) sin16s_gen::sinx#4 ← (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#4 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#4 ] ) - // (signed word~) sin16s_gen::sinx#4 = (signed word)(word) sin16s_gen::usinx#1 // register copy zp ZP_WORD:12 + //SEG226 sin16s_gen::@22 + //SEG227 [111] (signed word~) sin16s_gen::sinx#3 ← (signed word)(word) sin16s_gen::usinx#1 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] ( main:2::sin16s_gen:5 [ sin16s_gen::step#0 sin16s_gen::x#10 sin16s_gen::sintab#10 sin16s_gen::i#10 sin16s_gen::sinx#3 ] ) + // (signed word~) sin16s_gen::sinx#3 = (signed word)(word) sin16s_gen::usinx#1 // register copy zp ZP_WORD:12 } //SEG228 mul16u mul16u: { diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.sym index 77a3e2151..4bc2c4182 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen.sym @@ -1,8 +1,8 @@ (label) @23 (label) @begin (label) @end -(word) PI2_u4f12 -(const word) PI2_u4f12#0 PI2_u4f12 = (word/signed word/dword/signed dword) 25736 +(dword) PI2_u4f28 +(const dword) PI2_u4f28#0 PI2_u4f28 = (dword/signed dword) 1686629713 (word) PI_HALF_u4f12 (const word) PI_HALF_u4f12#0 PI_HALF_u4f12 = (word/signed word/dword/signed dword) 6434 (word) PI_u4f12 @@ -166,29 +166,25 @@ (word) rem16u (word) rem16u#1 rem16u zp ZP_WORD:4 0.8 (void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength) -(dword~) sin16s_gen::$13 $13 zp ZP_DWORD:18 22.0 -(dword~) sin16s_gen::$18 $18 zp ZP_DWORD:18 22.0 +(dword~) sin16s_gen::$14 $14 zp ZP_DWORD:18 22.0 +(dword~) sin16s_gen::$20 $20 zp ZP_DWORD:18 22.0 (label) sin16s_gen::@1 -(label) sin16s_gen::@10 (label) sin16s_gen::@11 (label) sin16s_gen::@12 (label) sin16s_gen::@13 (label) sin16s_gen::@14 (label) sin16s_gen::@15 (label) sin16s_gen::@16 +(label) sin16s_gen::@17 +(label) sin16s_gen::@18 (label) sin16s_gen::@2 -(label) sin16s_gen::@20 +(label) sin16s_gen::@22 (label) sin16s_gen::@3 -(label) sin16s_gen::@4 (label) sin16s_gen::@5 (label) sin16s_gen::@6 (label) sin16s_gen::@7 -(label) sin16s_gen::@9 +(label) sin16s_gen::@8 (label) sin16s_gen::@return -(word) sin16s_gen::div128 -(const word) sin16s_gen::div128#0 div128 = (dword/signed dword) 65536/(byte/word/signed word/dword/signed dword) 128 -(word) sin16s_gen::div6 -(const word) sin16s_gen::div6#0 div6 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 (word) sin16s_gen::i (word) sin16s_gen::i#1 i zp ZP_WORD:4 16.5 (word) sin16s_gen::i#10 i zp ZP_WORD:4 0.46808510638297873 @@ -200,7 +196,7 @@ (signed word) sin16s_gen::sinx (signed word) sin16s_gen::sinx#1 sinx zp ZP_WORD:12 22.0 (signed word) sin16s_gen::sinx#2 sinx zp ZP_WORD:12 33.0 -(signed word~) sin16s_gen::sinx#4 sinx zp ZP_WORD:12 22.0 +(signed word~) sin16s_gen::sinx#3 sinx zp ZP_WORD:12 22.0 (dword) sin16s_gen::step (dword) sin16s_gen::step#0 step zp ZP_DWORD:26 0.26 (word) sin16s_gen::stepf @@ -240,10 +236,10 @@ reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ] zp ZP_WORD:6 [ char_cursor#32 char_cursor#44 char_cursor#41 char_cursor#46 char_cursor#2 char_cursor#12 char_cursor#1 sin16s_gen::x1#10 sin16s_gen::x1#3 sin16s_gen::x1#0 sin16s_gen::x1#1 sin16s_gen::x1#2 mul_u4f12::v2#4 mul_u4f12::v2#1 mul_u4f12::v2#2 mul_u4f12::v2#3 mul_u4f12::v2#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp ZP_DWORD:8 [ sin16s_gen::x#10 sin16s_gen::x#1 ] reg byte x [ sin16s_gen::isUpper#10 ] -zp ZP_WORD:12 [ sin16s_gen::sinx#2 sin16s_gen::sinx#4 sin16s_gen::sinx#1 sin16s_gen::usinx#1 sin16s_gen::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 sin16s_gen::stepf#0 ] +zp ZP_WORD:12 [ sin16s_gen::sinx#2 sin16s_gen::sinx#3 sin16s_gen::sinx#1 sin16s_gen::usinx#1 sin16s_gen::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 sin16s_gen::stepf#0 ] zp ZP_WORD:14 [ mul16u::b#3 mul16u::b#2 sin16s_gen::stepi#0 ] zp ZP_WORD:16 [ mul16u::a#4 mul16u::a#7 mul16u::a#3 mul16u::a#1 mul16u::a#2 mul16u::a#0 mul_u4f12::v1#4 mul_u4f12::v1#1 mul_u4f12::v1#2 mul_u4f12::v1#3 mul_u4f12::v1#0 sin16s_gen::x2#0 mul_u4f12::return#0 sin16s_gen::x4#0 mul_u4f12::return#2 mul_u4f12::return#10 mul_u4f12::return#1 mul_u4f12::return#3 sin16s_gen::x5#0 ] -zp ZP_DWORD:18 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 sin16s_gen::$13 mul16u::return#3 sin16s_gen::$18 mul16u::return#4 mul_u4f12::$0 mul_u4f12::$1 ] +zp ZP_DWORD:18 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 sin16s_gen::$14 mul16u::return#3 sin16s_gen::$20 mul16u::return#4 mul_u4f12::$0 mul_u4f12::$1 ] zp ZP_DWORD:22 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] reg byte a [ print_byte::$0 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-lohiconst.asm b/src/test/java/dk/camelot64/kickc/test/ref/test-lohiconst.asm new file mode 100644 index 000000000..cdd9c1245 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-lohiconst.asm @@ -0,0 +1,17 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .const PI_u4f28 = $3243f6a9 + jsr main +main: { + .label SCREEN = $400 + lda #>PI_u4f28>>16 + sta SCREEN+0 + lda #>16 + sta SCREEN+1 + lda #>PI_u4f28&$ffff + sta SCREEN+2 + lda #