mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-08 14:37:40 +00:00
Added scaled sin generator - found problem with cast & precedence.
This commit is contained in:
parent
0663888a3f
commit
f31eb7b1f0
@ -0,0 +1,2 @@
|
||||
cmp {c1}
|
||||
beq {la1}
|
@ -0,0 +1,2 @@
|
||||
cpx {c1}
|
||||
beq {la1}
|
@ -0,0 +1,2 @@
|
||||
cpy {c1}
|
||||
beq {la1}
|
@ -203,6 +203,7 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization {
|
||||
case "((dword))":
|
||||
case "((signed dword))":
|
||||
case "((byte*))":
|
||||
case "!":
|
||||
return new ConstantUnary(operator, c);
|
||||
case "*": { // pointer dereference - not constant
|
||||
return null;
|
||||
@ -232,6 +233,12 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization {
|
||||
case "^":
|
||||
case "<<":
|
||||
case ">>":
|
||||
case "==":
|
||||
case "!=":
|
||||
case ">":
|
||||
case "<":
|
||||
case ">=":
|
||||
case "<=":
|
||||
return new ConstantBinary(c1, operator, c2);
|
||||
case "w=":
|
||||
return new ConstantBinary(new ConstantBinary(c1, Operator.MULTIPLY, new ConstantInteger(256L)), Operator.PLUS, c2);
|
||||
|
@ -45,6 +45,11 @@ public class TestPrograms {
|
||||
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCastPrecedenceProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("cast-precedence-problem");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLoopProblem() throws IOException, URISyntaxException {
|
||||
compileAndCompare("loop-problem");
|
||||
@ -60,6 +65,11 @@ public class TestPrograms {
|
||||
compileAndCompare("sinusgen16");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSinusGen16b() throws IOException, URISyntaxException {
|
||||
compileAndCompare("sinusgen16b");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSinusGenScale8() throws IOException, URISyntaxException {
|
||||
compileAndCompare("sinusgenscale8");
|
||||
|
@ -0,0 +1,19 @@
|
||||
// Tests that casting inside constants in the output handles precedence between rol >> and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1
|
||||
|
||||
void main() {
|
||||
byte* SCREEN = $400;
|
||||
byte min = 10;
|
||||
byte max = 200;
|
||||
word sumw = min+max;
|
||||
byte midw = (byte)(sumw>>1)+1;
|
||||
SCREEN[0] = midw;
|
||||
byte sumb = min+max;
|
||||
byte midb = (sumb>>1)+1;
|
||||
SCREEN[1] = midb;
|
||||
byte* BGCOL = $d021;
|
||||
if(SCREEN[0]==SCREEN[1]) {
|
||||
*BGCOL = 5;
|
||||
} else {
|
||||
*BGCOL = 2;
|
||||
}
|
||||
}
|
52
src/test/java/dk/camelot64/kickc/test/kc/sinusb.kc
Normal file
52
src/test/java/dk/camelot64/kickc/test/kc/sinusb.kc
Normal file
@ -0,0 +1,52 @@
|
||||
// Sinus Generator functions using only multiplication, addition and bit shifting
|
||||
// Uses a single division for converting the wavelength to a reciprocal.
|
||||
// Generates sinus using the series sin(x) = x - x^/3! + x^-5! - x^7/7! ...
|
||||
// Uses the approximation sin(x) = x - x^/6 + x^/128
|
||||
// Optimization possibility: Use symmetries when generating sinustables. wavelength%2==0 -> mirror symmetry over PI, wavelength%4==0 -> mirror symmetry over PI/2.
|
||||
|
||||
import "sinus.kc"
|
||||
|
||||
// Generate signed (large) word sinus table - on the full -$7fff - $7fff range
|
||||
// sintab - the table to generate into
|
||||
// wavelength - the number of sinus points in a total sinus wavelength (the size of the table)
|
||||
void sin16s_genb(signed word* sintab, word wavelength) {
|
||||
// u[4.28] step = PI*2/wavelength
|
||||
dword step = div32u16u(PI2_u4f28, wavelength); // u[4.28]
|
||||
// Iterate over the table
|
||||
dword x = 0; // u[4.28]
|
||||
for( word i=0; i<wavelength; i++) {
|
||||
*sintab = sin16sb(>x);
|
||||
sintab = sintab + 2;
|
||||
x = x + step;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate signed word sinus sin(x)
|
||||
// x: unsigned dword input u[4.28] in the interval $00000000 - PI2_u4f28
|
||||
// result: signed word sin(x) s[0.15] - using the full range -$7fff - $7fff
|
||||
signed word sin16sb(word x) {
|
||||
// Move x1 into the range 0-PI/2 using sinus mirror symmetries
|
||||
byte isUpper = 0;
|
||||
if(x >= PI_u4f12 ) {
|
||||
x = x - PI_u4f12;
|
||||
isUpper = 1;
|
||||
}
|
||||
if(x >= PI_HALF_u4f12 ) {
|
||||
x = PI_u4f12 - x;
|
||||
}
|
||||
// sinx = x - x^3/6 + x5/128;
|
||||
word x1 = x<<3; // u[1.15]
|
||||
word x2 = mulu16_sel(x1, x1, 0); // u[2.14] x^2
|
||||
word x3 = mulu16_sel(x2, x1, 1); // u[2.14] x^3
|
||||
word x3_6 = mulu16_sel(x3, $10000/6, 1); // u[1.15] x^3/6;
|
||||
word usinx = x1 - x3_6; // u[1.15] x - x^3/6
|
||||
word x4 = mulu16_sel(x3, x1, 0); // u[3.13] x^4
|
||||
word x5 = mulu16_sel(x4, x1, 0); // u[4.12] x^5
|
||||
word x5_128 = x5>>4; // // u[1.15] x^5/128 -- much more efficient than mul_u16_sel(x5, $10000/128, 3);
|
||||
usinx = usinx + x5_128; // u[1.15] (first bit is always zero)
|
||||
signed word sinx = (signed word)usinx; // s[0.15]
|
||||
if(isUpper!=0) {
|
||||
sinx = -(signed word)usinx; // s[0.15];
|
||||
}
|
||||
return sinx;
|
||||
}
|
25
src/test/java/dk/camelot64/kickc/test/kc/sinusgen16b.kc
Normal file
25
src/test/java/dk/camelot64/kickc/test/kc/sinusgen16b.kc
Normal file
@ -0,0 +1,25 @@
|
||||
// Generates a 16-bit signed sinus
|
||||
import "sinus.kc"
|
||||
import "sinusb.kc"
|
||||
import "print.kc"
|
||||
|
||||
void main() {
|
||||
word wavelength = 120;
|
||||
signed word[120] sintab1;
|
||||
signed word[120] sintab2;
|
||||
sin16s_gen(sintab1, wavelength);
|
||||
sin16s_genb(sintab2, wavelength);
|
||||
print_cls();
|
||||
signed word* st1 = sintab1;
|
||||
signed word* st2 = sintab2;
|
||||
for( byte i: 0..119) {
|
||||
signed word sw = *st1 - *st2;
|
||||
if(sw>=0) {
|
||||
print_str(" @");
|
||||
}
|
||||
print_sword(sw);
|
||||
print_str(" @");
|
||||
st1 = st1+2;
|
||||
st2 = st2+2;
|
||||
}
|
||||
}
|
@ -28,7 +28,8 @@ void main() {
|
||||
void sin8u_table(byte* sintab, word tabsize, byte min, byte max) {
|
||||
byte amplitude = max-min;
|
||||
word sum = min+max;
|
||||
byte mid = (byte)(sum>>1);
|
||||
byte mid = (byte)((sum>>1)+1);
|
||||
//if( sum & 1 > 0) mid++;
|
||||
// u[4.28] step = PI*2/wavelength
|
||||
word step = div16u(PI2_u4f12, tabsize); // u[4.12]
|
||||
print_str("step:@");
|
||||
@ -45,12 +46,18 @@ void sin8u_table(byte* sintab, word tabsize, byte min, byte max) {
|
||||
// Iterate over the table
|
||||
word x = 0; // u[4.12]
|
||||
for( word i=0; i<tabsize; i++) {
|
||||
byte sinval = mid+>mul8su(sin8s(x), amplitude);
|
||||
*sintab++ = sinval;
|
||||
signed byte sinx = sin8s(x);
|
||||
signed word sinx_sc = mul8su(sinx, amplitude+1);
|
||||
byte sinx_tr = mid+>sinx_sc;
|
||||
*sintab++ = sinx_tr;
|
||||
print_str("x: @");
|
||||
print_word(x);
|
||||
print_str(" sin: @");
|
||||
print_byte(sinval);
|
||||
print_sbyte(sinx);
|
||||
print_str(" scaled: @");
|
||||
print_sword(sinx_sc);
|
||||
print_str(" trans: @");
|
||||
print_byte(sinx_tr);
|
||||
print_ln();
|
||||
x = x + step;
|
||||
}
|
||||
|
@ -0,0 +1,31 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
jsr main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const min = $a
|
||||
.const max = $c8
|
||||
.label BGCOL = $d021
|
||||
.const sumw = min+max
|
||||
.const sumb = min+max
|
||||
.const midb = (sumb>>1)+1
|
||||
.const midw = $ff & sumw>>1+1
|
||||
lda #midw
|
||||
sta SCREEN+0
|
||||
lda #midb
|
||||
sta SCREEN+1
|
||||
ldx SCREEN+0
|
||||
tay
|
||||
stx $ff
|
||||
cpy $ff
|
||||
bne b1
|
||||
lda #5
|
||||
sta BGCOL
|
||||
breturn:
|
||||
rts
|
||||
b1:
|
||||
lda #2
|
||||
sta BGCOL
|
||||
jmp breturn
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
[4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] )
|
||||
[5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] )
|
||||
[6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] )
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
[7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1 main::@3
|
||||
[8] return [ ] ( main:2 [ ] )
|
||||
to:@return
|
||||
main::@1: scope:[main] from main
|
||||
[9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] )
|
||||
to:main::@return
|
@ -0,0 +1,808 @@
|
||||
PARSING src/test/java/dk/camelot64/kickc/test/kc/cast-precedence-problem.kc
|
||||
// Tests that casting inside constants in the output handles precedence between rol >> and + correctly - should generate the following KA-expression ($ff & sumw>>1)+1
|
||||
|
||||
void main() {
|
||||
byte* SCREEN = $400;
|
||||
byte min = 10;
|
||||
byte max = 200;
|
||||
word sumw = min+max;
|
||||
byte midw = (byte)(sumw>>1)+1;
|
||||
SCREEN[0] = midw;
|
||||
byte sumb = min+max;
|
||||
byte midb = (sumb>>1)+1;
|
||||
SCREEN[1] = midb;
|
||||
byte* BGCOL = $d021;
|
||||
if(SCREEN[0]==SCREEN[1]) {
|
||||
*BGCOL = 5;
|
||||
} else {
|
||||
*BGCOL = 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
STATEMENTS
|
||||
proc (void()) main()
|
||||
(byte*) main::SCREEN ← (word/signed word/dword/signed dword) 1024
|
||||
(byte) main::min ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) main::max ← (byte/word/signed word/dword/signed dword) 200
|
||||
(byte/word~) main::$0 ← (byte) main::min + (byte) main::max
|
||||
(word) main::sumw ← (byte/word~) main::$0
|
||||
(word~) main::$1 ← (word) main::sumw >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte~) main::$2 ← ((byte)) (word~) main::$1
|
||||
(byte/word~) main::$3 ← (byte~) main::$2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::midw ← (byte/word~) main::$3
|
||||
*((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::midw
|
||||
(byte/word~) main::$4 ← (byte) main::min + (byte) main::max
|
||||
(byte) main::sumb ← (byte/word~) main::$4
|
||||
(byte~) main::$5 ← (byte) main::sumb >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte/word~) main::$6 ← (byte~) main::$5 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::midb ← (byte/word~) main::$6
|
||||
*((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::midb
|
||||
(byte*) main::BGCOL ← (word/dword/signed dword) 53281
|
||||
(boolean~) main::$7 ← *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 1)
|
||||
(boolean~) main::$8 ← ! (boolean~) main::$7
|
||||
if((boolean~) main::$8) goto main::@1
|
||||
*((byte*) main::BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
goto main::@2
|
||||
main::@1:
|
||||
*((byte*) main::BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
main::@2:
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
call main
|
||||
|
||||
SYMBOLS
|
||||
(void()) main()
|
||||
(byte/word~) main::$0
|
||||
(word~) main::$1
|
||||
(byte~) main::$2
|
||||
(byte/word~) main::$3
|
||||
(byte/word~) main::$4
|
||||
(byte~) main::$5
|
||||
(byte/word~) main::$6
|
||||
(boolean~) main::$7
|
||||
(boolean~) main::$8
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@return
|
||||
(byte*) main::BGCOL
|
||||
(byte*) main::SCREEN
|
||||
(byte) main::max
|
||||
(byte) main::midb
|
||||
(byte) main::midw
|
||||
(byte) main::min
|
||||
(byte) main::sumb
|
||||
(word) main::sumw
|
||||
|
||||
Promoting word/signed word/dword/signed dword to byte* in main::SCREEN ← ((byte*)) 1024
|
||||
Promoting word/dword/signed dword to byte* in main::BGCOL ← ((byte*)) 53281
|
||||
INITIAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from
|
||||
(byte*) main::SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte) main::min ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) main::max ← (byte/word/signed word/dword/signed dword) 200
|
||||
(byte/word~) main::$0 ← (byte) main::min + (byte) main::max
|
||||
(word) main::sumw ← (byte/word~) main::$0
|
||||
(word~) main::$1 ← (word) main::sumw >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte~) main::$2 ← ((byte)) (word~) main::$1
|
||||
(byte/word~) main::$3 ← (byte~) main::$2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::midw ← (byte/word~) main::$3
|
||||
*((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::midw
|
||||
(byte/word~) main::$4 ← (byte) main::min + (byte) main::max
|
||||
(byte) main::sumb ← (byte/word~) main::$4
|
||||
(byte~) main::$5 ← (byte) main::sumb >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte/word~) main::$6 ← (byte~) main::$5 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::midb ← (byte/word~) main::$6
|
||||
*((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::midb
|
||||
(byte*) main::BGCOL ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(boolean~) main::$7 ← *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 1)
|
||||
(boolean~) main::$8 ← ! (boolean~) main::$7
|
||||
if((boolean~) main::$8) goto main::@1
|
||||
to:main::@3
|
||||
main::@1: scope:[main] from main main::@4
|
||||
*((byte*) main::BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
to:main::@2
|
||||
main::@3: scope:[main] from main
|
||||
*((byte*) main::BGCOL) ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@3
|
||||
to:main::@return
|
||||
main::@4: scope:[main] from
|
||||
to:main::@1
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
|
||||
Removing empty block main::@2
|
||||
Removing empty block main::@4
|
||||
PROCEDURE MODIFY VARIABLE ANALYSIS
|
||||
|
||||
Completing Phi functions...
|
||||
|
||||
CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN
|
||||
@begin: scope:[] from
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) main::SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024
|
||||
(byte) main::min#0 ← (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) main::max#0 ← (byte/word/signed word/dword/signed dword) 200
|
||||
(byte/word~) main::$0 ← (byte) main::min#0 + (byte) main::max#0
|
||||
(word) main::sumw#0 ← (byte/word~) main::$0
|
||||
(word~) main::$1 ← (word) main::sumw#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte~) main::$2 ← ((byte)) (word~) main::$1
|
||||
(byte/word~) main::$3 ← (byte~) main::$2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::midw#0 ← (byte/word~) main::$3
|
||||
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::midw#0
|
||||
(byte/word~) main::$4 ← (byte) main::min#0 + (byte) main::max#0
|
||||
(byte) main::sumb#0 ← (byte/word~) main::$4
|
||||
(byte~) main::$5 ← (byte) main::sumb#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte/word~) main::$6 ← (byte~) main::$5 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::midb#0 ← (byte/word~) main::$6
|
||||
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::midb#0
|
||||
(byte*) main::BGCOL#0 ← ((byte*)) (word/dword/signed dword) 53281
|
||||
(boolean~) main::$7 ← *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
|
||||
(boolean~) main::$8 ← ! (boolean~) main::$7
|
||||
if((boolean~) main::$8) goto main::@1
|
||||
to:main::@3
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) main::BGCOL#1 ← phi( main/(byte*) main::BGCOL#0 )
|
||||
*((byte*) main::BGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main
|
||||
(byte*) main::BGCOL#2 ← phi( main/(byte*) main::BGCOL#0 )
|
||||
*((byte*) main::BGCOL#2) ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1 main::@3
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
call main param-assignment
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @1
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(byte/word~) main::$0
|
||||
(word~) main::$1
|
||||
(byte~) main::$2
|
||||
(byte/word~) main::$3
|
||||
(byte/word~) main::$4
|
||||
(byte~) main::$5
|
||||
(byte/word~) main::$6
|
||||
(boolean~) main::$7
|
||||
(boolean~) main::$8
|
||||
(label) main::@1
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte*) main::BGCOL
|
||||
(byte*) main::BGCOL#0
|
||||
(byte*) main::BGCOL#1
|
||||
(byte*) main::BGCOL#2
|
||||
(byte*) main::SCREEN
|
||||
(byte*) main::SCREEN#0
|
||||
(byte) main::max
|
||||
(byte) main::max#0
|
||||
(byte) main::midb
|
||||
(byte) main::midb#0
|
||||
(byte) main::midw
|
||||
(byte) main::midw#0
|
||||
(byte) main::min
|
||||
(byte) main::min#0
|
||||
(byte) main::sumb
|
||||
(byte) main::sumb#0
|
||||
(word) main::sumw
|
||||
(word) main::sumw#0
|
||||
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Culled Empty Block (label) @2
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not (boolean~) main::$8 ← *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) != *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) from (boolean~) main::$7 ← *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
|
||||
Succesful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (word) main::sumw#0 = (byte/word~) main::$0
|
||||
Alias (byte) main::midw#0 = (byte/word~) main::$3
|
||||
Alias (byte) main::sumb#0 = (byte/word~) main::$4
|
||||
Alias (byte) main::midb#0 = (byte/word~) main::$6
|
||||
Alias (byte*) main::BGCOL#0 = (byte*) main::BGCOL#1 (byte*) main::BGCOL#2
|
||||
Succesful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (boolean~) main::$8 if(*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0)!=*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1
|
||||
Succesful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::SCREEN#0 = ((byte*))1024
|
||||
Constant (const byte) main::min#0 = 10
|
||||
Constant (const byte) main::max#0 = 200
|
||||
Constant (const byte*) main::BGCOL#0 = ((byte*))53281
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const word) main::sumw#0 = main::min#0+main::max#0
|
||||
Constant (const byte) main::sumb#0 = main::min#0+main::max#0
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const word) main::$1 = main::sumw#0>>1
|
||||
Constant (const byte) main::$5 = main::sumb#0>>1
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::$2 = ((byte))main::$1
|
||||
Constant (const byte) main::midb#0 = main::$5+1
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::midw#0 = main::$2+1
|
||||
Succesful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated array index constant in *(main::SCREEN#0+0)
|
||||
Consolidated array index constant in *(main::SCREEN#0+1)
|
||||
Consolidated array index constant in *(main::SCREEN#0+0)
|
||||
Consolidated array index constant in *(main::SCREEN#0+1)
|
||||
Succesful SSA optimization Pass2ConstantAdditionElimination
|
||||
OPTIMIZING CONTROL FLOW GRAPH
|
||||
Constant inlined main::$5 = (const byte) main::sumb#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Constant inlined main::$1 = (const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Constant inlined main::$2 = ((byte))(const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Succesful SSA optimization Pass2ConstantInlining
|
||||
Block Sequence Planned @begin @1 @end main main::@3 main::@return main::@1
|
||||
Block Sequence Planned @begin @1 @end main main::@3 main::@return main::@1
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
|
||||
Propagating live ranges...
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Block Sequence Planned @begin @1 @end main main::@3 main::@return main::@1
|
||||
Adding NOP phi() at start of @begin
|
||||
Adding NOP phi() at start of @1
|
||||
Adding NOP phi() at start of @end
|
||||
Propagating live ranges...
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@1
|
||||
@1: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @1
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @1
|
||||
[4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] )
|
||||
[5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] )
|
||||
[6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] )
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
[7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] )
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1 main::@3
|
||||
[8] return [ ] ( main:2 [ ] )
|
||||
to:@return
|
||||
main::@1: scope:[main] from main
|
||||
[9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] )
|
||||
to:main::@return
|
||||
|
||||
DOMINATORS
|
||||
@begin dominated by @begin
|
||||
@1 dominated by @1 @begin
|
||||
@end dominated by @1 @begin @end
|
||||
main dominated by @1 @begin main
|
||||
main::@3 dominated by @1 @begin main main::@3
|
||||
main::@return dominated by main::@return @1 @begin main
|
||||
main::@1 dominated by @1 @begin main::@1 main
|
||||
|
||||
NATURAL LOOPS
|
||||
|
||||
NATURAL LOOPS WITH DEPTH
|
||||
Found 0 loops in scope []
|
||||
Found 0 loops in scope [main]
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(void()) main()
|
||||
(byte*) main::BGCOL
|
||||
(byte*) main::SCREEN
|
||||
(byte) main::max
|
||||
(byte) main::midb
|
||||
(byte) main::midw
|
||||
(byte) main::min
|
||||
(byte) main::sumb
|
||||
(word) main::sumw
|
||||
|
||||
Initial phi equivalence classes
|
||||
Complete equivalence classes
|
||||
New fragment synthesis _deref_pbuc1=vbuc2
|
||||
New fragment synthesis _deref_pbuc1=vbuc2 - sub-option vbuaa=vbuc1
|
||||
New fragment synthesis vbuaa=vbuc1
|
||||
New fragment synthesis vbuaa=vbuc1 - Successfully loaded vbuaa=vbuc1.asm
|
||||
New fragment synthesis vbuaa=vbuc1 - sub-option vbuaa=vbuaa
|
||||
New fragment synthesis vbuaa=vbuaa
|
||||
New fragment synthesis vbuaa=vbuaa - Successfully loaded vbuaa=vbuaa.asm
|
||||
Fragment synthesis vbuaa=vbuaa - New best, scheduling parent vbuaa=vbuc1
|
||||
Fragment synthesis vbuaa=vbuc1 - Successfully synthesized from vbuaa=vbuaa
|
||||
Fragment synthesis vbuaa=vbuc1 - New best, scheduling parent _deref_pbuc1=vbuc2
|
||||
Fragment synthesis _deref_pbuc1=vbuc2 - Successfully synthesized from vbuaa=vbuc1
|
||||
Found best fragment _deref_pbuc1=vbuc2 < vbuaa=vbuc1 score: 6.5
|
||||
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option vbuxx_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - sub-option vbuyy_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
|
||||
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuxx_then_la1
|
||||
New fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuyy_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option _deref_pbuc1_neq_vbuxx_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option _deref_pbuc1_neq_vbuyy_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option vbuxx_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option vbuxx_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option vbuxx_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option vbuyy_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option vbuaa_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option _deref_pbuc1_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option _deref_pbuc1_neq_vbuaa_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option vbuyy_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option vbuyy_neq__deref_pbuc1_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
|
||||
New fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuaa_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuaa_neq_vbuyy_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuaa_neq_vbuyy_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuaa_neq_vbuyy_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuxx_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully loaded vbuxx_neq_vbuyy_then_la1.asm
|
||||
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuxx_neq_vbuyy_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuxx_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuxx_neq_vbuaa_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuxx_neq_vbuaa_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuxx_neq_vbuaa_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuaa_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuaa_neq_vbuxx_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuaa_neq_vbuxx_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuaa_neq_vbuxx_then_la1 - sub-option vbuxx_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuyy_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuyy_neq_vbuxx_then_la1 - sub-option vbuyy_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuyy_neq_vbuxx_then_la1 - sub-option vbuaa_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuyy_neq_vbuxx_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuyy_neq_vbuxx_then_la1 - sub-option vbuxx_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuyy_neq_vbuaa_then_la1
|
||||
New fragment synthesis vbuyy_neq_vbuaa_then_la1 - sub-option vbuyy_neq_vbuxx_then_la1
|
||||
New fragment synthesis vbuyy_neq_vbuaa_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
|
||||
New fragment synthesis vbuyy_neq_vbuaa_then_la1 - sub-option vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - No file or synthesis results!
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - No file or synthesis results!
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - No file or synthesis results!
|
||||
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - No file or synthesis results!
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuyy_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuaa_neq_vbuyy_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuyy_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - New best, scheduling parent vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuxx_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from vbuxx_neq_vbuaa_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - Successfully synthesized from vbuyy_neq_vbuaa_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuaa_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis vbuaa_neq__deref_pbuc1_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuaa_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuyy_then_la1 - Successfully synthesized from vbuxx_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuaa_neq_vbuxx_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq_vbuxx_then_la1 - Successfully synthesized from vbuyy_neq_vbuxx_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - New best, scheduling parent _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from vbuaa_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from vbuxx_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - Successfully synthesized from vbuyy_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc1_neq__deref_pbuc2_then_la1 - New best, scheduling parent _deref_pbuc2_neq__deref_pbuc1_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuaa_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuxx_then_la1
|
||||
Fragment synthesis _deref_pbuc2_neq__deref_pbuc1_then_la1 - Successfully synthesized from _deref_pbuc1_neq_vbuyy_then_la1
|
||||
Found best fragment _deref_pbuc1_neq__deref_pbuc2_then_la1 < _deref_pbuc2_neq__deref_pbuc1_then_la1 < _deref_pbuc1_neq_vbuxx_then_la1 < vbuxx_neq__deref_pbuc1_then_la1 < vbuxx_neq_vbuyy_then_la1 score: 19.0
|
||||
|
||||
INITIAL ASM
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
b1_from_bbegin:
|
||||
jmp b1
|
||||
//SEG4 @1
|
||||
b1:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
|
||||
bend_from_b1:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
//SEG8 main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const min = $a
|
||||
.const max = $c8
|
||||
.label BGCOL = $d021
|
||||
.const sumw = min+max
|
||||
.const sumb = min+max
|
||||
.const midb = (sumb>>1)+1
|
||||
.const midw = $ff & sumw>>1+1
|
||||
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #midw
|
||||
sta SCREEN+0
|
||||
//SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #midb
|
||||
sta SCREEN+1
|
||||
//SEG11 [6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
ldx SCREEN+0
|
||||
ldy SCREEN+1
|
||||
stx $ff
|
||||
cpy $ff
|
||||
bne b1
|
||||
jmp b3
|
||||
//SEG12 main::@3
|
||||
b3:
|
||||
//SEG13 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #5
|
||||
sta BGCOL
|
||||
jmp breturn
|
||||
//SEG14 main::@return
|
||||
breturn:
|
||||
//SEG15 [8] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
//SEG16 main::@1
|
||||
b1:
|
||||
//SEG17 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #2
|
||||
sta BGCOL
|
||||
jmp breturn
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte x reg byte y
|
||||
Statement [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 67 combination
|
||||
Uplifting [] best 67 combination
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
//SEG2 @begin
|
||||
bbegin:
|
||||
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
b1_from_bbegin:
|
||||
jmp b1
|
||||
//SEG4 @1
|
||||
b1:
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
|
||||
bend_from_b1:
|
||||
jmp bend
|
||||
//SEG7 @end
|
||||
bend:
|
||||
//SEG8 main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const min = $a
|
||||
.const max = $c8
|
||||
.label BGCOL = $d021
|
||||
.const sumw = min+max
|
||||
.const sumb = min+max
|
||||
.const midb = (sumb>>1)+1
|
||||
.const midw = $ff & sumw>>1+1
|
||||
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #midw
|
||||
sta SCREEN+0
|
||||
//SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #midb
|
||||
sta SCREEN+1
|
||||
//SEG11 [6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
ldx SCREEN+0
|
||||
ldy SCREEN+1
|
||||
stx $ff
|
||||
cpy $ff
|
||||
bne b1
|
||||
jmp b3
|
||||
//SEG12 main::@3
|
||||
b3:
|
||||
//SEG13 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #5
|
||||
sta BGCOL
|
||||
jmp breturn
|
||||
//SEG14 main::@return
|
||||
breturn:
|
||||
//SEG15 [8] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
//SEG16 main::@1
|
||||
b1:
|
||||
//SEG17 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #2
|
||||
sta BGCOL
|
||||
jmp breturn
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp b3
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing instruction ldy SCREEN+1 with TAY
|
||||
Removing instruction bbegin:
|
||||
Removing instruction b1_from_bbegin:
|
||||
Removing instruction bend_from_b1:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b1:
|
||||
Removing instruction bend:
|
||||
Removing instruction b3:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte*) main::BGCOL
|
||||
(const byte*) main::BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) main::SCREEN
|
||||
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte) main::max
|
||||
(const byte) main::max#0 max = (byte/word/signed word/dword/signed dword) 200
|
||||
(byte) main::midb
|
||||
(const byte) main::midb#0 midb = (const byte) main::sumb#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::midw
|
||||
(const byte) main::midw#0 midw = ((byte))(const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::min
|
||||
(const byte) main::min#0 min = (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) main::sumb
|
||||
(const byte) main::sumb#0 sumb = (const byte) main::min#0+(const byte) main::max#0
|
||||
(word) main::sumw
|
||||
(const word) main::sumw#0 sumw = (const byte) main::min#0+(const byte) main::max#0
|
||||
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 53
|
||||
|
||||
//SEG0 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
//SEG1 Global Constants & labels
|
||||
//SEG2 @begin
|
||||
//SEG3 [1] phi from @begin to @1 [phi:@begin->@1]
|
||||
//SEG4 @1
|
||||
//SEG5 [2] call main param-assignment [ ] ( )
|
||||
jsr main
|
||||
//SEG6 [3] phi from @1 to @end [phi:@1->@end]
|
||||
//SEG7 @end
|
||||
//SEG8 main
|
||||
main: {
|
||||
.label SCREEN = $400
|
||||
.const min = $a
|
||||
.const max = $c8
|
||||
.label BGCOL = $d021
|
||||
.const sumw = min+max
|
||||
.const sumb = min+max
|
||||
.const midb = (sumb>>1)+1
|
||||
.const midw = $ff & sumw>>1+1
|
||||
//SEG9 [4] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) main::midw#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #midw
|
||||
sta SCREEN+0
|
||||
//SEG10 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::midb#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #midb
|
||||
sta SCREEN+1
|
||||
//SEG11 [6] if(*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0)!=*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] ) -- _deref_pbuc1_neq__deref_pbuc2_then_la1
|
||||
ldx SCREEN+0
|
||||
tay
|
||||
stx $ff
|
||||
cpy $ff
|
||||
bne b1
|
||||
//SEG12 main::@3
|
||||
//SEG13 [7] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #5
|
||||
sta BGCOL
|
||||
//SEG14 main::@return
|
||||
breturn:
|
||||
//SEG15 [8] return [ ] ( main:2 [ ] )
|
||||
rts
|
||||
//SEG16 main::@1
|
||||
b1:
|
||||
//SEG17 [9] *((const byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2
|
||||
lda #2
|
||||
sta BGCOL
|
||||
jmp breturn
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
(label) @1
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(byte*) main::BGCOL
|
||||
(const byte*) main::BGCOL#0 BGCOL = ((byte*))(word/dword/signed dword) 53281
|
||||
(byte*) main::SCREEN
|
||||
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte) main::max
|
||||
(const byte) main::max#0 max = (byte/word/signed word/dword/signed dword) 200
|
||||
(byte) main::midb
|
||||
(const byte) main::midb#0 midb = (const byte) main::sumb#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::midw
|
||||
(const byte) main::midw#0 midw = ((byte))(const word) main::sumw#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::min
|
||||
(const byte) main::min#0 min = (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte) main::sumb
|
||||
(const byte) main::sumb#0 sumb = (const byte) main::min#0+(const byte) main::max#0
|
||||
(word) main::sumw
|
||||
(const word) main::sumw#0 sumw = (const byte) main::min#0+(const byte) main::max#0
|
||||
|
815
src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.asm
Normal file
815
src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.asm
Normal file
@ -0,0 +1,815 @@
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.const PI2_u4f28 = $6487ed51
|
||||
.const PI_u4f28 = $3243f6a9
|
||||
.const PI_HALF_u4f28 = $1921fb54
|
||||
.const PI_u4f12 = $3244
|
||||
.const PI_HALF_u4f12 = $1922
|
||||
.label SCREEN = $400
|
||||
.label char_cursor = $b
|
||||
.label rem16u = 4
|
||||
jsr main
|
||||
main: {
|
||||
.label wavelength = $78
|
||||
.label sw = 8
|
||||
.label st1 = 2
|
||||
.label st2 = 4
|
||||
jsr sin16s_gen
|
||||
jsr sin16s_genb
|
||||
jsr print_cls
|
||||
ldx #0
|
||||
lda #<SCREEN
|
||||
sta char_cursor
|
||||
lda #>SCREEN
|
||||
sta char_cursor+1
|
||||
lda #<sintab2
|
||||
sta st2
|
||||
lda #>sintab2
|
||||
sta st2+1
|
||||
lda #<sintab1
|
||||
sta st1
|
||||
lda #>sintab1
|
||||
sta st1+1
|
||||
b1:
|
||||
ldy #0
|
||||
sec
|
||||
lda (st1),y
|
||||
sbc (st2),y
|
||||
sta sw
|
||||
iny
|
||||
lda (st1),y
|
||||
sbc (st2),y
|
||||
sta sw+1
|
||||
bmi b2
|
||||
lda #<str1
|
||||
sta print_str.str
|
||||
lda #>str1
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
b2:
|
||||
jsr print_sword
|
||||
lda #<str
|
||||
sta print_str.str
|
||||
lda #>str
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
clc
|
||||
lda st1
|
||||
adc #<2
|
||||
sta st1
|
||||
lda st1+1
|
||||
adc #>2
|
||||
sta st1+1
|
||||
clc
|
||||
lda st2
|
||||
adc #<2
|
||||
sta st2
|
||||
lda st2+1
|
||||
adc #>2
|
||||
sta st2+1
|
||||
inx
|
||||
cpx #$78
|
||||
bne b1
|
||||
rts
|
||||
str: .text " @"
|
||||
str1: .text " @"
|
||||
sintab1: .fill $f0, 0
|
||||
sintab2: .fill $f0, 0
|
||||
}
|
||||
print_str: {
|
||||
.label str = 6
|
||||
b1:
|
||||
ldy #0
|
||||
lda (str),y
|
||||
cmp #'@'
|
||||
bne b2
|
||||
rts
|
||||
b2:
|
||||
ldy #0
|
||||
lda (str),y
|
||||
sta (char_cursor),y
|
||||
inc char_cursor
|
||||
bne !+
|
||||
inc char_cursor+1
|
||||
!:
|
||||
inc str
|
||||
bne !+
|
||||
inc str+1
|
||||
!:
|
||||
jmp b1
|
||||
}
|
||||
print_sword: {
|
||||
.label w = 8
|
||||
lda w+1
|
||||
bpl b1
|
||||
lda #'-'
|
||||
jsr print_char
|
||||
sec
|
||||
lda w
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta w
|
||||
lda w+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta w+1
|
||||
b1:
|
||||
jsr print_word
|
||||
rts
|
||||
}
|
||||
print_word: {
|
||||
lda print_sword.w+1
|
||||
sta print_byte.b
|
||||
jsr print_byte
|
||||
lda print_sword.w
|
||||
sta print_byte.b
|
||||
jsr print_byte
|
||||
rts
|
||||
}
|
||||
print_byte: {
|
||||
.label b = $a
|
||||
lda b
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
tay
|
||||
lda hextab,y
|
||||
jsr print_char
|
||||
lda #$f
|
||||
and b
|
||||
tay
|
||||
lda hextab,y
|
||||
jsr print_char
|
||||
rts
|
||||
hextab: .text "0123456789abcdef"
|
||||
}
|
||||
print_char: {
|
||||
ldy #0
|
||||
sta (char_cursor),y
|
||||
inc char_cursor
|
||||
bne !+
|
||||
inc char_cursor+1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
print_cls: {
|
||||
.label sc = 2
|
||||
lda #<SCREEN
|
||||
sta sc
|
||||
lda #>SCREEN
|
||||
sta sc+1
|
||||
b1:
|
||||
lda #' '
|
||||
ldy #0
|
||||
sta (sc),y
|
||||
inc sc
|
||||
bne !+
|
||||
inc sc+1
|
||||
!:
|
||||
lda sc+1
|
||||
cmp #>SCREEN+$3e8
|
||||
bne b1
|
||||
lda sc
|
||||
cmp #<SCREEN+$3e8
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
sin16s_genb: {
|
||||
.label _2 = 8
|
||||
.label step = $1d
|
||||
.label sintab = 2
|
||||
.label x = $d
|
||||
.label i = 4
|
||||
lda #<main.wavelength
|
||||
sta div32u16u.divisor
|
||||
lda #>main.wavelength
|
||||
sta div32u16u.divisor+1
|
||||
lda #<PI2_u4f28
|
||||
sta div32u16u.dividend
|
||||
lda #>PI2_u4f28
|
||||
sta div32u16u.dividend+1
|
||||
lda #<PI2_u4f28>>$10
|
||||
sta div32u16u.dividend+2
|
||||
lda #>PI2_u4f28>>$10
|
||||
sta div32u16u.dividend+3
|
||||
jsr div32u16u
|
||||
lda #<0
|
||||
sta i
|
||||
sta i+1
|
||||
lda #<main.sintab2
|
||||
sta sintab
|
||||
lda #>main.sintab2
|
||||
sta sintab+1
|
||||
lda #0
|
||||
sta x
|
||||
sta x+1
|
||||
sta x+2
|
||||
sta x+3
|
||||
b1:
|
||||
lda x+2
|
||||
sta sin16sb.x
|
||||
lda x+3
|
||||
sta sin16sb.x+1
|
||||
jsr sin16sb
|
||||
ldy #0
|
||||
lda _2
|
||||
sta (sintab),y
|
||||
iny
|
||||
lda _2+1
|
||||
sta (sintab),y
|
||||
clc
|
||||
lda sintab
|
||||
adc #<2
|
||||
sta sintab
|
||||
lda sintab+1
|
||||
adc #>2
|
||||
sta sintab+1
|
||||
lda x
|
||||
clc
|
||||
adc step
|
||||
sta x
|
||||
lda x+1
|
||||
adc step+1
|
||||
sta x+1
|
||||
lda x+2
|
||||
adc step+2
|
||||
sta x+2
|
||||
lda x+3
|
||||
adc step+3
|
||||
sta x+3
|
||||
inc i
|
||||
bne !+
|
||||
inc i+1
|
||||
!:
|
||||
lda i+1
|
||||
cmp #>main.wavelength
|
||||
bcc b1
|
||||
bne !+
|
||||
lda i
|
||||
cmp #<main.wavelength
|
||||
bcc b1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
sin16sb: {
|
||||
.label x = 6
|
||||
.label return = 8
|
||||
.label x1 = 6
|
||||
.label x2 = $b
|
||||
.label x3 = $b
|
||||
.label x3_6 = $11
|
||||
.label usinx = 8
|
||||
.label x4 = $b
|
||||
.label x5 = $11
|
||||
.label x5_128 = $11
|
||||
.label sinx = 8
|
||||
.label isUpper = $a
|
||||
lda x+1
|
||||
cmp #>PI_u4f12
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x
|
||||
cmp #<PI_u4f12
|
||||
bcc b4
|
||||
!:
|
||||
lda x
|
||||
sec
|
||||
sbc #<PI_u4f12
|
||||
sta x
|
||||
lda x+1
|
||||
sbc #>PI_u4f12
|
||||
sta x+1
|
||||
lda #1
|
||||
sta isUpper
|
||||
jmp b1
|
||||
b4:
|
||||
lda #0
|
||||
sta isUpper
|
||||
b1:
|
||||
lda x+1
|
||||
cmp #>PI_HALF_u4f12
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x
|
||||
cmp #<PI_HALF_u4f12
|
||||
bcc b2
|
||||
!:
|
||||
sec
|
||||
lda #<PI_u4f12
|
||||
sbc x
|
||||
sta x
|
||||
lda #>PI_u4f12
|
||||
sbc x+1
|
||||
sta x+1
|
||||
b2:
|
||||
asl x1
|
||||
rol x1+1
|
||||
asl x1
|
||||
rol x1+1
|
||||
asl x1
|
||||
rol x1+1
|
||||
lda x1
|
||||
sta mulu16_sel.v1
|
||||
lda x1+1
|
||||
sta mulu16_sel.v1+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return_18
|
||||
sta x2
|
||||
lda mulu16_sel.return_18+1
|
||||
sta x2+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #1
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return_17
|
||||
sta mulu16_sel.return
|
||||
lda mulu16_sel.return_17+1
|
||||
sta mulu16_sel.return+1
|
||||
ldx #1
|
||||
lda #<$10000/6
|
||||
sta mulu16_sel.v2
|
||||
lda #>$10000/6
|
||||
sta mulu16_sel.v2+1
|
||||
jsr mulu16_sel
|
||||
lda x1
|
||||
sec
|
||||
sbc x3_6
|
||||
sta usinx
|
||||
lda x1+1
|
||||
sbc x3_6+1
|
||||
sta usinx+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return_17
|
||||
sta mulu16_sel.return
|
||||
lda mulu16_sel.return_17+1
|
||||
sta mulu16_sel.return+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
ldy #4
|
||||
!:
|
||||
lsr x5_128+1
|
||||
ror x5_128
|
||||
dey
|
||||
bne !-
|
||||
lda usinx
|
||||
clc
|
||||
adc x5_128
|
||||
sta usinx
|
||||
lda usinx+1
|
||||
adc x5_128+1
|
||||
sta usinx+1
|
||||
lda isUpper
|
||||
beq b3
|
||||
sec
|
||||
lda sinx
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta sinx
|
||||
lda sinx+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta sinx+1
|
||||
b3:
|
||||
rts
|
||||
}
|
||||
mulu16_sel: {
|
||||
.label _0 = $15
|
||||
.label _1 = $15
|
||||
.label v1 = $b
|
||||
.label v2 = $11
|
||||
.label return = $b
|
||||
.label return_11 = $11
|
||||
.label return_14 = $11
|
||||
.label return_16 = $11
|
||||
.label return_17 = $11
|
||||
.label return_18 = $11
|
||||
.label return_20 = $11
|
||||
lda v1
|
||||
sta mul16u.a
|
||||
lda v1+1
|
||||
sta mul16u.a+1
|
||||
jsr mul16u
|
||||
cpx #0
|
||||
beq !e+
|
||||
!:
|
||||
asl _1
|
||||
rol _1+1
|
||||
rol _1+2
|
||||
rol _1+3
|
||||
dex
|
||||
bne !-
|
||||
!e:
|
||||
lda _1+2
|
||||
sta return_17
|
||||
lda _1+3
|
||||
sta return_17+1
|
||||
rts
|
||||
}
|
||||
mul16u: {
|
||||
.label mb = $19
|
||||
.label a = $13
|
||||
.label res = $15
|
||||
.label b = $11
|
||||
.label return = $15
|
||||
lda b
|
||||
sta mb
|
||||
lda b+1
|
||||
sta mb+1
|
||||
lda #0
|
||||
sta mb+2
|
||||
sta mb+3
|
||||
sta res
|
||||
sta res+1
|
||||
sta res+2
|
||||
sta res+3
|
||||
b1:
|
||||
lda a
|
||||
bne b2
|
||||
lda a+1
|
||||
bne b2
|
||||
rts
|
||||
b2:
|
||||
lda a
|
||||
and #1
|
||||
cmp #0
|
||||
beq b4
|
||||
lda res
|
||||
clc
|
||||
adc mb
|
||||
sta res
|
||||
lda res+1
|
||||
adc mb+1
|
||||
sta res+1
|
||||
lda res+2
|
||||
adc mb+2
|
||||
sta res+2
|
||||
lda res+3
|
||||
adc mb+3
|
||||
sta res+3
|
||||
b4:
|
||||
clc
|
||||
ror a+1
|
||||
ror a
|
||||
asl mb
|
||||
rol mb+1
|
||||
rol mb+2
|
||||
rol mb+3
|
||||
jmp b1
|
||||
}
|
||||
div32u16u: {
|
||||
.label quotient_hi = $b
|
||||
.label quotient_lo = 8
|
||||
.label return = $1d
|
||||
.label dividend = $d
|
||||
.label divisor = 2
|
||||
lda dividend+2
|
||||
sta divr16u.dividend
|
||||
lda dividend+3
|
||||
sta divr16u.dividend+1
|
||||
lda #<0
|
||||
sta divr16u.rem
|
||||
sta divr16u.rem+1
|
||||
jsr divr16u
|
||||
lda divr16u.return
|
||||
sta quotient_hi
|
||||
lda divr16u.return+1
|
||||
sta quotient_hi+1
|
||||
lda dividend
|
||||
sta divr16u.dividend
|
||||
lda dividend+1
|
||||
sta divr16u.dividend+1
|
||||
jsr divr16u
|
||||
lda quotient_hi
|
||||
sta return+2
|
||||
lda quotient_hi+1
|
||||
sta return+3
|
||||
lda quotient_lo
|
||||
sta return
|
||||
lda quotient_lo+1
|
||||
sta return+1
|
||||
rts
|
||||
}
|
||||
divr16u: {
|
||||
.label rem = 4
|
||||
.label dividend = 6
|
||||
.label quotient = 8
|
||||
.label return = 8
|
||||
.label divisor = 2
|
||||
ldx #0
|
||||
txa
|
||||
sta quotient
|
||||
sta quotient+1
|
||||
b1:
|
||||
asl rem
|
||||
rol rem+1
|
||||
lda dividend+1
|
||||
and #$80
|
||||
cmp #0
|
||||
beq b2
|
||||
lda #1
|
||||
ora rem
|
||||
sta rem
|
||||
b2:
|
||||
asl dividend
|
||||
rol dividend+1
|
||||
asl quotient
|
||||
rol quotient+1
|
||||
lda rem+1
|
||||
cmp divisor+1
|
||||
bcc b3
|
||||
bne !+
|
||||
lda rem
|
||||
cmp divisor
|
||||
bcc b3
|
||||
!:
|
||||
inc quotient
|
||||
bne !+
|
||||
inc quotient+1
|
||||
!:
|
||||
lda rem
|
||||
sec
|
||||
sbc divisor
|
||||
sta rem
|
||||
lda rem+1
|
||||
sbc divisor+1
|
||||
sta rem+1
|
||||
b3:
|
||||
inx
|
||||
cpx #$10
|
||||
bne b1
|
||||
rts
|
||||
}
|
||||
sin16s_gen: {
|
||||
.label _1 = 8
|
||||
.label step = $1d
|
||||
.label sintab = 2
|
||||
.label x = $d
|
||||
.label i = 6
|
||||
lda #<0
|
||||
sta rem16u
|
||||
sta rem16u+1
|
||||
lda #<main.wavelength
|
||||
sta div32u16u.divisor
|
||||
lda #>main.wavelength
|
||||
sta div32u16u.divisor+1
|
||||
lda #<PI2_u4f28
|
||||
sta div32u16u.dividend
|
||||
lda #>PI2_u4f28
|
||||
sta div32u16u.dividend+1
|
||||
lda #<PI2_u4f28>>$10
|
||||
sta div32u16u.dividend+2
|
||||
lda #>PI2_u4f28>>$10
|
||||
sta div32u16u.dividend+3
|
||||
jsr div32u16u
|
||||
lda #<0
|
||||
sta i
|
||||
sta i+1
|
||||
lda #<main.sintab1
|
||||
sta sintab
|
||||
lda #>main.sintab1
|
||||
sta sintab+1
|
||||
lda #0
|
||||
sta x
|
||||
sta x+1
|
||||
sta x+2
|
||||
sta x+3
|
||||
b1:
|
||||
lda x
|
||||
sta sin16s.x
|
||||
lda x+1
|
||||
sta sin16s.x+1
|
||||
lda x+2
|
||||
sta sin16s.x+2
|
||||
lda x+3
|
||||
sta sin16s.x+3
|
||||
jsr sin16s
|
||||
ldy #0
|
||||
lda _1
|
||||
sta (sintab),y
|
||||
iny
|
||||
lda _1+1
|
||||
sta (sintab),y
|
||||
clc
|
||||
lda sintab
|
||||
adc #<2
|
||||
sta sintab
|
||||
lda sintab+1
|
||||
adc #>2
|
||||
sta sintab+1
|
||||
lda x
|
||||
clc
|
||||
adc step
|
||||
sta x
|
||||
lda x+1
|
||||
adc step+1
|
||||
sta x+1
|
||||
lda x+2
|
||||
adc step+2
|
||||
sta x+2
|
||||
lda x+3
|
||||
adc step+3
|
||||
sta x+3
|
||||
inc i
|
||||
bne !+
|
||||
inc i+1
|
||||
!:
|
||||
lda i+1
|
||||
cmp #>main.wavelength
|
||||
bcc b1
|
||||
bne !+
|
||||
lda i
|
||||
cmp #<main.wavelength
|
||||
bcc b1
|
||||
!:
|
||||
rts
|
||||
}
|
||||
sin16s: {
|
||||
.label _6 = $15
|
||||
.label x = $15
|
||||
.label return = 8
|
||||
.label x1 = $21
|
||||
.label x2 = $b
|
||||
.label x3 = $b
|
||||
.label x3_6 = $11
|
||||
.label usinx = 8
|
||||
.label x4 = $b
|
||||
.label x5 = $11
|
||||
.label x5_128 = $11
|
||||
.label sinx = 8
|
||||
.label isUpper = $a
|
||||
lda x+3
|
||||
cmp #>PI_u4f28>>$10
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x+2
|
||||
cmp #<PI_u4f28>>$10
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x+1
|
||||
cmp #>PI_u4f28
|
||||
bcc b4
|
||||
bne !+
|
||||
lda x
|
||||
cmp #<PI_u4f28
|
||||
bcc b4
|
||||
!:
|
||||
lda x
|
||||
sec
|
||||
sbc #<PI_u4f28
|
||||
sta x
|
||||
lda x+1
|
||||
sbc #>PI_u4f28
|
||||
sta x+1
|
||||
lda x+2
|
||||
sbc #<PI_u4f28>>$10
|
||||
sta x+2
|
||||
lda x+3
|
||||
sbc #>PI_u4f28>>$10
|
||||
sta x+3
|
||||
lda #1
|
||||
sta isUpper
|
||||
jmp b1
|
||||
b4:
|
||||
lda #0
|
||||
sta isUpper
|
||||
b1:
|
||||
lda x+3
|
||||
cmp #>PI_HALF_u4f28>>$10
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x+2
|
||||
cmp #<PI_HALF_u4f28>>$10
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x+1
|
||||
cmp #>PI_HALF_u4f28
|
||||
bcc b2
|
||||
bne !+
|
||||
lda x
|
||||
cmp #<PI_HALF_u4f28
|
||||
bcc b2
|
||||
!:
|
||||
lda #<PI_u4f28
|
||||
sec
|
||||
sbc x
|
||||
sta x
|
||||
lda #>PI_u4f28
|
||||
sbc x+1
|
||||
sta x+1
|
||||
lda #<PI_u4f28>>$10
|
||||
sbc x+2
|
||||
sta x+2
|
||||
lda #>PI_u4f28>>$10
|
||||
sbc x+3
|
||||
sta x+3
|
||||
b2:
|
||||
ldy #3
|
||||
!:
|
||||
asl _6
|
||||
rol _6+1
|
||||
rol _6+2
|
||||
rol _6+3
|
||||
dey
|
||||
bne !-
|
||||
lda _6+2
|
||||
sta x1
|
||||
lda _6+3
|
||||
sta x1+1
|
||||
lda x1
|
||||
sta mulu16_sel.v1
|
||||
lda x1+1
|
||||
sta mulu16_sel.v1+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return_17
|
||||
sta mulu16_sel.return
|
||||
lda mulu16_sel.return_17+1
|
||||
sta mulu16_sel.return+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #1
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return_17
|
||||
sta mulu16_sel.return
|
||||
lda mulu16_sel.return_17+1
|
||||
sta mulu16_sel.return+1
|
||||
ldx #1
|
||||
lda #<$10000/6
|
||||
sta mulu16_sel.v2
|
||||
lda #>$10000/6
|
||||
sta mulu16_sel.v2+1
|
||||
jsr mulu16_sel
|
||||
lda x1
|
||||
sec
|
||||
sbc x3_6
|
||||
sta usinx
|
||||
lda x1+1
|
||||
sbc x3_6+1
|
||||
sta usinx+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
lda mulu16_sel.return_17
|
||||
sta mulu16_sel.return
|
||||
lda mulu16_sel.return_17+1
|
||||
sta mulu16_sel.return+1
|
||||
lda x1
|
||||
sta mulu16_sel.v2
|
||||
lda x1+1
|
||||
sta mulu16_sel.v2+1
|
||||
ldx #0
|
||||
jsr mulu16_sel
|
||||
ldy #4
|
||||
!:
|
||||
lsr x5_128+1
|
||||
ror x5_128
|
||||
dey
|
||||
bne !-
|
||||
lda usinx
|
||||
clc
|
||||
adc x5_128
|
||||
sta usinx
|
||||
lda usinx+1
|
||||
adc x5_128+1
|
||||
sta usinx+1
|
||||
lda isUpper
|
||||
beq b3
|
||||
sec
|
||||
lda sinx
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta sinx
|
||||
lda sinx+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta sinx+1
|
||||
b3:
|
||||
rts
|
||||
}
|
426
src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.cfg
Normal file
426
src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.cfg
Normal file
@ -0,0 +1,426 @@
|
||||
@begin: scope:[] from
|
||||
[0] phi() [ ] ( )
|
||||
to:@31
|
||||
@31: scope:[] from @begin
|
||||
[1] phi() [ ] ( )
|
||||
[2] call main param-assignment [ ] ( )
|
||||
to:@end
|
||||
@end: scope:[] from @31
|
||||
[3] phi() [ ] ( )
|
||||
main: scope:[main] from @31
|
||||
[4] phi() [ ] ( main:2 [ ] )
|
||||
[5] call sin16s_gen param-assignment [ divr16u::rem#11 ] ( main:2 [ divr16u::rem#11 ] )
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main
|
||||
[6] phi() [ divr16u::rem#11 ] ( main:2 [ divr16u::rem#11 ] )
|
||||
[7] call sin16s_genb param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
[8] phi() [ ] ( main:2 [ ] )
|
||||
[9] call print_cls param-assignment [ ] ( main:2 [ ] )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@6 main::@9
|
||||
[10] (byte) main::i#2 ← phi( main::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@9/(byte) main::i#1 ) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] )
|
||||
[10] (byte*) char_cursor#49 ← phi( main::@6/(const byte*) SCREEN#0 main::@9/(byte*) char_cursor#2 ) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] )
|
||||
[10] (signed word*) main::st2#2 ← phi( main::@6/(const signed word[120]) main::sintab2#0 main::@9/(signed word*) main::st2#1 ) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] )
|
||||
[10] (signed word*) main::st1#2 ← phi( main::@6/(const signed word[120]) main::sintab1#0 main::@9/(signed word*) main::st1#1 ) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 ] )
|
||||
[11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2) [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] )
|
||||
[12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] )
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@1
|
||||
[13] phi() [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 char_cursor#49 main::i#2 main::sw#0 ] )
|
||||
[14] call print_str param-assignment [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 main::sw#0 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 main::sw#0 ] )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@3
|
||||
[15] (byte*) char_cursor#48 ← phi( main::@1/(byte*) char_cursor#49 main::@3/(byte*) char_cursor#2 ) [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#48 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#48 ] )
|
||||
[16] (signed word) print_sword::w#1 ← (signed word) main::sw#0 [ main::st1#2 main::st2#2 main::i#2 char_cursor#48 print_sword::w#1 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#48 print_sword::w#1 ] )
|
||||
[17] call print_sword param-assignment [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@2
|
||||
[18] phi() [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
[19] call print_str param-assignment [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 ] ( main:2 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 ] )
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
[20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::st2#2 main::i#2 main::st1#1 char_cursor#2 ] ( main:2 [ main::st2#2 main::i#2 main::st1#1 char_cursor#2 ] )
|
||||
[21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 main::st1#1 main::st2#1 char_cursor#2 ] ( main:2 [ main::i#2 main::st1#1 main::st2#1 char_cursor#2 ] )
|
||||
[22] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::st1#1 main::st2#1 char_cursor#2 main::i#1 ] ( main:2 [ main::st1#1 main::st2#1 char_cursor#2 main::i#1 ] )
|
||||
[23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 120) goto main::@1 [ main::st1#1 main::st2#1 char_cursor#2 main::i#1 ] ( main:2 [ main::st1#1 main::st2#1 char_cursor#2 main::i#1 ] )
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@9
|
||||
[24] return [ ] ( main:2 [ ] )
|
||||
to:@return
|
||||
print_str: scope:[print_str] from main::@3 main::@8
|
||||
[25] (byte*) char_cursor#51 ← phi( main::@3/(byte*) char_cursor#49 main::@8/(byte*) char_cursor#12 ) [ print_str::str#5 char_cursor#51 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_str::str#5 char_cursor#51 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_str::str#5 char_cursor#51 ] )
|
||||
[25] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@8/(const string) main::str ) [ print_str::str#5 char_cursor#51 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_str::str#5 char_cursor#51 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_str::str#5 char_cursor#51 ] )
|
||||
to:print_str::@1
|
||||
print_str::@1: scope:[print_str] from print_str print_str::@2
|
||||
[26] (byte*) char_cursor#2 ← phi( print_str/(byte*) char_cursor#51 print_str::@2/(byte*) char_cursor#1 ) [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 print_str::str#3 ] )
|
||||
[26] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 ) [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 print_str::str#3 ] )
|
||||
[27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2 [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 print_str::str#3 ] )
|
||||
to:print_str::@return
|
||||
print_str::@return: scope:[print_str] from print_str::@1
|
||||
[28] return [ char_cursor#2 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 ] )
|
||||
to:@return
|
||||
print_str::@2: scope:[print_str] from print_str::@1
|
||||
[29] *((byte*) char_cursor#2) ← *((byte*) print_str::str#3) [ char_cursor#2 print_str::str#3 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 char_cursor#2 print_str::str#3 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 char_cursor#2 print_str::str#3 ] )
|
||||
[30] (byte*) char_cursor#1 ← ++ (byte*) char_cursor#2 [ print_str::str#3 char_cursor#1 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_str::str#3 char_cursor#1 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_str::str#3 char_cursor#1 ] )
|
||||
[31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3 [ print_str::str#0 char_cursor#1 ] ( main:2::print_str:14 [ main::st1#2 main::st2#2 main::i#2 main::sw#0 print_str::str#0 char_cursor#1 ] main:2::print_str:19 [ main::st1#2 main::st2#2 main::i#2 print_str::str#0 char_cursor#1 ] )
|
||||
to:print_str::@1
|
||||
print_sword: scope:[print_sword] from main::@2
|
||||
[32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1 [ char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#48 print_sword::w#1 ] )
|
||||
to:print_sword::@2
|
||||
print_sword::@2: scope:[print_sword] from print_sword
|
||||
[33] phi() [ char_cursor#48 print_sword::w#1 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#48 print_sword::w#1 ] )
|
||||
[34] call print_char param-assignment [ print_sword::w#1 char_cursor#12 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 char_cursor#12 ] )
|
||||
to:print_sword::@4
|
||||
print_sword::@4: scope:[print_sword] from print_sword::@2
|
||||
[35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1 [ char_cursor#12 print_sword::w#0 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_sword::w#0 ] )
|
||||
to:print_sword::@1
|
||||
print_sword::@1: scope:[print_sword] from print_sword print_sword::@4
|
||||
[36] (byte*) char_cursor#43 ← phi( print_sword/(byte*) char_cursor#48 print_sword::@4/(byte*) char_cursor#12 ) [ print_sword::w#3 char_cursor#43 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#43 ] )
|
||||
[36] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@4/(signed word) print_sword::w#0 ) [ print_sword::w#3 char_cursor#43 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#43 ] )
|
||||
[37] call print_word param-assignment [ char_cursor#12 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
to:print_sword::@return
|
||||
print_sword::@return: scope:[print_sword] from print_sword::@1
|
||||
[38] return [ char_cursor#12 ] ( main:2::print_sword:17 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
to:@return
|
||||
print_word: scope:[print_word] from print_sword::@1
|
||||
[39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3 [ print_sword::w#3 char_cursor#43 print_byte::b#0 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#43 print_byte::b#0 ] )
|
||||
[40] call print_byte param-assignment [ char_cursor#12 print_sword::w#3 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_sword::w#3 ] )
|
||||
to:print_word::@1
|
||||
print_word::@1: scope:[print_word] from print_word
|
||||
[41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3 [ char_cursor#12 print_byte::b#1 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_byte::b#1 ] )
|
||||
[42] call print_byte param-assignment [ char_cursor#12 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
to:print_word::@return
|
||||
print_word::@return: scope:[print_word] from print_word::@1
|
||||
[43] return [ char_cursor#12 ] ( main:2::print_sword:17::print_word:37 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
to:@return
|
||||
print_byte: scope:[print_byte] from print_word print_word::@1
|
||||
[44] (byte*) char_cursor#46 ← phi( print_word/(byte*) char_cursor#43 print_word::@1/(byte*) char_cursor#12 ) [ print_byte::b#2 char_cursor#46 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#46 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#46 ] )
|
||||
[44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 char_cursor#46 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#46 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#46 ] )
|
||||
[45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 char_cursor#46 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#46 print_byte::$0 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#46 print_byte::$0 ] )
|
||||
[46] (byte) print_char::ch#1 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#46 print_char::ch#1 ] )
|
||||
[47] call print_char param-assignment [ char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 print_byte::b#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_byte::b#2 ] )
|
||||
to:print_byte::@1
|
||||
print_byte::@1: scope:[print_byte] from print_byte
|
||||
[48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ char_cursor#12 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_byte::$2 ] )
|
||||
[49] (byte) print_char::ch#2 ← *((const string) print_byte::hextab#0 + (byte~) print_byte::$2) [ char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 print_char::ch#2 ] )
|
||||
[50] call print_char param-assignment [ char_cursor#12 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
to:print_byte::@return
|
||||
print_byte::@return: scope:[print_byte] from print_byte::@1
|
||||
[51] return [ char_cursor#12 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
to:@return
|
||||
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2
|
||||
[52] (byte*) char_cursor#33 ← phi( print_byte/(byte*) char_cursor#46 print_byte::@1/(byte*) char_cursor#12 print_sword::@2/(byte*) char_cursor#48 ) [ print_char::ch#3 char_cursor#33 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_char::ch#3 char_cursor#33 ] )
|
||||
[52] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' ) [ print_char::ch#3 char_cursor#33 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char::ch#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_char::ch#3 char_cursor#33 ] )
|
||||
[53] *((byte*) char_cursor#33) ← (byte) print_char::ch#3 [ char_cursor#33 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#33 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 char_cursor#33 ] )
|
||||
[54] (byte*) char_cursor#12 ← ++ (byte*) char_cursor#33 [ char_cursor#12 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
to:print_char::@return
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
[55] return [ char_cursor#12 ] ( main:2::print_sword:17::print_char:34 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#1 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:47 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:40::print_char:50 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42::print_char:50 [ main::st1#2 main::st2#2 main::i#2 char_cursor#12 ] )
|
||||
to:@return
|
||||
print_cls: scope:[print_cls] from main::@6
|
||||
[56] phi() [ ] ( main:2::print_cls:9 [ ] )
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[57] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) SCREEN#0 print_cls::@1/(byte*) print_cls::sc#1 ) [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] )
|
||||
[58] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:9 [ print_cls::sc#2 ] )
|
||||
[59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] )
|
||||
[60] if((byte*) print_cls::sc#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:9 [ print_cls::sc#1 ] )
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[61] return [ ] ( main:2::print_cls:9 [ ] )
|
||||
to:@return
|
||||
sin16s_genb: scope:[sin16s_genb] from main::@5
|
||||
[62] phi() [ divr16u::rem#11 ] ( main:2::sin16s_genb:7 [ divr16u::rem#11 ] )
|
||||
[63] call div32u16u param-assignment [ div32u16u::return#0 ] ( main:2::sin16s_genb:7 [ div32u16u::return#0 ] )
|
||||
[64] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0 [ div32u16u::return#3 ] ( main:2::sin16s_genb:7 [ div32u16u::return#3 ] )
|
||||
to:sin16s_genb::@3
|
||||
sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb
|
||||
[65] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3 [ sin16s_genb::step#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 ] )
|
||||
to:sin16s_genb::@1
|
||||
sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@3 sin16s_genb::@4
|
||||
[66] (word) sin16s_genb::i#2 ← phi( sin16s_genb::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_genb::@4/(word) sin16s_genb::i#1 ) [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] )
|
||||
[66] (signed word*) sin16s_genb::sintab#2 ← phi( sin16s_genb::@3/(const signed word[120]) main::sintab2#0 sin16s_genb::@4/(signed word*) sin16s_genb::sintab#0 ) [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] )
|
||||
[66] (dword) sin16s_genb::x#2 ← phi( sin16s_genb::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_genb::@4/(dword) sin16s_genb::x#1 ) [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] )
|
||||
[67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] )
|
||||
[68] call sin16sb param-assignment [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#1 ] )
|
||||
[69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#0 ] )
|
||||
to:sin16s_genb::@4
|
||||
sin16s_genb::@4: scope:[sin16s_genb] from sin16s_genb::@1
|
||||
[70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16s_genb::$2 ] )
|
||||
[71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 ] )
|
||||
[72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::i#2 sin16s_genb::sintab#0 ] )
|
||||
[73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::i#2 sin16s_genb::x#1 sin16s_genb::sintab#0 ] )
|
||||
[74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] )
|
||||
[75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] ( main:2::sin16s_genb:7 [ sin16s_genb::step#0 sin16s_genb::x#1 sin16s_genb::sintab#0 sin16s_genb::i#1 ] )
|
||||
to:sin16s_genb::@return
|
||||
sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@4
|
||||
[76] return [ ] ( main:2::sin16s_genb:7 [ ] )
|
||||
to:@return
|
||||
sin16sb: scope:[sin16sb] from sin16s_genb::@1
|
||||
[77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1 [ sin16sb::x#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#0 ] )
|
||||
to:sin16sb::@4
|
||||
sin16sb::@4: scope:[sin16sb] from sin16sb
|
||||
[78] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0 [ sin16sb::x#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#1 ] )
|
||||
to:sin16sb::@1
|
||||
sin16sb::@1: scope:[sin16sb] from sin16sb sin16sb::@4
|
||||
[79] (byte) sin16sb::isUpper#2 ← phi( sin16sb/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] )
|
||||
[79] (word) sin16sb::x#4 ← phi( sin16sb/(word) sin16sb::x#0 sin16sb::@4/(word) sin16sb::x#1 ) [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] )
|
||||
[80] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2 [ sin16sb::x#4 sin16sb::isUpper#2 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::x#4 sin16sb::isUpper#2 ] )
|
||||
to:sin16sb::@5
|
||||
sin16sb::@5: scope:[sin16sb] from sin16sb::@1
|
||||
[81] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4 [ sin16sb::isUpper#2 sin16sb::x#2 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x#2 ] )
|
||||
to:sin16sb::@2
|
||||
sin16sb::@2: scope:[sin16sb] from sin16sb::@1 sin16sb::@5
|
||||
[82] (word) sin16sb::x#6 ← phi( sin16sb::@1/(word) sin16sb::x#4 sin16sb::@5/(word) sin16sb::x#2 ) [ sin16sb::isUpper#2 sin16sb::x#6 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x#6 ] )
|
||||
[83] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16sb::isUpper#2 sin16sb::x1#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 ] )
|
||||
[84] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 ] )
|
||||
[85] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#5 mulu16_sel::v2#5 ] )
|
||||
[86] call mulu16_sel param-assignment [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] )
|
||||
[87] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#18 ] )
|
||||
to:sin16sb::@8
|
||||
sin16sb::@8: scope:[sin16sb] from sin16sb::@2
|
||||
[88] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x2#0 ] )
|
||||
[89] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 ] )
|
||||
[90] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#6 mulu16_sel::v2#6 ] )
|
||||
[91] call mulu16_sel param-assignment [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] )
|
||||
[92] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#19 ] )
|
||||
to:sin16sb::@9
|
||||
sin16sb::@9: scope:[sin16sb] from sin16sb::@8
|
||||
[93] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 ] )
|
||||
[94] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#7 ] )
|
||||
[95] call mulu16_sel param-assignment [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 sin16sb::x3#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 sin16sb::x3#0 ] )
|
||||
[96] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#20 ] )
|
||||
to:sin16sb::@10
|
||||
sin16sb::@10: scope:[sin16sb] from sin16sb::@9
|
||||
[97] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::x3_6#0 ] )
|
||||
[98] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 sin16sb::usinx#0 ] )
|
||||
[99] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 ] )
|
||||
[100] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#8 mulu16_sel::v2#8 ] )
|
||||
[101] call mulu16_sel param-assignment [ sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 sin16sb::usinx#0 ] )
|
||||
[102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#10 ] )
|
||||
to:sin16sb::@11
|
||||
sin16sb::@11: scope:[sin16sb] from sin16sb::@10
|
||||
[103] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 sin16sb::x4#0 ] )
|
||||
[104] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0 [ sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#9 ] )
|
||||
[105] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#9 mulu16_sel::v2#9 ] )
|
||||
[106] call mulu16_sel param-assignment [ sin16sb::isUpper#2 mulu16_sel::return#17 sin16sb::usinx#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 mulu16_sel::return#17 sin16sb::usinx#0 ] )
|
||||
[107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17 [ sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#11 ] )
|
||||
to:sin16sb::@12
|
||||
sin16sb::@12: scope:[sin16sb] from sin16sb::@11
|
||||
[108] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5#0 ] )
|
||||
[109] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 sin16sb::x5_128#0 ] )
|
||||
[110] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0 [ sin16sb::isUpper#2 sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#1 ] )
|
||||
[111] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@15 [ sin16sb::usinx#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::usinx#1 ] )
|
||||
to:sin16sb::@6
|
||||
sin16sb::@6: scope:[sin16sb] from sin16sb::@12
|
||||
[112] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1 [ sin16sb::sinx#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::sinx#1 ] )
|
||||
to:sin16sb::@3
|
||||
sin16sb::@3: scope:[sin16sb] from sin16sb::@15 sin16sb::@6
|
||||
[113] (signed word) sin16sb::return#1 ← phi( sin16sb::@15/(signed word~) sin16sb::return#5 sin16sb::@6/(signed word) sin16sb::sinx#1 ) [ sin16sb::return#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#1 ] )
|
||||
to:sin16sb::@return
|
||||
sin16sb::@return: scope:[sin16sb] from sin16sb::@3
|
||||
[114] return [ sin16sb::return#1 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#1 ] )
|
||||
to:@return
|
||||
sin16sb::@15: scope:[sin16sb] from sin16sb::@12
|
||||
[115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1 [ sin16sb::return#5 ] ( main:2::sin16s_genb:7::sin16sb:68 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::return#5 ] )
|
||||
to:sin16sb::@3
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 sin16sb::@10 sin16sb::@11 sin16sb::@2 sin16sb::@8 sin16sb::@9
|
||||
[116] (byte) mulu16_sel::select#10 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16sb::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16sb::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] )
|
||||
[116] (word) mulu16_sel::v2#10 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 sin16sb::@10/(word) mulu16_sel::v2#8 sin16sb::@11/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@8/(word) mulu16_sel::v2#6 sin16sb::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] )
|
||||
[116] (word) mulu16_sel::v1#10 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 sin16sb::@10/(word) mulu16_sel::v1#8 sin16sb::@11/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@8/(word) mulu16_sel::v1#6 sin16sb::@9/(word) mulu16_sel::v1#7 ) [ mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v1#10 mulu16_sel::v2#10 mulu16_sel::select#10 ] )
|
||||
[117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10 [ mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::v2#10 mulu16_sel::select#10 mul16u::a#1 ] )
|
||||
[118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10 [ mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::b#0 ] )
|
||||
[119] call mul16u param-assignment [ mulu16_sel::select#10 mul16u::res#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] )
|
||||
[120] (dword) mul16u::return#2 ← (dword) mul16u::res#2 [ mulu16_sel::select#10 mul16u::return#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::return#2 ] )
|
||||
to:mulu16_sel::@2
|
||||
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
|
||||
[121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2 [ mulu16_sel::select#10 mulu16_sel::$0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mulu16_sel::$0 ] )
|
||||
[122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10 [ mulu16_sel::$1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::$1 ] )
|
||||
[123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1 [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] )
|
||||
to:mulu16_sel::@return
|
||||
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
|
||||
[124] return [ mulu16_sel::return#17 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#17 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#17 ] )
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mulu16_sel
|
||||
[125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0 [ mul16u::a#1 mul16u::mb#0 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#1 mul16u::mb#0 ] )
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
|
||||
[126] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
|
||||
[126] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
|
||||
[126] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@4/(word) mul16u::a#0 ) [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
|
||||
[127] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[128] return [ mul16u::res#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 ] )
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[129] (byte~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 mul16u::$1 ] )
|
||||
[130] if((byte~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4 [ mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::res#2 mul16u::a#2 mul16u::mb#2 ] )
|
||||
to:mul16u::@7
|
||||
mul16u::@7: scope:[mul16u] from mul16u::@2
|
||||
[131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2 [ mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#1 ] )
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
|
||||
[132] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 ) [ mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#2 mul16u::mb#2 mul16u::res#6 ] )
|
||||
[133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1 [ mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] ( main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::mb#2 mul16u::a#0 mul16u::res#6 ] )
|
||||
[134] (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_genb:7::sin16sb:68::mulu16_sel:86::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:91::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:95::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::x3#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:101::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::x1#0 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_genb:7::sin16sb:68::mulu16_sel:106::mul16u:119 [ sin16s_genb::step#0 sin16s_genb::x#2 sin16s_genb::sintab#2 sin16s_genb::i#2 sin16sb::isUpper#2 sin16sb::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:191::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:196::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:200::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:206::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] main:2::sin16s_gen:5::sin16s:172::mulu16_sel:211::mul16u:119 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::select#10 mul16u::a#0 mul16u::res#6 mul16u::mb#1 ] )
|
||||
to:mul16u::@1
|
||||
div32u16u: scope:[div32u16u] from sin16s_gen sin16s_genb
|
||||
[135] (word) rem16u#26 ← phi( sin16s_gen/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_genb/(word) divr16u::rem#11 ) [ div32u16u::dividend#2 div32u16u::divisor#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 ] )
|
||||
[135] (word) div32u16u::divisor#2 ← phi( sin16s_gen/(const word) main::wavelength#0 sin16s_genb/(const word) main::wavelength#0 ) [ div32u16u::dividend#2 div32u16u::divisor#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 ] )
|
||||
[135] (dword) div32u16u::dividend#2 ← phi( sin16s_gen/(const dword) PI2_u4f28#0 sin16s_genb/(const dword) PI2_u4f28#0 ) [ div32u16u::dividend#2 div32u16u::divisor#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 ] )
|
||||
[136] (word) divr16u::dividend#1 ← > (dword) div32u16u::dividend#2 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 ] )
|
||||
[137] (word) divr16u::divisor#0 ← (word) div32u16u::divisor#2 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 divr16u::divisor#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 divr16u::divisor#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::dividend#1 divr16u::divisor#0 ] )
|
||||
[138] call divr16u param-assignment [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] )
|
||||
[139] (word) divr16u::return#2 ← (word) divr16u::return#0 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#2 ] )
|
||||
to:div32u16u::@2
|
||||
div32u16u::@2: scope:[div32u16u] from div32u16u
|
||||
[140] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 ] )
|
||||
[141] (word) divr16u::dividend#2 ← < (dword) div32u16u::dividend#2 [ div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::divisor#2 divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 ] )
|
||||
[142] (word) divr16u::divisor#1 ← (word) div32u16u::divisor#2 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 ] )
|
||||
[143] (word) divr16u::rem#4 ← (word) divr16u::rem#11 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::quotient_hi#0 divr16u::dividend#2 divr16u::divisor#1 divr16u::rem#4 ] )
|
||||
[144] call divr16u param-assignment [ divr16u::rem#11 divr16u::return#0 div32u16u::quotient_hi#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::rem#11 divr16u::return#0 div32u16u::quotient_hi#0 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::rem#11 divr16u::return#0 div32u16u::quotient_hi#0 ] )
|
||||
[145] (word) divr16u::return#3 ← (word) divr16u::return#0 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::return#3 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::return#3 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::rem#11 div32u16u::quotient_hi#0 divr16u::return#3 ] )
|
||||
to:div32u16u::@3
|
||||
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
|
||||
[146] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3 [ divr16u::rem#11 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] ( main:2::sin16s_genb:7::div32u16u:63 [ divr16u::rem#11 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] main:2::sin16s_gen:5::div32u16u:167 [ divr16u::rem#11 div32u16u::quotient_hi#0 div32u16u::quotient_lo#0 ] )
|
||||
[147] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0 [ div32u16u::return#0 divr16u::rem#11 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::return#0 divr16u::rem#11 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::return#0 divr16u::rem#11 ] )
|
||||
to:div32u16u::@return
|
||||
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
|
||||
[148] return [ div32u16u::return#0 divr16u::rem#11 ] ( main:2::sin16s_genb:7::div32u16u:63 [ div32u16u::return#0 divr16u::rem#11 ] main:2::sin16s_gen:5::div32u16u:167 [ div32u16u::return#0 divr16u::rem#11 ] )
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
|
||||
[149] (word) divr16u::divisor#6 ← phi( div32u16u/(word) divr16u::divisor#0 div32u16u::@2/(word) divr16u::divisor#1 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
|
||||
[149] (word) divr16u::dividend#5 ← phi( div32u16u/(word) divr16u::dividend#1 div32u16u::@2/(word) divr16u::dividend#2 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
|
||||
[149] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 ) [ divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#10 divr16u::dividend#5 divr16u::divisor#6 ] )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[150] (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_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||
[150] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||
[150] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||
[150] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 ) [ divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::rem#5 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 ] )
|
||||
[151] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
|
||||
[152] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$1 ] )
|
||||
[153] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 divr16u::$2 ] )
|
||||
[154] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#0 ] )
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[155] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#1 ] )
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[156] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 ) [ divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::dividend#3 divr16u::quotient#3 divr16u::i#2 divr16u::rem#6 ] )
|
||||
[157] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::quotient#3 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 ] )
|
||||
[158] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
|
||||
[159] if((word) divr16u::rem#6<(word) divr16u::divisor#6) goto divr16u::@3 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#1 ] )
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[160] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::rem#6 divr16u::quotient#2 ] )
|
||||
[161] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (word) divr16u::divisor#6 [ divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 divr16u::quotient#2 divr16u::rem#2 ] )
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[162] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 ) [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] )
|
||||
[162] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 ) [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::i#2 divr16u::dividend#0 ] )
|
||||
[163] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] )
|
||||
[164] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1 [ divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 divr16u::divisor#6 divr16u::dividend#0 divr16u::i#1 ] )
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@3
|
||||
[165] return [ divr16u::rem#11 divr16u::return#0 ] ( main:2::sin16s_genb:7::div32u16u:63::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:138 [ div32u16u::dividend#2 div32u16u::divisor#2 divr16u::rem#11 divr16u::return#0 ] main:2::sin16s_genb:7::div32u16u:63::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 ] main:2::sin16s_gen:5::div32u16u:167::divr16u:144 [ div32u16u::quotient_hi#0 divr16u::rem#11 divr16u::return#0 ] )
|
||||
to:@return
|
||||
sin16s_gen: scope:[sin16s_gen] from main
|
||||
[166] phi() [ ] ( main:2::sin16s_gen:5 [ ] )
|
||||
[167] call div32u16u param-assignment [ div32u16u::return#0 divr16u::rem#11 ] ( main:2::sin16s_gen:5 [ div32u16u::return#0 divr16u::rem#11 ] )
|
||||
[168] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0 [ divr16u::rem#11 div32u16u::return#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 div32u16u::return#2 ] )
|
||||
to:sin16s_gen::@3
|
||||
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen
|
||||
[169] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2 [ divr16u::rem#11 sin16s_gen::step#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 ] )
|
||||
to:sin16s_gen::@1
|
||||
sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4
|
||||
[170] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(word) sin16s_gen::i#1 ) [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
|
||||
[170] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@3/(const signed word[120]) main::sintab1#0 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#0 ) [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
|
||||
[170] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(dword) sin16s_gen::x#1 ) [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
|
||||
[171] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] )
|
||||
[172] call sin16s param-assignment [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] )
|
||||
[173] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#0 ] )
|
||||
to:sin16s_gen::@4
|
||||
sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1
|
||||
[174] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s_gen::$1 ] )
|
||||
[175] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 ] )
|
||||
[176] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::i#2 sin16s_gen::sintab#0 ] )
|
||||
[177] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::i#2 sin16s_gen::x#1 sin16s_gen::sintab#0 ] )
|
||||
[178] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] )
|
||||
[179] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#1 sin16s_gen::sintab#0 sin16s_gen::i#1 ] )
|
||||
to:sin16s_gen::@return
|
||||
sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4
|
||||
[180] return [ divr16u::rem#11 ] ( main:2::sin16s_gen:5 [ divr16u::rem#11 ] )
|
||||
to:@return
|
||||
sin16s: scope:[sin16s] from sin16s_gen::@1
|
||||
[181] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1 [ sin16s::x#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#0 ] )
|
||||
to:sin16s::@4
|
||||
sin16s::@4: scope:[sin16s] from sin16s
|
||||
[182] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0 [ sin16s::x#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#1 ] )
|
||||
to:sin16s::@1
|
||||
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
||||
[183] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
|
||||
[183] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 ) [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
|
||||
[184] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2 [ sin16s::x#4 sin16s::isUpper#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::x#4 sin16s::isUpper#2 ] )
|
||||
to:sin16s::@5
|
||||
sin16s::@5: scope:[sin16s] from sin16s::@1
|
||||
[185] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4 [ sin16s::isUpper#2 sin16s::x#2 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#2 ] )
|
||||
to:sin16s::@2
|
||||
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
||||
[186] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 ) [ sin16s::isUpper#2 sin16s::x#6 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x#6 ] )
|
||||
[187] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3 [ sin16s::isUpper#2 sin16s::$6 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::$6 ] )
|
||||
[188] (word) sin16s::x1#0 ← > (dword~) sin16s::$6 [ sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 ] )
|
||||
[189] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 sin16s::isUpper#2 sin16s::x1#0 ] )
|
||||
[190] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0 [ mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#0 mulu16_sel::v2#0 sin16s::isUpper#2 sin16s::x1#0 ] )
|
||||
[191] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] )
|
||||
[192] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#0 ] )
|
||||
to:sin16s::@8
|
||||
sin16s::@8: scope:[sin16s] from sin16s::@2
|
||||
[193] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x2#0 ] )
|
||||
[194] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0 [ mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 sin16s::isUpper#2 sin16s::x1#0 ] )
|
||||
[195] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0 [ mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#1 mulu16_sel::v2#1 sin16s::isUpper#2 sin16s::x1#0 ] )
|
||||
[196] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 ] )
|
||||
[197] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 mulu16_sel::return#1 ] )
|
||||
to:sin16s::@9
|
||||
sin16s::@9: scope:[sin16s] from sin16s::@8
|
||||
[198] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
|
||||
[199] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0 [ mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
|
||||
[200] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 ] )
|
||||
[201] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 mulu16_sel::return#14 ] )
|
||||
to:sin16s::@10
|
||||
sin16s::@10: scope:[sin16s] from sin16s::@9
|
||||
[202] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::x3_6#0 ] )
|
||||
[203] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::x3#0 sin16s::usinx#0 ] )
|
||||
[204] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0 [ mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
|
||||
[205] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0 [ mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#3 mulu16_sel::v2#3 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
|
||||
[206] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
|
||||
[207] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 mulu16_sel::return#15 ] )
|
||||
to:sin16s::@11
|
||||
sin16s::@11: scope:[sin16s] from sin16s::@10
|
||||
[208] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15 [ sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 sin16s::x4#0 ] )
|
||||
[209] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0 [ mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 sin16s::isUpper#2 sin16s::x1#0 sin16s::usinx#0 ] )
|
||||
[210] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0 [ mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::v1#4 mulu16_sel::v2#4 sin16s::isUpper#2 sin16s::usinx#0 ] )
|
||||
[211] call mulu16_sel param-assignment [ mulu16_sel::return#17 sin16s::isUpper#2 sin16s::usinx#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 mulu16_sel::return#17 sin16s::isUpper#2 sin16s::usinx#0 ] )
|
||||
[212] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17 [ sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 mulu16_sel::return#16 ] )
|
||||
to:sin16s::@12
|
||||
sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
[213] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5#0 ] )
|
||||
[214] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#0 sin16s::x5_128#0 ] )
|
||||
[215] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0 [ sin16s::isUpper#2 sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::isUpper#2 sin16s::usinx#1 ] )
|
||||
[216] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15 [ sin16s::usinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::usinx#1 ] )
|
||||
to:sin16s::@6
|
||||
sin16s::@6: scope:[sin16s] from sin16s::@12
|
||||
[217] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1 [ sin16s::sinx#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::sinx#1 ] )
|
||||
to:sin16s::@3
|
||||
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
|
||||
[218] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 ) [ sin16s::return#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] )
|
||||
to:sin16s::@return
|
||||
sin16s::@return: scope:[sin16s] from sin16s::@3
|
||||
[219] return [ sin16s::return#1 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#1 ] )
|
||||
to:@return
|
||||
sin16s::@15: scope:[sin16s] from sin16s::@12
|
||||
[220] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1 [ sin16s::return#5 ] ( main:2::sin16s_gen:5::sin16s:172 [ divr16u::rem#11 sin16s_gen::step#0 sin16s_gen::x#2 sin16s_gen::sintab#2 sin16s_gen::i#2 sin16s::return#5 ] )
|
||||
to:sin16s::@3
|
12547
src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.log
Normal file
12547
src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.log
Normal file
File diff suppressed because it is too large
Load Diff
370
src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.sym
Normal file
370
src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.sym
Normal file
@ -0,0 +1,370 @@
|
||||
(label) @31
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(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
|
||||
(dword) PI_HALF_u4f28
|
||||
(const dword) PI_HALF_u4f28#0 PI_HALF_u4f28 = (dword/signed dword) 421657428
|
||||
(word) PI_u4f12
|
||||
(const word) PI_u4f12#0 PI_u4f12 = (word/signed word/dword/signed dword) 12868
|
||||
(dword) PI_u4f28
|
||||
(const dword) PI_u4f28#0 PI_u4f28 = (dword/signed dword) 843314857
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) char_cursor
|
||||
(byte*) char_cursor#1 char_cursor zp ZP_WORD:11 101.0
|
||||
(byte*) char_cursor#12 char_cursor zp ZP_WORD:11 1.1176470588235294
|
||||
(byte*) char_cursor#2 char_cursor zp ZP_WORD:11 32.7
|
||||
(byte*) char_cursor#33 char_cursor zp ZP_WORD:11 5.0
|
||||
(byte*) char_cursor#43 char_cursor zp ZP_WORD:11 3.0
|
||||
(byte*) char_cursor#46 char_cursor zp ZP_WORD:11 2.0
|
||||
(byte*) char_cursor#48 char_cursor zp ZP_WORD:11 6.5
|
||||
(byte*) char_cursor#49 char_cursor zp ZP_WORD:11 8.25
|
||||
(byte*) char_cursor#51 char_cursor zp ZP_WORD:11 24.0
|
||||
(dword()) div32u16u((dword) div32u16u::dividend , (word) div32u16u::divisor)
|
||||
(label) div32u16u::@2
|
||||
(label) div32u16u::@3
|
||||
(label) div32u16u::@return
|
||||
(dword) div32u16u::dividend
|
||||
(dword) div32u16u::dividend#2 dividend zp ZP_DWORD:13 0.6666666666666666
|
||||
(word) div32u16u::divisor
|
||||
(word) div32u16u::divisor#2 divisor zp ZP_WORD:2 0.5714285714285714
|
||||
(dword) div32u16u::quotient
|
||||
(word) div32u16u::quotient_hi
|
||||
(word) div32u16u::quotient_hi#0 quotient_hi zp ZP_WORD:11 0.5714285714285714
|
||||
(word) div32u16u::quotient_lo
|
||||
(word) div32u16u::quotient_lo#0 quotient_lo zp ZP_WORD:8 4.0
|
||||
(dword) div32u16u::return
|
||||
(dword) div32u16u::return#0 return zp ZP_DWORD:29 1.5
|
||||
(dword) div32u16u::return#2 return zp ZP_DWORD:29 4.0
|
||||
(dword) div32u16u::return#3 return zp ZP_DWORD:29 4.0
|
||||
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
||||
(byte~) divr16u::$1 reg byte a 22.0
|
||||
(byte~) divr16u::$2 reg byte a 22.0
|
||||
(label) divr16u::@1
|
||||
(label) divr16u::@2
|
||||
(label) divr16u::@3
|
||||
(label) divr16u::@4
|
||||
(label) divr16u::@5
|
||||
(label) divr16u::@return
|
||||
(word) divr16u::dividend
|
||||
(word) divr16u::dividend#0 dividend zp ZP_WORD:6 2.75
|
||||
(word) divr16u::dividend#1 dividend zp ZP_WORD:6 2.0
|
||||
(word) divr16u::dividend#2 dividend zp ZP_WORD:6 1.3333333333333333
|
||||
(word) divr16u::dividend#3 dividend zp ZP_WORD:6 5.0
|
||||
(word) divr16u::dividend#5 dividend zp ZP_WORD:6 6.0
|
||||
(word) divr16u::divisor
|
||||
(word) divr16u::divisor#0 divisor zp ZP_WORD:2 4.0
|
||||
(word) divr16u::divisor#1 divisor zp ZP_WORD:2 2.0
|
||||
(word) divr16u::divisor#6 divisor zp ZP_WORD:2 1.625
|
||||
(byte) divr16u::i
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:8 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:8 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:8 2.75
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:4 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:4 22.0
|
||||
(word) divr16u::rem#10 rem zp ZP_WORD:4 4.0
|
||||
(word) divr16u::rem#11 rem zp ZP_WORD:4 1.1935483870967742
|
||||
(word) divr16u::rem#2 rem zp ZP_WORD:4 22.0
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:4 4.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:4 24.0
|
||||
(word) divr16u::rem#6 rem zp ZP_WORD:4 11.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp ZP_WORD:8 6.166666666666666
|
||||
(word) divr16u::return#2 return zp ZP_WORD:8 4.0
|
||||
(word) divr16u::return#3 return zp ZP_WORD:8 4.0
|
||||
(byte*) line_cursor
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@2
|
||||
(label) main::@3
|
||||
(label) main::@5
|
||||
(label) main::@6
|
||||
(label) main::@8
|
||||
(label) main::@9
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 reg byte x 16.5
|
||||
(byte) main::i#2 reg byte x 1.8333333333333333
|
||||
(signed word[120]) main::sintab1
|
||||
(const signed word[120]) main::sintab1#0 sintab1 = { fill( 120, 0) }
|
||||
(signed word[120]) main::sintab2
|
||||
(const signed word[120]) main::sintab2#0 sintab2 = { fill( 120, 0) }
|
||||
(signed word*) main::st1
|
||||
(signed word*) main::st1#1 st1 zp ZP_WORD:2 5.5
|
||||
(signed word*) main::st1#2 st1 zp ZP_WORD:2 3.3000000000000003
|
||||
(signed word*) main::st2
|
||||
(signed word*) main::st2#1 st2 zp ZP_WORD:4 7.333333333333333
|
||||
(signed word*) main::st2#2 st2 zp ZP_WORD:4 3.0
|
||||
(const string) main::str str = (string) " @"
|
||||
(const string) main::str1 str1 = (string) " @"
|
||||
(signed word) main::sw
|
||||
(signed word) main::sw#0 sw zp ZP_WORD:8 6.6000000000000005
|
||||
(word) main::wavelength
|
||||
(const word) main::wavelength#0 wavelength = (byte/signed byte/word/signed word/dword/signed dword) 120
|
||||
(dword()) mul16u((word) mul16u::a , (word) mul16u::b)
|
||||
(byte~) mul16u::$1 reg byte a 202.0
|
||||
(label) mul16u::@1
|
||||
(label) mul16u::@2
|
||||
(label) mul16u::@4
|
||||
(label) mul16u::@7
|
||||
(label) mul16u::@return
|
||||
(word) mul16u::a
|
||||
(word) mul16u::a#0 a zp ZP_WORD:19 101.0
|
||||
(word) mul16u::a#1 a zp ZP_WORD:19 1.3333333333333333
|
||||
(word) mul16u::a#2 a zp ZP_WORD:19 67.66666666666666
|
||||
(word) mul16u::b
|
||||
(word) mul16u::b#0 b zp ZP_WORD:17 4.0
|
||||
(dword) mul16u::mb
|
||||
(dword) mul16u::mb#0 mb zp ZP_DWORD:25 4.0
|
||||
(dword) mul16u::mb#1 mb zp ZP_DWORD:25 202.0
|
||||
(dword) mul16u::mb#2 mb zp ZP_DWORD:25 43.57142857142858
|
||||
(dword) mul16u::res
|
||||
(dword) mul16u::res#1 res zp ZP_DWORD:21 202.0
|
||||
(dword) mul16u::res#2 res zp ZP_DWORD:21 50.83333333333333
|
||||
(dword) mul16u::res#6 res zp ZP_DWORD:21 101.0
|
||||
(dword) mul16u::return
|
||||
(dword) mul16u::return#2 return zp ZP_DWORD:21 4.0
|
||||
(word()) mulu16_sel((word) mulu16_sel::v1 , (word) mulu16_sel::v2 , (byte) mulu16_sel::select)
|
||||
(dword~) mulu16_sel::$0 $0 zp ZP_DWORD:21 4.0
|
||||
(dword~) mulu16_sel::$1 $1 zp ZP_DWORD:21 4.0
|
||||
(label) mulu16_sel::@2
|
||||
(label) mulu16_sel::@return
|
||||
(word) mulu16_sel::return
|
||||
(word) mulu16_sel::return#0 return zp ZP_WORD:11 4.0
|
||||
(word) mulu16_sel::return#1 return zp ZP_WORD:11 4.0
|
||||
(word) mulu16_sel::return#10 return zp ZP_WORD:11 4.0
|
||||
(word) mulu16_sel::return#11 return#11 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::return#14 return#14 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::return#15 return zp ZP_WORD:11 4.0
|
||||
(word) mulu16_sel::return#16 return#16 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::return#17 return#17 zp ZP_WORD:17 1.8333333333333335
|
||||
(word) mulu16_sel::return#18 return#18 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::return#19 return zp ZP_WORD:11 4.0
|
||||
(word) mulu16_sel::return#20 return#20 zp ZP_WORD:17 4.0
|
||||
(byte) mulu16_sel::select
|
||||
(byte) mulu16_sel::select#10 reg byte x 0.3333333333333333
|
||||
(word) mulu16_sel::v1
|
||||
(word) mulu16_sel::v1#0 v1 zp ZP_WORD:11 2.0
|
||||
(word) mulu16_sel::v1#1 v1 zp ZP_WORD:11 2.0
|
||||
(word) mulu16_sel::v1#10 v1 zp ZP_WORD:11 22.0
|
||||
(word) mulu16_sel::v1#2 v1 zp ZP_WORD:11 4.0
|
||||
(word) mulu16_sel::v1#3 v1 zp ZP_WORD:11 2.0
|
||||
(word) mulu16_sel::v1#4 v1 zp ZP_WORD:11 2.0
|
||||
(word) mulu16_sel::v1#5 v1 zp ZP_WORD:11 2.0
|
||||
(word) mulu16_sel::v1#6 v1 zp ZP_WORD:11 2.0
|
||||
(word) mulu16_sel::v1#7 v1 zp ZP_WORD:11 4.0
|
||||
(word) mulu16_sel::v1#8 v1 zp ZP_WORD:11 2.0
|
||||
(word) mulu16_sel::v1#9 v1 zp ZP_WORD:11 2.0
|
||||
(word) mulu16_sel::v2
|
||||
(word) mulu16_sel::v2#0 v2 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::v2#1 v2 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::v2#10 v2 zp ZP_WORD:17 9.0
|
||||
(word) mulu16_sel::v2#3 v2 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::v2#4 v2 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::v2#5 v2 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::v2#6 v2 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::v2#8 v2 zp ZP_WORD:17 4.0
|
||||
(word) mulu16_sel::v2#9 v2 zp ZP_WORD:17 4.0
|
||||
(void()) print_byte((byte) print_byte::b)
|
||||
(byte~) print_byte::$0 reg byte a 4.0
|
||||
(byte~) print_byte::$2 reg byte a 4.0
|
||||
(label) print_byte::@1
|
||||
(label) print_byte::@return
|
||||
(byte) print_byte::b
|
||||
(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0
|
||||
(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0
|
||||
(byte) print_byte::b#2 b zp ZP_BYTE:10 2.0
|
||||
(byte[]) print_byte::hextab
|
||||
(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef"
|
||||
(void()) print_char((byte) print_char::ch)
|
||||
(label) print_char::@return
|
||||
(byte) print_char::ch
|
||||
(byte) print_char::ch#1 reg byte a 4.0
|
||||
(byte) print_char::ch#2 reg byte a 4.0
|
||||
(byte) print_char::ch#3 reg byte a 6.0
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
(byte*) print_cls::sc
|
||||
(byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5
|
||||
(byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(label) print_str::@1
|
||||
(label) print_str::@2
|
||||
(label) print_str::@return
|
||||
(byte*) print_str::str
|
||||
(byte*) print_str::str#0 str zp ZP_WORD:6 202.0
|
||||
(byte*) print_str::str#3 str zp ZP_WORD:6 101.5
|
||||
(byte*) print_str::str#5 str zp ZP_WORD:6 2.0
|
||||
(void()) print_sword((signed word) print_sword::w)
|
||||
(label) print_sword::@1
|
||||
(label) print_sword::@2
|
||||
(label) print_sword::@4
|
||||
(label) print_sword::@return
|
||||
(signed word) print_sword::w
|
||||
(signed word) print_sword::w#0 w zp ZP_WORD:8 4.0
|
||||
(signed word) print_sword::w#1 w zp ZP_WORD:8 4.25
|
||||
(signed word) print_sword::w#3 w zp ZP_WORD:8 1.3333333333333333
|
||||
(void()) print_word((word) print_word::w)
|
||||
(label) print_word::@1
|
||||
(label) print_word::@return
|
||||
(word) print_word::w
|
||||
(word) rem16u
|
||||
(word) rem16u#26 rem16u zp ZP_WORD:4 20.0
|
||||
(signed word()) sin16s((dword) sin16s::x)
|
||||
(dword~) sin16s::$6 $6 zp ZP_DWORD:21 4.0
|
||||
(label) sin16s::@1
|
||||
(label) sin16s::@10
|
||||
(label) sin16s::@11
|
||||
(label) sin16s::@12
|
||||
(label) sin16s::@15
|
||||
(label) sin16s::@2
|
||||
(label) sin16s::@3
|
||||
(label) sin16s::@4
|
||||
(label) sin16s::@5
|
||||
(label) sin16s::@6
|
||||
(label) sin16s::@8
|
||||
(label) sin16s::@9
|
||||
(label) sin16s::@return
|
||||
(byte) sin16s::isUpper
|
||||
(byte) sin16s::isUpper#2 isUpper zp ZP_BYTE:10 0.06060606060606061
|
||||
(signed word) sin16s::return
|
||||
(signed word) sin16s::return#0 return zp ZP_WORD:8 22.0
|
||||
(signed word) sin16s::return#1 return zp ZP_WORD:8 5.0
|
||||
(signed word~) sin16s::return#5 return zp ZP_WORD:8 4.0
|
||||
(signed word) sin16s::sinx
|
||||
(signed word) sin16s::sinx#1 sinx zp ZP_WORD:8 4.0
|
||||
(word) sin16s::usinx
|
||||
(word) sin16s::usinx#0 usinx zp ZP_WORD:8 0.3333333333333333
|
||||
(word) sin16s::usinx#1 usinx zp ZP_WORD:8 1.0
|
||||
(dword) sin16s::x
|
||||
(dword) sin16s::x#0 x zp ZP_DWORD:21 8.5
|
||||
(dword) sin16s::x#1 x zp ZP_DWORD:21 4.0
|
||||
(dword) sin16s::x#2 x zp ZP_DWORD:21 4.0
|
||||
(dword) sin16s::x#4 x zp ZP_DWORD:21 5.0
|
||||
(dword) sin16s::x#6 x zp ZP_DWORD:21 6.0
|
||||
(word) sin16s::x1
|
||||
(word) sin16s::x1#0 x1 zp ZP_WORD:33 0.6363636363636365
|
||||
(word) sin16s::x2
|
||||
(word) sin16s::x2#0 x2 zp ZP_WORD:11 4.0
|
||||
(word) sin16s::x3
|
||||
(word) sin16s::x3#0 x3 zp ZP_WORD:11 1.0
|
||||
(word) sin16s::x3_6
|
||||
(word) sin16s::x3_6#0 x3_6 zp ZP_WORD:17 4.0
|
||||
(word) sin16s::x4
|
||||
(word) sin16s::x4#0 x4 zp ZP_WORD:11 4.0
|
||||
(word) sin16s::x5
|
||||
(word) sin16s::x5#0 x5 zp ZP_WORD:17 4.0
|
||||
(word) sin16s::x5_128
|
||||
(word) sin16s::x5_128#0 x5_128 zp ZP_WORD:17 4.0
|
||||
(void()) sin16s_gen((signed word*) sin16s_gen::sintab , (word) sin16s_gen::wavelength)
|
||||
(signed word~) sin16s_gen::$1 $1 zp ZP_WORD:8 22.0
|
||||
(label) sin16s_gen::@1
|
||||
(label) sin16s_gen::@3
|
||||
(label) sin16s_gen::@4
|
||||
(label) sin16s_gen::@return
|
||||
(word) sin16s_gen::i
|
||||
(word) sin16s_gen::i#1 i zp ZP_WORD:6 16.5
|
||||
(word) sin16s_gen::i#2 i zp ZP_WORD:6 2.75
|
||||
(signed word*) sin16s_gen::sintab
|
||||
(signed word*) sin16s_gen::sintab#0 sintab zp ZP_WORD:2 5.5
|
||||
(signed word*) sin16s_gen::sintab#2 sintab zp ZP_WORD:2 5.5
|
||||
(dword) sin16s_gen::step
|
||||
(dword) sin16s_gen::step#0 step zp ZP_DWORD:29 1.1818181818181819
|
||||
(word) sin16s_gen::wavelength
|
||||
(dword) sin16s_gen::x
|
||||
(dword) sin16s_gen::x#1 x zp ZP_DWORD:13 7.333333333333333
|
||||
(dword) sin16s_gen::x#2 x zp ZP_DWORD:13 4.714285714285714
|
||||
(void()) sin16s_genb((signed word*) sin16s_genb::sintab , (word) sin16s_genb::wavelength)
|
||||
(signed word~) sin16s_genb::$2 $2 zp ZP_WORD:8 22.0
|
||||
(label) sin16s_genb::@1
|
||||
(label) sin16s_genb::@3
|
||||
(label) sin16s_genb::@4
|
||||
(label) sin16s_genb::@return
|
||||
(word) sin16s_genb::i
|
||||
(word) sin16s_genb::i#1 i zp ZP_WORD:4 16.5
|
||||
(word) sin16s_genb::i#2 i zp ZP_WORD:4 2.75
|
||||
(signed word*) sin16s_genb::sintab
|
||||
(signed word*) sin16s_genb::sintab#0 sintab zp ZP_WORD:2 5.5
|
||||
(signed word*) sin16s_genb::sintab#2 sintab zp ZP_WORD:2 5.5
|
||||
(dword) sin16s_genb::step
|
||||
(dword) sin16s_genb::step#0 step zp ZP_DWORD:29 1.1818181818181819
|
||||
(word) sin16s_genb::wavelength
|
||||
(dword) sin16s_genb::x
|
||||
(dword) sin16s_genb::x#1 x zp ZP_DWORD:13 7.333333333333333
|
||||
(dword) sin16s_genb::x#2 x zp ZP_DWORD:13 4.714285714285714
|
||||
(signed word()) sin16sb((word) sin16sb::x)
|
||||
(label) sin16sb::@1
|
||||
(label) sin16sb::@10
|
||||
(label) sin16sb::@11
|
||||
(label) sin16sb::@12
|
||||
(label) sin16sb::@15
|
||||
(label) sin16sb::@2
|
||||
(label) sin16sb::@3
|
||||
(label) sin16sb::@4
|
||||
(label) sin16sb::@5
|
||||
(label) sin16sb::@6
|
||||
(label) sin16sb::@8
|
||||
(label) sin16sb::@9
|
||||
(label) sin16sb::@return
|
||||
(byte) sin16sb::isUpper
|
||||
(byte) sin16sb::isUpper#2 isUpper zp ZP_BYTE:10 0.0625
|
||||
(signed word) sin16sb::return
|
||||
(signed word) sin16sb::return#0 return zp ZP_WORD:8 22.0
|
||||
(signed word) sin16sb::return#1 return zp ZP_WORD:8 5.0
|
||||
(signed word~) sin16sb::return#5 return zp ZP_WORD:8 4.0
|
||||
(signed word) sin16sb::sinx
|
||||
(signed word) sin16sb::sinx#1 sinx zp ZP_WORD:8 4.0
|
||||
(word) sin16sb::usinx
|
||||
(word) sin16sb::usinx#0 usinx zp ZP_WORD:8 0.3333333333333333
|
||||
(word) sin16sb::usinx#1 usinx zp ZP_WORD:8 1.0
|
||||
(word) sin16sb::x
|
||||
(word) sin16sb::x#0 x zp ZP_WORD:6 8.5
|
||||
(word) sin16sb::x#1 x zp ZP_WORD:6 4.0
|
||||
(word) sin16sb::x#2 x zp ZP_WORD:6 4.0
|
||||
(word) sin16sb::x#4 x zp ZP_WORD:6 5.0
|
||||
(word) sin16sb::x#6 x zp ZP_WORD:6 6.0
|
||||
(word) sin16sb::x1
|
||||
(word) sin16sb::x1#0 x1 zp ZP_WORD:6 0.6363636363636365
|
||||
(word) sin16sb::x2
|
||||
(word) sin16sb::x2#0 x2 zp ZP_WORD:11 4.0
|
||||
(word) sin16sb::x3
|
||||
(word) sin16sb::x3#0 x3 zp ZP_WORD:11 1.0
|
||||
(word) sin16sb::x3_6
|
||||
(word) sin16sb::x3_6#0 x3_6 zp ZP_WORD:17 4.0
|
||||
(word) sin16sb::x4
|
||||
(word) sin16sb::x4#0 x4 zp ZP_WORD:11 4.0
|
||||
(word) sin16sb::x5
|
||||
(word) sin16sb::x5#0 x5 zp ZP_WORD:17 4.0
|
||||
(word) sin16sb::x5_128
|
||||
(word) sin16sb::x5_128#0 x5_128 zp ZP_WORD:17 4.0
|
||||
|
||||
zp ZP_WORD:2 [ main::st1#2 main::st1#1 print_cls::sc#2 print_cls::sc#1 sin16s_genb::sintab#2 sin16s_genb::sintab#0 div32u16u::divisor#2 divr16u::divisor#6 divr16u::divisor#0 divr16u::divisor#1 sin16s_gen::sintab#2 sin16s_gen::sintab#0 ]
|
||||
zp ZP_WORD:4 [ main::st2#2 main::st2#1 sin16s_genb::i#2 sin16s_genb::i#1 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 rem16u#26 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ]
|
||||
reg byte x [ main::i#2 main::i#1 ]
|
||||
zp ZP_WORD:6 [ print_str::str#3 print_str::str#5 print_str::str#0 sin16sb::x#6 sin16sb::x#4 sin16sb::x#0 sin16sb::x#1 sin16sb::x#2 sin16sb::x1#0 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#1 divr16u::dividend#2 divr16u::dividend#0 sin16s_gen::i#2 sin16s_gen::i#1 ]
|
||||
zp ZP_WORD:8 [ print_sword::w#3 print_sword::w#1 print_sword::w#0 main::sw#0 sin16sb::return#1 sin16sb::return#5 sin16sb::sinx#1 sin16sb::usinx#1 sin16sb::return#0 sin16s_genb::$2 sin16sb::usinx#0 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 sin16s::return#1 sin16s::return#5 sin16s::sinx#1 sin16s::usinx#1 sin16s::return#0 sin16s_gen::$1 sin16s::usinx#0 ]
|
||||
zp ZP_BYTE:10 [ print_byte::b#2 print_byte::b#0 print_byte::b#1 sin16sb::isUpper#2 sin16s::isUpper#2 ]
|
||||
reg byte a [ print_char::ch#3 print_char::ch#1 print_char::ch#2 ]
|
||||
zp ZP_WORD:11 [ char_cursor#33 char_cursor#46 char_cursor#43 char_cursor#51 char_cursor#48 char_cursor#49 char_cursor#2 char_cursor#12 char_cursor#1 mulu16_sel::v1#10 mulu16_sel::v1#3 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#8 mulu16_sel::v1#9 mulu16_sel::v1#5 mulu16_sel::v1#6 mulu16_sel::v1#7 sin16sb::x3#0 sin16s::x3#0 sin16sb::x2#0 sin16sb::x4#0 sin16s::x2#0 sin16s::x4#0 mulu16_sel::return#19 mulu16_sel::return#10 mulu16_sel::return#0 mulu16_sel::return#1 mulu16_sel::return#15 div32u16u::quotient_hi#0 ]
|
||||
zp ZP_DWORD:13 [ sin16s_genb::x#2 sin16s_genb::x#1 div32u16u::dividend#2 sin16s_gen::x#2 sin16s_gen::x#1 ]
|
||||
zp ZP_WORD:17 [ mulu16_sel::v2#10 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#8 mulu16_sel::v2#9 mulu16_sel::v2#5 mulu16_sel::v2#6 mul16u::b#0 mulu16_sel::return#18 mulu16_sel::return#17 mulu16_sel::return#20 sin16sb::x3_6#0 mulu16_sel::return#11 sin16sb::x5#0 mulu16_sel::return#14 sin16s::x3_6#0 mulu16_sel::return#16 sin16s::x5#0 sin16sb::x5_128#0 sin16s::x5_128#0 ]
|
||||
reg byte x [ mulu16_sel::select#10 ]
|
||||
zp ZP_WORD:19 [ mul16u::a#2 mul16u::a#1 mul16u::a#0 ]
|
||||
zp ZP_DWORD:21 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 mul16u::return#2 mulu16_sel::$0 mulu16_sel::$1 sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 sin16s::$6 ]
|
||||
zp ZP_DWORD:25 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ]
|
||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||
reg byte a [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$2 ]
|
||||
zp ZP_DWORD:29 [ div32u16u::return#3 sin16s_genb::step#0 div32u16u::return#0 div32u16u::return#2 sin16s_gen::step#0 ]
|
||||
reg byte a [ mul16u::$1 ]
|
||||
reg byte a [ divr16u::$1 ]
|
||||
reg byte a [ divr16u::$2 ]
|
||||
zp ZP_WORD:33 [ sin16s::x1#0 ]
|
@ -5,7 +5,7 @@
|
||||
.const PI_u4f12 = $3244
|
||||
.const PI_HALF_u4f12 = $1922
|
||||
.label SCREEN = $400
|
||||
.label char_cursor = $b
|
||||
.label char_cursor = $d
|
||||
.label line_cursor = 8
|
||||
jsr main
|
||||
main: {
|
||||
@ -20,9 +20,10 @@ sin8u_table: {
|
||||
.const max = $ff
|
||||
.label amplitude = max-min
|
||||
.const sum = min+max
|
||||
.const mid = $ff & sum>>1
|
||||
.label _17 = $b
|
||||
.label step = $10
|
||||
.const mid = $ff & (sum>>1)+1
|
||||
.label step = $12
|
||||
.label sinx = $11
|
||||
.label sinx_sc = $f
|
||||
.label sintab = 4
|
||||
.label x = 2
|
||||
.label i = 6
|
||||
@ -94,9 +95,10 @@ sin8u_table: {
|
||||
lda x+1
|
||||
sta sin8s.x+1
|
||||
jsr sin8s
|
||||
sta sinx
|
||||
tay
|
||||
jsr mul8su
|
||||
lda _17+1
|
||||
lda sinx_sc+1
|
||||
clc
|
||||
adc #mid
|
||||
tax
|
||||
@ -116,12 +118,34 @@ sin8u_table: {
|
||||
lda #>str5
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
lda x
|
||||
sta print_word.w
|
||||
lda x+1
|
||||
sta print_word.w+1
|
||||
jsr print_word
|
||||
lda #<str6
|
||||
sta print_str.str
|
||||
lda #>str6
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
lda sinx
|
||||
sta print_sbyte.b
|
||||
jsr print_sbyte
|
||||
lda #<str7
|
||||
sta print_str.str
|
||||
lda #>str7
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
lda sinx_sc
|
||||
sta print_sword.w
|
||||
lda sinx_sc+1
|
||||
sta print_sword.w+1
|
||||
jsr print_sword
|
||||
lda #<str8
|
||||
sta print_str.str
|
||||
lda #>str8
|
||||
sta print_str.str+1
|
||||
jsr print_str
|
||||
stx print_byte.b
|
||||
jsr print_byte
|
||||
jsr print_ln
|
||||
@ -138,11 +162,15 @@ sin8u_table: {
|
||||
!:
|
||||
lda i+1
|
||||
cmp #>main.tabsize
|
||||
bcc b1
|
||||
bcs !b1+
|
||||
jmp b1
|
||||
!b1:
|
||||
bne !+
|
||||
lda i
|
||||
cmp #<main.tabsize
|
||||
bcc b1
|
||||
bcs !b1+
|
||||
jmp b1
|
||||
!b1:
|
||||
!:
|
||||
rts
|
||||
str: .text "step:@"
|
||||
@ -152,6 +180,8 @@ sin8u_table: {
|
||||
str4: .text " mid:@"
|
||||
str5: .text "x: @"
|
||||
str6: .text " sin: @"
|
||||
str7: .text " scaled: @"
|
||||
str8: .text " trans: @"
|
||||
}
|
||||
print_ln: {
|
||||
b1:
|
||||
@ -200,7 +230,7 @@ print_char: {
|
||||
rts
|
||||
}
|
||||
print_str: {
|
||||
.label str = $d
|
||||
.label str = $b
|
||||
b1:
|
||||
ldy #0
|
||||
lda (str),y
|
||||
@ -221,8 +251,27 @@ print_str: {
|
||||
!:
|
||||
jmp b1
|
||||
}
|
||||
print_sword: {
|
||||
.label w = $b
|
||||
lda w+1
|
||||
bpl b1
|
||||
lda #'-'
|
||||
jsr print_char
|
||||
sec
|
||||
lda w
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta w
|
||||
lda w+1
|
||||
eor #$ff
|
||||
adc #0
|
||||
sta w+1
|
||||
b1:
|
||||
jsr print_word
|
||||
rts
|
||||
}
|
||||
print_word: {
|
||||
.label w = 2
|
||||
.label w = $b
|
||||
lda w+1
|
||||
sta print_byte.b
|
||||
jsr print_byte
|
||||
@ -231,26 +280,43 @@ print_word: {
|
||||
jsr print_byte
|
||||
rts
|
||||
}
|
||||
print_sbyte: {
|
||||
.label b = $a
|
||||
lda b
|
||||
cmp #0
|
||||
bpl b1
|
||||
lda #'-'
|
||||
jsr print_char
|
||||
lda b
|
||||
eor #$ff
|
||||
clc
|
||||
adc #1
|
||||
sta b
|
||||
b1:
|
||||
jsr print_byte
|
||||
rts
|
||||
}
|
||||
mul8su: {
|
||||
.label m = $b
|
||||
.label return = $b
|
||||
.const b = sin8u_table.amplitude+1
|
||||
.label m = $f
|
||||
.label return = $f
|
||||
tya
|
||||
tax
|
||||
lda #sin8u_table.amplitude
|
||||
lda #b
|
||||
jsr mul8u
|
||||
cpy #0
|
||||
bpl b1
|
||||
lda m+1
|
||||
sec
|
||||
sbc #sin8u_table.amplitude
|
||||
sbc #b
|
||||
sta m+1
|
||||
b1:
|
||||
rts
|
||||
}
|
||||
mul8u: {
|
||||
.label mb = $d
|
||||
.label res = $b
|
||||
.label return = $b
|
||||
.label mb = $b
|
||||
.label res = $f
|
||||
.label return = $f
|
||||
sta mb
|
||||
lda #0
|
||||
sta mb+1
|
||||
@ -284,9 +350,9 @@ sin8s: {
|
||||
.const DIV_6 = $2b
|
||||
.label _6 = $b
|
||||
.label x = $b
|
||||
.label x1 = $12
|
||||
.label x3 = $13
|
||||
.label usinx = $14
|
||||
.label x1 = $14
|
||||
.label x3 = $15
|
||||
.label usinx = $16
|
||||
.label isUpper = $a
|
||||
lda x+1
|
||||
cmp #>PI_u4f12
|
||||
@ -388,9 +454,9 @@ sin8s: {
|
||||
jmp b4
|
||||
}
|
||||
mulu8_sel: {
|
||||
.label _0 = $b
|
||||
.label _1 = $b
|
||||
.label select = $f
|
||||
.label _0 = $f
|
||||
.label _1 = $f
|
||||
.label select = $11
|
||||
tya
|
||||
jsr mul8u
|
||||
ldy select
|
||||
@ -405,15 +471,15 @@ mulu8_sel: {
|
||||
rts
|
||||
}
|
||||
div16u: {
|
||||
.label return = $10
|
||||
.label return = $12
|
||||
jsr divr16u
|
||||
rts
|
||||
}
|
||||
divr16u: {
|
||||
.label rem = 2
|
||||
.label dividend = 4
|
||||
.label quotient = $10
|
||||
.label return = $10
|
||||
.label quotient = $12
|
||||
.label return = $12
|
||||
ldx #0
|
||||
txa
|
||||
sta quotient
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -10,21 +10,24 @@
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||
(byte*) char_cursor
|
||||
(byte*) char_cursor#1 char_cursor zp ZP_WORD:11 101.0
|
||||
(byte*) char_cursor#11 char_cursor zp ZP_WORD:11 4.344827586206896
|
||||
(byte*) char_cursor#2 char_cursor zp ZP_WORD:11 16.3
|
||||
(byte*) char_cursor#46 char_cursor zp ZP_WORD:11 4.0
|
||||
(byte*) char_cursor#73 char_cursor zp ZP_WORD:11 8.333333333333334
|
||||
(byte*) char_cursor#78 char_cursor zp ZP_WORD:11 32.0
|
||||
(byte*~) char_cursor#92 char_cursor zp ZP_WORD:11 22.0
|
||||
(byte*) char_cursor#1 char_cursor zp ZP_WORD:13 101.0
|
||||
(byte*) char_cursor#102 char_cursor zp ZP_WORD:13 54.0
|
||||
(byte*~) char_cursor#121 char_cursor zp ZP_WORD:13 22.0
|
||||
(byte*) char_cursor#17 char_cursor zp ZP_WORD:13 3.7073170731707323
|
||||
(byte*) char_cursor#2 char_cursor zp ZP_WORD:13 13.269230769230768
|
||||
(byte*) char_cursor#62 char_cursor zp ZP_WORD:13 6.0
|
||||
(byte*) char_cursor#92 char_cursor zp ZP_WORD:13 3.0
|
||||
(byte*) char_cursor#94 char_cursor zp ZP_WORD:13 3.0
|
||||
(byte*) char_cursor#96 char_cursor zp ZP_WORD:13 8.5
|
||||
(byte*) char_cursor#97 char_cursor zp ZP_WORD:13 9.0
|
||||
(word()) div16u((word) div16u::dividend , (word) div16u::divisor)
|
||||
(label) div16u::@2
|
||||
(label) div16u::@return
|
||||
(word) div16u::dividend
|
||||
(word) div16u::divisor
|
||||
(word) div16u::return
|
||||
(word) div16u::return#0 return zp ZP_WORD:16 1.3333333333333333
|
||||
(word) div16u::return#2 return zp ZP_WORD:16 4.0
|
||||
(word) div16u::return#0 return zp ZP_WORD:18 1.3333333333333333
|
||||
(word) div16u::return#2 return zp ZP_WORD:18 4.0
|
||||
(word()) divr16u((word) divr16u::dividend , (word) divr16u::divisor , (word) divr16u::rem)
|
||||
(byte~) divr16u::$1 reg byte a 22.0
|
||||
(byte~) divr16u::$2 reg byte a 22.0
|
||||
@ -42,9 +45,9 @@
|
||||
(byte) divr16u::i#1 reg byte x 16.5
|
||||
(byte) divr16u::i#2 reg byte x 1.6923076923076923
|
||||
(word) divr16u::quotient
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:16 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:16 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:16 2.75
|
||||
(word) divr16u::quotient#1 quotient zp ZP_WORD:18 16.5
|
||||
(word) divr16u::quotient#2 quotient zp ZP_WORD:18 11.0
|
||||
(word) divr16u::quotient#3 quotient zp ZP_WORD:18 2.75
|
||||
(word) divr16u::rem
|
||||
(word) divr16u::rem#0 rem zp ZP_WORD:2 8.25
|
||||
(word) divr16u::rem#1 rem zp ZP_WORD:2 22.0
|
||||
@ -53,10 +56,10 @@
|
||||
(word) divr16u::rem#4 rem zp ZP_WORD:2 22.0
|
||||
(word) divr16u::rem#5 rem zp ZP_WORD:2 11.0
|
||||
(word) divr16u::return
|
||||
(word) divr16u::return#0 return zp ZP_WORD:16 7.000000000000001
|
||||
(word) divr16u::return#2 return zp ZP_WORD:16 4.0
|
||||
(word) divr16u::return#0 return zp ZP_WORD:18 7.000000000000001
|
||||
(word) divr16u::return#2 return zp ZP_WORD:18 4.0
|
||||
(byte*) line_cursor
|
||||
(byte*) line_cursor#1 line_cursor zp ZP_WORD:8 11.206896551724137
|
||||
(byte*) line_cursor#1 line_cursor zp ZP_WORD:8 8.55263157894737
|
||||
(byte*) line_cursor#12 line_cursor zp ZP_WORD:8 204.0
|
||||
(byte*) line_cursor#23 line_cursor zp ZP_WORD:8 13.0
|
||||
(void()) main()
|
||||
@ -76,12 +79,13 @@
|
||||
(signed byte) mul8su::a
|
||||
(signed byte) mul8su::a#0 reg byte y 2.6
|
||||
(byte) mul8su::b
|
||||
(const byte) mul8su::b#0 b = (const byte) sin8u_table::amplitude#0+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(word) mul8su::m
|
||||
(word) mul8su::m#0 m zp ZP_WORD:11 2.0
|
||||
(word) mul8su::m#1 m zp ZP_WORD:11 4.0
|
||||
(word) mul8su::m#2 m zp ZP_WORD:11 1.3333333333333333
|
||||
(word) mul8su::m#0 m zp ZP_WORD:15 2.0
|
||||
(word) mul8su::m#1 m zp ZP_WORD:15 4.0
|
||||
(word) mul8su::m#2 m zp ZP_WORD:15 1.3333333333333333
|
||||
(signed word) mul8su::return
|
||||
(signed word) mul8su::return#2 return zp ZP_WORD:11 22.0
|
||||
(signed word) mul8su::return#2 return zp ZP_WORD:15 22.0
|
||||
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
|
||||
(byte~) mul8u::$1 reg byte a 202.0
|
||||
(label) mul8u::@1
|
||||
@ -99,19 +103,19 @@
|
||||
(byte) mul8u::b#1 reg byte a 4.0
|
||||
(byte) mul8u::b#2 reg byte a 4.0
|
||||
(word) mul8u::mb
|
||||
(word) mul8u::mb#0 mb zp ZP_WORD:13 4.0
|
||||
(word) mul8u::mb#1 mb zp ZP_WORD:13 202.0
|
||||
(word) mul8u::mb#2 mb zp ZP_WORD:13 43.57142857142858
|
||||
(word) mul8u::mb#0 mb zp ZP_WORD:11 4.0
|
||||
(word) mul8u::mb#1 mb zp ZP_WORD:11 202.0
|
||||
(word) mul8u::mb#2 mb zp ZP_WORD:11 43.57142857142858
|
||||
(word) mul8u::res
|
||||
(word) mul8u::res#1 res zp ZP_WORD:11 202.0
|
||||
(word) mul8u::res#2 res zp ZP_WORD:11 43.85714285714286
|
||||
(word) mul8u::res#6 res zp ZP_WORD:11 101.0
|
||||
(word) mul8u::res#1 res zp ZP_WORD:15 202.0
|
||||
(word) mul8u::res#2 res zp ZP_WORD:15 43.85714285714286
|
||||
(word) mul8u::res#6 res zp ZP_WORD:15 101.0
|
||||
(word) mul8u::return
|
||||
(word) mul8u::return#2 return zp ZP_WORD:11 4.0
|
||||
(word) mul8u::return#3 return zp ZP_WORD:11 4.0
|
||||
(word) mul8u::return#2 return zp ZP_WORD:15 4.0
|
||||
(word) mul8u::return#3 return zp ZP_WORD:15 4.0
|
||||
(byte()) mulu8_sel((byte) mulu8_sel::v1 , (byte) mulu8_sel::v2 , (byte) mulu8_sel::select)
|
||||
(word~) mulu8_sel::$0 $0 zp ZP_WORD:11 4.0
|
||||
(word~) mulu8_sel::$1 $1 zp ZP_WORD:11 4.0
|
||||
(word~) mulu8_sel::$0 $0 zp ZP_WORD:15 4.0
|
||||
(word~) mulu8_sel::$1 $1 zp ZP_WORD:15 4.0
|
||||
(label) mulu8_sel::@2
|
||||
(label) mulu8_sel::@return
|
||||
(byte) mulu8_sel::return
|
||||
@ -122,7 +126,7 @@
|
||||
(byte) mulu8_sel::return#12 reg byte a 1.714285714285714
|
||||
(byte) mulu8_sel::return#2 reg byte a 4.0
|
||||
(byte) mulu8_sel::select
|
||||
(byte) mulu8_sel::select#5 select zp ZP_BYTE:15 0.3333333333333333
|
||||
(byte) mulu8_sel::select#5 select zp ZP_BYTE:17 0.3333333333333333
|
||||
(byte) mulu8_sel::v1
|
||||
(byte) mulu8_sel::v1#0 reg byte x 2.0
|
||||
(byte) mulu8_sel::v1#1 reg byte x 2.0
|
||||
@ -142,18 +146,19 @@
|
||||
(label) print_byte::@1
|
||||
(label) print_byte::@return
|
||||
(byte) print_byte::b
|
||||
(byte) print_byte::b#0 b zp ZP_BYTE:10 4.0
|
||||
(byte) print_byte::b#1 b zp ZP_BYTE:10 4.0
|
||||
(byte) print_byte::b#6 b zp ZP_BYTE:10 22.0
|
||||
(byte) print_byte::b#7 b zp ZP_BYTE:10 4.75
|
||||
(byte~) print_byte::b#10 b zp ZP_BYTE:10 4.0
|
||||
(byte) print_byte::b#2 b zp ZP_BYTE:10 4.0
|
||||
(byte) print_byte::b#7 b zp ZP_BYTE:10 22.0
|
||||
(byte) print_byte::b#8 b zp ZP_BYTE:10 5.25
|
||||
(byte[]) print_byte::hextab
|
||||
(const string) print_byte::hextab#0 hextab = (string) "0123456789abcdef"
|
||||
(void()) print_char((byte) print_char::ch)
|
||||
(label) print_char::@return
|
||||
(byte) print_char::ch
|
||||
(byte) print_char::ch#0 reg byte a 4.0
|
||||
(byte) print_char::ch#1 reg byte a 4.0
|
||||
(byte) print_char::ch#2 reg byte a 6.0
|
||||
(byte) print_char::ch#2 reg byte a 4.0
|
||||
(byte) print_char::ch#3 reg byte a 4.0
|
||||
(byte) print_char::ch#4 reg byte a 6.0
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
(label) print_cls::@return
|
||||
@ -163,21 +168,40 @@
|
||||
(void()) print_ln()
|
||||
(label) print_ln::@1
|
||||
(label) print_ln::@return
|
||||
(void()) print_sbyte((signed byte) print_sbyte::b)
|
||||
(label) print_sbyte::@1
|
||||
(label) print_sbyte::@2
|
||||
(label) print_sbyte::@4
|
||||
(label) print_sbyte::@return
|
||||
(signed byte) print_sbyte::b
|
||||
(signed byte) print_sbyte::b#0 b zp ZP_BYTE:10 4.0
|
||||
(signed byte) print_sbyte::b#1 b zp ZP_BYTE:10 4.25
|
||||
(signed byte) print_sbyte::b#3 b zp ZP_BYTE:10 4.0
|
||||
(void()) print_str((byte*) print_str::str)
|
||||
(label) print_str::@1
|
||||
(label) print_str::@2
|
||||
(label) print_str::@return
|
||||
(byte*) print_str::str
|
||||
(byte*) print_str::str#0 str zp ZP_WORD:13 202.0
|
||||
(byte*) print_str::str#10 str zp ZP_WORD:13 2.0
|
||||
(byte*) print_str::str#8 str zp ZP_WORD:13 101.5
|
||||
(byte*) print_str::str#0 str zp ZP_WORD:11 202.0
|
||||
(byte*) print_str::str#10 str zp ZP_WORD:11 101.5
|
||||
(byte*) print_str::str#12 str zp ZP_WORD:11 2.0
|
||||
(void()) print_sword((signed word) print_sword::w)
|
||||
(label) print_sword::@1
|
||||
(label) print_sword::@2
|
||||
(label) print_sword::@4
|
||||
(label) print_sword::@return
|
||||
(signed word) print_sword::w
|
||||
(signed word) print_sword::w#0 w zp ZP_WORD:11 4.0
|
||||
(signed word) print_sword::w#1 w zp ZP_WORD:11 4.25
|
||||
(signed word) print_sword::w#3 w zp ZP_WORD:11 4.0
|
||||
(void()) print_word((word) print_word::w)
|
||||
(label) print_word::@1
|
||||
(label) print_word::@return
|
||||
(word) print_word::w
|
||||
(word) print_word::w#0 w zp ZP_WORD:2 4.0
|
||||
(word) print_word::w#1 w zp ZP_WORD:2 22.0
|
||||
(word) print_word::w#2 w zp ZP_WORD:2 5.666666666666667
|
||||
(word) print_word::w#1 w zp ZP_WORD:11 4.0
|
||||
(word) print_word::w#2 w zp ZP_WORD:11 22.0
|
||||
(word) print_word::w#3 w zp ZP_WORD:11 6.333333333333334
|
||||
(word~) print_word::w#5 w zp ZP_WORD:11 4.0
|
||||
(word) rem16u
|
||||
(signed byte()) sin8s((word) sin8s::x)
|
||||
(word~) sin8s::$6 $6 zp ZP_WORD:11 4.0
|
||||
@ -207,7 +231,7 @@
|
||||
(signed byte) sin8s::sinx
|
||||
(signed byte) sin8s::sinx#1 reg byte a 4.0
|
||||
(byte) sin8s::usinx
|
||||
(byte) sin8s::usinx#0 usinx zp ZP_BYTE:20 0.3333333333333333
|
||||
(byte) sin8s::usinx#0 usinx zp ZP_BYTE:22 0.3333333333333333
|
||||
(byte) sin8s::usinx#1 reg byte x 4.0
|
||||
(byte) sin8s::usinx#2 reg byte x 4.0
|
||||
(byte) sin8s::usinx#4 reg byte x 2.0
|
||||
@ -218,11 +242,11 @@
|
||||
(word) sin8s::x#4 x zp ZP_WORD:11 5.0
|
||||
(word) sin8s::x#6 x zp ZP_WORD:11 6.0
|
||||
(byte) sin8s::x1
|
||||
(byte) sin8s::x1#0 x1 zp ZP_BYTE:18 0.6363636363636365
|
||||
(byte) sin8s::x1#0 x1 zp ZP_BYTE:20 0.6363636363636365
|
||||
(byte) sin8s::x2
|
||||
(byte) sin8s::x2#0 reg byte a 4.0
|
||||
(byte) sin8s::x3
|
||||
(byte) sin8s::x3#0 x3 zp ZP_BYTE:19 1.0
|
||||
(byte) sin8s::x3#0 x3 zp ZP_BYTE:21 1.0
|
||||
(byte) sin8s::x3_6
|
||||
(byte) sin8s::x3_6#0 reg byte a 4.0
|
||||
(byte) sin8s::x4
|
||||
@ -232,8 +256,7 @@
|
||||
(byte) sin8s::x5_128
|
||||
(byte) sin8s::x5_128#0 reg byte a 4.0
|
||||
(void()) sin8u_table((byte*) sin8u_table::sintab , (word) sin8u_table::tabsize , (byte) sin8u_table::min , (byte) sin8u_table::max)
|
||||
(signed word~) sin8u_table::$17 $17 zp ZP_WORD:11 22.0
|
||||
(byte~) sin8u_table::$18 reg byte a 22.0
|
||||
(byte~) sin8u_table::$20 reg byte a 22.0
|
||||
(label) sin8u_table::@1
|
||||
(label) sin8u_table::@10
|
||||
(label) sin8u_table::@11
|
||||
@ -246,6 +269,10 @@
|
||||
(label) sin8u_table::@19
|
||||
(label) sin8u_table::@20
|
||||
(label) sin8u_table::@21
|
||||
(label) sin8u_table::@22
|
||||
(label) sin8u_table::@23
|
||||
(label) sin8u_table::@24
|
||||
(label) sin8u_table::@25
|
||||
(label) sin8u_table::@3
|
||||
(label) sin8u_table::@4
|
||||
(label) sin8u_table::@5
|
||||
@ -258,20 +285,24 @@
|
||||
(const byte) sin8u_table::amplitude#0 amplitude = (const byte) sin8u_table::max#0-(const byte) sin8u_table::min#0
|
||||
(word) sin8u_table::i
|
||||
(word) sin8u_table::i#1 i zp ZP_WORD:6 16.5
|
||||
(word) sin8u_table::i#2 i zp ZP_WORD:6 0.9565217391304348
|
||||
(word) sin8u_table::i#10 i zp ZP_WORD:6 0.6875
|
||||
(byte) sin8u_table::max
|
||||
(const byte) sin8u_table::max#0 max = (byte/word/signed word/dword/signed dword) 255
|
||||
(byte) sin8u_table::mid
|
||||
(const byte) sin8u_table::mid#0 mid = ((byte))(const word) sin8u_table::sum#0>>(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(const byte) sin8u_table::mid#0 mid = ((byte))(const word) sin8u_table::sum#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) sin8u_table::min
|
||||
(const byte) sin8u_table::min#0 min = (byte/signed byte/word/signed word/dword/signed dword) 10
|
||||
(byte*) sin8u_table::sintab
|
||||
(byte*) sin8u_table::sintab#1 sintab zp ZP_WORD:4 1.5714285714285714
|
||||
(byte*) sin8u_table::sintab#2 sintab zp ZP_WORD:4 3.0
|
||||
(byte) sin8u_table::sinval
|
||||
(byte) sin8u_table::sinval#0 reg byte x 3.666666666666667
|
||||
(byte*) sin8u_table::sintab#1 sintab zp ZP_WORD:4 1.0
|
||||
(byte*) sin8u_table::sintab#2 sintab zp ZP_WORD:4 2.75
|
||||
(signed byte) sin8u_table::sinx
|
||||
(signed byte) sin8u_table::sinx#0 sinx zp ZP_BYTE:17 2.1999999999999997
|
||||
(signed word) sin8u_table::sinx_sc
|
||||
(signed word) sin8u_table::sinx_sc#0 sinx_sc zp ZP_WORD:15 2.1999999999999997
|
||||
(byte) sin8u_table::sinx_tr
|
||||
(byte) sin8u_table::sinx_tr#0 reg byte x 1.9411764705882355
|
||||
(word) sin8u_table::step
|
||||
(word) sin8u_table::step#0 step zp ZP_WORD:16 0.3191489361702128
|
||||
(word) sin8u_table::step#0 step zp ZP_WORD:18 0.26785714285714285
|
||||
(const string) sin8u_table::str str = (string) "step:@"
|
||||
(const string) sin8u_table::str1 str1 = (string) " min:@"
|
||||
(const string) sin8u_table::str2 str2 = (string) " max:@"
|
||||
@ -279,47 +310,50 @@
|
||||
(const string) sin8u_table::str4 str4 = (string) " mid:@"
|
||||
(const string) sin8u_table::str5 str5 = (string) "x: @"
|
||||
(const string) sin8u_table::str6 str6 = (string) " sin: @"
|
||||
(const string) sin8u_table::str7 str7 = (string) " scaled: @"
|
||||
(const string) sin8u_table::str8 str8 = (string) " trans: @"
|
||||
(word) sin8u_table::sum
|
||||
(const word) sin8u_table::sum#0 sum = (const byte) sin8u_table::min#0+(const byte) sin8u_table::max#0
|
||||
(word) sin8u_table::tabsize
|
||||
(word) sin8u_table::x
|
||||
(word) sin8u_table::x#1 x zp ZP_WORD:2 7.333333333333333
|
||||
(word) sin8u_table::x#2 x zp ZP_WORD:2 2.0
|
||||
(word) sin8u_table::x#10 x zp ZP_WORD:2 1.4193548387096775
|
||||
|
||||
zp ZP_WORD:2 [ sin8u_table::x#2 sin8u_table::x#1 print_word::w#2 print_word::w#1 print_word::w#0 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 print_cls::sc#2 print_cls::sc#1 ]
|
||||
zp ZP_WORD:2 [ sin8u_table::x#10 sin8u_table::x#1 divr16u::rem#4 divr16u::rem#10 divr16u::rem#5 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 print_cls::sc#2 print_cls::sc#1 ]
|
||||
zp ZP_WORD:4 [ sin8u_table::sintab#2 sin8u_table::sintab#1 divr16u::dividend#2 divr16u::dividend#0 ]
|
||||
zp ZP_WORD:6 [ sin8u_table::i#2 sin8u_table::i#1 ]
|
||||
zp ZP_WORD:6 [ sin8u_table::i#10 sin8u_table::i#1 ]
|
||||
zp ZP_WORD:8 [ line_cursor#12 line_cursor#23 line_cursor#1 ]
|
||||
zp ZP_BYTE:10 [ print_byte::b#7 print_byte::b#0 print_byte::b#1 print_byte::b#6 sin8s::isUpper#10 ]
|
||||
reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ]
|
||||
zp ZP_WORD:11 [ char_cursor#78 char_cursor#46 char_cursor#73 char_cursor#2 char_cursor#11 char_cursor#92 char_cursor#1 mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::$17 mulu8_sel::$0 mulu8_sel::$1 sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$6 ]
|
||||
zp ZP_WORD:13 [ print_str::str#8 print_str::str#10 print_str::str#0 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 ]
|
||||
zp ZP_BYTE:10 [ print_byte::b#8 print_byte::b#10 print_byte::b#1 print_byte::b#2 print_byte::b#7 print_sbyte::b#3 print_sbyte::b#1 print_sbyte::b#0 sin8s::isUpper#10 ]
|
||||
reg byte a [ print_char::ch#4 print_char::ch#2 print_char::ch#3 ]
|
||||
zp ZP_WORD:11 [ print_str::str#10 print_str::str#12 print_str::str#0 print_sword::w#3 print_sword::w#1 print_sword::w#0 print_word::w#3 print_word::w#5 print_word::w#2 print_word::w#1 mul8u::mb#2 mul8u::mb#0 mul8u::mb#1 sin8s::x#6 sin8s::x#4 sin8s::x#2 sin8s::x#0 sin8s::x#1 sin8s::$6 ]
|
||||
zp ZP_WORD:13 [ char_cursor#92 char_cursor#102 char_cursor#62 char_cursor#97 char_cursor#94 char_cursor#96 char_cursor#17 char_cursor#2 char_cursor#121 char_cursor#1 ]
|
||||
zp ZP_WORD:15 [ mul8su::m#2 mul8su::m#1 mul8su::m#0 mul8su::return#2 mul8u::return#2 mul8u::res#2 mul8u::res#6 mul8u::res#1 mul8u::return#3 sin8u_table::sinx_sc#0 mulu8_sel::$0 mulu8_sel::$1 ]
|
||||
reg byte a [ mul8u::b#2 mul8u::b#1 ]
|
||||
reg byte x [ mul8u::a#3 mul8u::a#6 mul8u::a#8 mul8u::a#2 mul8u::a#0 ]
|
||||
reg byte x [ sin8s::usinx#4 sin8s::usinx#1 sin8s::usinx#2 ]
|
||||
reg byte a [ sin8s::return#0 sin8s::return#5 sin8s::sinx#1 ]
|
||||
reg byte x [ mulu8_sel::v1#5 mulu8_sel::v1#1 mulu8_sel::v1#2 mulu8_sel::v1#3 mulu8_sel::v1#4 mulu8_sel::v1#0 ]
|
||||
reg byte y [ mulu8_sel::v2#5 mulu8_sel::v2#1 mulu8_sel::v2#3 mulu8_sel::v2#4 mulu8_sel::v2#0 ]
|
||||
zp ZP_BYTE:15 [ mulu8_sel::select#5 ]
|
||||
zp ZP_WORD:16 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8u_table::step#0 div16u::return#0 ]
|
||||
zp ZP_BYTE:17 [ mulu8_sel::select#5 sin8u_table::sinx#0 ]
|
||||
zp ZP_WORD:18 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 div16u::return#2 sin8u_table::step#0 div16u::return#0 ]
|
||||
reg byte x [ divr16u::i#2 divr16u::i#1 ]
|
||||
reg byte a [ sin8s::return#2 ]
|
||||
reg byte y [ mul8su::a#0 ]
|
||||
reg byte a [ sin8u_table::$18 ]
|
||||
reg byte x [ sin8u_table::sinval#0 ]
|
||||
reg byte a [ sin8u_table::$20 ]
|
||||
reg byte x [ sin8u_table::sinx_tr#0 ]
|
||||
reg byte a [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$2 ]
|
||||
reg byte a [ mul8su::$6 ]
|
||||
reg byte a [ mul8su::$10 ]
|
||||
reg byte a [ mul8u::$1 ]
|
||||
zp ZP_BYTE:18 [ sin8s::x1#0 ]
|
||||
zp ZP_BYTE:20 [ sin8s::x1#0 ]
|
||||
reg byte a [ mulu8_sel::return#0 ]
|
||||
reg byte a [ sin8s::x2#0 ]
|
||||
reg byte a [ mulu8_sel::return#1 ]
|
||||
zp ZP_BYTE:19 [ sin8s::x3#0 ]
|
||||
zp ZP_BYTE:21 [ sin8s::x3#0 ]
|
||||
reg byte a [ mulu8_sel::return#2 ]
|
||||
reg byte a [ sin8s::x3_6#0 ]
|
||||
zp ZP_BYTE:20 [ sin8s::usinx#0 ]
|
||||
zp ZP_BYTE:22 [ sin8s::usinx#0 ]
|
||||
reg byte a [ mulu8_sel::return#10 ]
|
||||
reg byte a [ sin8s::x4#0 ]
|
||||
reg byte a [ mulu8_sel::return#11 ]
|
||||
|
Loading…
x
Reference in New Issue
Block a user