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

Fixed lo/hi of dwords in constants.

This commit is contained in:
jespergravgaard 2018-02-23 22:15:10 +01:00
parent 37bfd18716
commit 6702baa875
15 changed files with 1156 additions and 1106 deletions

View File

@ -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)) {

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,8 @@
lda {z1}+1
cmp #>{c1}
bcc !+
bne {la1}
lda {z1}
cmp #<{c1}
bcs {la1}
!:

View File

@ -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");

View File

@ -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(<PI2_u4f28, wavelength, rem16u);
dword step = { stepi, stepf }; // u[4.12]
// Iterate over the table
dword x = 0; // u[4.28]
// u[0.16] div6 = 1/6 ;
word div6 = $10000/6; //$2aab;
// u[0.16] div128 = 1/128 ;
word div128 = $10000/128; //$0200;
for( word i=0; i<wavelength; i++) {
// Move x1 into the range 0-PI/2 using sinus mirror symmetries
word x1 = >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]

View File

@ -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;
}

View File

@ -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
lda #>main.wavelength
sta divr16u.divisor+1
lda #<PI2_u4f12
lda #<PI2_u4f28>>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
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 #<PI_u4f12
bcc b5
bcc b4
!:
lda x1
sec
@ -233,7 +232,7 @@ sin16s_gen: {
sta x1+1
ldx #1
jmp b2
b5:
b4:
ldx #0
b2:
lda x1+1
@ -266,17 +265,17 @@ sin16s_gen: {
sta mul16u.a
lda x3+1
sta mul16u.a+1
lda #<div6
lda #<$10000/6
sta mul16u.b
lda #>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
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

View File

@ -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 ] )

File diff suppressed because it is too large Load Diff

View File

@ -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 ]

View File

@ -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 #<PI_u4f28>>16
sta SCREEN+1
lda #>PI_u4f28&$ffff
sta SCREEN+2
lda #<PI_u4f28&$ffff
sta SCREEN+3
rts
}

View File

@ -0,0 +1,14 @@
parsing
flex pass 1
flex pass 2
flex pass 3
Output pass
Memory Map
----------
Default-segment:
$0801-$080c Basic
$080d-$0824 Program
Writing prg file: /var/folders/j3/hvhhv4vs6291pncspymzkrfh0000gn/T/kickc-output3205926464176603574/bin/test-lohiconst.prg
Writing Vice symbol file: /var/folders/j3/hvhhv4vs6291pncspymzkrfh0000gn/T/kickc-output3205926464176603574/bin/test-lohiconst.vs

View File

@ -0,0 +1,3 @@
al C:400 .SCREEN
al C:80b .upstartEnd
al C:810 .main