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

Improved KC mul table gen.

This commit is contained in:
jespergravgaard 2017-12-28 15:10:56 +01:00
parent d1ee716008
commit ff51d04356
5 changed files with 125 additions and 124 deletions

View File

@ -23,8 +23,8 @@ void init_mul_tables() {
byte* sqr_hi = mul_sqr_hi+1;
for(byte* sqr_lo = mul_sqr_lo+1; sqr_lo!=mul_sqr_lo+512; sqr_lo++) {
if((++c&1)==0) {
sqr++; // sqr++ on even numbers because 1 = 2*1/4 (from the two previous numbers) + 1/2 (half of the previous uneven number)
x_2++; // increase i/2 on even numbers
sqr++; // sqr++ on even numbers because 1 = 2*1/4 (from the two previous numbers) + 1/2 (half of the previous uneven number)
}
*sqr_lo = <sqr;
*sqr_hi++ = >sqr;

View File

@ -75,11 +75,12 @@ init_mul_tables_asm: {
rts
}
init_mul_tables: {
.label c = 2
.label sqr_hi = 5
.label sqr_hi = 4
.label sqr = 7
.label sqr_lo = 3
ldx #0
.label sqr_lo = 2
.label x_2 = 6
lda #0
sta x_2
lda #<mul_sqr_hi+1
sta sqr_hi
lda #>mul_sqr_hi+1
@ -88,21 +89,21 @@ init_mul_tables: {
sta sqr_lo
lda #>mul_sqr_lo+1
sta sqr_lo+1
txa
lda #0
sta sqr
sta sqr+1
sta c
tax
b1:
inc c
lda c
inx
txa
and #1
cmp #0
bne b2
inc x_2
inc sqr
bne !+
inc sqr+1
!:
inx
b2:
lda sqr
ldy #0
@ -113,7 +114,7 @@ init_mul_tables: {
bne !+
inc sqr_hi+1
!:
txa
lda x_2
clc
adc sqr
sta sqr

View File

@ -77,8 +77,8 @@ init_mul_tables::@1: scope:[init_mul_tables] from init_mul_tables init_mul_tabl
[30] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] )
to:init_mul_tables::@3
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
[31] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] )
[32] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] )
[31] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] )
[32] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] )
to:init_mul_tables::@2
init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_tables::@3
[33] (byte) init_mul_tables::x_2#2 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#3 init_mul_tables::@3/(byte) init_mul_tables::x_2#1 ) [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] )

View File

@ -23,8 +23,8 @@ void init_mul_tables() {
byte* sqr_hi = mul_sqr_hi+1;
for(byte* sqr_lo = mul_sqr_lo+1; sqr_lo!=mul_sqr_lo+512; sqr_lo++) {
if((++c&1)==0) {
sqr++; // sqr++ on even numbers because 1 = 2*1/4 (from the two previous numbers) + 1/2 (half of the previous uneven number)
x_2++; // increase i/2 on even numbers
sqr++; // sqr++ on even numbers because 1 = 2*1/4 (from the two previous numbers) + 1/2 (half of the previous uneven number)
}
*sqr_lo = <sqr;
*sqr_hi++ = >sqr;
@ -83,8 +83,8 @@ void mul_tables_compare() {
}
}
Adding pre/post-modifier (byte) init_mul_tables::c ← ++ (byte) init_mul_tables::c
Adding pre/post-modifier (word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
Adding pre/post-modifier (byte) init_mul_tables::x_2 ← ++ (byte) init_mul_tables::x_2
Adding pre/post-modifier (word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
Adding pre/post-modifier (byte*) init_mul_tables::sqr_hi ← ++ (byte*) init_mul_tables::sqr_hi
Adding pre/post-modifier (byte*) init_mul_tables::sqr_lo ← ++ (byte*) init_mul_tables::sqr_lo
PROGRAM
@ -112,8 +112,8 @@ init_mul_tables::@1:
(boolean~) init_mul_tables::$3 ← (byte~) init_mul_tables::$2 == (byte/signed byte/word/signed word) 0
(boolean~) init_mul_tables::$4 ← ! (boolean~) init_mul_tables::$3
if((boolean~) init_mul_tables::$4) goto init_mul_tables::@2
(word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
(byte) init_mul_tables::x_2 ← ++ (byte) init_mul_tables::x_2
(word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
init_mul_tables::@2:
(byte~) init_mul_tables::$5 ← < (word) init_mul_tables::sqr
*((byte*) init_mul_tables::sqr_lo) ← (byte~) init_mul_tables::$5
@ -273,8 +273,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((boolean~) init_mul_tables::$9) goto init_mul_tables::@1
to:init_mul_tables::@4
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
(byte) init_mul_tables::x_2 ← ++ (byte) init_mul_tables::x_2
(word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
to:init_mul_tables::@2
init_mul_tables::@4: scope:[init_mul_tables] from init_mul_tables::@2
to:init_mul_tables::@return
@ -400,8 +400,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((boolean~) init_mul_tables::$9) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
(byte) init_mul_tables::x_2 ← ++ (byte) init_mul_tables::x_2
(word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -523,8 +523,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((boolean~) init_mul_tables::$9) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
(byte) init_mul_tables::x_2 ← ++ (byte) init_mul_tables::x_2
(word) init_mul_tables::sqr ← ++ (word) init_mul_tables::sqr
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -670,10 +670,10 @@ init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(byte) init_mul_tables::c#4 ← phi( init_mul_tables::@1/(byte) init_mul_tables::c#1 )
(byte*) init_mul_tables::sqr_hi#4 ← phi( init_mul_tables::@1/(byte*) init_mul_tables::sqr_hi#3 )
(byte*) init_mul_tables::sqr_lo#4 ← phi( init_mul_tables::@1/(byte*) init_mul_tables::sqr_lo#3 )
(byte) init_mul_tables::x_2#3 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#4 )
(word) init_mul_tables::sqr#4 ← phi( init_mul_tables::@1/(word) init_mul_tables::sqr#5 )
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#3 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#4 )
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -833,10 +833,10 @@ init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(byte) init_mul_tables::c#4 ← phi( init_mul_tables::@1/(byte) init_mul_tables::c#1 )
(byte*) init_mul_tables::sqr_hi#4 ← phi( init_mul_tables::@1/(byte*) init_mul_tables::sqr_hi#3 )
(byte*) init_mul_tables::sqr_lo#4 ← phi( init_mul_tables::@1/(byte*) init_mul_tables::sqr_lo#3 )
(byte) init_mul_tables::x_2#3 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#4 )
(word) init_mul_tables::sqr#4 ← phi( init_mul_tables::@1/(word) init_mul_tables::sqr#5 )
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#3 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#4 )
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -1120,10 +1120,10 @@ init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(byte) init_mul_tables::c#4 ← phi( init_mul_tables::@1/(byte) init_mul_tables::c#1 )
(byte*) init_mul_tables::sqr_hi#4 ← phi( init_mul_tables::@1/(byte*) init_mul_tables::sqr_hi#3 )
(byte*) init_mul_tables::sqr_lo#4 ← phi( init_mul_tables::@1/(byte*) init_mul_tables::sqr_lo#3 )
(byte) init_mul_tables::x_2#3 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#4 )
(word) init_mul_tables::sqr#4 ← phi( init_mul_tables::@1/(word) init_mul_tables::sqr#5 )
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#3 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#4 )
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -1284,10 +1284,10 @@ init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(byte) init_mul_tables::c#4 ← phi( init_mul_tables::@1/(byte) init_mul_tables::c#1 )
(byte*) init_mul_tables::sqr_hi#4 ← phi( init_mul_tables::@1/(byte*) init_mul_tables::sqr_hi#3 )
(byte*) init_mul_tables::sqr_lo#4 ← phi( init_mul_tables::@1/(byte*) init_mul_tables::sqr_lo#3 )
(byte) init_mul_tables::x_2#3 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#4 )
(word) init_mul_tables::sqr#4 ← phi( init_mul_tables::@1/(word) init_mul_tables::sqr#5 )
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#3 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#4 )
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -1379,8 +1379,8 @@ Alias (byte*) BGCOL#0 = (byte*) BGCOL#16 (byte*) BGCOL#15 (byte*) BGCOL#14
Alias (byte*) init_mul_tables::sqr_hi#0 = (byte*~) init_mul_tables::$0
Alias (byte*) init_mul_tables::sqr_lo#0 = (byte*~) init_mul_tables::$1
Alias (word) init_mul_tables::sqr#1 = (word~) init_mul_tables::$7
Alias (word) init_mul_tables::sqr#4 = (word) init_mul_tables::sqr#5
Alias (byte) init_mul_tables::x_2#3 = (byte) init_mul_tables::x_2#4
Alias (word) init_mul_tables::sqr#4 = (word) init_mul_tables::sqr#5
Alias (byte*) init_mul_tables::sqr_lo#3 = (byte*) init_mul_tables::sqr_lo#4
Alias (byte*) init_mul_tables::sqr_hi#3 = (byte*) init_mul_tables::sqr_hi#4
Alias (byte) init_mul_tables::c#1 = (byte) init_mul_tables::c#4
@ -1450,8 +1450,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((boolean~) init_mul_tables::$9) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -1588,8 +1588,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((boolean~) init_mul_tables::$9) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -1714,8 +1714,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((boolean~) init_mul_tables::$9) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -1839,8 +1839,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((boolean~) init_mul_tables::$9) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -1964,8 +1964,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((byte*) init_mul_tables::sqr_lo#1!=(byte*~) init_mul_tables::$8) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -2080,8 +2080,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((byte*) init_mul_tables::sqr_lo#1!=(byte*~) init_mul_tables::$8) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -2188,8 +2188,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((byte*) init_mul_tables::sqr_lo#1!=(const byte*) init_mul_tables::$8) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -2285,8 +2285,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((byte*) init_mul_tables::sqr_lo#1!=(const byte*) init_mul_tables::$8) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -2404,8 +2404,8 @@ init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_
if((byte*) init_mul_tables::sqr_lo#1!=(const byte[512]) mul_sqr_lo#0+(word/signed word) 512) goto init_mul_tables::@1
to:init_mul_tables::@return
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
to:init_mul_tables::@2
init_mul_tables::@return: scope:[init_mul_tables] from init_mul_tables::@2
return
@ -2598,8 +2598,8 @@ init_mul_tables::@1: scope:[init_mul_tables] from init_mul_tables init_mul_tabl
if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@6
to:init_mul_tables::@3
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3
(word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4
(word~) init_mul_tables::sqr#8 ← (word) init_mul_tables::sqr#2
(byte~) init_mul_tables::x_2#7 ← (byte) init_mul_tables::x_2#1
to:init_mul_tables::@2
@ -2738,8 +2738,8 @@ init_mul_tables::@1: scope:[init_mul_tables] from init_mul_tables init_mul_tabl
[31] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@6 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ]
to:init_mul_tables::@3
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
[32] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ]
[33] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ]
[32] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ]
[33] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ]
[34] (word~) init_mul_tables::sqr#8 ← (word) init_mul_tables::sqr#2 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#8 ]
[35] (byte~) init_mul_tables::x_2#7 ← (byte) init_mul_tables::x_2#1 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#8 init_mul_tables::x_2#7 ]
to:init_mul_tables::@2
@ -2884,8 +2884,8 @@ init_mul_tables::@1: scope:[init_mul_tables] from init_mul_tables init_mul_tabl
[30] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ]
to:init_mul_tables::@3
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
[31] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ]
[32] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ]
[31] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ]
[32] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ]
to:init_mul_tables::@2
init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_tables::@3
[33] (byte) init_mul_tables::x_2#2 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#3 init_mul_tables::@3/(byte) init_mul_tables::x_2#1 ) [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ]
@ -2983,8 +2983,8 @@ init_mul_tables::@1: scope:[init_mul_tables] from init_mul_tables init_mul_tabl
[30] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] )
to:init_mul_tables::@3
init_mul_tables::@3: scope:[init_mul_tables] from init_mul_tables::@1
[31] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] )
[32] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] )
[31] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] )
[32] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] )
to:init_mul_tables::@2
init_mul_tables::@2: scope:[init_mul_tables] from init_mul_tables::@1 init_mul_tables::@3
[33] (byte) init_mul_tables::x_2#2 ← phi( init_mul_tables::@1/(byte) init_mul_tables::x_2#3 init_mul_tables::@3/(byte) init_mul_tables::x_2#1 ) [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#2 init_mul_tables::sqr#3 ] )
@ -3062,9 +3062,9 @@ VARIABLE REGISTER WEIGHTS
(byte) init_mul_tables::c#2 22.0
(word) init_mul_tables::sqr
(word) init_mul_tables::sqr#1 7.333333333333333
(word) init_mul_tables::sqr#2 11.0
(word) init_mul_tables::sqr#2 22.0
(word) init_mul_tables::sqr#3 9.166666666666666
(word) init_mul_tables::sqr#4 8.25
(word) init_mul_tables::sqr#4 6.6000000000000005
(byte*) init_mul_tables::sqr_hi
(byte*) init_mul_tables::sqr_hi#1 5.5
(byte*) init_mul_tables::sqr_hi#2 3.0
@ -3072,9 +3072,9 @@ VARIABLE REGISTER WEIGHTS
(byte*) init_mul_tables::sqr_lo#1 16.5
(byte*) init_mul_tables::sqr_lo#2 2.5384615384615383
(byte) init_mul_tables::x_2
(byte) init_mul_tables::x_2#1 22.0
(byte) init_mul_tables::x_2#1 11.0
(byte) init_mul_tables::x_2#2 4.888888888888889
(byte) init_mul_tables::x_2#3 6.6000000000000005
(byte) init_mul_tables::x_2#3 8.25
(void()) init_mul_tables_asm()
(void()) main()
(byte[512]) mul_sqr_hi
@ -3340,13 +3340,13 @@ init_mul_tables: {
jmp b3
//SEG68 init_mul_tables::@3
b3:
//SEG69 [31] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1
//SEG69 [31] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1
inc x_2
//SEG70 [32] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1
inc sqr
bne !+
inc sqr+1
!:
//SEG70 [32] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1
inc x_2
//SEG71 [33] phi from init_mul_tables::@1 init_mul_tables::@3 to init_mul_tables::@2 [phi:init_mul_tables::@1/init_mul_tables::@3->init_mul_tables::@2]
b2_from_b1:
b2_from_b3:
@ -3452,22 +3452,22 @@ Potential registers zp ZP_BYTE:12 [ init_mul_tables::$5 ] : zp ZP_BYTE:12 , reg
Potential registers zp ZP_BYTE:13 [ init_mul_tables::$6 ] : zp ZP_BYTE:13 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [init_mul_tables] 35.75: zp ZP_WORD:9 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] 33.49: zp ZP_BYTE:8 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] 24.36: zp ZP_BYTE:3 [ init_mul_tables::c#2 init_mul_tables::c#1 ] 22: zp ZP_BYTE:11 [ init_mul_tables::$2 ] 22: zp ZP_BYTE:12 [ init_mul_tables::$5 ] 22: zp ZP_BYTE:13 [ init_mul_tables::$6 ] 19.04: zp ZP_WORD:4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ] 8.5: zp ZP_WORD:6 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
Uplift Scope [init_mul_tables] 45.1: zp ZP_WORD:9 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] 24.36: zp ZP_BYTE:3 [ init_mul_tables::c#2 init_mul_tables::c#1 ] 24.14: zp ZP_BYTE:8 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] 22: zp ZP_BYTE:11 [ init_mul_tables::$2 ] 22: zp ZP_BYTE:12 [ init_mul_tables::$5 ] 22: zp ZP_BYTE:13 [ init_mul_tables::$6 ] 19.04: zp ZP_WORD:4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ] 8.5: zp ZP_WORD:6 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
Uplift Scope [mul_tables_compare] 28.72: zp ZP_BYTE:2 [ mul_tables_compare::i#10 mul_tables_compare::i#1 ]
Uplift Scope [main]
Uplift Scope [init_mul_tables_asm]
Uplift Scope []
Uplifting [init_mul_tables] best 3127 combination zp ZP_WORD:9 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] reg byte x [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] zp ZP_BYTE:3 [ init_mul_tables::c#2 init_mul_tables::c#1 ] reg byte a [ init_mul_tables::$2 ] reg byte a [ init_mul_tables::$5 ] reg byte a [ init_mul_tables::$6 ] zp ZP_WORD:4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ] zp ZP_WORD:6 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
Uplifting [init_mul_tables] best 3127 combination zp ZP_WORD:9 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ] reg byte x [ init_mul_tables::c#2 init_mul_tables::c#1 ] zp ZP_BYTE:8 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ] reg byte a [ init_mul_tables::$2 ] reg byte a [ init_mul_tables::$5 ] reg byte a [ init_mul_tables::$6 ] zp ZP_WORD:4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ] zp ZP_WORD:6 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
Uplifting [mul_tables_compare] best 2937 combination reg byte x [ mul_tables_compare::i#10 mul_tables_compare::i#1 ]
Uplifting [main] best 2937 combination
Uplifting [init_mul_tables_asm] best 2937 combination
Uplifting [] best 2937 combination
Attempting to uplift remaining variables inzp ZP_BYTE:3 [ init_mul_tables::c#2 init_mul_tables::c#1 ]
Uplifting [init_mul_tables] best 2937 combination zp ZP_BYTE:3 [ init_mul_tables::c#2 init_mul_tables::c#1 ]
Allocated (was zp ZP_BYTE:3) zp ZP_BYTE:2 [ init_mul_tables::c#2 init_mul_tables::c#1 ]
Allocated (was zp ZP_WORD:4) zp ZP_WORD:3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ]
Allocated (was zp ZP_WORD:6) zp ZP_WORD:5 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:8 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ]
Uplifting [init_mul_tables] best 2937 combination zp ZP_BYTE:8 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ]
Allocated (was zp ZP_WORD:4) zp ZP_WORD:2 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ]
Allocated (was zp ZP_WORD:6) zp ZP_WORD:4 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
Allocated (was zp ZP_BYTE:8) zp ZP_BYTE:6 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ]
Allocated (was zp ZP_WORD:9) zp ZP_WORD:7 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ]
ASSEMBLER BEFORE OPTIMIZATION
@ -3637,14 +3637,15 @@ init_mul_tables_asm: {
}
//SEG51 init_mul_tables
init_mul_tables: {
.label c = 2
.label sqr_hi = 5
.label sqr_hi = 4
.label sqr = 7
.label sqr_lo = 3
.label sqr_lo = 2
.label x_2 = 6
//SEG52 [27] phi from init_mul_tables to init_mul_tables::@1 [phi:init_mul_tables->init_mul_tables::@1]
b1_from_init_mul_tables:
//SEG53 [27] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuxx=vbuc1
ldx #0
//SEG53 [27] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuz1=vbuc1
lda #0
sta x_2
//SEG54 [27] phi (byte*) init_mul_tables::sqr_hi#2 = (const byte[512]) mul_sqr_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#1] -- pbuz1=pbuc1
lda #<mul_sqr_hi+1
sta sqr_hi
@ -3660,9 +3661,8 @@ init_mul_tables: {
sta sqr
lda #0
sta sqr+1
//SEG57 [27] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuz1=vbuc1
lda #0
sta c
//SEG57 [27] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuxx=vbuc1
ldx #0
jmp b1
//SEG58 [27] phi from init_mul_tables::@2 to init_mul_tables::@1 [phi:init_mul_tables::@2->init_mul_tables::@1]
b1_from_b2:
@ -3674,10 +3674,10 @@ init_mul_tables: {
jmp b1
//SEG64 init_mul_tables::@1
b1:
//SEG65 [28] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuz1=_inc_vbuz1
inc c
//SEG66 [29] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuaa=vbuz1_band_vbuc1
lda c
//SEG65 [28] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuxx=_inc_vbuxx
inx
//SEG66 [29] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuaa=vbuxx_band_vbuc1
txa
and #1
//SEG67 [30] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuaa_neq_0_then_la1
cmp #0
@ -3685,13 +3685,13 @@ init_mul_tables: {
jmp b3
//SEG68 init_mul_tables::@3
b3:
//SEG69 [31] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1
//SEG69 [31] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1
inc x_2
//SEG70 [32] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1
inc sqr
bne !+
inc sqr+1
!:
//SEG70 [32] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] ) -- vbuxx=_inc_vbuxx
inx
//SEG71 [33] phi from init_mul_tables::@1 init_mul_tables::@3 to init_mul_tables::@2 [phi:init_mul_tables::@1/init_mul_tables::@3->init_mul_tables::@2]
b2_from_b1:
b2_from_b3:
@ -3715,8 +3715,8 @@ init_mul_tables: {
bne !+
inc sqr_hi+1
!:
//SEG80 [39] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuxx
txa
//SEG80 [39] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2
lda x_2
clc
adc sqr
sta sqr
@ -3764,9 +3764,8 @@ Removing instruction jmp b3
Removing instruction jmp b2
Removing instruction jmp breturn
Succesful ASM optimization Pass5NextJumpElimination
Replacing instruction lda #0 with TXA
Removing instruction lda #0
Removing instruction lda #0
Replacing instruction ldx #0 with TAX
Removing instruction ldy #0
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label b1_from_b5 with b1
@ -3824,23 +3823,23 @@ FINAL SYMBOL TABLE
(label) init_mul_tables::@3
(label) init_mul_tables::@return
(byte) init_mul_tables::c
(byte) init_mul_tables::c#1 c zp ZP_BYTE:2 2.357142857142857
(byte) init_mul_tables::c#2 c zp ZP_BYTE:2 22.0
(byte) init_mul_tables::c#1 reg byte x 2.357142857142857
(byte) init_mul_tables::c#2 reg byte x 22.0
(word) init_mul_tables::sqr
(word) init_mul_tables::sqr#1 sqr zp ZP_WORD:7 7.333333333333333
(word) init_mul_tables::sqr#2 sqr zp ZP_WORD:7 11.0
(word) init_mul_tables::sqr#2 sqr zp ZP_WORD:7 22.0
(word) init_mul_tables::sqr#3 sqr zp ZP_WORD:7 9.166666666666666
(word) init_mul_tables::sqr#4 sqr zp ZP_WORD:7 8.25
(word) init_mul_tables::sqr#4 sqr zp ZP_WORD:7 6.6000000000000005
(byte*) init_mul_tables::sqr_hi
(byte*) init_mul_tables::sqr_hi#1 sqr_hi zp ZP_WORD:5 5.5
(byte*) init_mul_tables::sqr_hi#2 sqr_hi zp ZP_WORD:5 3.0
(byte*) init_mul_tables::sqr_hi#1 sqr_hi zp ZP_WORD:4 5.5
(byte*) init_mul_tables::sqr_hi#2 sqr_hi zp ZP_WORD:4 3.0
(byte*) init_mul_tables::sqr_lo
(byte*) init_mul_tables::sqr_lo#1 sqr_lo zp ZP_WORD:3 16.5
(byte*) init_mul_tables::sqr_lo#2 sqr_lo zp ZP_WORD:3 2.5384615384615383
(byte*) init_mul_tables::sqr_lo#1 sqr_lo zp ZP_WORD:2 16.5
(byte*) init_mul_tables::sqr_lo#2 sqr_lo zp ZP_WORD:2 2.5384615384615383
(byte) init_mul_tables::x_2
(byte) init_mul_tables::x_2#1 reg byte x 22.0
(byte) init_mul_tables::x_2#2 reg byte x 4.888888888888889
(byte) init_mul_tables::x_2#3 reg byte x 6.6000000000000005
(byte) init_mul_tables::x_2#1 x_2 zp ZP_BYTE:6 11.0
(byte) init_mul_tables::x_2#2 x_2 zp ZP_BYTE:6 4.888888888888889
(byte) init_mul_tables::x_2#3 x_2 zp ZP_BYTE:6 8.25
(void()) init_mul_tables_asm()
(label) init_mul_tables_asm::@return
(void()) main()
@ -3867,10 +3866,10 @@ FINAL SYMBOL TABLE
(byte) mul_tables_compare::i#10 reg byte x 12.222222222222221
reg byte x [ mul_tables_compare::i#10 mul_tables_compare::i#1 ]
zp ZP_BYTE:2 [ init_mul_tables::c#2 init_mul_tables::c#1 ]
zp ZP_WORD:3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ]
zp ZP_WORD:5 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
reg byte x [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ]
reg byte x [ init_mul_tables::c#2 init_mul_tables::c#1 ]
zp ZP_WORD:2 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ]
zp ZP_WORD:4 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
zp ZP_BYTE:6 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ]
zp ZP_WORD:7 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ]
reg byte a [ init_mul_tables::$2 ]
reg byte a [ init_mul_tables::$5 ]
@ -4006,13 +4005,14 @@ init_mul_tables_asm: {
}
//SEG51 init_mul_tables
init_mul_tables: {
.label c = 2
.label sqr_hi = 5
.label sqr_hi = 4
.label sqr = 7
.label sqr_lo = 3
.label sqr_lo = 2
.label x_2 = 6
//SEG52 [27] phi from init_mul_tables to init_mul_tables::@1 [phi:init_mul_tables->init_mul_tables::@1]
//SEG53 [27] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuxx=vbuc1
ldx #0
//SEG53 [27] phi (byte) init_mul_tables::x_2#3 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#0] -- vbuz1=vbuc1
lda #0
sta x_2
//SEG54 [27] phi (byte*) init_mul_tables::sqr_hi#2 = (const byte[512]) mul_sqr_hi#0+(byte/signed byte/word/signed word) 1 [phi:init_mul_tables->init_mul_tables::@1#1] -- pbuz1=pbuc1
lda #<mul_sqr_hi+1
sta sqr_hi
@ -4024,11 +4024,11 @@ init_mul_tables: {
lda #>mul_sqr_lo+1
sta sqr_lo+1
//SEG56 [27] phi (word) init_mul_tables::sqr#4 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#3] -- vwuz1=vbuc1
txa
lda #0
sta sqr
sta sqr+1
//SEG57 [27] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuz1=vbuc1
sta c
//SEG57 [27] phi (byte) init_mul_tables::c#2 = (byte/signed byte/word/signed word) 0 [phi:init_mul_tables->init_mul_tables::@1#4] -- vbuxx=vbuc1
tax
//SEG58 [27] phi from init_mul_tables::@2 to init_mul_tables::@1 [phi:init_mul_tables::@2->init_mul_tables::@1]
//SEG59 [27] phi (byte) init_mul_tables::x_2#3 = (byte) init_mul_tables::x_2#2 [phi:init_mul_tables::@2->init_mul_tables::@1#0] -- register_copy
//SEG60 [27] phi (byte*) init_mul_tables::sqr_hi#2 = (byte*) init_mul_tables::sqr_hi#1 [phi:init_mul_tables::@2->init_mul_tables::@1#1] -- register_copy
@ -4037,22 +4037,22 @@ init_mul_tables: {
//SEG63 [27] phi (byte) init_mul_tables::c#2 = (byte) init_mul_tables::c#1 [phi:init_mul_tables::@2->init_mul_tables::@1#4] -- register_copy
//SEG64 init_mul_tables::@1
b1:
//SEG65 [28] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuz1=_inc_vbuz1
inc c
//SEG66 [29] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuaa=vbuz1_band_vbuc1
lda c
//SEG65 [28] (byte) init_mul_tables::c#1 ← ++ (byte) init_mul_tables::c#2 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuxx=_inc_vbuxx
inx
//SEG66 [29] (byte~) init_mul_tables::$2 ← (byte) init_mul_tables::c#1 & (byte/signed byte/word/signed word) 1 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::$2 ] ) -- vbuaa=vbuxx_band_vbuc1
txa
and #1
//SEG67 [30] if((byte~) init_mul_tables::$2!=(byte/signed byte/word/signed word) 0) goto init_mul_tables::@2 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 ] ) -- vbuaa_neq_0_then_la1
cmp #0
bne b2
//SEG68 init_mul_tables::@3
//SEG69 [31] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::x_2#3 init_mul_tables::c#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1
//SEG69 [31] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr#4 init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 ] ) -- vbuz1=_inc_vbuz1
inc x_2
//SEG70 [32] (word) init_mul_tables::sqr#2 ← ++ (word) init_mul_tables::sqr#4 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::x_2#1 init_mul_tables::sqr#2 ] ) -- vwuz1=_inc_vwuz1
inc sqr
bne !+
inc sqr+1
!:
//SEG70 [32] (byte) init_mul_tables::x_2#1 ← ++ (byte) init_mul_tables::x_2#3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_hi#2 init_mul_tables::c#1 init_mul_tables::sqr#2 init_mul_tables::x_2#1 ] ) -- vbuxx=_inc_vbuxx
inx
//SEG71 [33] phi from init_mul_tables::@1 init_mul_tables::@3 to init_mul_tables::@2 [phi:init_mul_tables::@1/init_mul_tables::@3->init_mul_tables::@2]
//SEG72 [33] phi (byte) init_mul_tables::x_2#2 = (byte) init_mul_tables::x_2#3 [phi:init_mul_tables::@1/init_mul_tables::@3->init_mul_tables::@2#0] -- register_copy
//SEG73 [33] phi (word) init_mul_tables::sqr#3 = (word) init_mul_tables::sqr#4 [phi:init_mul_tables::@1/init_mul_tables::@3->init_mul_tables::@2#1] -- register_copy
@ -4072,8 +4072,8 @@ init_mul_tables: {
bne !+
inc sqr_hi+1
!:
//SEG80 [39] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuxx
txa
//SEG80 [39] (word) init_mul_tables::sqr#1 ← (word) init_mul_tables::sqr#3 + (byte) init_mul_tables::x_2#2 [ init_mul_tables::sqr_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr_hi#1 init_mul_tables::x_2#2 ] ( main:2::init_mul_tables:5 [ init_mul_tables::sqr_lo#2 init_mul_tables::c#1 init_mul_tables::sqr#1 init_mul_tables::sqr_hi#1 init_mul_tables::x_2#2 ] ) -- vwuz1=vwuz1_plus_vbuz2
lda x_2
clc
adc sqr
sta sqr

View File

@ -16,23 +16,23 @@
(label) init_mul_tables::@3
(label) init_mul_tables::@return
(byte) init_mul_tables::c
(byte) init_mul_tables::c#1 c zp ZP_BYTE:2 2.357142857142857
(byte) init_mul_tables::c#2 c zp ZP_BYTE:2 22.0
(byte) init_mul_tables::c#1 reg byte x 2.357142857142857
(byte) init_mul_tables::c#2 reg byte x 22.0
(word) init_mul_tables::sqr
(word) init_mul_tables::sqr#1 sqr zp ZP_WORD:7 7.333333333333333
(word) init_mul_tables::sqr#2 sqr zp ZP_WORD:7 11.0
(word) init_mul_tables::sqr#2 sqr zp ZP_WORD:7 22.0
(word) init_mul_tables::sqr#3 sqr zp ZP_WORD:7 9.166666666666666
(word) init_mul_tables::sqr#4 sqr zp ZP_WORD:7 8.25
(word) init_mul_tables::sqr#4 sqr zp ZP_WORD:7 6.6000000000000005
(byte*) init_mul_tables::sqr_hi
(byte*) init_mul_tables::sqr_hi#1 sqr_hi zp ZP_WORD:5 5.5
(byte*) init_mul_tables::sqr_hi#2 sqr_hi zp ZP_WORD:5 3.0
(byte*) init_mul_tables::sqr_hi#1 sqr_hi zp ZP_WORD:4 5.5
(byte*) init_mul_tables::sqr_hi#2 sqr_hi zp ZP_WORD:4 3.0
(byte*) init_mul_tables::sqr_lo
(byte*) init_mul_tables::sqr_lo#1 sqr_lo zp ZP_WORD:3 16.5
(byte*) init_mul_tables::sqr_lo#2 sqr_lo zp ZP_WORD:3 2.5384615384615383
(byte*) init_mul_tables::sqr_lo#1 sqr_lo zp ZP_WORD:2 16.5
(byte*) init_mul_tables::sqr_lo#2 sqr_lo zp ZP_WORD:2 2.5384615384615383
(byte) init_mul_tables::x_2
(byte) init_mul_tables::x_2#1 reg byte x 22.0
(byte) init_mul_tables::x_2#2 reg byte x 4.888888888888889
(byte) init_mul_tables::x_2#3 reg byte x 6.6000000000000005
(byte) init_mul_tables::x_2#1 x_2 zp ZP_BYTE:6 11.0
(byte) init_mul_tables::x_2#2 x_2 zp ZP_BYTE:6 4.888888888888889
(byte) init_mul_tables::x_2#3 x_2 zp ZP_BYTE:6 8.25
(void()) init_mul_tables_asm()
(label) init_mul_tables_asm::@return
(void()) main()
@ -59,10 +59,10 @@
(byte) mul_tables_compare::i#10 reg byte x 12.222222222222221
reg byte x [ mul_tables_compare::i#10 mul_tables_compare::i#1 ]
zp ZP_BYTE:2 [ init_mul_tables::c#2 init_mul_tables::c#1 ]
zp ZP_WORD:3 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ]
zp ZP_WORD:5 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
reg byte x [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ]
reg byte x [ init_mul_tables::c#2 init_mul_tables::c#1 ]
zp ZP_WORD:2 [ init_mul_tables::sqr_lo#2 init_mul_tables::sqr_lo#1 ]
zp ZP_WORD:4 [ init_mul_tables::sqr_hi#2 init_mul_tables::sqr_hi#1 ]
zp ZP_BYTE:6 [ init_mul_tables::x_2#3 init_mul_tables::x_2#2 init_mul_tables::x_2#1 ]
zp ZP_WORD:7 [ init_mul_tables::sqr#3 init_mul_tables::sqr#4 init_mul_tables::sqr#1 init_mul_tables::sqr#2 ]
reg byte a [ init_mul_tables::$2 ]
reg byte a [ init_mul_tables::$5 ]