From 18473295c94d8ca063d1a6ac92ad51a6713b9fad Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Fri, 3 Aug 2018 02:08:39 +0200 Subject: [PATCH] Fixed tests --- .../kickc/test/ref/inline-function-level2.asm | 8 +- .../kickc/test/ref/inline-function-level2.cfg | 4 +- .../kickc/test/ref/inline-function-level2.log | 316 ++++++++---------- .../kickc/test/ref/inline-function-level2.sym | 8 +- .../dk/camelot64/kickc/test/ref/line-anim.cfg | 2 +- .../dk/camelot64/kickc/test/ref/line-anim.log | 179 ++++------ 6 files changed, 213 insertions(+), 304 deletions(-) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.asm b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.asm index d510006dc..740f3fd3f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.asm @@ -46,7 +46,7 @@ main: { sta line1_pos lda #>line1_xpos*$100+0 sta line1_pos+1 - b2: + line1_b1: lda line1_pos+1 clc adc cur_line @@ -73,7 +73,7 @@ main: { !: inx cpx #line1_ysize - bcc b2 + bcc line1_b1 ldx #0 lda #<$400 sta cur_line @@ -83,7 +83,7 @@ main: { sta line2_pos lda #>line2_xpos*$100+0 sta line2_pos+1 - b3: + line2_b1: lda line2_pos+1 clc adc cur_line @@ -110,6 +110,6 @@ main: { !: inx cpx #line2_ysize - bcc b3 + bcc line2_b1 rts } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.cfg b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.cfg index e80a7a1ba..11b31ab2d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.cfg @@ -19,7 +19,7 @@ main::@1: scope:[main] from main main::@1 main::line1: scope:[main] from main::@1 [9] phi() [ ] ( main:2 [ ] ) to:main::line1_@1 -main::line1_@1: scope:[main] from main::@4 main::line1 main::line1_@1 +main::line1_@1: scope:[main] from main::@4 main::line1 [10] (byte) main::line1_i#2 ← phi( main::@4/(byte) main::line1_i#1 main::line1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) [10] (byte*) cur_line#13 ← phi( main::@4/(byte*) cur_line#1 main::line1/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) [10] (word) main::line1_pos#2 ← phi( main::@4/(word) main::line1_pos#1 main::line1/(const byte) main::line1_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) @@ -38,7 +38,7 @@ main::@4: scope:[main] from main::plot1 main::line2: scope:[main] from main::@4 [18] phi() [ ] ( main:2 [ ] ) to:main::line2_@1 -main::line2_@1: scope:[main] from main::@6 main::line2 main::line2_@1 +main::line2_@1: scope:[main] from main::@6 main::line2 [19] (byte) main::line2_i#2 ← phi( main::@6/(byte) main::line2_i#1 main::line2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) [19] (byte*) cur_line#10 ← phi( main::@6/(byte*) cur_line#11 main::line2/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) [19] (word) main::line2_pos#2 ← phi( main::@6/(word) main::line2_pos#1 main::line2/(const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.log b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.log index 97b32a9c1..61616c7d8 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.log @@ -174,13 +174,13 @@ main::line1: scope:[main] from main::@2 (word) main::line1_pos#0 ← { (byte) main::line1_xpos#1, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte) main::line1_i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::line1_@1 -main::line1_@1: scope:[main] from main::@4 main::line1 main::line1_@1 - (byte) main::line1_ysize#3 ← phi( main::@4/(byte) main::line1_ysize#1 main::line1/(byte) main::line1_ysize#4 main::line1_@1/(byte) main::line1_ysize#3 ) - (byte) main::line1_i#4 ← phi( main::@4/(byte) main::line1_i#1 main::line1/(byte) main::line1_i#0 main::line1_@1/(byte) main::line1_i#4 ) - (byte) main::line1_xadd#3 ← phi( main::@4/(byte) main::line1_xadd#1 main::line1/(byte) main::line1_xadd#4 main::line1_@1/(byte) main::line1_xadd#3 ) - (byte*) cur_line#13 ← phi( main::@4/(byte*) cur_line#1 main::line1/(byte*) cur_line#0 main::line1_@1/(byte*) cur_line#13 ) - (byte) main::line1_ch#1 ← phi( main::@4/(byte) main::line1_ch#2 main::line1/(byte) main::line1_ch#3 main::line1_@1/(byte) main::line1_ch#1 ) - (word) main::line1_pos#2 ← phi( main::@4/(word) main::line1_pos#1 main::line1/(word) main::line1_pos#0 main::line1_@1/(word) main::line1_pos#2 ) +main::line1_@1: scope:[main] from main::@4 main::line1 + (byte) main::line1_ysize#3 ← phi( main::@4/(byte) main::line1_ysize#1 main::line1/(byte) main::line1_ysize#4 ) + (byte) main::line1_i#4 ← phi( main::@4/(byte) main::line1_i#1 main::line1/(byte) main::line1_i#0 ) + (byte) main::line1_xadd#3 ← phi( main::@4/(byte) main::line1_xadd#1 main::line1/(byte) main::line1_xadd#4 ) + (byte*) cur_line#13 ← phi( main::@4/(byte*) cur_line#1 main::line1/(byte*) cur_line#0 ) + (byte) main::line1_ch#1 ← phi( main::@4/(byte) main::line1_ch#2 main::line1/(byte) main::line1_ch#3 ) + (word) main::line1_pos#2 ← phi( main::@4/(word) main::line1_pos#1 main::line1/(word) main::line1_pos#0 ) (byte) main::line1_$0#0 ← > (word) main::line1_pos#2 (byte) main::plot1_xpos#0 ← (byte) main::line1_$0#0 (byte) main::plot1_ch#0 ← (byte) main::line1_ch#1 @@ -225,13 +225,13 @@ main::line2: scope:[main] from main::@3 (word) main::line2_pos#0 ← { (byte) main::line2_xpos#1, (byte/signed byte/word/signed word/dword/signed dword) 0 } (byte) main::line2_i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:main::line2_@1 -main::line2_@1: scope:[main] from main::@6 main::line2 main::line2_@1 - (byte) main::line2_ysize#3 ← phi( main::@6/(byte) main::line2_ysize#1 main::line2/(byte) main::line2_ysize#4 main::line2_@1/(byte) main::line2_ysize#3 ) - (byte) main::line2_i#4 ← phi( main::@6/(byte) main::line2_i#1 main::line2/(byte) main::line2_i#0 main::line2_@1/(byte) main::line2_i#4 ) - (byte) main::line2_xadd#3 ← phi( main::@6/(byte) main::line2_xadd#1 main::line2/(byte) main::line2_xadd#4 main::line2_@1/(byte) main::line2_xadd#3 ) - (byte*) cur_line#14 ← phi( main::@6/(byte*) cur_line#3 main::line2/(byte*) cur_line#2 main::line2_@1/(byte*) cur_line#14 ) - (byte) main::line2_ch#1 ← phi( main::@6/(byte) main::line2_ch#2 main::line2/(byte) main::line2_ch#3 main::line2_@1/(byte) main::line2_ch#1 ) - (word) main::line2_pos#2 ← phi( main::@6/(word) main::line2_pos#1 main::line2/(word) main::line2_pos#0 main::line2_@1/(word) main::line2_pos#2 ) +main::line2_@1: scope:[main] from main::@6 main::line2 + (byte) main::line2_ysize#3 ← phi( main::@6/(byte) main::line2_ysize#1 main::line2/(byte) main::line2_ysize#4 ) + (byte) main::line2_i#4 ← phi( main::@6/(byte) main::line2_i#1 main::line2/(byte) main::line2_i#0 ) + (byte) main::line2_xadd#3 ← phi( main::@6/(byte) main::line2_xadd#1 main::line2/(byte) main::line2_xadd#4 ) + (byte*) cur_line#14 ← phi( main::@6/(byte*) cur_line#3 main::line2/(byte*) cur_line#2 ) + (byte) main::line2_ch#1 ← phi( main::@6/(byte) main::line2_ch#2 main::line2/(byte) main::line2_ch#3 ) + (word) main::line2_pos#2 ← phi( main::@6/(word) main::line2_pos#1 main::line2/(word) main::line2_pos#0 ) (byte) main::line2_$0#0 ← > (word) main::line2_pos#2 (byte) main::plot2_xpos#0 ← (byte) main::line2_$0#0 (byte) main::plot2_ch#0 ← (byte) main::line2_ch#1 @@ -447,23 +447,11 @@ Not aliassing identity: main::line2_ch#1 main::line2_ch#1 Not aliassing identity: main::line2_xadd#1 main::line2_xadd#1 Not aliassing identity: main::line2_ysize#1 main::line2_ysize#1 Not aliassing across scopes: cur_line#12 cur_line#11 -Self Phi Eliminated (word) main::line1_pos#2 Self Phi Eliminated (byte) main::line1_ch#1 -Self Phi Eliminated (byte) main::line1_ch#1 -Self Phi Eliminated (byte*) cur_line#13 Self Phi Eliminated (byte) main::line1_xadd#1 -Self Phi Eliminated (byte) main::line1_xadd#1 -Self Phi Eliminated (byte) main::line1_i#2 Self Phi Eliminated (byte) main::line1_ysize#1 -Self Phi Eliminated (byte) main::line1_ysize#1 -Self Phi Eliminated (word) main::line2_pos#2 Self Phi Eliminated (byte) main::line2_ch#1 -Self Phi Eliminated (byte) main::line2_ch#1 -Self Phi Eliminated (byte*) cur_line#10 Self Phi Eliminated (byte) main::line2_xadd#1 -Self Phi Eliminated (byte) main::line2_xadd#1 -Self Phi Eliminated (byte) main::line2_i#2 -Self Phi Eliminated (byte) main::line2_ysize#1 Self Phi Eliminated (byte) main::line2_ysize#1 Succesful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte) main::line1_ch#1 (byte) main::line1_ch#0 @@ -610,7 +598,7 @@ main::@1: scope:[main] from main main::@1 main::line1: scope:[main] from main::@1 [9] phi() [ ] ( main:2 [ ] ) to:main::line1_@1 -main::line1_@1: scope:[main] from main::@4 main::line1 main::line1_@1 +main::line1_@1: scope:[main] from main::@4 main::line1 [10] (byte) main::line1_i#2 ← phi( main::@4/(byte) main::line1_i#1 main::line1/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) [10] (byte*) cur_line#13 ← phi( main::@4/(byte*) cur_line#1 main::line1/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) [10] (word) main::line1_pos#2 ← phi( main::@4/(word) main::line1_pos#1 main::line1/(const byte) main::line1_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) @@ -629,7 +617,7 @@ main::@4: scope:[main] from main::plot1 main::line2: scope:[main] from main::@4 [18] phi() [ ] ( main:2 [ ] ) to:main::line2_@1 -main::line2_@1: scope:[main] from main::@6 main::line2 main::line2_@1 +main::line2_@1: scope:[main] from main::@6 main::line2 [19] (byte) main::line2_i#2 ← phi( main::@6/(byte) main::line2_i#1 main::line2/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) [19] (byte*) cur_line#10 ← phi( main::@6/(byte*) cur_line#11 main::line2/((byte*))(word/signed word/dword/signed dword) 1024 ) [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) [19] (word) main::line2_pos#2 ← phi( main::@6/(word) main::line2_pos#1 main::line2/(const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) @@ -667,33 +655,23 @@ main::@return dominated by main::@return @begin main::line1 main::line1_@1 main NATURAL LOOPS Found back edge: Loop head: main::@1 tails: main::@1 blocks: null -Found back edge: Loop head: main::line1_@1 tails: main::line1_@1 blocks: null Found back edge: Loop head: main::line1_@1 tails: main::@4 blocks: null -Found back edge: Loop head: main::line2_@1 tails: main::line2_@1 blocks: null Found back edge: Loop head: main::line2_@1 tails: main::@6 blocks: null Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 -Populated: Loop head: main::line1_@1 tails: main::line1_@1 blocks: main::line1_@1 Populated: Loop head: main::line1_@1 tails: main::@4 blocks: main::@4 main::plot1 main::line1_@1 -Populated: Loop head: main::line2_@1 tails: main::line2_@1 blocks: main::line2_@1 Populated: Loop head: main::line2_@1 tails: main::@6 blocks: main::@6 main::plot2 main::line2_@1 Loop head: main::@1 tails: main::@1 blocks: main::@1 -Loop head: main::line1_@1 tails: main::line1_@1 blocks: main::line1_@1 Loop head: main::line1_@1 tails: main::@4 blocks: main::@4 main::plot1 main::line1_@1 -Loop head: main::line2_@1 tails: main::line2_@1 blocks: main::line2_@1 Loop head: main::line2_@1 tails: main::@6 blocks: main::@6 main::plot2 main::line2_@1 NATURAL LOOPS WITH DEPTH Found 0 loops in scope [] -Found 5 loops in scope [main] +Found 3 loops in scope [main] Loop head: main::@1 tails: main::@1 blocks: main::@1 - Loop head: main::line1_@1 tails: main::line1_@1 blocks: main::line1_@1 Loop head: main::line1_@1 tails: main::@4 blocks: main::@4 main::plot1 main::line1_@1 - Loop head: main::line2_@1 tails: main::line2_@1 blocks: main::line2_@1 Loop head: main::line2_@1 tails: main::@6 blocks: main::@6 main::plot2 main::line2_@1 Loop head: main::@1 tails: main::@1 blocks: main::@1 depth: 1 -Loop head: main::line1_@1 tails: main::line1_@1 blocks: main::line1_@1 depth: 2 Loop head: main::line1_@1 tails: main::@4 blocks: main::@4 main::plot1 main::line1_@1 depth: 1 -Loop head: main::line2_@1 tails: main::line2_@1 blocks: main::line2_@1 depth: 2 Loop head: main::line2_@1 tails: main::@6 blocks: main::@6 main::plot2 main::line2_@1 depth: 1 @@ -712,7 +690,7 @@ VARIABLE REGISTER WEIGHTS (byte) main::line1_i#2 3.6666666666666665 (word) main::line1_pos (word) main::line1_pos#1 5.5 -(word) main::line1_pos#2 30.75 +(word) main::line1_pos#2 8.25 (byte) main::line1_xadd (byte) main::line1_xpos (byte) main::line1_ysize @@ -724,7 +702,7 @@ VARIABLE REGISTER WEIGHTS (byte) main::line2_i#2 3.6666666666666665 (word) main::line2_pos (word) main::line2_pos#1 5.5 -(word) main::line2_pos#2 30.75 +(word) main::line2_pos#2 8.25 (byte) main::line2_xadd (byte) main::line2_xpos (byte) main::line2_ysize @@ -732,12 +710,12 @@ VARIABLE REGISTER WEIGHTS (byte*) main::plot1_$0#0 22.0 (byte) main::plot1_ch (byte) main::plot1_xpos -(byte) main::plot1_xpos#0 112.0 +(byte) main::plot1_xpos#0 22.0 (byte*~) main::plot2_$0 (byte*) main::plot2_$0#0 22.0 (byte) main::plot2_ch (byte) main::plot2_xpos -(byte) main::plot2_xpos#0 112.0 +(byte) main::plot2_xpos#0 22.0 (byte*) main::sc (byte*) main::sc#1 16.5 (byte*) main::sc#2 16.5 @@ -881,18 +859,15 @@ main: { //SEG26 [10] phi (byte*) cur_line#13 = (byte*) cur_line#1 [phi:main::@4->main::line1_@1#1] -- register_copy //SEG27 [10] phi (word) main::line1_pos#2 = (word) main::line1_pos#1 [phi:main::@4->main::line1_@1#2] -- register_copy jmp line1_b1 - //SEG28 [10] phi from main::line1_@1 to main::line1_@1 [phi:main::line1_@1->main::line1_@1] - line1_b1_from_line1_b1: - jmp line1_b1 - //SEG29 main::line1_@1 + //SEG28 main::line1_@1 line1_b1: - //SEG30 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ) -- vbuz1=_hi_vwuz2 + //SEG29 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ) -- vbuz1=_hi_vwuz2 lda line1_pos+1 sta plot1_xpos jmp plot1 - //SEG31 main::plot1 + //SEG30 main::plot1 plot1: - //SEG32 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuz3 + //SEG31 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuz3 lda plot1_xpos clc adc cur_line @@ -900,14 +875,14 @@ main: { lda #0 adc cur_line+1 sta plot1__0+1 - //SEG33 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG32 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) -- _deref_pbuz1=vbuc1 lda #line1_ch ldy #0 sta (plot1__0),y jmp b4 - //SEG34 main::@4 + //SEG33 main::@4 b4: - //SEG35 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ( main:2 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 + //SEG34 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ( main:2 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 clc lda line1_pos adc #line1_xadd sta line1_pos+1 - //SEG36 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG35 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -923,51 +898,48 @@ main: { bcc !+ inc cur_line+1 !: - //SEG37 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG36 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuz1=_inc_vbuz1 inc line1_i - //SEG38 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG37 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuz1_lt_vbuc1_then_la1 lda line1_i cmp #line1_ysize bcc line1_b1_from_b4 - //SEG39 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] + //SEG38 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] line2_from_b4: jmp line2 - //SEG40 main::line2 + //SEG39 main::line2 line2: - //SEG41 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] + //SEG40 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] line2_b1_from_line2: - //SEG42 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuz1=vbuc1 + //SEG41 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuz1=vbuc1 lda #0 sta line2_i - //SEG43 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 + //SEG42 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 lda #<$400 sta cur_line_10 lda #>$400 sta cur_line_10+1 - //SEG44 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 + //SEG43 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 lda #line2_xpos*$100+0 sta line2_pos+1 jmp line2_b1 - //SEG45 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] + //SEG44 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] line2_b1_from_b6: - //SEG46 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy - //SEG47 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy - //SEG48 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy + //SEG45 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy + //SEG46 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy + //SEG47 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy jmp line2_b1 - //SEG49 [19] phi from main::line2_@1 to main::line2_@1 [phi:main::line2_@1->main::line2_@1] - line2_b1_from_line2_b1: - jmp line2_b1 - //SEG50 main::line2_@1 + //SEG48 main::line2_@1 line2_b1: - //SEG51 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ) -- vbuz1=_hi_vwuz2 + //SEG49 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ) -- vbuz1=_hi_vwuz2 lda line2_pos+1 sta plot2_xpos jmp plot2 - //SEG52 main::plot2 + //SEG50 main::plot2 plot2: - //SEG53 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuz3 + //SEG51 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuz3 lda plot2_xpos clc adc cur_line_10 @@ -975,14 +947,14 @@ main: { lda #0 adc cur_line_10+1 sta plot2__0+1 - //SEG54 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG52 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) -- _deref_pbuz1=vbuc1 lda #line2_ch ldy #0 sta (plot2__0),y jmp b6 - //SEG55 main::@6 + //SEG53 main::@6 b6: - //SEG56 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ( main:2 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 + //SEG54 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ( main:2 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 clc lda line2_pos adc #line2_xadd sta line2_pos+1 - //SEG57 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG55 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda cur_line_11 clc adc #$28 @@ -998,16 +970,16 @@ main: { bcc !+ inc cur_line_11+1 !: - //SEG58 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuz1=_inc_vbuz1 + //SEG56 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuz1=_inc_vbuz1 inc line2_i - //SEG59 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuz1_lt_vbuc1_then_la1 + //SEG57 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuz1_lt_vbuc1_then_la1 lda line2_i cmp #line2_ysize bcc line2_b1_from_b6 jmp breturn - //SEG60 main::@return + //SEG58 main::@return breturn: - //SEG61 [27] return [ ] ( main:2 [ ] ) + //SEG59 [27] return [ ] ( main:2 [ ] ) rts } @@ -1053,11 +1025,11 @@ Potential registers zp ZP_BYTE:17 [ main::plot2_xpos#0 ] : zp ZP_BYTE:17 , reg b Potential registers zp ZP_WORD:18 [ main::plot2_$0#0 ] : zp ZP_WORD:18 , REGISTER UPLIFT SCOPES -Uplift Scope [main] 112: zp ZP_BYTE:14 [ main::plot1_xpos#0 ] 112: zp ZP_BYTE:17 [ main::plot2_xpos#0 ] 36.25: zp ZP_WORD:4 [ main::line1_pos#2 main::line1_pos#1 ] 36.25: zp ZP_WORD:9 [ main::line2_pos#2 main::line2_pos#1 ] 33: zp ZP_WORD:2 [ main::sc#2 main::sc#1 ] 22: zp ZP_WORD:15 [ main::plot1_$0#0 ] 22: zp ZP_WORD:18 [ main::plot2_$0#0 ] 20.17: zp ZP_BYTE:8 [ main::line1_i#2 main::line1_i#1 ] 20.17: zp ZP_BYTE:13 [ main::line2_i#2 main::line2_i#1 ] +Uplift Scope [main] 33: zp ZP_WORD:2 [ main::sc#2 main::sc#1 ] 22: zp ZP_BYTE:14 [ main::plot1_xpos#0 ] 22: zp ZP_WORD:15 [ main::plot1_$0#0 ] 22: zp ZP_BYTE:17 [ main::plot2_xpos#0 ] 22: zp ZP_WORD:18 [ main::plot2_$0#0 ] 20.17: zp ZP_BYTE:8 [ main::line1_i#2 main::line1_i#1 ] 20.17: zp ZP_BYTE:13 [ main::line2_i#2 main::line2_i#1 ] 13.75: zp ZP_WORD:4 [ main::line1_pos#2 main::line1_pos#1 ] 13.75: zp ZP_WORD:9 [ main::line2_pos#2 main::line2_pos#1 ] Uplift Scope [] 13.93: zp ZP_WORD:6 [ cur_line#13 cur_line#1 ] 13.93: zp ZP_WORD:11 [ cur_line#10 cur_line#11 ] -Uplifting [main] best 9434 combination reg byte a [ main::plot1_xpos#0 ] reg byte a [ main::plot2_xpos#0 ] zp ZP_WORD:4 [ main::line1_pos#2 main::line1_pos#1 ] zp ZP_WORD:9 [ main::line2_pos#2 main::line2_pos#1 ] zp ZP_WORD:2 [ main::sc#2 main::sc#1 ] zp ZP_WORD:15 [ main::plot1_$0#0 ] zp ZP_WORD:18 [ main::plot2_$0#0 ] reg byte x [ main::line1_i#2 main::line1_i#1 ] reg byte x [ main::line2_i#2 main::line2_i#1 ] -Uplifting [] best 9434 combination zp ZP_WORD:6 [ cur_line#13 cur_line#1 ] zp ZP_WORD:11 [ cur_line#10 cur_line#11 ] +Uplifting [main] best 2714 combination zp ZP_WORD:2 [ main::sc#2 main::sc#1 ] reg byte a [ main::plot1_xpos#0 ] zp ZP_WORD:15 [ main::plot1_$0#0 ] reg byte a [ main::plot2_xpos#0 ] zp ZP_WORD:18 [ main::plot2_$0#0 ] reg byte x [ main::line1_i#2 main::line1_i#1 ] reg byte x [ main::line2_i#2 main::line2_i#1 ] zp ZP_WORD:4 [ main::line1_pos#2 main::line1_pos#1 ] zp ZP_WORD:9 [ main::line2_pos#2 main::line2_pos#1 ] +Uplifting [] best 2714 combination zp ZP_WORD:6 [ cur_line#13 cur_line#1 ] zp ZP_WORD:11 [ cur_line#10 cur_line#11 ] Coalescing zero page register [ zp ZP_WORD:2 [ main::sc#2 main::sc#1 ] ] with [ zp ZP_WORD:4 [ main::line1_pos#2 main::line1_pos#1 ] ] Coalescing zero page register [ zp ZP_WORD:2 [ main::sc#2 main::sc#1 main::line1_pos#2 main::line1_pos#1 ] ] with [ zp ZP_WORD:9 [ main::line2_pos#2 main::line2_pos#1 ] ] Coalescing zero page register [ zp ZP_WORD:6 [ cur_line#13 cur_line#1 ] ] with [ zp ZP_WORD:11 [ cur_line#10 cur_line#11 ] ] @@ -1161,31 +1133,28 @@ main: { //SEG26 [10] phi (byte*) cur_line#13 = (byte*) cur_line#1 [phi:main::@4->main::line1_@1#1] -- register_copy //SEG27 [10] phi (word) main::line1_pos#2 = (word) main::line1_pos#1 [phi:main::@4->main::line1_@1#2] -- register_copy jmp line1_b1 - //SEG28 [10] phi from main::line1_@1 to main::line1_@1 [phi:main::line1_@1->main::line1_@1] - line1_b1_from_line1_b1: - jmp line1_b1 - //SEG29 main::line1_@1 + //SEG28 main::line1_@1 line1_b1: - //SEG30 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ) -- vbuaa=_hi_vwuz1 + //SEG29 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ) -- vbuaa=_hi_vwuz1 lda line1_pos+1 jmp plot1 - //SEG31 main::plot1 + //SEG30 main::plot1 plot1: - //SEG32 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuaa + //SEG31 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuaa clc adc cur_line sta plot1__0 lda #0 adc cur_line+1 sta plot1__0+1 - //SEG33 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG32 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) -- _deref_pbuz1=vbuc1 lda #line1_ch ldy #0 sta (plot1__0),y jmp b4 - //SEG34 main::@4 + //SEG33 main::@4 b4: - //SEG35 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ( main:2 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 + //SEG34 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ( main:2 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 clc lda line1_pos adc #line1_xadd sta line1_pos+1 - //SEG36 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG35 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -1201,62 +1170,59 @@ main: { bcc !+ inc cur_line+1 !: - //SEG37 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG36 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG38 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 + //SEG37 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 cpx #line1_ysize bcc line1_b1_from_b4 - //SEG39 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] + //SEG38 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] line2_from_b4: jmp line2 - //SEG40 main::line2 + //SEG39 main::line2 line2: - //SEG41 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] + //SEG40 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] line2_b1_from_line2: - //SEG42 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuxx=vbuc1 + //SEG41 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG43 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 + //SEG42 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 lda #<$400 sta cur_line lda #>$400 sta cur_line+1 - //SEG44 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 + //SEG43 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 lda #line2_xpos*$100+0 sta line2_pos+1 jmp line2_b1 - //SEG45 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] + //SEG44 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] line2_b1_from_b6: - //SEG46 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy - //SEG47 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy - //SEG48 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy + //SEG45 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy + //SEG46 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy + //SEG47 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy jmp line2_b1 - //SEG49 [19] phi from main::line2_@1 to main::line2_@1 [phi:main::line2_@1->main::line2_@1] - line2_b1_from_line2_b1: - jmp line2_b1 - //SEG50 main::line2_@1 + //SEG48 main::line2_@1 line2_b1: - //SEG51 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ) -- vbuaa=_hi_vwuz1 + //SEG49 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ) -- vbuaa=_hi_vwuz1 lda line2_pos+1 jmp plot2 - //SEG52 main::plot2 + //SEG50 main::plot2 plot2: - //SEG53 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuaa + //SEG51 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuaa clc adc cur_line sta plot2__0 lda #0 adc cur_line+1 sta plot2__0+1 - //SEG54 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG52 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) -- _deref_pbuz1=vbuc1 lda #line2_ch ldy #0 sta (plot2__0),y jmp b6 - //SEG55 main::@6 + //SEG53 main::@6 b6: - //SEG56 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ( main:2 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 + //SEG54 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ( main:2 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 clc lda line2_pos adc #line2_xadd sta line2_pos+1 - //SEG57 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG55 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -1272,15 +1238,15 @@ main: { bcc !+ inc cur_line+1 !: - //SEG58 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG56 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG59 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 + //SEG57 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 cpx #line2_ysize bcc line2_b1_from_b6 jmp breturn - //SEG60 main::@return + //SEG58 main::@return breturn: - //SEG61 [27] return [ ] ( main:2 [ ] ) + //SEG59 [27] return [ ] ( main:2 [ ] ) rts } @@ -1300,6 +1266,8 @@ Removing instruction jmp breturn Succesful ASM optimization Pass5NextJumpElimination Replacing label b1_from_b1 with b1 Replacing label b1_from_b1 with b1 +Replacing label line1_b1_from_b4 with line1_b1 +Replacing label line2_b1_from_b6 with line2_b1 Removing instruction bbegin: Removing instruction b3_from_bbegin: Removing instruction main_from_b3: @@ -1307,10 +1275,10 @@ Removing instruction bend_from_b3: Removing instruction b1_from_b1: Removing instruction line1_from_b1: Removing instruction line1_b1_from_line1: -Removing instruction line1_b1_from_line1_b1: +Removing instruction line1_b1_from_b4: Removing instruction line2_from_b4: Removing instruction line2_b1_from_line2: -Removing instruction line2_b1_from_line2_b1: +Removing instruction line2_b1_from_b6: Succesful ASM optimization Pass5RedundantLabelElimination Removing instruction b3: Removing instruction bend: @@ -1323,26 +1291,10 @@ Removing instruction plot2: Removing instruction b6: Removing instruction breturn: Succesful ASM optimization Pass5UnusedLabelElimination -Skipping double jump to line1_b1 in bcc line1_b1_from_b4 -Skipping double jump to line2_b1 in bcc line2_b1_from_b6 -Succesful ASM optimization Pass5DoubleJumpElimination -Relabelling long label line1_b1_from_b4 to b2 -Relabelling long label line2_b1_from_b6 to b3 -Succesful ASM optimization Pass5RelabelLongLabels Removing instruction jmp b1 Removing instruction jmp line1_b1 Removing instruction jmp line2_b1 Succesful ASM optimization Pass5NextJumpElimination -Replacing label line1_b1 with b2 -Replacing label line1_b1 with b2 -Replacing label line2_b1 with b3 -Replacing label line2_b1 with b3 -Removing instruction line1_b1: -Removing instruction line2_b1: -Succesful ASM optimization Pass5RedundantLabelElimination -Removing instruction jmp b2 -Removing instruction jmp b3 -Succesful ASM optimization Pass5NextJumpElimination FINAL SYMBOL TABLE (label) @3 @@ -1369,7 +1321,7 @@ FINAL SYMBOL TABLE (byte) main::line1_i#2 reg byte x 3.6666666666666665 (word) main::line1_pos (word) main::line1_pos#1 line1_pos zp ZP_WORD:2 5.5 -(word) main::line1_pos#2 line1_pos zp ZP_WORD:2 30.75 +(word) main::line1_pos#2 line1_pos zp ZP_WORD:2 8.25 (byte) main::line1_xadd (const byte) main::line1_xadd#0 line1_xadd = (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) main::line1_xpos @@ -1387,7 +1339,7 @@ FINAL SYMBOL TABLE (byte) main::line2_i#2 reg byte x 3.6666666666666665 (word) main::line2_pos (word) main::line2_pos#1 line2_pos zp ZP_WORD:2 5.5 -(word) main::line2_pos#2 line2_pos zp ZP_WORD:2 30.75 +(word) main::line2_pos#2 line2_pos zp ZP_WORD:2 8.25 (byte) main::line2_xadd (const byte) main::line2_xadd#0 line2_xadd = (byte/word/signed word/dword/signed dword) 128 (byte) main::line2_xpos @@ -1399,13 +1351,13 @@ FINAL SYMBOL TABLE (byte*) main::plot1_$0#0 plot1_$0 zp ZP_WORD:6 22.0 (byte) main::plot1_ch (byte) main::plot1_xpos -(byte) main::plot1_xpos#0 reg byte a 112.0 +(byte) main::plot1_xpos#0 reg byte a 22.0 (label) main::plot2 (byte*~) main::plot2_$0 (byte*) main::plot2_$0#0 plot2_$0 zp ZP_WORD:6 22.0 (byte) main::plot2_ch (byte) main::plot2_xpos -(byte) main::plot2_xpos#0 reg byte a 112.0 +(byte) main::plot2_xpos#0 reg byte a 22.0 (byte*) main::sc (byte*) main::sc#1 sc zp ZP_WORD:2 16.5 (byte*) main::sc#2 sc zp ZP_WORD:2 16.5 @@ -1420,7 +1372,7 @@ reg byte a [ main::plot2_xpos#0 ] FINAL ASSEMBLER -Score: 6872 +Score: 2372 //SEG0 Basic Upstart .pc = $801 "Basic" @@ -1495,28 +1447,27 @@ main: { lda #>line1_xpos*$100+0 sta line1_pos+1 //SEG24 [10] phi from main::@4 to main::line1_@1 [phi:main::@4->main::line1_@1] - b2: //SEG25 [10] phi (byte) main::line1_i#2 = (byte) main::line1_i#1 [phi:main::@4->main::line1_@1#0] -- register_copy //SEG26 [10] phi (byte*) cur_line#13 = (byte*) cur_line#1 [phi:main::@4->main::line1_@1#1] -- register_copy //SEG27 [10] phi (word) main::line1_pos#2 = (word) main::line1_pos#1 [phi:main::@4->main::line1_@1#2] -- register_copy - //SEG28 [10] phi from main::line1_@1 to main::line1_@1 [phi:main::line1_@1->main::line1_@1] - //SEG29 main::line1_@1 - //SEG30 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ) -- vbuaa=_hi_vwuz1 + //SEG28 main::line1_@1 + line1_b1: + //SEG29 [11] (byte) main::plot1_xpos#0 ← > (word) main::line1_pos#2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_xpos#0 ] ) -- vbuaa=_hi_vwuz1 lda line1_pos+1 - //SEG31 main::plot1 - //SEG32 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuaa + //SEG30 main::plot1 + //SEG31 [12] (byte*) main::plot1_$0#0 ← (byte*) cur_line#13 + (byte) main::plot1_xpos#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 main::plot1_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuaa clc adc cur_line sta plot1__0 lda #0 adc cur_line+1 sta plot1__0+1 - //SEG33 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG32 [13] *((byte*) main::plot1_$0#0) ← (const byte) main::line1_ch#0 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ( main:2 [ main::line1_pos#2 cur_line#13 main::line1_i#2 ] ) -- _deref_pbuz1=vbuc1 lda #line1_ch ldy #0 sta (plot1__0),y - //SEG34 main::@4 - //SEG35 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ( main:2 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 + //SEG33 main::@4 + //SEG34 [14] (word) main::line1_pos#1 ← (word) main::line1_pos#2 + (const byte) main::line1_xadd#0 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ( main:2 [ cur_line#13 main::line1_i#2 main::line1_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 clc lda line1_pos adc #line1_xadd sta line1_pos+1 - //SEG36 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG35 [15] (byte*) cur_line#1 ← (byte*) cur_line#13 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ( main:2 [ main::line1_i#2 main::line1_pos#1 cur_line#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -1532,49 +1483,48 @@ main: { bcc !+ inc cur_line+1 !: - //SEG37 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG36 [16] (byte) main::line1_i#1 ← ++ (byte) main::line1_i#2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG38 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 + //SEG37 [17] if((byte) main::line1_i#1<(const byte) main::line1_ysize#0) goto main::line1_@1 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ( main:2 [ main::line1_pos#1 cur_line#1 main::line1_i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 cpx #line1_ysize - bcc b2 - //SEG39 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] - //SEG40 main::line2 - //SEG41 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] - //SEG42 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuxx=vbuc1 + bcc line1_b1 + //SEG38 [18] phi from main::@4 to main::line2 [phi:main::@4->main::line2] + //SEG39 main::line2 + //SEG40 [19] phi from main::line2 to main::line2_@1 [phi:main::line2->main::line2_@1] + //SEG41 [19] phi (byte) main::line2_i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG43 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 + //SEG42 [19] phi (byte*) cur_line#10 = ((byte*))(word/signed word/dword/signed dword) 1024 [phi:main::line2->main::line2_@1#1] -- pbuz1=pbuc1 lda #<$400 sta cur_line lda #>$400 sta cur_line+1 - //SEG44 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 + //SEG43 [19] phi (word) main::line2_pos#2 = (const byte) main::line2_xpos#0*(word/signed word/dword/signed dword) 256+(byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::line2->main::line2_@1#2] -- vwuz1=vwuc1 lda #line2_xpos*$100+0 sta line2_pos+1 - //SEG45 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] - b3: - //SEG46 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy - //SEG47 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy - //SEG48 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy - //SEG49 [19] phi from main::line2_@1 to main::line2_@1 [phi:main::line2_@1->main::line2_@1] - //SEG50 main::line2_@1 - //SEG51 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ) -- vbuaa=_hi_vwuz1 + //SEG44 [19] phi from main::@6 to main::line2_@1 [phi:main::@6->main::line2_@1] + //SEG45 [19] phi (byte) main::line2_i#2 = (byte) main::line2_i#1 [phi:main::@6->main::line2_@1#0] -- register_copy + //SEG46 [19] phi (byte*) cur_line#10 = (byte*) cur_line#11 [phi:main::@6->main::line2_@1#1] -- register_copy + //SEG47 [19] phi (word) main::line2_pos#2 = (word) main::line2_pos#1 [phi:main::@6->main::line2_@1#2] -- register_copy + //SEG48 main::line2_@1 + line2_b1: + //SEG49 [20] (byte) main::plot2_xpos#0 ← > (word) main::line2_pos#2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_xpos#0 ] ) -- vbuaa=_hi_vwuz1 lda line2_pos+1 - //SEG52 main::plot2 - //SEG53 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuaa + //SEG50 main::plot2 + //SEG51 [21] (byte*) main::plot2_$0#0 ← (byte*) cur_line#10 + (byte) main::plot2_xpos#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 main::plot2_$0#0 ] ) -- pbuz1=pbuz2_plus_vbuaa clc adc cur_line sta plot2__0 lda #0 adc cur_line+1 sta plot2__0+1 - //SEG54 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) -- _deref_pbuz1=vbuc1 + //SEG52 [22] *((byte*) main::plot2_$0#0) ← (const byte) main::line2_ch#0 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ( main:2 [ main::line2_pos#2 cur_line#10 main::line2_i#2 ] ) -- _deref_pbuz1=vbuc1 lda #line2_ch ldy #0 sta (plot2__0),y - //SEG55 main::@6 - //SEG56 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ( main:2 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 + //SEG53 main::@6 + //SEG54 [23] (word) main::line2_pos#1 ← (word) main::line2_pos#2 + (const byte) main::line2_xadd#0 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ( main:2 [ cur_line#10 main::line2_i#2 main::line2_pos#1 ] ) -- vwuz1=vwuz1_plus_vbuc1 clc lda line2_pos adc #line2_xadd sta line2_pos+1 - //SEG57 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 + //SEG55 [24] (byte*) cur_line#11 ← (byte*) cur_line#10 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ( main:2 [ main::line2_i#2 main::line2_pos#1 cur_line#11 ] ) -- pbuz1=pbuz1_plus_vbuc1 lda cur_line clc adc #$28 @@ -1590,13 +1540,13 @@ main: { bcc !+ inc cur_line+1 !: - //SEG58 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuxx=_inc_vbuxx + //SEG56 [25] (byte) main::line2_i#1 ← ++ (byte) main::line2_i#2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG59 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 + //SEG57 [26] if((byte) main::line2_i#1<(const byte) main::line2_ysize#0) goto main::line2_@1 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ( main:2 [ main::line2_pos#1 cur_line#11 main::line2_i#1 ] ) -- vbuxx_lt_vbuc1_then_la1 cpx #line2_ysize - bcc b3 - //SEG60 main::@return - //SEG61 [27] return [ ] ( main:2 [ ] ) + bcc line2_b1 + //SEG58 main::@return + //SEG59 [27] return [ ] ( main:2 [ ] ) rts } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.sym b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.sym index a720c6d5e..2fcbcbc27 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-level2.sym @@ -22,7 +22,7 @@ (byte) main::line1_i#2 reg byte x 3.6666666666666665 (word) main::line1_pos (word) main::line1_pos#1 line1_pos zp ZP_WORD:2 5.5 -(word) main::line1_pos#2 line1_pos zp ZP_WORD:2 30.75 +(word) main::line1_pos#2 line1_pos zp ZP_WORD:2 8.25 (byte) main::line1_xadd (const byte) main::line1_xadd#0 line1_xadd = (byte/signed byte/word/signed word/dword/signed dword) 64 (byte) main::line1_xpos @@ -40,7 +40,7 @@ (byte) main::line2_i#2 reg byte x 3.6666666666666665 (word) main::line2_pos (word) main::line2_pos#1 line2_pos zp ZP_WORD:2 5.5 -(word) main::line2_pos#2 line2_pos zp ZP_WORD:2 30.75 +(word) main::line2_pos#2 line2_pos zp ZP_WORD:2 8.25 (byte) main::line2_xadd (const byte) main::line2_xadd#0 line2_xadd = (byte/word/signed word/dword/signed dword) 128 (byte) main::line2_xpos @@ -52,13 +52,13 @@ (byte*) main::plot1_$0#0 plot1_$0 zp ZP_WORD:6 22.0 (byte) main::plot1_ch (byte) main::plot1_xpos -(byte) main::plot1_xpos#0 reg byte a 112.0 +(byte) main::plot1_xpos#0 reg byte a 22.0 (label) main::plot2 (byte*~) main::plot2_$0 (byte*) main::plot2_$0#0 plot2_$0 zp ZP_WORD:6 22.0 (byte) main::plot2_ch (byte) main::plot2_xpos -(byte) main::plot2_xpos#0 reg byte a 112.0 +(byte) main::plot2_xpos#0 reg byte a 22.0 (byte*) main::sc (byte*) main::sc#1 sc zp ZP_WORD:2 16.5 (byte*) main::sc#2 sc zp ZP_WORD:2 16.5 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.cfg b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.cfg index 09298b9b6..cd3746e2d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.cfg @@ -107,7 +107,7 @@ point_init::@2: scope:[point_init] from point_init::@10 point_init::@11 point_init::@return: scope:[point_init] from point_init::@2 [53] return [ ] ( main:2::point_init:20 [ main::i#2 ] ) to:@return -point_init::@1: scope:[point_init] from point_init point_init::@10 +point_init::@1: scope:[point_init] from point_init::@10 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) to:point_init::@7 point_init::@7: scope:[point_init] from point_init::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log index 77e469bbb..40f5b79fd 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log @@ -1735,6 +1735,7 @@ Completing Phi functions... Completing Phi functions... Completing Phi functions... Completing Phi functions... +Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from @@ -2080,7 +2081,7 @@ point_init: scope:[point_init] from main::@1 point_init::abs16s1: scope:[point_init] from point_init (byte) point_init::point_idx1#16 ← phi( point_init/(byte) point_init::point_idx1#0 ) (byte) point_init::point_idx#17 ← phi( point_init/(byte) point_init::point_idx#1 ) - (signed word) point_init::x_diff#13 ← phi( point_init/(signed word) point_init::x_diff#0 ) + (signed word) point_init::x_diff#14 ← phi( point_init/(signed word) point_init::x_diff#0 ) (signed word) point_init::y_diff#9 ← phi( point_init/(signed word) point_init::y_diff#0 ) (signed word) point_init::abs16s1_w#1 ← phi( point_init/(signed word) point_init::abs16s1_w#0 ) (bool) point_init::abs16s1_$0#0 ← (signed word) point_init::abs16s1_w#1 < (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -2088,8 +2089,8 @@ point_init::abs16s1: scope:[point_init] from point_init to:point_init::abs16s1_@3 point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 (byte) point_init::point_idx1#14 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 ) - (byte) point_init::point_idx#14 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 ) - (signed word) point_init::x_diff#9 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#13 ) + (byte) point_init::point_idx#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 ) + (signed word) point_init::x_diff#12 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 ) (signed word) point_init::y_diff#6 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 ) (signed word) point_init::abs16s1_w#2 ← phi( point_init::abs16s1/(signed word) point_init::abs16s1_w#1 ) (signed word) point_init::abs16s1_$2#0 ← - (signed word) point_init::abs16s1_w#2 @@ -2098,8 +2099,8 @@ point_init::abs16s1_@1: scope:[point_init] from point_init::abs16s1 to:point_init::abs16s1_@return point_init::abs16s1_@3: scope:[point_init] from point_init::abs16s1 (byte) point_init::point_idx1#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx1#16 ) - (byte) point_init::point_idx#15 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 ) - (signed word) point_init::x_diff#10 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#13 ) + (byte) point_init::point_idx#16 ← phi( point_init::abs16s1/(byte) point_init::point_idx#17 ) + (signed word) point_init::x_diff#13 ← phi( point_init::abs16s1/(signed word) point_init::x_diff#14 ) (signed word) point_init::y_diff#7 ← phi( point_init::abs16s1/(signed word) point_init::y_diff#9 ) (signed word) point_init::abs16s1_w#3 ← phi( point_init::abs16s1/(signed word) point_init::abs16s1_w#1 ) (word) point_init::abs16s1_$1#0 ← ((word)) (signed word) point_init::abs16s1_w#3 @@ -2107,16 +2108,16 @@ point_init::abs16s1_@3: scope:[point_init] from point_init::abs16s1 to:point_init::abs16s1_@return point_init::abs16s1_@return: scope:[point_init] from point_init::abs16s1_@1 point_init::abs16s1_@3 (byte) point_init::point_idx1#13 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx1#14 point_init::abs16s1_@3/(byte) point_init::point_idx1#15 ) - (byte) point_init::point_idx#11 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx#14 point_init::abs16s1_@3/(byte) point_init::point_idx#15 ) - (signed word) point_init::x_diff#7 ← phi( point_init::abs16s1_@1/(signed word) point_init::x_diff#9 point_init::abs16s1_@3/(signed word) point_init::x_diff#10 ) + (byte) point_init::point_idx#14 ← phi( point_init::abs16s1_@1/(byte) point_init::point_idx#15 point_init::abs16s1_@3/(byte) point_init::point_idx#16 ) + (signed word) point_init::x_diff#11 ← phi( point_init::abs16s1_@1/(signed word) point_init::x_diff#12 point_init::abs16s1_@3/(signed word) point_init::x_diff#13 ) (signed word) point_init::y_diff#3 ← phi( point_init::abs16s1_@1/(signed word) point_init::y_diff#6 point_init::abs16s1_@3/(signed word) point_init::y_diff#7 ) (word) point_init::abs16s1_return#3 ← phi( point_init::abs16s1_@1/(word) point_init::abs16s1_return#0 point_init::abs16s1_@3/(word) point_init::abs16s1_return#1 ) (word) point_init::abs16s1_return#2 ← (word) point_init::abs16s1_return#3 to:point_init::@9 point_init::@9: scope:[point_init] from point_init::abs16s1_@return (byte) point_init::point_idx1#12 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx1#13 ) - (byte) point_init::point_idx#9 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx#11 ) - (signed word) point_init::x_diff#4 ← phi( point_init::abs16s1_@return/(signed word) point_init::x_diff#7 ) + (byte) point_init::point_idx#13 ← phi( point_init::abs16s1_@return/(byte) point_init::point_idx#14 ) + (signed word) point_init::x_diff#10 ← phi( point_init::abs16s1_@return/(signed word) point_init::x_diff#11 ) (signed word) point_init::y_diff#1 ← phi( point_init::abs16s1_@return/(signed word) point_init::y_diff#3 ) (word) point_init::abs16s1_return#4 ← phi( point_init::abs16s1_@return/(word) point_init::abs16s1_return#2 ) (word~) point_init::$7 ← (word) point_init::abs16s1_return#4 @@ -2125,8 +2126,8 @@ point_init::@9: scope:[point_init] from point_init::abs16s1_@return point_init::abs16s2: scope:[point_init] from point_init::@9 (signed word) point_init::y_diff#14 ← phi( point_init::@9/(signed word) point_init::y_diff#1 ) (byte) point_init::point_idx1#11 ← phi( point_init::@9/(byte) point_init::point_idx1#12 ) - (byte) point_init::point_idx#16 ← phi( point_init::@9/(byte) point_init::point_idx#9 ) - (signed word) point_init::x_diff#14 ← phi( point_init::@9/(signed word) point_init::x_diff#4 ) + (byte) point_init::point_idx#12 ← phi( point_init::@9/(byte) point_init::point_idx#13 ) + (signed word) point_init::x_diff#9 ← phi( point_init::@9/(signed word) point_init::x_diff#10 ) (signed word) point_init::abs16s2_w#1 ← phi( point_init::@9/(signed word) point_init::abs16s2_w#0 ) (bool) point_init::abs16s2_$0#0 ← (signed word) point_init::abs16s2_w#1 < (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool) point_init::abs16s2_$0#0) goto point_init::abs16s2_@1 @@ -2134,8 +2135,8 @@ point_init::abs16s2: scope:[point_init] from point_init::@9 point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 (signed word) point_init::y_diff#12 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 ) (byte) point_init::point_idx1#8 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 ) - (byte) point_init::point_idx#12 ← phi( point_init::abs16s2/(byte) point_init::point_idx#16 ) - (signed word) point_init::x_diff#11 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#14 ) + (byte) point_init::point_idx#10 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 ) + (signed word) point_init::x_diff#7 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 ) (signed word) point_init::abs16s2_w#2 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 ) (signed word) point_init::abs16s2_$2#0 ← - (signed word) point_init::abs16s2_w#2 (word) point_init::abs16s2_$3#0 ← ((word)) (signed word) point_init::abs16s2_$2#0 @@ -2144,8 +2145,8 @@ point_init::abs16s2_@1: scope:[point_init] from point_init::abs16s2 point_init::abs16s2_@3: scope:[point_init] from point_init::abs16s2 (signed word) point_init::y_diff#13 ← phi( point_init::abs16s2/(signed word) point_init::y_diff#14 ) (byte) point_init::point_idx1#9 ← phi( point_init::abs16s2/(byte) point_init::point_idx1#11 ) - (byte) point_init::point_idx#13 ← phi( point_init::abs16s2/(byte) point_init::point_idx#16 ) - (signed word) point_init::x_diff#12 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#14 ) + (byte) point_init::point_idx#11 ← phi( point_init::abs16s2/(byte) point_init::point_idx#12 ) + (signed word) point_init::x_diff#8 ← phi( point_init::abs16s2/(signed word) point_init::x_diff#9 ) (signed word) point_init::abs16s2_w#3 ← phi( point_init::abs16s2/(signed word) point_init::abs16s2_w#1 ) (word) point_init::abs16s2_$1#0 ← ((word)) (signed word) point_init::abs16s2_w#3 (word) point_init::abs16s2_return#1 ← (word) point_init::abs16s2_$1#0 @@ -2153,8 +2154,8 @@ point_init::abs16s2_@3: scope:[point_init] from point_init::abs16s2 point_init::abs16s2_@return: scope:[point_init] from point_init::abs16s2_@1 point_init::abs16s2_@3 (signed word) point_init::y_diff#11 ← phi( point_init::abs16s2_@1/(signed word) point_init::y_diff#12 point_init::abs16s2_@3/(signed word) point_init::y_diff#13 ) (byte) point_init::point_idx1#5 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx1#8 point_init::abs16s2_@3/(byte) point_init::point_idx1#9 ) - (byte) point_init::point_idx#8 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx#12 point_init::abs16s2_@3/(byte) point_init::point_idx#13 ) - (signed word) point_init::x_diff#8 ← phi( point_init::abs16s2_@1/(signed word) point_init::x_diff#11 point_init::abs16s2_@3/(signed word) point_init::x_diff#12 ) + (byte) point_init::point_idx#8 ← phi( point_init::abs16s2_@1/(byte) point_init::point_idx#10 point_init::abs16s2_@3/(byte) point_init::point_idx#11 ) + (signed word) point_init::x_diff#6 ← phi( point_init::abs16s2_@1/(signed word) point_init::x_diff#7 point_init::abs16s2_@3/(signed word) point_init::x_diff#8 ) (word) point_init::abs16s2_return#3 ← phi( point_init::abs16s2_@1/(word) point_init::abs16s2_return#0 point_init::abs16s2_@3/(word) point_init::abs16s2_return#1 ) (word) point_init::abs16s2_return#2 ← (word) point_init::abs16s2_return#3 to:point_init::@10 @@ -2162,17 +2163,17 @@ point_init::@10: scope:[point_init] from point_init::abs16s2_@return (signed word) point_init::y_diff#10 ← phi( point_init::abs16s2_@return/(signed word) point_init::y_diff#11 ) (byte) point_init::point_idx1#3 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx1#5 ) (byte) point_init::point_idx#5 ← phi( point_init::abs16s2_@return/(byte) point_init::point_idx#8 ) - (signed word) point_init::x_diff#3 ← phi( point_init::abs16s2_@return/(signed word) point_init::x_diff#8 ) + (signed word) point_init::x_diff#3 ← phi( point_init::abs16s2_@return/(signed word) point_init::x_diff#6 ) (word) point_init::abs16s2_return#4 ← phi( point_init::abs16s2_@return/(word) point_init::abs16s2_return#2 ) (word~) point_init::$8 ← (word) point_init::abs16s2_return#4 (bool~) point_init::$9 ← (word~) point_init::$7 > (word~) point_init::$8 if((bool~) point_init::$9) goto point_init::@1 to:point_init::@2 -point_init::@1: scope:[point_init] from point_init point_init::@10 point_init::@9 - (byte) point_init::point_idx1#10 ← phi( point_init/(byte) point_init::point_idx1#0 point_init::@10/(byte) point_init::point_idx1#3 point_init::@9/(byte) point_init::point_idx1#12 ) - (signed word) point_init::y_diff#8 ← phi( point_init/(signed word) point_init::y_diff#0 point_init::@10/(signed word) point_init::y_diff#10 point_init::@9/(signed word) point_init::y_diff#1 ) - (byte) point_init::point_idx#7 ← phi( point_init/(byte) point_init::point_idx#1 point_init::@10/(byte) point_init::point_idx#5 point_init::@9/(byte) point_init::point_idx#9 ) - (signed word) point_init::x_diff#1 ← phi( point_init/(signed word) point_init::x_diff#0 point_init::@10/(signed word) point_init::x_diff#3 point_init::@9/(signed word) point_init::x_diff#4 ) +point_init::@1: scope:[point_init] from point_init::@10 + (byte) point_init::point_idx1#10 ← phi( point_init::@10/(byte) point_init::point_idx1#3 ) + (signed word) point_init::y_diff#8 ← phi( point_init::@10/(signed word) point_init::y_diff#10 ) + (byte) point_init::point_idx#7 ← phi( point_init::@10/(byte) point_init::point_idx#5 ) + (signed word) point_init::x_diff#1 ← phi( point_init::@10/(signed word) point_init::x_diff#3 ) (bool~) point_init::$10 ← (signed word) point_init::x_diff#1 < (byte/signed byte/word/signed word/dword/signed dword) 0 if((bool~) point_init::$10) goto point_init::@3 to:point_init::@7 @@ -2189,7 +2190,7 @@ point_init::@2: scope:[point_init] from point_init::@10 point_init::@11 point_init::@3: scope:[point_init] from point_init::@1 (byte) point_init::point_idx1#6 ← phi( point_init::@1/(byte) point_init::point_idx1#10 ) (signed word) point_init::y_diff#4 ← phi( point_init::@1/(signed word) point_init::y_diff#8 ) - (signed word) point_init::x_diff#5 ← phi( point_init::@1/(signed word) point_init::x_diff#1 ) + (signed word) point_init::x_diff#4 ← phi( point_init::@1/(signed word) point_init::x_diff#1 ) (byte) point_init::point_idx#3 ← phi( point_init::@1/(byte) point_init::point_idx#7 ) (signed byte/signed word/signed dword~) point_init::$11 ← - (byte/signed byte/word/signed word/dword/signed dword) 16 *((signed byte[4]) x_add#0 + (byte) point_init::point_idx#3) ← (signed byte/signed word/signed dword~) point_init::$11 @@ -2197,15 +2198,15 @@ point_init::@3: scope:[point_init] from point_init::@1 point_init::@7: scope:[point_init] from point_init::@1 (byte) point_init::point_idx1#7 ← phi( point_init::@1/(byte) point_init::point_idx1#10 ) (signed word) point_init::y_diff#5 ← phi( point_init::@1/(signed word) point_init::y_diff#8 ) - (signed word) point_init::x_diff#6 ← phi( point_init::@1/(signed word) point_init::x_diff#1 ) + (signed word) point_init::x_diff#5 ← phi( point_init::@1/(signed word) point_init::x_diff#1 ) (byte) point_init::point_idx#4 ← phi( point_init::@1/(byte) point_init::point_idx#7 ) *((signed byte[4]) x_add#0 + (byte) point_init::point_idx#4) ← (byte/signed byte/word/signed word/dword/signed dword) 16 to:point_init::@4 point_init::@4: scope:[point_init] from point_init::@3 point_init::@7 - (byte) point_init::point_idx#10 ← phi( point_init::@3/(byte) point_init::point_idx#3 point_init::@7/(byte) point_init::point_idx#4 ) + (byte) point_init::point_idx#9 ← phi( point_init::@3/(byte) point_init::point_idx#3 point_init::@7/(byte) point_init::point_idx#4 ) (byte) point_init::point_idx1#4 ← phi( point_init::@3/(byte) point_init::point_idx1#6 point_init::@7/(byte) point_init::point_idx1#7 ) (signed word) point_init::y_diff#2 ← phi( point_init::@3/(signed word) point_init::y_diff#4 point_init::@7/(signed word) point_init::y_diff#5 ) - (signed word) point_init::x_diff#2 ← phi( point_init::@3/(signed word) point_init::x_diff#5 point_init::@7/(signed word) point_init::x_diff#6 ) + (signed word) point_init::x_diff#2 ← phi( point_init::@3/(signed word) point_init::x_diff#4 point_init::@7/(signed word) point_init::x_diff#5 ) (signed word) divr16s::dividend#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (signed word) divr16s::divisor#0 ← (signed word) point_init::x_diff#2 (signed word) divr16s::rem#0 ← (signed word) point_init::y_diff#2 @@ -2213,7 +2214,7 @@ point_init::@4: scope:[point_init] from point_init::@3 point_init::@7 (signed word) divr16s::return#3 ← (signed word) divr16s::return#2 to:point_init::@11 point_init::@11: scope:[point_init] from point_init::@4 - (byte) point_init::point_idx#6 ← phi( point_init::@4/(byte) point_init::point_idx#10 ) + (byte) point_init::point_idx#6 ← phi( point_init::@4/(byte) point_init::point_idx#9 ) (byte) point_init::point_idx1#2 ← phi( point_init::@4/(byte) point_init::point_idx1#4 ) (signed word) divr16s::return#5 ← phi( point_init::@4/(signed word) divr16s::return#3 ) (signed word~) point_init::$12 ← (signed word) divr16s::return#5 @@ -3065,30 +3066,26 @@ Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1 Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$4 Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4 Alias (byte) point_init::point_idx1#0 = (byte~) point_init::$0 (byte) point_init::point_idx1#16 (byte) point_init::point_idx1#14 (byte) point_init::point_idx1#15 -Alias (signed word) point_init::abs16s1_w#0 = (signed word) point_init::x_diff#0 (signed word~) point_init::$3 (signed word) point_init::abs16s1_w#1 (signed word) point_init::x_diff#13 (signed word) point_init::abs16s1_w#2 (signed word) point_init::x_diff#9 (signed word) point_init::abs16s1_w#3 (signed word) point_init::x_diff#10 +Alias (signed word) point_init::abs16s1_w#0 = (signed word) point_init::x_diff#0 (signed word~) point_init::$3 (signed word) point_init::abs16s1_w#1 (signed word) point_init::x_diff#14 (signed word) point_init::abs16s1_w#2 (signed word) point_init::x_diff#12 (signed word) point_init::abs16s1_w#3 (signed word) point_init::x_diff#13 Alias (signed word) point_init::y_diff#0 = (signed word~) point_init::$6 (signed word) point_init::y_diff#9 (signed word) point_init::y_diff#6 (signed word) point_init::y_diff#7 -Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#17 (byte) point_init::point_idx#14 (byte) point_init::point_idx#15 +Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#17 (byte) point_init::point_idx#15 (byte) point_init::point_idx#16 Alias (word) point_init::abs16s1_return#0 = (word) point_init::abs16s1_$3#0 Alias (word) point_init::abs16s1_return#1 = (word) point_init::abs16s1_$1#0 Alias (word) point_init::abs16s1_return#2 = (word) point_init::abs16s1_return#3 (word) point_init::abs16s1_return#4 (word~) point_init::$7 Alias (signed word) point_init::y_diff#1 = (signed word) point_init::y_diff#3 (signed word) point_init::abs16s2_w#0 (signed word) point_init::abs16s2_w#1 (signed word) point_init::y_diff#14 (signed word) point_init::abs16s2_w#2 (signed word) point_init::y_diff#12 (signed word) point_init::abs16s2_w#3 (signed word) point_init::y_diff#13 -Alias (signed word) point_init::x_diff#11 = (signed word) point_init::x_diff#4 (signed word) point_init::x_diff#7 (signed word) point_init::x_diff#14 (signed word) point_init::x_diff#12 -Alias (byte) point_init::point_idx#11 = (byte) point_init::point_idx#9 (byte) point_init::point_idx#16 (byte) point_init::point_idx#12 (byte) point_init::point_idx#13 +Alias (signed word) point_init::x_diff#10 = (signed word) point_init::x_diff#11 (signed word) point_init::x_diff#9 (signed word) point_init::x_diff#7 (signed word) point_init::x_diff#8 +Alias (byte) point_init::point_idx#10 = (byte) point_init::point_idx#13 (byte) point_init::point_idx#14 (byte) point_init::point_idx#12 (byte) point_init::point_idx#11 Alias (byte) point_init::point_idx1#11 = (byte) point_init::point_idx1#12 (byte) point_init::point_idx1#13 (byte) point_init::point_idx1#8 (byte) point_init::point_idx1#9 Alias (word) point_init::abs16s2_return#0 = (word) point_init::abs16s2_$3#0 Alias (word) point_init::abs16s2_return#1 = (word) point_init::abs16s2_$1#0 Alias (word) point_init::abs16s2_return#2 = (word) point_init::abs16s2_return#3 (word) point_init::abs16s2_return#4 (word~) point_init::$8 -Alias (signed word) point_init::x_diff#3 = (signed word) point_init::x_diff#8 -Alias (byte) point_init::point_idx#5 = (byte) point_init::point_idx#8 -Alias (byte) point_init::point_idx1#3 = (byte) point_init::point_idx1#5 -Alias (signed word) point_init::y_diff#10 = (signed word) point_init::y_diff#11 -Alias (byte) point_init::point_idx#3 = (byte) point_init::point_idx#7 (byte) point_init::point_idx#4 -Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#5 (signed word) point_init::x_diff#6 -Alias (signed word) point_init::y_diff#4 = (signed word) point_init::y_diff#8 (signed word) point_init::y_diff#5 -Alias (byte) point_init::point_idx1#10 = (byte) point_init::point_idx1#6 (byte) point_init::point_idx1#7 +Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#3 (signed word) point_init::x_diff#6 (signed word) point_init::x_diff#4 (signed word) point_init::x_diff#5 +Alias (byte) point_init::point_idx#3 = (byte) point_init::point_idx#5 (byte) point_init::point_idx#8 (byte) point_init::point_idx#7 (byte) point_init::point_idx#4 +Alias (byte) point_init::point_idx1#10 = (byte) point_init::point_idx1#3 (byte) point_init::point_idx1#5 (byte) point_init::point_idx1#6 (byte) point_init::point_idx1#7 +Alias (signed word) point_init::y_diff#10 = (signed word) point_init::y_diff#11 (signed word) point_init::y_diff#8 (signed word) point_init::y_diff#4 (signed word) point_init::y_diff#5 Alias (signed word) divr16s::return#3 = (signed word) divr16s::return#5 Alias (byte) point_init::point_idx1#2 = (byte) point_init::point_idx1#4 -Alias (byte) point_init::point_idx#10 = (byte) point_init::point_idx#6 +Alias (byte) point_init::point_idx#6 = (byte) point_init::point_idx#9 Alias (signed word) point_init::x_stepf#0 = (signed word~) point_init::$12 Alias (byte) screen_fill::y#2 = (byte) screen_fill::y#3 Alias (byte) screen_fill::ch#1 = (byte) screen_fill::ch#4 @@ -3143,14 +3140,10 @@ Alias (word) divr16u::dividend#0 = (word) divr16u::dividend#5 Alias (signed word) divr16s::divisor#1 = (signed word) divr16s::divisor#4 Alias (word) divr16s::dividendu#3 = (word) divr16s::dividendu#4 Alias (word) divr16s::remu#3 = (word) divr16s::remu#4 -Alias (signed word) point_init::y_diff#0 = (signed word) point_init::y_diff#1 (signed word) point_init::y_diff#10 -Alias (signed word) point_init::x_diff#11 = (signed word) point_init::abs16s1_w#0 (signed word) point_init::x_diff#3 -Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#11 (byte) point_init::point_idx#5 -Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#11 (byte) point_init::point_idx1#3 -Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#2 -Alias (signed word) point_init::y_diff#2 = (signed word) point_init::y_diff#4 -Alias (byte) point_init::point_idx1#10 = (byte) point_init::point_idx1#2 -Alias (byte) point_init::point_idx#10 = (byte) point_init::point_idx#3 +Alias (signed word) point_init::y_diff#0 = (signed word) point_init::y_diff#1 (signed word) point_init::y_diff#10 (signed word) point_init::y_diff#2 +Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#10 (signed word) point_init::abs16s1_w#0 (signed word) point_init::x_diff#2 +Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#10 (byte) point_init::point_idx#3 (byte) point_init::point_idx#6 +Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#11 (byte) point_init::point_idx1#10 (byte) point_init::point_idx1#2 Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3 Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3 Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3 @@ -3176,40 +3169,6 @@ Not aliassing across scopes: screen_fill::screen#0 SCREEN#1 Not aliassing across scopes: point_init::point_idx#0 main::i#2 Not aliassing across scopes: point_init::point_idx#1 point_init::point_idx#0 Not aliassing across scopes: divr16s::divisor#0 point_init::x_diff#1 -Not aliassing across scopes: divr16s::rem#0 point_init::y_diff#2 -Not aliassing across scopes: divr16s::return#3 divr16s::return#2 -Not aliassing across scopes: point_init::x_stepf#0 divr16s::return#3 -Not aliassing across scopes: screen_fill::ch#3 screen_fill::ch#0 -Not aliassing across scopes: screen_fill::screen#4 screen_fill::screen#0 -Not aliassing across scopes: bitmap_init::bitmap#5 bitmap_init::bitmap#0 -Not aliassing across scopes: bitmap_plot::y#1 bitmap_plot::y#0 -Not aliassing across scopes: bitmap_plot::x#1 bitmap_plot::x#0 -Alias (signed word) point_init::x_diff#1 = (signed word) point_init::x_diff#11 -Alias (byte) point_init::point_idx#1 = (byte) point_init::point_idx#10 -Alias (signed word) point_init::y_diff#0 = (signed word) point_init::y_diff#2 -Alias (byte) point_init::point_idx1#0 = (byte) point_init::point_idx1#10 -Succesful SSA optimization Pass2AliasElimination -Not aliassing across scopes: divr16u::rem#8 divr16u::rem#3 -Not aliassing across scopes: divr16u::dividend#4 divr16u::dividend#1 -Not aliassing across scopes: divr16u::divisor#5 divr16u::divisor#0 -Not aliassing across scopes: divr16s::dividend#1 divr16s::dividend#0 -Not aliassing across scopes: divr16s::rem#1 divr16s::rem#0 -Not aliassing across scopes: divr16s::divisor#1 divr16s::divisor#0 -Not aliassing across scopes: divr16u::dividend#1 divr16s::dividendu#3 -Not aliassing across scopes: divr16u::divisor#0 divr16s::divisoru#3 -Not aliassing across scopes: divr16u::rem#3 divr16s::remu#3 -Not aliassing across scopes: divr16u::return#2 divr16u::return#0 -Not aliassing across scopes: divr16s::resultu#0 divr16u::return#2 -Not aliassing across scopes: SCREEN#1 SCREEN#0 -Not aliassing across scopes: BITMAP#1 BITMAP#0 -Not aliassing across scopes: main::vicSelectGfxBank1_gfx#0 SCREEN#1 -Not aliassing across scopes: main::toD0181_screen#0 SCREEN#1 -Not aliassing across scopes: main::toD0181_gfx#0 BITMAP#1 -Not aliassing across scopes: bitmap_init::bitmap#0 BITMAP#1 -Not aliassing across scopes: screen_fill::screen#0 SCREEN#1 -Not aliassing across scopes: point_init::point_idx#0 main::i#2 -Not aliassing across scopes: point_init::point_idx#1 point_init::point_idx#0 -Not aliassing across scopes: divr16s::divisor#0 point_init::x_diff#1 Not aliassing across scopes: divr16s::rem#0 point_init::y_diff#0 Not aliassing across scopes: divr16s::return#3 divr16s::return#2 Not aliassing across scopes: point_init::x_stepf#0 divr16s::return#3 @@ -3792,7 +3751,7 @@ point_init::@2: scope:[point_init] from point_init::@10 point_init::@11 point_init::@return: scope:[point_init] from point_init::@2 [53] return [ ] ( main:2::point_init:20 [ main::i#2 ] ) to:@return -point_init::@1: scope:[point_init] from point_init point_init::@10 +point_init::@1: scope:[point_init] from point_init::@10 [54] if((signed word) point_init::x_diff#1<(byte/signed byte/word/signed word/dword/signed dword) 0) goto point_init::@3 [ point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ( main:2::point_init:20 [ main::i#2 point_init::point_idx#0 point_init::point_idx1#0 point_init::x_diff#1 point_init::y_diff#0 ] ) to:point_init::@7 point_init::@7: scope:[point_init] from point_init::@1 @@ -4020,34 +3979,34 @@ point_init::abs16s2 dominated by main::toD0181 main::vicSelectGfxBank1 main mai point_init::@13 dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@13 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 point_init::abs16s2_@return dominated by main::toD0181 main::vicSelectGfxBank1 main point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 point_init::@10 dominated by main::toD0181 main::vicSelectGfxBank1 main point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -point_init::@2 dominated by main::toD0181 point_init::@2 main::vicSelectGfxBank1 main main::@1 @begin point_init main::vicSelectGfxBank1_@1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -point_init::@return dominated by main::toD0181 point_init::@2 main::vicSelectGfxBank1 main main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -point_init::@1 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main main::@1 @begin point_init main::vicSelectGfxBank1_@1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -point_init::@7 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@7 main::@1 @begin point_init main::vicSelectGfxBank1_@1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -point_init::@4 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 main::@1 @begin point_init main::vicSelectGfxBank1_@1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -point_init::@11 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 main::@1 @begin point_init point_init::@11 main::vicSelectGfxBank1_@1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -point_init::@3 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@3 main::@1 @begin point_init main::vicSelectGfxBank1_@1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +point_init::@2 dominated by main::toD0181 point_init::@2 main::vicSelectGfxBank1 main point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +point_init::@return dominated by main::toD0181 point_init::@2 main::vicSelectGfxBank1 main point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 point_init::abs16s1 point_init::abs16s2 point_init::@return point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +point_init::@1 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +point_init::@7 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@7 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +point_init::@4 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +point_init::@11 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 point_init::abs16s2_@return main::@1 @begin point_init point_init::@11 main::vicSelectGfxBank1_@1 point_init::@10 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +point_init::@3 dominated by main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@3 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 point_init::abs16s2_@1 dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 point_init::abs16s2_@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 point_init::abs16s1_@1 dominated by main::toD0181 main::vicSelectGfxBank1 main main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::abs16s1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 point_init::abs16s1_@1 -divr16s dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 main::@1 @begin point_init main::vicSelectGfxBank1_@1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -divr16s::@16 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -divr16s::@17 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@17 divr16s::@16 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -divr16s::@2 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -divr16s::@18 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 divr16s::@18 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -divr16s::@4 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16s::@15 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 divr16s::@15 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16s::@11 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 divr16s::@11 divr16s::@15 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16s::@return dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 main::@1 @begin divr16s::@return point_init main::vicSelectGfxBank1_@1 divr16s::@16 divr16s::@15 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16s::@19 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 divr16s::@19 divr16s::@15 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16s::@3 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 divr16s::@3 main::vicSelectGfxBank1_toDd001 -divr16s::@1 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@1 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 -divr16u dominated by divr16u divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16u::@1 dominated by divr16u divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16u::@4 dominated by divr16u divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16u::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16u::@2 dominated by divr16u divr16s main::toD0181 divr16u::@2 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16u::@5 dominated by divr16u divr16s main::toD0181 divr16u::@2 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16u::@5 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16u::@3 dominated by divr16u divr16s main::toD0181 divr16u::@2 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16u::@3 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 -divr16u::@return dominated by divr16u divr16s main::toD0181 divr16u::@2 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16u::@3 divr16s::@2 main::@1 @begin point_init main::vicSelectGfxBank1_@1 divr16s::@16 @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 divr16u::@return +divr16s dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +divr16s::@16 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +divr16s::@17 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@17 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +divr16s::@2 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +divr16s::@18 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 divr16s::@18 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +divr16s::@4 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16s::@15 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 divr16s::@15 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16s::@11 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 divr16s::@11 divr16s::@15 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16s::@return dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin divr16s::@return point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 divr16s::@15 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16s::@19 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 divr16s::@19 divr16s::@15 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16s::@3 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@3 main::vicSelectGfxBank1_toDd001 +divr16s::@1 dominated by divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@1 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 +divr16u dominated by divr16u divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16u::@1 dominated by divr16u divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16u::@4 dominated by divr16u divr16s main::toD0181 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16u::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16u::@2 dominated by divr16u divr16s main::toD0181 divr16u::@2 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16u::@5 dominated by divr16u divr16s main::toD0181 divr16u::@2 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16u::@5 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16u::@3 dominated by divr16u divr16s main::toD0181 divr16u::@2 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16u::@3 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 +divr16u::@return dominated by divr16u divr16s main::toD0181 divr16u::@2 main::vicSelectGfxBank1 point_init::@1 divr16u::@1 main point_init::@4 divr16u::@3 divr16s::@2 point_init::abs16s2_@return main::@1 @begin point_init main::vicSelectGfxBank1_@1 point_init::@10 divr16s::@16 point_init::abs16s1 point_init::abs16s2 point_init::abs16s1_@return @18 main::@17 main::@16 main::@18 divr16s::@4 main::vicSelectGfxBank1_toDd001 divr16u::@return screen_fill dominated by main::toD0181 main::vicSelectGfxBank1 main screen_fill @begin main::vicSelectGfxBank1_@1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 screen_fill::@1 dominated by main::toD0181 main::vicSelectGfxBank1 main screen_fill @begin main::vicSelectGfxBank1_@1 screen_fill::@1 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001 screen_fill::@2 dominated by main::toD0181 main::vicSelectGfxBank1 main screen_fill @begin main::vicSelectGfxBank1_@1 screen_fill::@1 screen_fill::@2 @18 main::@17 main::@16 main::@18 main::vicSelectGfxBank1_toDd001