1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-29 18:49:42 +00:00

Optimized fragments for comparisons and signed byte pointers.

This commit is contained in:
jespergravgaard 2020-08-02 12:27:20 +02:00
parent d12f29458e
commit b8682bd770
23 changed files with 1320 additions and 2567 deletions

View File

@ -1,246 +1,4 @@
//KICKC FRAGMENT CACHE 15e646b5c5
//FRAGMENT vbuzz=vbuc1
ldz #{c1}
//FRAGMENT vbuzz_lt_vbuc1_then_la1
cpz #{c1}
bcc {la1}
//FRAGMENT pbuc1_derefidx_vbuzz=vbuzz
tza
tax
sta {c1},x
//FRAGMENT vbuzz=_inc_vbuzz
inz
//FRAGMENT vbsz1=_deref_pbsc1
lda {c1}
sta {z1}
//FRAGMENT vbsz1=_neg_vbsz2
lda {z2}
neg
sta {z1}
//FRAGMENT _deref_pbsc1=vbsz1
lda {z1}
sta {c1}
//FRAGMENT vbsz1=vbsz2_ror_2
lda {z2}
asr
asr
sta {z1}
//FRAGMENT vbsaa=_deref_pbsc1
lda {c1}
//FRAGMENT vbsxx=_deref_pbsc1
ldx {c1}
//FRAGMENT vbsz1=_neg_vbsaa
neg
sta {z1}
//FRAGMENT vbsz1=_neg_vbsxx
txa
neg
sta {z1}
//FRAGMENT vbsz1=_neg_vbsyy
tya
neg
sta {z1}
//FRAGMENT vbsz1=_neg_vbszz
tza
neg
sta {z1}
//FRAGMENT vbsaa=_neg_vbsz1
lda {z1}
neg
//FRAGMENT vbsaa=_neg_vbsaa
neg
//FRAGMENT vbsaa=_neg_vbsxx
txa
neg
//FRAGMENT vbsaa=_neg_vbsyy
tya
neg
//FRAGMENT vbsaa=_neg_vbszz
tza
neg
//FRAGMENT vbsxx=_neg_vbsz1
lda {z1}
neg
tax
//FRAGMENT vbsxx=_neg_vbsaa
neg
tax
//FRAGMENT vbsxx=_neg_vbsxx
txa
neg
tax
//FRAGMENT vbsxx=_neg_vbsyy
tya
neg
tax
//FRAGMENT vbsxx=_neg_vbszz
tza
neg
tax
//FRAGMENT vbsyy=_neg_vbsz1
lda {z1}
neg
tay
//FRAGMENT vbsyy=_neg_vbsaa
neg
tay
//FRAGMENT vbsyy=_neg_vbsxx
txa
neg
tay
//FRAGMENT vbsyy=_neg_vbsyy
tya
neg
tay
//FRAGMENT vbsyy=_neg_vbszz
tza
neg
tay
//FRAGMENT vbszz=_neg_vbsz1
lda {z1}
neg
taz
//FRAGMENT vbszz=_neg_vbsaa
neg
taz
//FRAGMENT vbszz=_neg_vbsxx
txa
neg
taz
//FRAGMENT vbszz=_neg_vbsyy
tya
neg
taz
//FRAGMENT vbszz=_neg_vbszz
tza
neg
taz
//FRAGMENT _deref_pbsc1=vbsaa
sta {c1}
//FRAGMENT vbsz1=vbsaa_ror_2
asr
asr
sta {z1}
//FRAGMENT vbsz1=vbsxx_ror_2
txa
asr
asr
sta {z1}
//FRAGMENT vbsz1=vbsyy_ror_2
tya
asr
asr
sta {z1}
//FRAGMENT vbsz1=vbszz_ror_2
tza
asr
asr
sta {z1}
//FRAGMENT vbsaa=vbsz1_ror_2
lda {z1}
asr
asr
//FRAGMENT vbsaa=vbsaa_ror_2
asr
asr
//FRAGMENT vbsaa=vbsxx_ror_2
txa
asr
asr
//FRAGMENT vbsaa=vbsyy_ror_2
tya
asr
asr
//FRAGMENT vbsaa=vbszz_ror_2
tza
asr
asr
//FRAGMENT vbsxx=vbsz1_ror_2
lda {z1}
asr
asr
tax
//FRAGMENT vbsxx=vbsaa_ror_2
asr
asr
tax
//FRAGMENT vbsxx=vbsxx_ror_2
txa
asr
asr
tax
//FRAGMENT vbsxx=vbsyy_ror_2
tya
asr
asr
tax
//FRAGMENT vbsxx=vbszz_ror_2
tza
asr
asr
tax
//FRAGMENT vbsyy=vbsz1_ror_2
lda {z1}
asr
asr
tay
//FRAGMENT vbsyy=vbsaa_ror_2
asr
asr
tay
//FRAGMENT vbsyy=vbsxx_ror_2
txa
asr
asr
tay
//FRAGMENT vbsyy=vbsyy_ror_2
tya
asr
asr
tay
//FRAGMENT vbsyy=vbszz_ror_2
tza
asr
asr
tay
//FRAGMENT vbszz=vbsz1_ror_2
lda {z1}
asr
asr
taz
//FRAGMENT vbszz=vbsaa_ror_2
asr
asr
taz
//FRAGMENT vbszz=vbsxx_ror_2
txa
asr
asr
taz
//FRAGMENT vbszz=vbsyy_ror_2
tya
asr
asr
taz
//FRAGMENT vbszz=vbszz_ror_2
tza
asr
asr
taz
//FRAGMENT vbsyy=_deref_pbsc1
ldy {c1}
//FRAGMENT vbszz=_deref_pbsc1
lda {c1}
taz
//FRAGMENT _deref_pbsc1=vbsxx
txa
sta {c1}
//FRAGMENT _deref_pbsc1=vbsyy
tya
sta {c1}
//FRAGMENT _deref_pbsc1=vbszz
tza
sta {c1}
//KICKC FRAGMENT CACHE 16e7ed5268
//FRAGMENT vbuz1=vbuc1
lda #{c1}
sta {z1}
@ -2176,6 +1934,8 @@ cpx {z1}
bcs {la1}
//FRAGMENT vbuxx=vbuc1
ldx #{c1}
//FRAGMENT vbuzz=vbuc1
ldz #{c1}
//FRAGMENT vbuzz=vbuz1
ldz {z1}
//FRAGMENT vbuz1=vbuzz
@ -2190,6 +1950,8 @@ inx
ldy #{c1}
//FRAGMENT vbuyy=_inc_vbuyy
iny
//FRAGMENT vbuzz=_inc_vbuzz
inz
//FRAGMENT vbuz1_ge_vbuxx_then_la1
lda {z1}
stx $ff
@ -2246,6 +2008,9 @@ bcc {la1}
cpy #{c1}
bcc {la1}
beq {la1}
//FRAGMENT vbuzz_lt_vbuc1_then_la1
cpz #{c1}
bcc {la1}
//FRAGMENT vbuzz_le_vbuc1_then_la1
cpz #{c1}
bcc {la1}
@ -2280,8 +2045,7 @@ beq {la1}
cpz #{c1}
beq {la1}
//FRAGMENT vbuz1_lt_vbuxx_then_la1
txa
cmp {z1}
cpx {z1}
beq !+
bcs {la1}
!:
@ -2433,17 +2197,247 @@ ldx {c1},y
lda {c1},y
taz
//FRAGMENT vbuaa_lt_vbuzz_then_la1
tay
tza
sta $ff
cpy $ff
stz $ff
cmp $ff
bcc {la1}
//FRAGMENT vbuxx=vbuzz_minus_1
tza
tax
dex
//FRAGMENT vbuyy_lt_vbuzz_then_la1
tza
sta $ff
stz $ff
cpy $ff
bcc {la1}
//FRAGMENT pbuc1_derefidx_vbuzz=vbuzz
tza
tax
sta {c1},x
//FRAGMENT vbsz1=_deref_pbsc1
lda {c1}
sta {z1}
//FRAGMENT vbsz1=_neg_vbsz2
lda {z2}
neg
sta {z1}
//FRAGMENT _deref_pbsc1=vbsz1
lda {z1}
sta {c1}
//FRAGMENT vbsz1=vbsz2_ror_2
lda {z2}
asr
asr
sta {z1}
//FRAGMENT vbsaa=_deref_pbsc1
lda {c1}
//FRAGMENT vbsxx=_deref_pbsc1
ldx {c1}
//FRAGMENT vbsz1=_neg_vbsaa
neg
sta {z1}
//FRAGMENT vbsz1=_neg_vbsxx
txa
neg
sta {z1}
//FRAGMENT vbsz1=_neg_vbsyy
tya
neg
sta {z1}
//FRAGMENT vbsz1=_neg_vbszz
tza
neg
sta {z1}
//FRAGMENT vbsaa=_neg_vbsz1
lda {z1}
neg
//FRAGMENT vbsaa=_neg_vbsaa
neg
//FRAGMENT vbsaa=_neg_vbsxx
txa
neg
//FRAGMENT vbsaa=_neg_vbsyy
tya
neg
//FRAGMENT vbsaa=_neg_vbszz
tza
neg
//FRAGMENT vbsxx=_neg_vbsz1
lda {z1}
neg
tax
//FRAGMENT vbsxx=_neg_vbsaa
neg
tax
//FRAGMENT vbsxx=_neg_vbsxx
txa
neg
tax
//FRAGMENT vbsxx=_neg_vbsyy
tya
neg
tax
//FRAGMENT vbsxx=_neg_vbszz
tza
neg
tax
//FRAGMENT vbsyy=_neg_vbsz1
lda {z1}
neg
tay
//FRAGMENT vbsyy=_neg_vbsaa
neg
tay
//FRAGMENT vbsyy=_neg_vbsxx
txa
neg
tay
//FRAGMENT vbsyy=_neg_vbsyy
tya
neg
tay
//FRAGMENT vbsyy=_neg_vbszz
tza
neg
tay
//FRAGMENT vbszz=_neg_vbsz1
lda {z1}
neg
taz
//FRAGMENT vbszz=_neg_vbsaa
neg
taz
//FRAGMENT vbszz=_neg_vbsxx
txa
neg
taz
//FRAGMENT vbszz=_neg_vbsyy
tya
neg
taz
//FRAGMENT vbszz=_neg_vbszz
tza
neg
taz
//FRAGMENT _deref_pbsc1=vbsaa
sta {c1}
//FRAGMENT vbsz1=vbsaa_ror_2
asr
asr
sta {z1}
//FRAGMENT vbsz1=vbsxx_ror_2
txa
asr
asr
sta {z1}
//FRAGMENT vbsz1=vbsyy_ror_2
tya
asr
asr
sta {z1}
//FRAGMENT vbsz1=vbszz_ror_2
tza
asr
asr
sta {z1}
//FRAGMENT vbsaa=vbsz1_ror_2
lda {z1}
asr
asr
//FRAGMENT vbsaa=vbsaa_ror_2
asr
asr
//FRAGMENT vbsaa=vbsxx_ror_2
txa
asr
asr
//FRAGMENT vbsaa=vbsyy_ror_2
tya
asr
asr
//FRAGMENT vbsaa=vbszz_ror_2
tza
asr
asr
//FRAGMENT vbsxx=vbsz1_ror_2
lda {z1}
asr
asr
tax
//FRAGMENT vbsxx=vbsaa_ror_2
asr
asr
tax
//FRAGMENT vbsxx=vbsxx_ror_2
txa
asr
asr
tax
//FRAGMENT vbsxx=vbsyy_ror_2
tya
asr
asr
tax
//FRAGMENT vbsxx=vbszz_ror_2
tza
asr
asr
tax
//FRAGMENT vbsyy=vbsz1_ror_2
lda {z1}
asr
asr
tay
//FRAGMENT vbsyy=vbsaa_ror_2
asr
asr
tay
//FRAGMENT vbsyy=vbsxx_ror_2
txa
asr
asr
tay
//FRAGMENT vbsyy=vbsyy_ror_2
tya
asr
asr
tay
//FRAGMENT vbsyy=vbszz_ror_2
tza
asr
asr
tay
//FRAGMENT vbszz=vbsz1_ror_2
lda {z1}
asr
asr
taz
//FRAGMENT vbszz=vbsaa_ror_2
asr
asr
taz
//FRAGMENT vbszz=vbsxx_ror_2
txa
asr
asr
taz
//FRAGMENT vbszz=vbsyy_ror_2
tya
asr
asr
taz
//FRAGMENT vbszz=vbszz_ror_2
tza
asr
asr
taz
//FRAGMENT vbsyy=_deref_pbsc1
ldy {c1}
//FRAGMENT vbszz=_deref_pbsc1
lda {c1}
taz
//FRAGMENT _deref_pbsc1=vbsxx
stx {c1}
//FRAGMENT _deref_pbsc1=vbsyy
sty {c1}
//FRAGMENT _deref_pbsc1=vbszz
tza
sta {c1}

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 15e646b5c5
//KICKC FRAGMENT CACHE 16e7ed5268
//FRAGMENT vduz1=vduc1
lda #<{c1}
sta {z1}

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 15e646b5c5
//KICKC FRAGMENT CACHE 16e7ed5268
//FRAGMENT vbuz1=vbuc1
lda #{c1}
sta {z1}

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
//KICKC FRAGMENT CACHE 15e646b5c5
//KICKC FRAGMENT CACHE 16e7ed5268
//FRAGMENT vbuz1=_deref_pbuc1
lda {c1}
sta {z1}

View File

@ -0,0 +1,3 @@
stz $ff
cmp $ff
bcc {la1}

View File

@ -0,0 +1,3 @@
stz $ff
cpx $ff
bcc {la1}

View File

@ -0,0 +1,3 @@
stz $ff
cpy $ff
bcc {la1}

View File

@ -0,0 +1,4 @@
cpz {m1}
beq !+
bcs {la1}
!:

View File

@ -0,0 +1,4 @@
cpx {m1}
beq !+
bcs {la1}
!:

View File

@ -0,0 +1,4 @@
cpy {m1}
beq !+
bcs {la1}
!:

View File

@ -0,0 +1,3 @@
stx $ff
cpy $ff
bcc {la1}

View File

@ -665,6 +665,10 @@ class AsmFragmentTemplateSynthesisRule {
synths.add(new AsmFragmentTemplateSynthesisRule("vb(.)m1=(.*[mz]1.*)", null, null, "vb$1aa=$2", "sta {m1}", null));
// Rewrite Assignments to *C1 from A
synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)c1=(.*)", null, null, "vb$1aa=$2", "sta {c1}", null));
// Rewrite Assignments to *C1 from X
synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)c1=(.*)", null, null, "vb$1xx=$2", "stx {c1}", null));
// Rewrite Assignments to *C1 from Y
synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)c1=(.*)", null, null, "vb$1yy=$2", "sty {c1}", null));
// Rewrite Assignments to *Z1 from A
synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)z1=(.*)", twoZM1, null, "vb$1aa=$2", "ldy #0\n" + "sta ({z1}),y", mapZM1));
// Rewrite Assignments to *Z1 from A

View File

@ -822,8 +822,7 @@ rotate_matrix: {
.label y = $18
.label z = $19
// *xr = x
txa
sta xr
stx xr
// *yr = y
lda.z y
sta yr

View File

@ -6818,130 +6818,130 @@ Uplifting [debug_print] best 79025 combination zp[1]:17 [ debug_print::i#2 debug
Limited combination testing to 100 combinations of 8388608 possible.
Uplifting [memset] best 79025 combination zp[2]:18 [ memset::dst#2 memset::dst#1 ]
Uplifting [debug_print_init] best 74225 combination reg byte y [ debug_print_init::j#2 debug_print_init::j#1 ] zp[2]:24 [ debug_print_init::$41 ] zp[2]:26 [ debug_print_init::$44 ] zp[2]:28 [ debug_print_init::$47 ] zp[2]:30 [ debug_print_init::$50 ] zp[2]:32 [ debug_print_init::$53 ] zp[2]:34 [ debug_print_init::$56 ] zp[2]:36 [ debug_print_init::$59 ] zp[2]:38 [ debug_print_init::$62 ] zp[2]:40 [ debug_print_init::$65 ] reg byte x [ debug_print_init::col#0 ] zp[1]:3 [ debug_print_init::c#2 debug_print_init::c#1 ] zp[1]:4 [ debug_print_init::i#2 debug_print_init::i#1 ]
Uplifting [rotate_matrix] best 73924 combination reg byte x [ rotate_matrix::x#0 ] zp[1]:45 [ rotate_matrix::y#0 ] zp[1]:46 [ rotate_matrix::z#0 ]
Uplifting [anim] best 72024 combination zp[1]:8 [ anim::i#2 anim::i#1 ] reg byte a [ anim::$9 ] reg byte a [ anim::$10 ] reg byte x [ anim::i2#0 ]
Uplifting [print_str_at] best 72024 combination zp[2]:9 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] zp[2]:11 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
Uplifting [] best 72024 combination zp[1]:7 [ sy#11 sy#2 ] zp[1]:6 [ sx#11 sx#2 ]
Uplifting [sprites_init] best 71874 combination reg byte x [ sprites_init::i#2 sprites_init::i#1 ]
Uplifting [MOS6526_CIA] best 71874 combination
Uplifting [MOS6569_VICII] best 71874 combination
Uplifting [MOS6581_SID] best 71874 combination
Uplifting [RADIX] best 71874 combination
Uplifting [print_cls] best 71874 combination
Uplifting [main] best 71874 combination
Uplifting [store_matrix] best 71874 combination
Uplifting [rotate_matrix] best 73922 combination reg byte x [ rotate_matrix::x#0 ] zp[1]:45 [ rotate_matrix::y#0 ] zp[1]:46 [ rotate_matrix::z#0 ]
Uplifting [anim] best 72022 combination zp[1]:8 [ anim::i#2 anim::i#1 ] reg byte a [ anim::$9 ] reg byte a [ anim::$10 ] reg byte x [ anim::i2#0 ]
Uplifting [print_str_at] best 72022 combination zp[2]:9 [ print_str_at::str#13 print_str_at::str#15 print_str_at::str#0 ] zp[2]:11 [ print_str_at::at#13 print_str_at::at#15 print_str_at::at#0 ]
Uplifting [] best 72022 combination zp[1]:7 [ sy#11 sy#2 ] zp[1]:6 [ sx#11 sx#2 ]
Uplifting [sprites_init] best 71872 combination reg byte x [ sprites_init::i#2 sprites_init::i#1 ]
Uplifting [MOS6526_CIA] best 71872 combination
Uplifting [MOS6569_VICII] best 71872 combination
Uplifting [MOS6581_SID] best 71872 combination
Uplifting [RADIX] best 71872 combination
Uplifting [print_cls] best 71872 combination
Uplifting [main] best 71872 combination
Uplifting [store_matrix] best 71872 combination
Attempting to uplift remaining variables inzp[1]:15 [ print_schar_at::b#24 print_schar_at::b#0 print_schar_at::b#22 print_schar_at::b#16 print_schar_at::b#17 print_schar_at::b#18 print_schar_at::b#19 print_schar_at::b#20 print_schar_at::b#21 print_schar_at::b#4 print_schar_at::b#13 print_schar_at::b#14 print_schar_at::b#15 print_schar_at::b#5 print_schar_at::b#7 print_schar_at::b#8 print_schar_at::b#9 print_schar_at::b#10 print_schar_at::b#11 print_schar_at::b#12 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 ]
Uplifting [print_schar_at] best 71874 combination zp[1]:15 [ print_schar_at::b#24 print_schar_at::b#0 print_schar_at::b#22 print_schar_at::b#16 print_schar_at::b#17 print_schar_at::b#18 print_schar_at::b#19 print_schar_at::b#20 print_schar_at::b#21 print_schar_at::b#4 print_schar_at::b#13 print_schar_at::b#14 print_schar_at::b#15 print_schar_at::b#5 print_schar_at::b#7 print_schar_at::b#8 print_schar_at::b#9 print_schar_at::b#10 print_schar_at::b#11 print_schar_at::b#12 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 ]
Uplifting [print_schar_at] best 71872 combination zp[1]:15 [ print_schar_at::b#24 print_schar_at::b#0 print_schar_at::b#22 print_schar_at::b#16 print_schar_at::b#17 print_schar_at::b#18 print_schar_at::b#19 print_schar_at::b#20 print_schar_at::b#21 print_schar_at::b#4 print_schar_at::b#13 print_schar_at::b#14 print_schar_at::b#15 print_schar_at::b#5 print_schar_at::b#7 print_schar_at::b#8 print_schar_at::b#9 print_schar_at::b#10 print_schar_at::b#11 print_schar_at::b#12 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 ]
Attempting to uplift remaining variables inzp[1]:52 [ print_uchar_at::b#0 ]
Uplifting [print_uchar_at] best 71874 combination zp[1]:52 [ print_uchar_at::b#0 ]
Uplifting [print_uchar_at] best 71872 combination zp[1]:52 [ print_uchar_at::b#0 ]
Attempting to uplift remaining variables inzp[1]:17 [ debug_print::i#2 debug_print::i#1 ]
Uplifting [debug_print] best 71874 combination zp[1]:17 [ debug_print::i#2 debug_print::i#1 ]
Uplifting [debug_print] best 71872 combination zp[1]:17 [ debug_print::i#2 debug_print::i#1 ]
Attempting to uplift remaining variables inzp[1]:16 [ debug_print::c#2 debug_print::c#1 ]
Uplifting [debug_print] best 71874 combination zp[1]:16 [ debug_print::c#2 debug_print::c#1 ]
Uplifting [debug_print] best 71872 combination zp[1]:16 [ debug_print::c#2 debug_print::c#1 ]
Attempting to uplift remaining variables inzp[1]:45 [ rotate_matrix::y#0 ]
Uplifting [rotate_matrix] best 71874 combination zp[1]:45 [ rotate_matrix::y#0 ]
Uplifting [rotate_matrix] best 71872 combination zp[1]:45 [ rotate_matrix::y#0 ]
Attempting to uplift remaining variables inzp[1]:46 [ rotate_matrix::z#0 ]
Uplifting [rotate_matrix] best 71874 combination zp[1]:46 [ rotate_matrix::z#0 ]
Uplifting [rotate_matrix] best 71872 combination zp[1]:46 [ rotate_matrix::z#0 ]
Attempting to uplift remaining variables inzp[1]:8 [ anim::i#2 anim::i#1 ]
Uplifting [anim] best 71874 combination zp[1]:8 [ anim::i#2 anim::i#1 ]
Uplifting [anim] best 71872 combination zp[1]:8 [ anim::i#2 anim::i#1 ]
Attempting to uplift remaining variables inzp[1]:63 [ calculate_matrix::$10 ]
Uplifting [calculate_matrix] best 71868 combination reg byte a [ calculate_matrix::$10 ]
Uplifting [calculate_matrix] best 71866 combination reg byte a [ calculate_matrix::$10 ]
Attempting to uplift remaining variables inzp[1]:64 [ calculate_matrix::$11 ]
Uplifting [calculate_matrix] best 71862 combination reg byte a [ calculate_matrix::$11 ]
Uplifting [calculate_matrix] best 71860 combination reg byte a [ calculate_matrix::$11 ]
Attempting to uplift remaining variables inzp[1]:65 [ calculate_matrix::$12 ]
Uplifting [calculate_matrix] best 71856 combination reg byte a [ calculate_matrix::$12 ]
Uplifting [calculate_matrix] best 71854 combination reg byte a [ calculate_matrix::$12 ]
Attempting to uplift remaining variables inzp[1]:66 [ calculate_matrix::$13 ]
Uplifting [calculate_matrix] best 71850 combination reg byte a [ calculate_matrix::$13 ]
Uplifting [calculate_matrix] best 71848 combination reg byte a [ calculate_matrix::$13 ]
Attempting to uplift remaining variables inzp[1]:67 [ calculate_matrix::$14 ]
Uplifting [calculate_matrix] best 71844 combination reg byte a [ calculate_matrix::$14 ]
Uplifting [calculate_matrix] best 71842 combination reg byte a [ calculate_matrix::$14 ]
Attempting to uplift remaining variables inzp[1]:68 [ calculate_matrix::$15 ]
Uplifting [calculate_matrix] best 71838 combination reg byte a [ calculate_matrix::$15 ]
Uplifting [calculate_matrix] best 71836 combination reg byte a [ calculate_matrix::$15 ]
Attempting to uplift remaining variables inzp[1]:69 [ calculate_matrix::$16 ]
Uplifting [calculate_matrix] best 71832 combination reg byte a [ calculate_matrix::$16 ]
Uplifting [calculate_matrix] best 71830 combination reg byte a [ calculate_matrix::$16 ]
Attempting to uplift remaining variables inzp[1]:70 [ calculate_matrix::$17 ]
Uplifting [calculate_matrix] best 71826 combination reg byte a [ calculate_matrix::$17 ]
Uplifting [calculate_matrix] best 71824 combination reg byte a [ calculate_matrix::$17 ]
Attempting to uplift remaining variables inzp[1]:71 [ calculate_matrix::$18 ]
Uplifting [calculate_matrix] best 71820 combination reg byte a [ calculate_matrix::$18 ]
Uplifting [calculate_matrix] best 71818 combination reg byte a [ calculate_matrix::$18 ]
Attempting to uplift remaining variables inzp[1]:72 [ calculate_matrix::$19 ]
Uplifting [calculate_matrix] best 71814 combination reg byte a [ calculate_matrix::$19 ]
Uplifting [calculate_matrix] best 71812 combination reg byte a [ calculate_matrix::$19 ]
Attempting to uplift remaining variables inzp[1]:73 [ calculate_matrix::$20 ]
Uplifting [calculate_matrix] best 71808 combination reg byte a [ calculate_matrix::$20 ]
Uplifting [calculate_matrix] best 71806 combination reg byte a [ calculate_matrix::$20 ]
Attempting to uplift remaining variables inzp[1]:74 [ calculate_matrix::$21 ]
Uplifting [calculate_matrix] best 71802 combination reg byte a [ calculate_matrix::$21 ]
Uplifting [calculate_matrix] best 71800 combination reg byte a [ calculate_matrix::$21 ]
Attempting to uplift remaining variables inzp[1]:75 [ calculate_matrix::$22 ]
Uplifting [calculate_matrix] best 71796 combination reg byte a [ calculate_matrix::$22 ]
Uplifting [calculate_matrix] best 71794 combination reg byte a [ calculate_matrix::$22 ]
Attempting to uplift remaining variables inzp[1]:76 [ calculate_matrix::$23 ]
Uplifting [calculate_matrix] best 71790 combination reg byte a [ calculate_matrix::$23 ]
Uplifting [calculate_matrix] best 71788 combination reg byte a [ calculate_matrix::$23 ]
Attempting to uplift remaining variables inzp[1]:77 [ calculate_matrix::$24 ]
Uplifting [calculate_matrix] best 71784 combination reg byte a [ calculate_matrix::$24 ]
Uplifting [calculate_matrix] best 71782 combination reg byte a [ calculate_matrix::$24 ]
Attempting to uplift remaining variables inzp[1]:78 [ calculate_matrix::$25 ]
Uplifting [calculate_matrix] best 71778 combination reg byte a [ calculate_matrix::$25 ]
Uplifting [calculate_matrix] best 71776 combination reg byte a [ calculate_matrix::$25 ]
Attempting to uplift remaining variables inzp[1]:79 [ calculate_matrix::$26 ]
Uplifting [calculate_matrix] best 71772 combination reg byte a [ calculate_matrix::$26 ]
Uplifting [calculate_matrix] best 71770 combination reg byte a [ calculate_matrix::$26 ]
Attempting to uplift remaining variables inzp[1]:80 [ calculate_matrix::$27 ]
Uplifting [calculate_matrix] best 71766 combination reg byte a [ calculate_matrix::$27 ]
Uplifting [calculate_matrix] best 71764 combination reg byte a [ calculate_matrix::$27 ]
Attempting to uplift remaining variables inzp[1]:81 [ calculate_matrix::$28 ]
Uplifting [calculate_matrix] best 71760 combination reg byte a [ calculate_matrix::$28 ]
Uplifting [calculate_matrix] best 71758 combination reg byte a [ calculate_matrix::$28 ]
Attempting to uplift remaining variables inzp[1]:82 [ calculate_matrix::$29 ]
Uplifting [calculate_matrix] best 71754 combination reg byte a [ calculate_matrix::$29 ]
Uplifting [calculate_matrix] best 71752 combination reg byte a [ calculate_matrix::$29 ]
Attempting to uplift remaining variables inzp[1]:83 [ calculate_matrix::$30 ]
Uplifting [calculate_matrix] best 71748 combination reg byte a [ calculate_matrix::$30 ]
Uplifting [calculate_matrix] best 71746 combination reg byte a [ calculate_matrix::$30 ]
Attempting to uplift remaining variables inzp[1]:84 [ calculate_matrix::$31 ]
Uplifting [calculate_matrix] best 71742 combination reg byte a [ calculate_matrix::$31 ]
Uplifting [calculate_matrix] best 71740 combination reg byte a [ calculate_matrix::$31 ]
Attempting to uplift remaining variables inzp[1]:85 [ calculate_matrix::$32 ]
Uplifting [calculate_matrix] best 71736 combination reg byte a [ calculate_matrix::$32 ]
Uplifting [calculate_matrix] best 71734 combination reg byte a [ calculate_matrix::$32 ]
Attempting to uplift remaining variables inzp[1]:86 [ calculate_matrix::$33 ]
Uplifting [calculate_matrix] best 71730 combination reg byte a [ calculate_matrix::$33 ]
Uplifting [calculate_matrix] best 71728 combination reg byte a [ calculate_matrix::$33 ]
Attempting to uplift remaining variables inzp[1]:87 [ calculate_matrix::$34 ]
Uplifting [calculate_matrix] best 71724 combination reg byte a [ calculate_matrix::$34 ]
Uplifting [calculate_matrix] best 71722 combination reg byte a [ calculate_matrix::$34 ]
Attempting to uplift remaining variables inzp[1]:91 [ debug_print::print_schar_pos5_sb#0 ]
Uplifting [debug_print] best 71718 combination reg byte a [ debug_print::print_schar_pos5_sb#0 ]
Uplifting [debug_print] best 71716 combination reg byte a [ debug_print::print_schar_pos5_sb#0 ]
Attempting to uplift remaining variables inzp[1]:92 [ debug_print::print_schar_pos6_sb#0 ]
Uplifting [debug_print] best 71712 combination reg byte a [ debug_print::print_schar_pos6_sb#0 ]
Uplifting [debug_print] best 71710 combination reg byte a [ debug_print::print_schar_pos6_sb#0 ]
Attempting to uplift remaining variables inzp[1]:93 [ debug_print::print_schar_pos7_sb#0 ]
Uplifting [debug_print] best 71706 combination reg byte a [ debug_print::print_schar_pos7_sb#0 ]
Uplifting [debug_print] best 71704 combination reg byte a [ debug_print::print_schar_pos7_sb#0 ]
Attempting to uplift remaining variables inzp[1]:94 [ debug_print::print_schar_pos8_sb#0 ]
Uplifting [debug_print] best 71700 combination reg byte a [ debug_print::print_schar_pos8_sb#0 ]
Uplifting [debug_print] best 71698 combination reg byte a [ debug_print::print_schar_pos8_sb#0 ]
Attempting to uplift remaining variables inzp[1]:95 [ debug_print::print_schar_pos9_sb#0 ]
Uplifting [debug_print] best 71694 combination reg byte a [ debug_print::print_schar_pos9_sb#0 ]
Uplifting [debug_print] best 71692 combination reg byte a [ debug_print::print_schar_pos9_sb#0 ]
Attempting to uplift remaining variables inzp[1]:96 [ debug_print::print_schar_pos10_sb#0 ]
Uplifting [debug_print] best 71688 combination reg byte a [ debug_print::print_schar_pos10_sb#0 ]
Uplifting [debug_print] best 71686 combination reg byte a [ debug_print::print_schar_pos10_sb#0 ]
Attempting to uplift remaining variables inzp[1]:97 [ debug_print::print_schar_pos11_sb#0 ]
Uplifting [debug_print] best 71682 combination reg byte a [ debug_print::print_schar_pos11_sb#0 ]
Uplifting [debug_print] best 71680 combination reg byte a [ debug_print::print_schar_pos11_sb#0 ]
Attempting to uplift remaining variables inzp[1]:98 [ debug_print::print_schar_pos12_sb#0 ]
Uplifting [debug_print] best 71676 combination reg byte a [ debug_print::print_schar_pos12_sb#0 ]
Uplifting [debug_print] best 71674 combination reg byte a [ debug_print::print_schar_pos12_sb#0 ]
Attempting to uplift remaining variables inzp[1]:42 [ calculate_matrix::sx#0 ]
Uplifting [calculate_matrix] best 71638 combination reg byte x [ calculate_matrix::sx#0 ]
Uplifting [calculate_matrix] best 71636 combination reg byte x [ calculate_matrix::sx#0 ]
Attempting to uplift remaining variables inzp[1]:54 [ calculate_matrix::t2#0 ]
Uplifting [calculate_matrix] best 71638 combination zp[1]:54 [ calculate_matrix::t2#0 ]
Uplifting [calculate_matrix] best 71636 combination zp[1]:54 [ calculate_matrix::t2#0 ]
Attempting to uplift remaining variables inzp[1]:53 [ calculate_matrix::t1#0 ]
Uplifting [calculate_matrix] best 71638 combination zp[1]:53 [ calculate_matrix::t1#0 ]
Uplifting [calculate_matrix] best 71636 combination zp[1]:53 [ calculate_matrix::t1#0 ]
Attempting to uplift remaining variables inzp[1]:43 [ calculate_matrix::sy#0 ]
Uplifting [calculate_matrix] best 71638 combination zp[1]:43 [ calculate_matrix::sy#0 ]
Uplifting [calculate_matrix] best 71636 combination zp[1]:43 [ calculate_matrix::sy#0 ]
Attempting to uplift remaining variables inzp[1]:3 [ debug_print_init::c#2 debug_print_init::c#1 ]
Uplifting [debug_print_init] best 71638 combination zp[1]:3 [ debug_print_init::c#2 debug_print_init::c#1 ]
Uplifting [debug_print_init] best 71636 combination zp[1]:3 [ debug_print_init::c#2 debug_print_init::c#1 ]
Attempting to uplift remaining variables inzp[1]:7 [ sy#11 sy#2 ]
Uplifting [] best 71638 combination zp[1]:7 [ sy#11 sy#2 ]
Uplifting [] best 71636 combination zp[1]:7 [ sy#11 sy#2 ]
Attempting to uplift remaining variables inzp[1]:4 [ debug_print_init::i#2 debug_print_init::i#1 ]
Uplifting [debug_print_init] best 71638 combination zp[1]:4 [ debug_print_init::i#2 debug_print_init::i#1 ]
Uplifting [debug_print_init] best 71636 combination zp[1]:4 [ debug_print_init::i#2 debug_print_init::i#1 ]
Attempting to uplift remaining variables inzp[1]:58 [ calculate_matrix::t6#0 ]
Uplifting [calculate_matrix] best 71638 combination zp[1]:58 [ calculate_matrix::t6#0 ]
Uplifting [calculate_matrix] best 71636 combination zp[1]:58 [ calculate_matrix::t6#0 ]
Attempting to uplift remaining variables inzp[1]:56 [ calculate_matrix::t4#0 ]
Uplifting [calculate_matrix] best 71638 combination zp[1]:56 [ calculate_matrix::t4#0 ]
Uplifting [calculate_matrix] best 71636 combination zp[1]:56 [ calculate_matrix::t4#0 ]
Attempting to uplift remaining variables inzp[1]:59 [ calculate_matrix::t7#0 ]
Uplifting [calculate_matrix] best 71638 combination zp[1]:59 [ calculate_matrix::t7#0 ]
Uplifting [calculate_matrix] best 71636 combination zp[1]:59 [ calculate_matrix::t7#0 ]
Attempting to uplift remaining variables inzp[1]:60 [ calculate_matrix::t8#0 ]
Uplifting [calculate_matrix] best 71638 combination zp[1]:60 [ calculate_matrix::t8#0 ]
Uplifting [calculate_matrix] best 71636 combination zp[1]:60 [ calculate_matrix::t8#0 ]
Attempting to uplift remaining variables inzp[1]:55 [ calculate_matrix::t3#0 ]
Uplifting [calculate_matrix] best 71638 combination zp[1]:55 [ calculate_matrix::t3#0 ]
Uplifting [calculate_matrix] best 71636 combination zp[1]:55 [ calculate_matrix::t3#0 ]
Attempting to uplift remaining variables inzp[1]:57 [ calculate_matrix::t5#0 ]
Uplifting [calculate_matrix] best 71638 combination zp[1]:57 [ calculate_matrix::t5#0 ]
Uplifting [calculate_matrix] best 71636 combination zp[1]:57 [ calculate_matrix::t5#0 ]
Attempting to uplift remaining variables inzp[1]:6 [ sx#11 sx#2 ]
Uplifting [] best 71638 combination zp[1]:6 [ sx#11 sx#2 ]
Uplifting [] best 71636 combination zp[1]:6 [ sx#11 sx#2 ]
Attempting to uplift remaining variables inzp[1]:62 [ calculate_matrix::t10#0 ]
Uplifting [calculate_matrix] best 71631 combination reg byte x [ calculate_matrix::t10#0 ]
Uplifting [calculate_matrix] best 71629 combination reg byte x [ calculate_matrix::t10#0 ]
Attempting to uplift remaining variables inzp[1]:61 [ calculate_matrix::t9#0 ]
Uplifting [calculate_matrix] best 71631 combination zp[1]:61 [ calculate_matrix::t9#0 ]
Uplifting [calculate_matrix] best 71629 combination zp[1]:61 [ calculate_matrix::t9#0 ]
Coalescing zero page register [ zp[2]:13 [ print_schar_at::at#21 print_schar_at::at#15 print_schar_at::at#16 print_schar_at::at#17 print_schar_at::at#18 print_schar_at::at#19 print_schar_at::at#20 print_schar_at::at#0 print_schar_at::at#1 print_schar_at::at#2 ] ] with [ zp[2]:21 [ print_char_at::at#4 print_char_at::at#0 print_char_at::at#1 print_char_at::at#2 print_char_at::at#3 ] ] - score: 2
Coalescing zero page register [ zp[1]:7 [ sy#11 sy#2 ] ] with [ zp[1]:43 [ calculate_matrix::sy#0 ] ] - score: 1
Coalescing zero page register [ zp[2]:13 [ print_schar_at::at#21 print_schar_at::at#15 print_schar_at::at#16 print_schar_at::at#17 print_schar_at::at#18 print_schar_at::at#19 print_schar_at::at#20 print_schar_at::at#0 print_schar_at::at#1 print_schar_at::at#2 print_char_at::at#4 print_char_at::at#0 print_char_at::at#1 print_char_at::at#2 print_char_at::at#3 ] ] with [ zp[2]:50 [ print_uchar_at::at#0 ] ] - score: 1
@ -8112,8 +8112,7 @@ rotate_matrix: {
.label y = $18
.label z = $19
// [181] *((const signed byte*) xr) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx
txa
sta xr
stx xr
// [182] *((const signed byte*) yr) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1
lda.z y
sta yr
@ -9083,7 +9082,7 @@ Removing instruction jmp __b1
Succesful ASM optimization Pass5NextJumpElimination
Fixing long branch [322] bne __b2 to beq
Fixing long branch [331] bne __b1 to beq
Fixing long branch [970] bne __b1 to beq
Fixing long branch [969] bne __b1 to beq
FINAL SYMBOL TABLE
(const signed byte*) COSH = (const signed byte*) SINH+(byte) $40
@ -9688,7 +9687,7 @@ reg byte y [ print_uchar_at::$2 ]
FINAL ASSEMBLER
Score: 65417
Score: 65415
// File Comments
// 3D Rotation using a Rotation Matrix
@ -10825,8 +10824,7 @@ rotate_matrix: {
.label z = $19
// *xr = x
// [181] *((const signed byte*) xr) ← (signed byte) rotate_matrix::x#0 -- _deref_pbsc1=vbsxx
txa
sta xr
stx xr
// *yr = y
// [182] *((const signed byte*) yr) ← (signed byte) rotate_matrix::y#0 -- _deref_pbsc1=vbsz1
lda.z y

View File

@ -216,8 +216,7 @@ bitmap_line: {
sbc.z x1
sta.z xd
// if(y0<y1)
tya
cmp.z y0
cpy.z y0
beq !+
bcs __b7
!:
@ -273,8 +272,7 @@ bitmap_line: {
sbc.z x0
sta.z xd
// if(y0<y1)
tya
cmp.z y0
cpy.z y0
beq !+
bcs __b11
!:

View File

@ -3978,92 +3978,92 @@ Uplifting [bitmap_line_ydxi] best 286371 combination zp[1]:19 [ bitmap_line_ydxi
Limited combination testing to 100 combinations of 256 possible.
Uplifting [bitmap_line_ydxd] best 274365 combination zp[1]:31 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ] reg byte x [ bitmap_line_ydxd::x#3 bitmap_line_ydxd::x#5 bitmap_line_ydxd::x#0 bitmap_line_ydxd::x#1 bitmap_line_ydxd::x#6 bitmap_line_ydxd::x#2 ] reg byte y [ bitmap_line_ydxd::$6 ] zp[1]:30 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ] zp[1]:27 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ] zp[1]:26 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ] zp[1]:28 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
Limited combination testing to 100 combinations of 256 possible.
Uplifting [bitmap_line] best 274051 combination reg byte y [ bitmap_line::y1#0 ] zp[1]:49 [ bitmap_line::y0#0 ] zp[1]:52 [ bitmap_line::yd#2 ] zp[1]:53 [ bitmap_line::yd#1 ] zp[1]:55 [ bitmap_line::yd#10 ] zp[1]:56 [ bitmap_line::yd#11 ] zp[1]:48 [ bitmap_line::x1#0 ] zp[1]:47 [ bitmap_line::x0#0 ] zp[1]:51 [ bitmap_line::xd#2 ] zp[1]:54 [ bitmap_line::xd#1 ]
Uplifting [bitmap_line] best 274047 combination reg byte y [ bitmap_line::y1#0 ] zp[1]:49 [ bitmap_line::y0#0 ] zp[1]:52 [ bitmap_line::yd#2 ] zp[1]:53 [ bitmap_line::yd#1 ] zp[1]:55 [ bitmap_line::yd#10 ] zp[1]:56 [ bitmap_line::yd#11 ] zp[1]:48 [ bitmap_line::x1#0 ] zp[1]:47 [ bitmap_line::x0#0 ] zp[1]:51 [ bitmap_line::xd#2 ] zp[1]:54 [ bitmap_line::xd#1 ]
Limited combination testing to 100 combinations of 186624 possible.
Uplifting [lines] best 274051 combination zp[1]:13 [ lines::l#2 lines::l#1 ]
Uplifting [bitmap_clear] best 273151 combination zp[2]:8 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp[1]:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:45 [ bitmap_clear::bitmap#0 ]
Uplifting [bitmap_init] best 272631 combination zp[2]:5 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$0 ] zp[1]:42 [ bitmap_init::$7 ] zp[1]:43 [ bitmap_init::$8 ] zp[1]:44 [ bitmap_init::$9 ] zp[1]:41 [ bitmap_init::$10 ]
Uplifting [lines] best 274047 combination zp[1]:13 [ lines::l#2 lines::l#1 ]
Uplifting [bitmap_clear] best 273147 combination zp[2]:8 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] reg byte x [ bitmap_clear::x#2 bitmap_clear::x#1 ] zp[1]:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ] zp[2]:45 [ bitmap_clear::bitmap#0 ]
Uplifting [bitmap_init] best 272627 combination zp[2]:5 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte y [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$0 ] zp[1]:42 [ bitmap_init::$7 ] zp[1]:43 [ bitmap_init::$8 ] zp[1]:44 [ bitmap_init::$9 ] zp[1]:41 [ bitmap_init::$10 ]
Limited combination testing to 100 combinations of 34560 possible.
Uplifting [init_screen] best 272631 combination zp[2]:11 [ init_screen::c#2 init_screen::c#1 ]
Uplifting [MOS6526_CIA] best 272631 combination
Uplifting [MOS6569_VICII] best 272631 combination
Uplifting [MOS6581_SID] best 272631 combination
Uplifting [main] best 272631 combination
Uplifting [] best 272631 combination
Uplifting [init_screen] best 272627 combination zp[2]:11 [ init_screen::c#2 init_screen::c#1 ]
Uplifting [MOS6526_CIA] best 272627 combination
Uplifting [MOS6569_VICII] best 272627 combination
Uplifting [MOS6581_SID] best 272627 combination
Uplifting [main] best 272627 combination
Uplifting [] best 272627 combination
Attempting to uplift remaining variables inzp[1]:19 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
Uplifting [bitmap_line_ydxi] best 272631 combination zp[1]:19 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
Uplifting [bitmap_line_ydxi] best 272627 combination zp[1]:19 [ bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
Attempting to uplift remaining variables inzp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
Uplifting [bitmap_line_xdyi] best 272631 combination zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
Uplifting [bitmap_line_xdyi] best 272627 combination zp[1]:25 [ bitmap_line_xdyi::e#3 bitmap_line_xdyi::e#0 bitmap_line_xdyi::e#6 bitmap_line_xdyi::e#2 bitmap_line_xdyi::e#1 ]
Attempting to uplift remaining variables inzp[1]:31 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
Uplifting [bitmap_line_ydxd] best 272631 combination zp[1]:31 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
Uplifting [bitmap_line_ydxd] best 272627 combination zp[1]:31 [ bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
Attempting to uplift remaining variables inzp[1]:37 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
Uplifting [bitmap_line_xdyd] best 272631 combination zp[1]:37 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
Uplifting [bitmap_line_xdyd] best 272627 combination zp[1]:37 [ bitmap_line_xdyd::e#3 bitmap_line_xdyd::e#0 bitmap_line_xdyd::e#6 bitmap_line_xdyd::e#2 bitmap_line_xdyd::e#1 ]
Attempting to uplift remaining variables inzp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
Uplifting [bitmap_line_xdyi] best 272631 combination zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
Uplifting [bitmap_line_xdyi] best 272627 combination zp[1]:24 [ bitmap_line_xdyi::y#3 bitmap_line_xdyi::y#5 bitmap_line_xdyi::y#1 bitmap_line_xdyi::y#0 bitmap_line_xdyi::y#6 bitmap_line_xdyi::y#2 ]
Attempting to uplift remaining variables inzp[1]:36 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
Uplifting [bitmap_line_xdyd] best 272631 combination zp[1]:36 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
Uplifting [bitmap_line_xdyd] best 272627 combination zp[1]:36 [ bitmap_line_xdyd::y#3 bitmap_line_xdyd::y#5 bitmap_line_xdyd::y#1 bitmap_line_xdyd::y#0 bitmap_line_xdyd::y#6 bitmap_line_xdyd::y#2 ]
Attempting to uplift remaining variables inzp[1]:58 [ bitmap_line_xdyi::$6 ]
Uplifting [bitmap_line_xdyi] best 272631 combination zp[1]:58 [ bitmap_line_xdyi::$6 ]
Uplifting [bitmap_line_xdyi] best 272627 combination zp[1]:58 [ bitmap_line_xdyi::$6 ]
Attempting to uplift remaining variables inzp[1]:60 [ bitmap_line_xdyd::$6 ]
Uplifting [bitmap_line_xdyd] best 272631 combination zp[1]:60 [ bitmap_line_xdyd::$6 ]
Uplifting [bitmap_line_xdyd] best 272627 combination zp[1]:60 [ bitmap_line_xdyd::$6 ]
Attempting to uplift remaining variables inzp[1]:18 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ]
Uplifting [bitmap_line_ydxi] best 272631 combination zp[1]:18 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ]
Uplifting [bitmap_line_ydxi] best 272627 combination zp[1]:18 [ bitmap_line_ydxi::y#3 bitmap_line_ydxi::y#6 bitmap_line_ydxi::y#1 bitmap_line_ydxi::y#0 bitmap_line_ydxi::y#2 ]
Attempting to uplift remaining variables inzp[1]:30 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ]
Uplifting [bitmap_line_ydxd] best 272631 combination zp[1]:30 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ]
Uplifting [bitmap_line_ydxd] best 272627 combination zp[1]:30 [ bitmap_line_ydxd::y#2 bitmap_line_ydxd::y#7 bitmap_line_ydxd::y#0 bitmap_line_ydxd::y#1 bitmap_line_ydxd::y#3 ]
Attempting to uplift remaining variables inzp[1]:15 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ]
Uplifting [bitmap_line_ydxi] best 272631 combination zp[1]:15 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ]
Uplifting [bitmap_line_ydxi] best 272627 combination zp[1]:15 [ bitmap_line_ydxi::yd#5 bitmap_line_ydxi::yd#1 bitmap_line_ydxi::yd#0 ]
Attempting to uplift remaining variables inzp[1]:21 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
Uplifting [bitmap_line_xdyi] best 272631 combination zp[1]:21 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
Uplifting [bitmap_line_xdyi] best 272627 combination zp[1]:21 [ bitmap_line_xdyi::xd#5 bitmap_line_xdyi::xd#1 bitmap_line_xdyi::xd#0 ]
Attempting to uplift remaining variables inzp[1]:27 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ]
Uplifting [bitmap_line_ydxd] best 272631 combination zp[1]:27 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ]
Uplifting [bitmap_line_ydxd] best 272627 combination zp[1]:27 [ bitmap_line_ydxd::yd#5 bitmap_line_ydxd::yd#0 bitmap_line_ydxd::yd#1 ]
Attempting to uplift remaining variables inzp[1]:33 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ]
Uplifting [bitmap_line_xdyd] best 272631 combination zp[1]:33 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ]
Uplifting [bitmap_line_xdyd] best 272627 combination zp[1]:33 [ bitmap_line_xdyd::xd#5 bitmap_line_xdyd::xd#1 bitmap_line_xdyd::xd#0 ]
Attempting to uplift remaining variables inzp[1]:14 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ]
Uplifting [bitmap_line_ydxi] best 272631 combination zp[1]:14 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ]
Uplifting [bitmap_line_ydxi] best 272627 combination zp[1]:14 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ]
Attempting to uplift remaining variables inzp[1]:20 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
Uplifting [bitmap_line_xdyi] best 272631 combination zp[1]:20 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
Uplifting [bitmap_line_xdyi] best 272627 combination zp[1]:20 [ bitmap_line_xdyi::yd#2 bitmap_line_xdyi::yd#1 bitmap_line_xdyi::yd#0 ]
Attempting to uplift remaining variables inzp[1]:26 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ]
Uplifting [bitmap_line_ydxd] best 272631 combination zp[1]:26 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ]
Uplifting [bitmap_line_ydxd] best 272627 combination zp[1]:26 [ bitmap_line_ydxd::xd#2 bitmap_line_ydxd::xd#0 bitmap_line_ydxd::xd#1 ]
Attempting to uplift remaining variables inzp[1]:32 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ]
Uplifting [bitmap_line_xdyd] best 272631 combination zp[1]:32 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ]
Uplifting [bitmap_line_xdyd] best 272627 combination zp[1]:32 [ bitmap_line_xdyd::yd#2 bitmap_line_xdyd::yd#1 bitmap_line_xdyd::yd#0 ]
Attempting to uplift remaining variables inzp[1]:16 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ]
Uplifting [bitmap_line_ydxi] best 272631 combination zp[1]:16 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ]
Uplifting [bitmap_line_ydxi] best 272627 combination zp[1]:16 [ bitmap_line_ydxi::y1#6 bitmap_line_ydxi::y1#1 bitmap_line_ydxi::y1#0 ]
Attempting to uplift remaining variables inzp[1]:22 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
Uplifting [bitmap_line_xdyi] best 272631 combination zp[1]:22 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
Uplifting [bitmap_line_xdyi] best 272627 combination zp[1]:22 [ bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 ]
Attempting to uplift remaining variables inzp[1]:28 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
Uplifting [bitmap_line_ydxd] best 272631 combination zp[1]:28 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
Uplifting [bitmap_line_ydxd] best 272627 combination zp[1]:28 [ bitmap_line_ydxd::y1#6 bitmap_line_ydxd::y1#0 bitmap_line_ydxd::y1#1 ]
Attempting to uplift remaining variables inzp[1]:34 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ]
Uplifting [bitmap_line_xdyd] best 272631 combination zp[1]:34 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ]
Uplifting [bitmap_line_xdyd] best 272627 combination zp[1]:34 [ bitmap_line_xdyd::x1#6 bitmap_line_xdyd::x1#1 bitmap_line_xdyd::x1#0 ]
Attempting to uplift remaining variables inzp[1]:49 [ bitmap_line::y0#0 ]
Uplifting [bitmap_line] best 272631 combination zp[1]:49 [ bitmap_line::y0#0 ]
Uplifting [bitmap_line] best 272627 combination zp[1]:49 [ bitmap_line::y0#0 ]
Attempting to uplift remaining variables inzp[1]:52 [ bitmap_line::yd#2 ]
Uplifting [bitmap_line] best 272631 combination zp[1]:52 [ bitmap_line::yd#2 ]
Uplifting [bitmap_line] best 272627 combination zp[1]:52 [ bitmap_line::yd#2 ]
Attempting to uplift remaining variables inzp[1]:53 [ bitmap_line::yd#1 ]
Uplifting [bitmap_line] best 272631 combination zp[1]:53 [ bitmap_line::yd#1 ]
Uplifting [bitmap_line] best 272627 combination zp[1]:53 [ bitmap_line::yd#1 ]
Attempting to uplift remaining variables inzp[1]:55 [ bitmap_line::yd#10 ]
Uplifting [bitmap_line] best 272631 combination zp[1]:55 [ bitmap_line::yd#10 ]
Uplifting [bitmap_line] best 272627 combination zp[1]:55 [ bitmap_line::yd#10 ]
Attempting to uplift remaining variables inzp[1]:56 [ bitmap_line::yd#11 ]
Uplifting [bitmap_line] best 272631 combination zp[1]:56 [ bitmap_line::yd#11 ]
Uplifting [bitmap_line] best 272627 combination zp[1]:56 [ bitmap_line::yd#11 ]
Attempting to uplift remaining variables inzp[1]:48 [ bitmap_line::x1#0 ]
Uplifting [bitmap_line] best 272631 combination zp[1]:48 [ bitmap_line::x1#0 ]
Uplifting [bitmap_line] best 272627 combination zp[1]:48 [ bitmap_line::x1#0 ]
Attempting to uplift remaining variables inzp[1]:47 [ bitmap_line::x0#0 ]
Uplifting [bitmap_line] best 272631 combination zp[1]:47 [ bitmap_line::x0#0 ]
Uplifting [bitmap_line] best 272627 combination zp[1]:47 [ bitmap_line::x0#0 ]
Attempting to uplift remaining variables inzp[1]:51 [ bitmap_line::xd#2 ]
Uplifting [bitmap_line] best 272631 combination zp[1]:51 [ bitmap_line::xd#2 ]
Uplifting [bitmap_line] best 272627 combination zp[1]:51 [ bitmap_line::xd#2 ]
Attempting to uplift remaining variables inzp[1]:54 [ bitmap_line::xd#1 ]
Uplifting [bitmap_line] best 272631 combination zp[1]:54 [ bitmap_line::xd#1 ]
Uplifting [bitmap_line] best 272627 combination zp[1]:54 [ bitmap_line::xd#1 ]
Attempting to uplift remaining variables inzp[1]:13 [ lines::l#2 lines::l#1 ]
Uplifting [lines] best 272631 combination zp[1]:13 [ lines::l#2 lines::l#1 ]
Uplifting [lines] best 272627 combination zp[1]:13 [ lines::l#2 lines::l#1 ]
Attempting to uplift remaining variables inzp[1]:42 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 272571 combination reg byte a [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 272567 combination reg byte a [ bitmap_init::$7 ]
Attempting to uplift remaining variables inzp[1]:43 [ bitmap_init::$8 ]
Uplifting [bitmap_init] best 272511 combination reg byte a [ bitmap_init::$8 ]
Uplifting [bitmap_init] best 272507 combination reg byte a [ bitmap_init::$8 ]
Attempting to uplift remaining variables inzp[1]:44 [ bitmap_init::$9 ]
Uplifting [bitmap_init] best 272451 combination reg byte a [ bitmap_init::$9 ]
Uplifting [bitmap_init] best 272447 combination reg byte a [ bitmap_init::$9 ]
Attempting to uplift remaining variables inzp[1]:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Uplifting [bitmap_clear] best 272451 combination zp[1]:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Uplifting [bitmap_clear] best 272447 combination zp[1]:7 [ bitmap_clear::y#4 bitmap_clear::y#1 ]
Attempting to uplift remaining variables inzp[1]:41 [ bitmap_init::$10 ]
Uplifting [bitmap_init] best 272451 combination zp[1]:41 [ bitmap_init::$10 ]
Uplifting [bitmap_init] best 272447 combination zp[1]:41 [ bitmap_init::$10 ]
Coalescing zero page register [ zp[2]:8 [ bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 ] ] with [ zp[2]:45 [ bitmap_clear::bitmap#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:14 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 ] ] with [ zp[1]:51 [ bitmap_line::xd#2 ] ] - score: 1
Coalescing zero page register [ zp[1]:14 [ bitmap_line_ydxi::xd#2 bitmap_line_ydxi::xd#1 bitmap_line_ydxi::xd#0 bitmap_line::xd#2 ] ] with [ zp[1]:54 [ bitmap_line::xd#1 ] ] - score: 1
@ -4475,8 +4475,7 @@ bitmap_line: {
sbc.z x1
sta.z xd
// [65] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@7 -- vbuz1_lt_vbuyy_then_la1
tya
cmp.z y0
cpy.z y0
beq !+
bcs __b7
!:
@ -4598,8 +4597,7 @@ bitmap_line: {
sbc.z x0
sta.z xd
// [96] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@11 -- vbuz1_lt_vbuyy_then_la1
tya
cmp.z y0
cpy.z y0
beq !+
bcs __b11
!:
@ -5640,7 +5638,7 @@ reg byte a [ bitmap_plot::$1 ]
FINAL ASSEMBLER
Score: 221364
Score: 221360
// File Comments
// Commodore 64 Registers and Constants
@ -5987,8 +5985,7 @@ bitmap_line: {
sta.z xd
// if(y0<y1)
// [65] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@7 -- vbuz1_lt_vbuyy_then_la1
tya
cmp.z y0
cpy.z y0
beq !+
bcs __b7
!:
@ -6107,8 +6104,7 @@ bitmap_line: {
sta.z xd
// if(y0<y1)
// [96] if((byte) bitmap_line::y0#0<(byte) bitmap_line::y1#0) goto bitmap_line::@11 -- vbuz1_lt_vbuyy_then_la1
tya
cmp.z y0
cpy.z y0
beq !+
bcs __b11
!:

View File

@ -93,9 +93,9 @@ main: {
!:
// fmul8(vals[i], vals[j])
ldy.z i
lda vals,y
ldy.z j
ldx vals,y
ldy.z j
lda vals,y
jsr fmul8
// r = fmul8(vals[i], vals[j])
// print_schar_at(r, at)
@ -197,15 +197,14 @@ print_schar_at: {
sta.z b
jmp __b2
}
// fmul8(signed byte register(A) a, signed byte register(X) b)
// fmul8(signed byte register(X) a, signed byte register(A) b)
fmul8: {
// *ap = a
sta ap
stx ap
// *bp = b
txa
sta bp
// asm
lda ap
txa
sta A1+1
eor #$ff
sta A2+1

View File

@ -1885,23 +1885,23 @@ Uplifting [print_char_at] best 14212 combination zp[2]:19 [ print_char_at::at#4
Uplifting [print_uchar_at] best 14204 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[1]:29 [ print_uchar_at::b#0 ] zp[2]:27 [ print_uchar_at::at#0 ]
Uplifting [memset] best 14204 combination zp[2]:21 [ memset::dst#2 memset::dst#1 ]
Uplifting [print_schar_at] best 14204 combination zp[1]:17 [ print_schar_at::b#6 print_schar_at::b#0 print_schar_at::b#4 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 ] zp[2]:15 [ print_schar_at::at#3 print_schar_at::at#0 print_schar_at::at#1 print_schar_at::at#2 ]
Uplifting [fmul8] best 12697 combination reg byte a [ fmul8::a#0 ] reg byte x [ fmul8::b#0 ] reg byte a [ fmul8::return#1 ] reg byte a [ fmul8::return#0 ]
Uplifting [fmul8] best 12695 combination reg byte x [ fmul8::a#0 ] reg byte a [ fmul8::b#0 ] reg byte a [ fmul8::return#1 ] reg byte a [ fmul8::return#0 ]
Limited combination testing to 100 combinations of 192 possible.
Uplifting [main] best 12097 combination zp[2]:8 [ main::at#6 main::at#3 main::at#12 ] reg byte a [ main::r#0 ] zp[1]:10 [ main::j#2 main::j#1 ] zp[2]:5 [ main::at_line#2 main::at#2 ] zp[1]:7 [ main::i#2 main::i#1 ] zp[1]:2 [ main::k#2 main::k#1 ] zp[2]:3 [ main::at#4 main::at#1 ]
Uplifting [init_screen] best 11887 combination reg byte x [ init_screen::l#2 init_screen::l#1 ] zp[2]:12 [ init_screen::COLS#3 init_screen::COLS#1 ] reg byte x [ init_screen::m#2 init_screen::m#1 ]
Uplifting [RADIX] best 11887 combination
Uplifting [print_cls] best 11887 combination
Uplifting [] best 11887 combination
Uplifting [main] best 12095 combination zp[2]:8 [ main::at#6 main::at#3 main::at#12 ] reg byte a [ main::r#0 ] zp[1]:10 [ main::j#2 main::j#1 ] zp[2]:5 [ main::at_line#2 main::at#2 ] zp[1]:7 [ main::i#2 main::i#1 ] zp[1]:2 [ main::k#2 main::k#1 ] zp[2]:3 [ main::at#4 main::at#1 ]
Uplifting [init_screen] best 11885 combination reg byte x [ init_screen::l#2 init_screen::l#1 ] zp[2]:12 [ init_screen::COLS#3 init_screen::COLS#1 ] reg byte x [ init_screen::m#2 init_screen::m#1 ]
Uplifting [RADIX] best 11885 combination
Uplifting [print_cls] best 11885 combination
Uplifting [] best 11885 combination
Attempting to uplift remaining variables inzp[1]:29 [ print_uchar_at::b#0 ]
Uplifting [print_uchar_at] best 11887 combination zp[1]:29 [ print_uchar_at::b#0 ]
Uplifting [print_uchar_at] best 11885 combination zp[1]:29 [ print_uchar_at::b#0 ]
Attempting to uplift remaining variables inzp[1]:17 [ print_schar_at::b#6 print_schar_at::b#0 print_schar_at::b#4 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 ]
Uplifting [print_schar_at] best 11887 combination zp[1]:17 [ print_schar_at::b#6 print_schar_at::b#0 print_schar_at::b#4 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 ]
Uplifting [print_schar_at] best 11885 combination zp[1]:17 [ print_schar_at::b#6 print_schar_at::b#0 print_schar_at::b#4 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 ]
Attempting to uplift remaining variables inzp[1]:10 [ main::j#2 main::j#1 ]
Uplifting [main] best 11887 combination zp[1]:10 [ main::j#2 main::j#1 ]
Uplifting [main] best 11885 combination zp[1]:10 [ main::j#2 main::j#1 ]
Attempting to uplift remaining variables inzp[1]:7 [ main::i#2 main::i#1 ]
Uplifting [main] best 11887 combination zp[1]:7 [ main::i#2 main::i#1 ]
Uplifting [main] best 11885 combination zp[1]:7 [ main::i#2 main::i#1 ]
Attempting to uplift remaining variables inzp[1]:2 [ main::k#2 main::k#1 ]
Uplifting [main] best 11887 combination zp[1]:2 [ main::k#2 main::k#1 ]
Uplifting [main] best 11885 combination zp[1]:2 [ main::k#2 main::k#1 ]
Coalescing zero page register [ zp[2]:15 [ print_schar_at::at#3 print_schar_at::at#0 print_schar_at::at#1 print_schar_at::at#2 ] ] with [ zp[2]:19 [ print_char_at::at#4 print_char_at::at#0 print_char_at::at#1 print_char_at::at#2 print_char_at::at#3 ] ] - score: 2
Coalescing zero page register [ zp[2]:15 [ print_schar_at::at#3 print_schar_at::at#0 print_schar_at::at#1 print_schar_at::at#2 print_char_at::at#4 print_char_at::at#0 print_char_at::at#1 print_char_at::at#2 print_char_at::at#3 ] ] with [ zp[2]:27 [ print_uchar_at::at#0 ] ] - score: 1
Coalescing zero page register [ zp[1]:17 [ print_schar_at::b#6 print_schar_at::b#0 print_schar_at::b#4 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 ] ] with [ zp[1]:29 [ print_uchar_at::b#0 ] ] - score: 1
@ -2063,12 +2063,12 @@ main: {
bcc !+
inc.z at_2+1
!:
// [17] (signed byte) fmul8::a#0 ← *((const signed byte*) vals + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1
// [17] (signed byte) fmul8::a#0 ← *((const signed byte*) vals + (byte) main::i#2) -- vbsxx=pbsc1_derefidx_vbuz1
ldy.z i
lda vals,y
// [18] (signed byte) fmul8::b#0 ← *((const signed byte*) vals + (byte) main::j#2) -- vbsxx=pbsc1_derefidx_vbuz1
ldy.z j
ldx vals,y
// [18] (signed byte) fmul8::b#0 ← *((const signed byte*) vals + (byte) main::j#2) -- vbsaa=pbsc1_derefidx_vbuz1
ldy.z j
lda vals,y
// [19] call fmul8
jsr fmul8
// [20] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1
@ -2254,12 +2254,11 @@ print_schar_at: {
jmp __b2_from___b4
}
// fmul8
// fmul8(signed byte register(A) a, signed byte register(X) b)
// fmul8(signed byte register(X) a, signed byte register(A) b)
fmul8: {
// [57] *((const signed byte*) ap) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa
sta ap
// [58] *((const signed byte*) bp) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsxx
txa
// [57] *((const signed byte*) ap) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsxx
stx ap
// [58] *((const signed byte*) bp) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsaa
sta bp
// asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp }
lda ap
@ -2455,6 +2454,7 @@ Succesful ASM optimization Pass5NextJumpElimination
Removing instruction lda #WHITE
Removing instruction lda #WHITE
Removing instruction lda #WHITE
Replacing instruction lda ap with TXA
Removing instruction lda cp
Succesful ASM optimization Pass5UnnecesaryLoadElimination
Replacing label __b1_from___b5 with __b1
@ -2525,9 +2525,9 @@ FINAL SYMBOL TABLE
(signed byte()) fmul8((signed byte) fmul8::a , (signed byte) fmul8::b)
(label) fmul8::@return
(signed byte) fmul8::a
(signed byte) fmul8::a#0 reg byte a 551.0
(signed byte) fmul8::a#0 reg byte x 551.0
(signed byte) fmul8::b
(signed byte) fmul8::b#0 reg byte x 551.0
(signed byte) fmul8::b#0 reg byte a 551.0
(signed byte) fmul8::return
(signed byte) fmul8::return#0 reg byte a 202.0
(signed byte) fmul8::return#1 reg byte a 367.33333333333337
@ -2661,8 +2661,8 @@ zp[2]:11 [ print_schar_at::at#3 print_schar_at::at#0 print_schar_at::at#1 print_
zp[1]:13 [ print_schar_at::b#6 print_schar_at::b#0 print_schar_at::b#4 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 print_uchar_at::b#0 ]
reg byte x [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
zp[2]:14 [ memset::dst#2 memset::dst#1 ]
reg byte a [ fmul8::a#0 ]
reg byte x [ fmul8::b#0 ]
reg byte x [ fmul8::a#0 ]
reg byte a [ fmul8::b#0 ]
reg byte a [ fmul8::return#0 ]
reg byte a [ main::r#0 ]
reg byte a [ fmul8::return#1 ]
@ -2671,7 +2671,7 @@ reg byte y [ print_uchar_at::$2 ]
FINAL ASSEMBLER
Score: 10153
Score: 10149
// File Comments
// Seriously fast multiply 8-bit version (8bit*8bit=8bit)
@ -2814,12 +2814,12 @@ main: {
inc.z at_2+1
!:
// fmul8(vals[i], vals[j])
// [17] (signed byte) fmul8::a#0 ← *((const signed byte*) vals + (byte) main::i#2) -- vbsaa=pbsc1_derefidx_vbuz1
// [17] (signed byte) fmul8::a#0 ← *((const signed byte*) vals + (byte) main::i#2) -- vbsxx=pbsc1_derefidx_vbuz1
ldy.z i
lda vals,y
// [18] (signed byte) fmul8::b#0 ← *((const signed byte*) vals + (byte) main::j#2) -- vbsxx=pbsc1_derefidx_vbuz1
ldy.z j
ldx vals,y
// [18] (signed byte) fmul8::b#0 ← *((const signed byte*) vals + (byte) main::j#2) -- vbsaa=pbsc1_derefidx_vbuz1
ldy.z j
lda vals,y
// [19] call fmul8
jsr fmul8
// [20] (signed byte) fmul8::return#0 ← (signed byte) fmul8::return#1
@ -2991,18 +2991,17 @@ print_schar_at: {
jmp __b2
}
// fmul8
// fmul8(signed byte register(A) a, signed byte register(X) b)
// fmul8(signed byte register(X) a, signed byte register(A) b)
fmul8: {
// *ap = a
// [57] *((const signed byte*) ap) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsaa
sta ap
// [57] *((const signed byte*) ap) ← (signed byte) fmul8::a#0 -- _deref_pbsc1=vbsxx
stx ap
// *bp = b
// [58] *((const signed byte*) bp) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsxx
txa
// [58] *((const signed byte*) bp) ← (signed byte) fmul8::b#0 -- _deref_pbsc1=vbsaa
sta bp
// asm
// asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp }
lda ap
txa
sta A1+1
eor #$ff
sta A2+1

View File

@ -8,9 +8,9 @@
(signed byte()) fmul8((signed byte) fmul8::a , (signed byte) fmul8::b)
(label) fmul8::@return
(signed byte) fmul8::a
(signed byte) fmul8::a#0 reg byte a 551.0
(signed byte) fmul8::a#0 reg byte x 551.0
(signed byte) fmul8::b
(signed byte) fmul8::b#0 reg byte x 551.0
(signed byte) fmul8::b#0 reg byte a 551.0
(signed byte) fmul8::return
(signed byte) fmul8::return#0 reg byte a 202.0
(signed byte) fmul8::return#1 reg byte a 367.33333333333337
@ -144,8 +144,8 @@ zp[2]:11 [ print_schar_at::at#3 print_schar_at::at#0 print_schar_at::at#1 print_
zp[1]:13 [ print_schar_at::b#6 print_schar_at::b#0 print_schar_at::b#4 print_schar_at::b#1 print_schar_at::b#2 print_schar_at::b#3 print_uchar_at::b#0 ]
reg byte x [ print_char_at::ch#4 print_char_at::ch#2 print_char_at::ch#3 ]
zp[2]:14 [ memset::dst#2 memset::dst#1 ]
reg byte a [ fmul8::a#0 ]
reg byte x [ fmul8::b#0 ]
reg byte x [ fmul8::a#0 ]
reg byte a [ fmul8::b#0 ]
reg byte a [ fmul8::return#0 ]
reg byte a [ main::r#0 ]
reg byte a [ fmul8::return#1 ]

View File

@ -155,17 +155,15 @@ testSignedVals: {
lda #-$78+sbc1
sta SSCREEN+$28*3+1+1+1+1+1
// sbv1+-120
lda #-$78
clc
adc.z sbv1
lax.z sbv1
axs #-[-$78]
// SSCREEN[idx++] = (sbv1+-120)
sta SSCREEN+$28*3+1+1+1+1+1+1
stx SSCREEN+$28*3+1+1+1+1+1+1
// -120+sbv1
lda #-$78
clc
adc.z sbv1
lax.z sbv1
axs #-[-$78]
// SSCREEN[idx++] = (-120+sbv1)
sta SSCREEN+$28*3+1+1+1+1+1+1+1
stx SSCREEN+$28*3+1+1+1+1+1+1+1
// sbv1+sbc1
lda #sbc1
clc

View File

@ -1443,20 +1443,20 @@ Uplift Scope []
Uplifting [testUnsignedVals] best 424 combination reg byte x [ testUnsignedVals::$2 ] reg byte x [ testUnsignedVals::$3 ] reg byte a [ testUnsignedVals::$4 ] reg byte a [ testUnsignedVals::$5 ] zp[1]:7 [ testUnsignedVals::$6 ] zp[1]:2 [ testUnsignedVals::ubv1 ]
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [testSignedVals] best 408 combination reg byte a [ testSignedVals::$2 ] reg byte a [ testSignedVals::$3 ] reg byte a [ testSignedVals::$4 ] reg byte a [ testSignedVals::$5 ] zp[1]:13 [ testSignedVals::$6 ] zp[1]:8 [ testSignedVals::sbv1 ]
Uplifting [testSignedVals] best 404 combination reg byte x [ testSignedVals::$2 ] reg byte x [ testSignedVals::$3 ] reg byte a [ testSignedVals::$4 ] reg byte a [ testSignedVals::$5 ] zp[1]:13 [ testSignedVals::$6 ] zp[1]:8 [ testSignedVals::sbv1 ]
Limited combination testing to 100 combinations of 1024 possible.
Uplifting [main] best 408 combination
Uplifting [testUnsigned] best 408 combination
Uplifting [testSigned] best 408 combination
Uplifting [] best 408 combination
Uplifting [main] best 404 combination
Uplifting [testUnsigned] best 404 combination
Uplifting [testSigned] best 404 combination
Uplifting [] best 404 combination
Attempting to uplift remaining variables inzp[1]:7 [ testUnsignedVals::$6 ]
Uplifting [testUnsignedVals] best 402 combination reg byte a [ testUnsignedVals::$6 ]
Uplifting [testUnsignedVals] best 398 combination reg byte a [ testUnsignedVals::$6 ]
Attempting to uplift remaining variables inzp[1]:13 [ testSignedVals::$6 ]
Uplifting [testSignedVals] best 396 combination reg byte a [ testSignedVals::$6 ]
Uplifting [testSignedVals] best 392 combination reg byte a [ testSignedVals::$6 ]
Attempting to uplift remaining variables inzp[1]:2 [ testUnsignedVals::ubv1 ]
Uplifting [testUnsignedVals] best 396 combination zp[1]:2 [ testUnsignedVals::ubv1 ]
Uplifting [testUnsignedVals] best 392 combination zp[1]:2 [ testUnsignedVals::ubv1 ]
Attempting to uplift remaining variables inzp[1]:8 [ testSignedVals::sbv1 ]
Uplifting [testSignedVals] best 396 combination zp[1]:8 [ testSignedVals::sbv1 ]
Uplifting [testSignedVals] best 392 combination zp[1]:8 [ testSignedVals::sbv1 ]
Allocated (was zp[1]:8) zp[1]:3 [ testSignedVals::sbv1 ]
ASSEMBLER BEFORE OPTIMIZATION
@ -1667,18 +1667,16 @@ testSignedVals: {
// [57] *((const nomodify signed byte*) SSCREEN+++++++++++(byte)(number) $28*(number) 3) ← (signed byte) -$78+(const signed byte) testSignedVals::sbc1 -- _deref_pbsc1=vbsc2
lda #-$78+sbc1
sta SSCREEN+$28*3+1+1+1+1+1
// [58] (signed byte~) testSignedVals::$2 ← (volatile signed byte) testSignedVals::sbv1 + (signed byte) -$78 -- vbsaa=vbsz1_plus_vbsc1
lda #-$78
clc
adc.z sbv1
// [59] *((const nomodify signed byte*) SSCREEN+++++++++++++(byte)(number) $28*(number) 3) ← (signed byte~) testSignedVals::$2 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1
// [60] (signed byte~) testSignedVals::$3 ← (signed byte) -$78 + (volatile signed byte) testSignedVals::sbv1 -- vbsaa=vbsc1_plus_vbsz1
lda #-$78
clc
adc.z sbv1
// [61] *((const nomodify signed byte*) SSCREEN+++++++++++++++(byte)(number) $28*(number) 3) ← (signed byte~) testSignedVals::$3 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1+1
// [58] (signed byte~) testSignedVals::$2 ← (volatile signed byte) testSignedVals::sbv1 + (signed byte) -$78 -- vbsxx=vbsz1_plus_vbsc1
lax.z sbv1
axs #-[-$78]
// [59] *((const nomodify signed byte*) SSCREEN+++++++++++++(byte)(number) $28*(number) 3) ← (signed byte~) testSignedVals::$2 -- _deref_pbsc1=vbsxx
stx SSCREEN+$28*3+1+1+1+1+1+1
// [60] (signed byte~) testSignedVals::$3 ← (signed byte) -$78 + (volatile signed byte) testSignedVals::sbv1 -- vbsxx=vbsc1_plus_vbsz1
lax.z sbv1
axs #-[-$78]
// [61] *((const nomodify signed byte*) SSCREEN+++++++++++++++(byte)(number) $28*(number) 3) ← (signed byte~) testSignedVals::$3 -- _deref_pbsc1=vbsxx
stx SSCREEN+$28*3+1+1+1+1+1+1+1
// [62] (signed byte~) testSignedVals::$4 ← (volatile signed byte) testSignedVals::sbv1 + (const signed byte) testSignedVals::sbc1 -- vbsaa=vbsz1_plus_vbsc1
lda #sbc1
clc
@ -1759,8 +1757,8 @@ FINAL SYMBOL TABLE
(void()) testSigned()
(label) testSigned::@return
(void()) testSignedVals()
(signed byte~) testSignedVals::$2 reg byte a 22.0
(signed byte~) testSignedVals::$3 reg byte a 22.0
(signed byte~) testSignedVals::$2 reg byte x 22.0
(signed byte~) testSignedVals::$3 reg byte x 22.0
(signed byte~) testSignedVals::$4 reg byte a 22.0
(signed byte~) testSignedVals::$5 reg byte a 22.0
(signed byte~) testSignedVals::$6 reg byte a 22.0
@ -1786,15 +1784,15 @@ reg byte a [ testUnsignedVals::$4 ]
reg byte a [ testUnsignedVals::$5 ]
reg byte a [ testUnsignedVals::$6 ]
zp[1]:3 [ testSignedVals::sbv1 ]
reg byte a [ testSignedVals::$2 ]
reg byte a [ testSignedVals::$3 ]
reg byte x [ testSignedVals::$2 ]
reg byte x [ testSignedVals::$3 ]
reg byte a [ testSignedVals::$4 ]
reg byte a [ testSignedVals::$5 ]
reg byte a [ testSignedVals::$6 ]
FINAL ASSEMBLER
Score: 340
Score: 336
// File Comments
// Test that plus creates the expected type for all legal combinations of bytes (signed/unsigned - constant/variable)
@ -2025,21 +2023,19 @@ testSignedVals: {
lda #-$78+sbc1
sta SSCREEN+$28*3+1+1+1+1+1
// sbv1+-120
// [58] (signed byte~) testSignedVals::$2 ← (volatile signed byte) testSignedVals::sbv1 + (signed byte) -$78 -- vbsaa=vbsz1_plus_vbsc1
lda #-$78
clc
adc.z sbv1
// [58] (signed byte~) testSignedVals::$2 ← (volatile signed byte) testSignedVals::sbv1 + (signed byte) -$78 -- vbsxx=vbsz1_plus_vbsc1
lax.z sbv1
axs #-[-$78]
// SSCREEN[idx++] = (sbv1+-120)
// [59] *((const nomodify signed byte*) SSCREEN+++++++++++++(byte)(number) $28*(number) 3) ← (signed byte~) testSignedVals::$2 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1
// [59] *((const nomodify signed byte*) SSCREEN+++++++++++++(byte)(number) $28*(number) 3) ← (signed byte~) testSignedVals::$2 -- _deref_pbsc1=vbsxx
stx SSCREEN+$28*3+1+1+1+1+1+1
// -120+sbv1
// [60] (signed byte~) testSignedVals::$3 ← (signed byte) -$78 + (volatile signed byte) testSignedVals::sbv1 -- vbsaa=vbsc1_plus_vbsz1
lda #-$78
clc
adc.z sbv1
// [60] (signed byte~) testSignedVals::$3 ← (signed byte) -$78 + (volatile signed byte) testSignedVals::sbv1 -- vbsxx=vbsc1_plus_vbsz1
lax.z sbv1
axs #-[-$78]
// SSCREEN[idx++] = (-120+sbv1)
// [61] *((const nomodify signed byte*) SSCREEN+++++++++++++++(byte)(number) $28*(number) 3) ← (signed byte~) testSignedVals::$3 -- _deref_pbsc1=vbsaa
sta SSCREEN+$28*3+1+1+1+1+1+1+1
// [61] *((const nomodify signed byte*) SSCREEN+++++++++++++++(byte)(number) $28*(number) 3) ← (signed byte~) testSignedVals::$3 -- _deref_pbsc1=vbsxx
stx SSCREEN+$28*3+1+1+1+1+1+1+1
// sbv1+sbc1
// [62] (signed byte~) testSignedVals::$4 ← (volatile signed byte) testSignedVals::sbv1 + (const signed byte) testSignedVals::sbc1 -- vbsaa=vbsz1_plus_vbsc1
lda #sbc1

View File

@ -11,8 +11,8 @@
(void()) testSigned()
(label) testSigned::@return
(void()) testSignedVals()
(signed byte~) testSignedVals::$2 reg byte a 22.0
(signed byte~) testSignedVals::$3 reg byte a 22.0
(signed byte~) testSignedVals::$2 reg byte x 22.0
(signed byte~) testSignedVals::$3 reg byte x 22.0
(signed byte~) testSignedVals::$4 reg byte a 22.0
(signed byte~) testSignedVals::$5 reg byte a 22.0
(signed byte~) testSignedVals::$6 reg byte a 22.0
@ -38,8 +38,8 @@ reg byte a [ testUnsignedVals::$4 ]
reg byte a [ testUnsignedVals::$5 ]
reg byte a [ testUnsignedVals::$6 ]
zp[1]:3 [ testSignedVals::sbv1 ]
reg byte a [ testSignedVals::$2 ]
reg byte a [ testSignedVals::$3 ]
reg byte x [ testSignedVals::$2 ]
reg byte x [ testSignedVals::$3 ]
reg byte a [ testSignedVals::$4 ]
reg byte a [ testSignedVals::$5 ]
reg byte a [ testSignedVals::$6 ]