1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-12-26 03:32:23 +00:00

Working on deprecating lo/hi operators. Closes #667

This commit is contained in:
jespergravgaard 2021-06-13 09:27:50 +02:00
parent c2638ff86c
commit 1028bd1115
2 changed files with 45 additions and 49 deletions

View File

@ -4163,36 +4163,36 @@ Uplift Scope [init_irq]
Uplift Scope [irq]
Uplift Scope [__start]
Uplifting [mul16u] best 27323 combination zp[4]:48 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:52 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:46 [ mul16u::a#3 mul16u::a#6 mul16u::a#2 mul16u::a#0 mul16u::a#1 ] zp[2]:44 [ mul16u::b#2 mul16u::b#1 mul16u::b#0 ] zp[4]:210 [ mul16u::return#0 ] zp[4]:136 [ mul16u::return#3 ]
Uplifting [divr16u] best 27133 combination zp[2]:56 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:60 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:58 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:159 [ divr16u::return#2 ] zp[2]:163 [ divr16u::return#3 ]
Uplifting [mulu16_sel] best 27115 combination zp[2]:63 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] zp[4]:214 [ mulu16_sel::$0 ] zp[4]:218 [ mulu16_sel::$1 ] zp[2]:65 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] zp[2]:222 [ mulu16_sel::return#12 ] zp[2]:177 [ mulu16_sel::return#0 ] zp[2]:181 [ mulu16_sel::return#1 ] zp[2]:185 [ mulu16_sel::return#2 ] zp[2]:191 [ mulu16_sel::return#10 ] zp[2]:195 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ]
Uplifting [sin16s] best 27108 combination zp[4]:31 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:35 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:171 [ sin16s::$4 ] zp[2]:179 [ sin16s::x2#0 ] zp[2]:187 [ sin16s::x3_6#0 ] zp[2]:193 [ sin16s::x4#0 ] zp[2]:197 [ sin16s::x5#0 ] zp[2]:199 [ sin16s::x5_128#0 ] zp[2]:183 [ sin16s::x3#0 ] zp[2]:201 [ sin16s::usinx#1 ] zp[2]:175 [ sin16s::x1#0 ] zp[2]:120 [ sin16s::return#0 ] zp[2]:189 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ]
Uplifting [mul16s] best 27108 combination zp[4]:26 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[2]:140 [ mul16s::$6 ] zp[2]:142 [ mul16s::$11 ] zp[2]:144 [ mul16s::$9 ] zp[2]:146 [ mul16s::$12 ] zp[2]:22 [ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ] zp[4]:148 [ mul16s::return#1 ] zp[4]:122 [ mul16s::return#0 ] zp[2]:24 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] zp[4]:75 [ mul16s::return#3 ] zp[4]:95 [ mul16s::return#4 ]
Uplifting [memset] best 27092 combination zp[2]:42 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:203 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:37 [ memset::num#2 ] zp[2]:39 [ memset::str#3 ]
Uplifting [bitmap_init] best 26642 combination zp[2]:20 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ 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::$4 ] zp[1]:134 [ bitmap_init::$5 ] zp[1]:135 [ bitmap_init::$6 ] zp[1]:132 [ bitmap_init::$7 ]
Uplifting [mul16u] best 27321 combination zp[4]:48 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:52 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:46 [ mul16u::a#3 mul16u::a#6 mul16u::a#2 mul16u::a#0 mul16u::a#1 ] zp[2]:44 [ mul16u::b#2 mul16u::b#1 mul16u::b#0 ] zp[4]:210 [ mul16u::return#0 ] zp[4]:136 [ mul16u::return#3 ]
Uplifting [divr16u] best 27131 combination zp[2]:56 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:60 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:58 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:159 [ divr16u::return#2 ] zp[2]:163 [ divr16u::return#3 ]
Uplifting [mulu16_sel] best 27113 combination zp[2]:63 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] zp[4]:214 [ mulu16_sel::$0 ] zp[4]:218 [ mulu16_sel::$1 ] zp[2]:65 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] zp[2]:222 [ mulu16_sel::return#12 ] zp[2]:177 [ mulu16_sel::return#0 ] zp[2]:181 [ mulu16_sel::return#1 ] zp[2]:185 [ mulu16_sel::return#2 ] zp[2]:191 [ mulu16_sel::return#10 ] zp[2]:195 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ]
Uplifting [sin16s] best 27106 combination zp[4]:31 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:35 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:171 [ sin16s::$4 ] zp[2]:179 [ sin16s::x2#0 ] zp[2]:187 [ sin16s::x3_6#0 ] zp[2]:193 [ sin16s::x4#0 ] zp[2]:197 [ sin16s::x5#0 ] zp[2]:199 [ sin16s::x5_128#0 ] zp[2]:183 [ sin16s::x3#0 ] zp[2]:201 [ sin16s::usinx#1 ] zp[2]:175 [ sin16s::x1#0 ] zp[2]:120 [ sin16s::return#0 ] zp[2]:189 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ]
Uplifting [mul16s] best 27106 combination zp[4]:26 [ mul16s::m#4 mul16s::m#5 mul16s::m#1 mul16s::m#0 mul16s::m#2 ] zp[2]:140 [ mul16s::$6 ] zp[2]:142 [ mul16s::$11 ] zp[2]:144 [ mul16s::$9 ] zp[2]:146 [ mul16s::$12 ] zp[2]:22 [ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ] zp[4]:148 [ mul16s::return#1 ] zp[4]:122 [ mul16s::return#0 ] zp[2]:24 [ mul16s::b#3 mul16s::b#2 mul16s::b#1 ] zp[4]:75 [ mul16s::return#3 ] zp[4]:95 [ mul16s::return#4 ]
Uplifting [memset] best 27090 combination zp[2]:42 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:203 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:37 [ memset::num#2 ] zp[2]:39 [ memset::str#3 ]
Uplifting [bitmap_init] best 26640 combination zp[2]:20 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ 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::$4 ] zp[1]:134 [ bitmap_init::$5 ] zp[1]:135 [ bitmap_init::$6 ] zp[1]:132 [ bitmap_init::$7 ]
Limited combination testing to 100 combinations of 15360 possible.
Uplifting [bitmap_plot] best 26603 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:154 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:156 [ bitmap_plot::plotter#1 ] zp[2]:152 [ bitmap_plot::plotter#0 ] zp[2]:109 [ bitmap_plot::x#0 ]
Uplifting [sin16s_gen2] best 26603 combination zp[2]:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:126 [ sin16s_gen2::$6 ] zp[4]:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:130 [ sin16s_gen2::$8 ] zp[2]:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:116 [ sin16s_gen2::step#0 ]
Uplifting [div32u16u] best 26603 combination zp[2]:165 [ div32u16u::quotient_lo#0 ] zp[2]:161 [ div32u16u::quotient_hi#0 ] zp[4]:167 [ div32u16u::return#1 ] zp[4]:112 [ div32u16u::return#0 ]
Uplifting [main] best 26603 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] zp[2]:69 [ main::$26 ] zp[2]:71 [ main::$30 ] zp[4]:79 [ main::xpos#0 ] zp[2]:85 [ main::$7 ] zp[2]:89 [ main::$27 ] zp[2]:91 [ main::$31 ] zp[4]:99 [ main::ypos#0 ] zp[2]:105 [ main::$11 ] zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] zp[2]:73 [ main::cos_x#0 ] zp[2]:83 [ main::$28 ] zp[2]:93 [ main::sin_y#0 ] zp[2]:103 [ main::$29 ] zp[2]:4 [ main::r#10 main::r#1 ] zp[2]:107 [ main::y#0 ] zp[2]:87 [ main::x#0 ]
Uplifting [] best 26603 combination zp[2]:208 [ rem16u#14 ] zp[1]:68 [ frame_cnt ]
Uplifting [MOS6526_CIA] best 26603 combination
Uplifting [MOS6569_VICII] best 26603 combination
Uplifting [MOS6581_SID] best 26603 combination
Uplifting [bitmap_clear] best 26603 combination
Uplifting [init_irq] best 26603 combination
Uplifting [irq] best 26603 combination
Uplifting [__start] best 26603 combination
Uplifting [bitmap_plot] best 26601 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:154 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:156 [ bitmap_plot::plotter#1 ] zp[2]:152 [ bitmap_plot::plotter#0 ] zp[2]:109 [ bitmap_plot::x#0 ]
Uplifting [sin16s_gen2] best 26601 combination zp[2]:9 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:126 [ sin16s_gen2::$6 ] zp[4]:11 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:130 [ sin16s_gen2::$8 ] zp[2]:15 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:116 [ sin16s_gen2::step#0 ]
Uplifting [div32u16u] best 26601 combination zp[2]:165 [ div32u16u::quotient_lo#0 ] zp[2]:161 [ div32u16u::quotient_hi#0 ] zp[4]:167 [ div32u16u::return#1 ] zp[4]:112 [ div32u16u::return#0 ]
Uplifting [main] best 26601 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ] zp[2]:69 [ main::$26 ] zp[2]:71 [ main::$30 ] zp[4]:79 [ main::xpos#0 ] zp[2]:85 [ main::$7 ] zp[2]:89 [ main::$27 ] zp[2]:91 [ main::$31 ] zp[4]:99 [ main::ypos#0 ] zp[2]:105 [ main::$11 ] zp[2]:2 [ main::idx_x#11 main::idx_x#10 main::idx_x#1 ] zp[2]:6 [ main::idx_y#3 main::idx_y#10 main::idx_y#1 ] zp[2]:73 [ main::cos_x#0 ] zp[2]:83 [ main::$28 ] zp[2]:93 [ main::sin_y#0 ] zp[2]:103 [ main::$29 ] zp[2]:4 [ main::r#10 main::r#1 ] zp[2]:107 [ main::y#0 ] zp[2]:87 [ main::x#0 ]
Uplifting [] best 26601 combination zp[2]:208 [ rem16u#14 ] zp[1]:68 [ frame_cnt ]
Uplifting [MOS6526_CIA] best 26601 combination
Uplifting [MOS6569_VICII] best 26601 combination
Uplifting [MOS6581_SID] best 26601 combination
Uplifting [bitmap_clear] best 26601 combination
Uplifting [init_irq] best 26601 combination
Uplifting [irq] best 26601 combination
Uplifting [__start] best 26601 combination
Attempting to uplift remaining variables inzp[1]:134 [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 26543 combination reg byte a [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 26541 combination reg byte a [ bitmap_init::$5 ]
Attempting to uplift remaining variables inzp[1]:135 [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 26483 combination reg byte a [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 26481 combination reg byte a [ bitmap_init::$6 ]
Attempting to uplift remaining variables inzp[1]:132 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 26483 combination zp[1]:132 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 26481 combination zp[1]:132 [ bitmap_init::$7 ]
Attempting to uplift remaining variables inzp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
Uplifting [main] best 26483 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
Uplifting [main] best 26481 combination zp[1]:8 [ main::r_add#10 main::r_add#12 main::r_add#1 ]
Attempting to uplift remaining variables inzp[1]:68 [ frame_cnt ]
Uplifting [] best 26483 combination zp[1]:68 [ frame_cnt ]
Uplifting [] best 26481 combination zp[1]:68 [ frame_cnt ]
Coalescing zero page register [ zp[2]:4 [ main::r#10 main::r#1 ] ] with [ zp[2]:22 [ mul16s::a#3 mul16s::a#2 mul16s::a#1 mul16s::a#0 ] ] - score: 2
Coalescing zero page register [ zp[2]:35 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:201 [ sin16s::usinx#1 ] ] - score: 2
Coalescing zero page register [ zp[2]:63 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] ] with [ zp[2]:183 [ sin16s::x3#0 ] ] - score: 2
@ -5225,7 +5225,6 @@ bitmap_plot: {
lda bitmap_plot_bit,x
ldy #0
ora (plotter),y
ldy #0
sta (plotter),y
jmp __breturn
// bitmap_plot::@return
@ -6003,7 +6002,6 @@ Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction ldy #0
Removing instruction lda #>0
Removing instruction lda #>0
Replacing instruction lda #<0 with TXA

View File

@ -3887,31 +3887,31 @@ Uplift Scope [MOS6581_SID]
Uplift Scope [bitmap_clear]
Uplift Scope [main]
Uplifting [mul16u] best 30901 combination zp[4]:58 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:62 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:56 [ mul16u::a#3 mul16u::a#6 mul16u::a#2 mul16u::a#0 mul16u::a#1 ] zp[2]:54 [ mul16u::b#2 mul16u::b#0 ] zp[4]:176 [ mul16u::return#0 ] zp[4]:152 [ mul16u::return#3 ]
Uplifting [wrap_y] best 30718 combination zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#2 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ]
Uplifting [divr16u] best 30528 combination zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:108 [ divr16u::return#2 ] zp[2]:112 [ divr16u::return#3 ]
Uplifting [mulu16_sel] best 30510 combination zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] zp[4]:180 [ mulu16_sel::$0 ] zp[4]:184 [ mulu16_sel::$1 ] zp[2]:51 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] zp[2]:188 [ mulu16_sel::return#12 ] zp[2]:126 [ mulu16_sel::return#0 ] zp[2]:130 [ mulu16_sel::return#1 ] zp[2]:134 [ mulu16_sel::return#2 ] zp[2]:140 [ mulu16_sel::return#10 ] zp[2]:144 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ]
Uplifting [sin16s] best 30503 combination zp[4]:27 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:120 [ sin16s::$4 ] zp[2]:128 [ sin16s::x2#0 ] zp[2]:136 [ sin16s::x3_6#0 ] zp[2]:142 [ sin16s::x4#0 ] zp[2]:146 [ sin16s::x5#0 ] zp[2]:148 [ sin16s::x5_128#0 ] zp[2]:132 [ sin16s::x3#0 ] zp[2]:150 [ sin16s::usinx#1 ] zp[2]:124 [ sin16s::x1#0 ] zp[2]:78 [ sin16s::return#0 ] zp[2]:138 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ]
Uplifting [mul16s] best 30503 combination zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp[2]:156 [ mul16s::$6 ] zp[2]:158 [ mul16s::$11 ] zp[4]:160 [ mul16s::return#1 ] zp[2]:80 [ mul16s::a#0 ] zp[4]:82 [ mul16s::return#0 ]
Uplifting [bitmap_plot] best 30434 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp[2]:167 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:169 [ bitmap_plot::plotter#1 ] zp[2]:40 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp[2]:165 [ bitmap_plot::plotter#0 ]
Uplifting [memset] best 30418 combination zp[2]:24 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:106 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:19 [ memset::num#2 ] zp[2]:21 [ memset::str#3 ]
Uplifting [bitmap_init] best 29968 combination zp[2]:5 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ 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::$4 ] zp[1]:68 [ bitmap_init::$5 ] zp[1]:69 [ bitmap_init::$6 ] zp[1]:66 [ bitmap_init::$7 ]
Uplifting [mul16u] best 30899 combination zp[4]:58 [ mul16u::res#2 mul16u::res#6 mul16u::res#1 ] zp[4]:62 [ mul16u::mb#2 mul16u::mb#0 mul16u::mb#1 ] reg byte a [ mul16u::$1 ] zp[2]:56 [ mul16u::a#3 mul16u::a#6 mul16u::a#2 mul16u::a#0 mul16u::a#1 ] zp[2]:54 [ mul16u::b#2 mul16u::b#0 ] zp[4]:176 [ mul16u::return#0 ] zp[4]:152 [ mul16u::return#3 ]
Uplifting [wrap_y] best 30716 combination zp[2]:37 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 ] reg byte a [ wrap_y::return#2 ] reg byte a [ wrap_y::return#0 ] reg byte a [ wrap_y::return#1 ]
Uplifting [divr16u] best 30526 combination zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] zp[2]:46 [ divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 ] reg byte a [ divr16u::$1 ] reg byte a [ divr16u::$2 ] reg byte x [ divr16u::i#2 divr16u::i#1 ] zp[2]:44 [ divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ] zp[2]:108 [ divr16u::return#2 ] zp[2]:112 [ divr16u::return#3 ]
Uplifting [mulu16_sel] best 30508 combination zp[2]:49 [ mulu16_sel::v1#5 mulu16_sel::v1#4 mulu16_sel::v1#0 mulu16_sel::v1#1 mulu16_sel::v1#2 mulu16_sel::v1#3 ] zp[4]:180 [ mulu16_sel::$0 ] zp[4]:184 [ mulu16_sel::$1 ] zp[2]:51 [ mulu16_sel::v2#5 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 mulu16_sel::v2#3 ] zp[2]:188 [ mulu16_sel::return#12 ] zp[2]:126 [ mulu16_sel::return#0 ] zp[2]:130 [ mulu16_sel::return#1 ] zp[2]:134 [ mulu16_sel::return#2 ] zp[2]:140 [ mulu16_sel::return#10 ] zp[2]:144 [ mulu16_sel::return#11 ] reg byte x [ mulu16_sel::select#5 ]
Uplifting [sin16s] best 30501 combination zp[4]:27 [ sin16s::x#6 sin16s::x#4 sin16s::x#0 sin16s::x#1 sin16s::x#2 ] zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] zp[4]:120 [ sin16s::$4 ] zp[2]:128 [ sin16s::x2#0 ] zp[2]:136 [ sin16s::x3_6#0 ] zp[2]:142 [ sin16s::x4#0 ] zp[2]:146 [ sin16s::x5#0 ] zp[2]:148 [ sin16s::x5_128#0 ] zp[2]:132 [ sin16s::x3#0 ] zp[2]:150 [ sin16s::usinx#1 ] zp[2]:124 [ sin16s::x1#0 ] zp[2]:78 [ sin16s::return#0 ] zp[2]:138 [ sin16s::usinx#0 ] reg byte y [ sin16s::isUpper#2 ]
Uplifting [mul16s] best 30501 combination zp[4]:33 [ mul16s::m#4 mul16s::m#1 mul16s::m#0 ] zp[2]:156 [ mul16s::$6 ] zp[2]:158 [ mul16s::$11 ] zp[4]:160 [ mul16s::return#1 ] zp[2]:80 [ mul16s::a#0 ] zp[4]:82 [ mul16s::return#0 ]
Uplifting [bitmap_plot] best 30432 combination reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ] zp[2]:167 [ bitmap_plot::$0 ] reg byte x [ bitmap_plot::$1 ] zp[2]:169 [ bitmap_plot::plotter#1 ] zp[2]:40 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] zp[2]:165 [ bitmap_plot::plotter#0 ]
Uplifting [memset] best 30416 combination zp[2]:24 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:106 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:19 [ memset::num#2 ] zp[2]:21 [ memset::str#3 ]
Uplifting [bitmap_init] best 29966 combination zp[2]:5 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ 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::$4 ] zp[1]:68 [ bitmap_init::$5 ] zp[1]:69 [ bitmap_init::$6 ] zp[1]:66 [ bitmap_init::$7 ]
Limited combination testing to 100 combinations of 15360 possible.
Uplifting [render_sine] best 29888 combination zp[2]:17 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] zp[2]:15 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] zp[2]:94 [ render_sine::$1 ] zp[2]:96 [ render_sine::sin_val#0 ] zp[2]:100 [ render_sine::$4 ] zp[2]:102 [ render_sine::sin2_val#0 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] zp[2]:92 [ render_sine::$11 ]
Uplifting [sin16s_gen2] best 29888 combination zp[2]:7 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:86 [ sin16s_gen2::$6 ] zp[4]:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:90 [ sin16s_gen2::$8 ] zp[2]:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:74 [ sin16s_gen2::step#0 ]
Uplifting [div32u16u] best 29888 combination zp[2]:114 [ div32u16u::quotient_lo#0 ] zp[2]:110 [ div32u16u::quotient_hi#0 ] zp[4]:116 [ div32u16u::return#1 ] zp[4]:70 [ div32u16u::return#0 ]
Uplifting [] best 29888 combination zp[2]:174 [ rem16u#14 ]
Uplifting [MOS6526_CIA] best 29888 combination
Uplifting [MOS6569_VICII] best 29888 combination
Uplifting [MOS6581_SID] best 29888 combination
Uplifting [bitmap_clear] best 29888 combination
Uplifting [main] best 29888 combination
Uplifting [render_sine] best 29886 combination zp[2]:17 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] zp[2]:15 [ render_sine::sin_idx#2 render_sine::sin_idx#1 ] zp[2]:94 [ render_sine::$1 ] zp[2]:96 [ render_sine::sin_val#0 ] zp[2]:100 [ render_sine::$4 ] zp[2]:102 [ render_sine::sin2_val#0 ] reg byte x [ render_sine::ypos#0 ] reg byte x [ render_sine::ypos2#0 ] zp[2]:92 [ render_sine::$11 ]
Uplifting [sin16s_gen2] best 29886 combination zp[2]:7 [ sin16s_gen2::i#2 sin16s_gen2::i#1 ] zp[4]:86 [ sin16s_gen2::$6 ] zp[4]:9 [ sin16s_gen2::x#2 sin16s_gen2::x#1 ] zp[2]:90 [ sin16s_gen2::$8 ] zp[2]:13 [ sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 ] zp[4]:74 [ sin16s_gen2::step#0 ]
Uplifting [div32u16u] best 29886 combination zp[2]:114 [ div32u16u::quotient_lo#0 ] zp[2]:110 [ div32u16u::quotient_hi#0 ] zp[4]:116 [ div32u16u::return#1 ] zp[4]:70 [ div32u16u::return#0 ]
Uplifting [] best 29886 combination zp[2]:174 [ rem16u#14 ]
Uplifting [MOS6526_CIA] best 29886 combination
Uplifting [MOS6569_VICII] best 29886 combination
Uplifting [MOS6581_SID] best 29886 combination
Uplifting [bitmap_clear] best 29886 combination
Uplifting [main] best 29886 combination
Attempting to uplift remaining variables inzp[1]:68 [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 29828 combination reg byte a [ bitmap_init::$5 ]
Uplifting [bitmap_init] best 29826 combination reg byte a [ bitmap_init::$5 ]
Attempting to uplift remaining variables inzp[1]:69 [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 29768 combination reg byte a [ bitmap_init::$6 ]
Uplifting [bitmap_init] best 29766 combination reg byte a [ bitmap_init::$6 ]
Attempting to uplift remaining variables inzp[1]:66 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 29768 combination zp[1]:66 [ bitmap_init::$7 ]
Uplifting [bitmap_init] best 29766 combination zp[1]:66 [ bitmap_init::$7 ]
Coalescing zero page register [ zp[2]:17 [ render_sine::xpos#3 render_sine::xpos#9 render_sine::xpos#1 ] ] with [ zp[2]:40 [ bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 ] ] - score: 2
Coalescing zero page register [ zp[2]:31 [ sin16s::return#1 sin16s::return#5 sin16s::sinx#1 ] ] with [ zp[2]:150 [ sin16s::usinx#1 ] ] - score: 2
Coalescing zero page register [ zp[2]:42 [ divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 ] ] with [ zp[2]:174 [ rem16u#14 ] ] - score: 2
@ -5173,7 +5173,6 @@ bitmap_plot: {
lda bitmap_plot_bit,x
ldy #0
ora (plotter),y
ldy #0
sta (plotter),y
jmp __breturn
// bitmap_plot::@return
@ -5526,7 +5525,6 @@ Removing instruction lda #<0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction lda #>0
Removing instruction ldy #0
Replacing instruction lda #<0 with TXA
Removing instruction lda #>0
Removing instruction lda #>0