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

Added missing fragments (through signature rewriting)

This commit is contained in:
Jesper Gravgaard 2017-10-16 13:20:08 +02:00
parent 520361f7b6
commit 5de6bbba13
2 changed files with 4 additions and 91 deletions

View File

@ -76,7 +76,7 @@ public class AsmFragmentManager {
}
}
if(signature.startsWith("zpby1=")) {
if(signature.contains("{zpby2}")) {
if(signature.contains("zpby2")) {
String subSignature = "aby="+signature.substring(6).replace("zpby2", "zpby1");
CharStream subCharStream = loadOrSynthesizeFragment(subSignature);
if(subCharStream!=null) {
@ -97,6 +97,9 @@ public class AsmFragmentManager {
sigNew = regexpRewriteSignature(sigNew, "(.*)=(.*)_plus_aby", "$1=aby_plus_$2");
sigNew = regexpRewriteSignature(sigNew, "(.*)=(.*)_plus_xby", "$1=xby_plus_$2");
sigNew = regexpRewriteSignature(sigNew, "(.*)=(.*)_plus_yby", "$1=yby_plus_$2");
sigNew = regexpRewriteSignature(sigNew, "(.*)_lt_aby_then_(.*)", "aby_ge_$1_then_$2");
sigNew = regexpRewriteSignature(sigNew, "(.*)_lt_xby_then_(.*)", "xby_ge_$1_then_$2");
sigNew = regexpRewriteSignature(sigNew, "(.*)_lt_yby_then_(.*)", "yby_ge_$1_then_$2");
sigNew = regexpRewriteSignature(sigNew, "(.*)_ge_aby_then_(.*)", "aby_lt_$1_then_$2");
sigNew = regexpRewriteSignature(sigNew, "(.*)_ge_xby_then_(.*)", "xby_lt_$1_then_$2");
sigNew = regexpRewriteSignature(sigNew, "(.*)_ge_yby_then_(.*)", "yby_lt_$1_then_$2");

View File

@ -9476,17 +9476,6 @@ Statement [44] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animat
Statement [49] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] always clobbers reg byte a
Statement [62] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::y#2 render::colline#1 numpoints#1 ] always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ render::y#2 render::y#1 ]
Potential register analysis [75] findcol::diff#1 ← findcol::xp#0 - findcol::x#0 missing fragment zpby1=xby_minus_zpby2 allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte x [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [75] findcol::diff#1 ← findcol::xp#0 - findcol::x#0 missing fragment zpby1=yby_minus_zpby2 allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [75] findcol::diff#1 ← findcol::xp#0 - findcol::x#0 missing fragment zpby1=zpby2_minus_aby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] zp ZP_BYTE:40 [ findcol::xp#0 ] reg byte a [ findcol::x#0 ]
Potential register analysis [75] findcol::diff#1 ← findcol::xp#0 - findcol::x#0 missing fragment zpby1=zpby2_minus_xby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] zp ZP_BYTE:40 [ findcol::xp#0 ] reg byte x [ findcol::x#0 ]
Potential register analysis [75] findcol::diff#1 ← findcol::xp#0 - findcol::x#0 missing fragment zpby1=zpby2_minus_yby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] zp ZP_BYTE:40 [ findcol::xp#0 ] reg byte y [ findcol::x#0 ]
MISSING FRAGMENTS
zpby1=xby_minus_zpby2
zpby1=yby_minus_zpby2
zpby1=zpby2_minus_aby
zpby1=zpby2_minus_xby
zpby1=zpby2_minus_yby
Statement [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#1 numpoints#1 ] always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ findcol::x#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:38 [ findcol::y#0 ]
@ -9495,43 +9484,9 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ fi
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ findcol::return#0 findcol::mincol#11 findcol::mincol#2 findcol::mincol#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ findcol::yp#0 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ render::x#2 render::x#1 ]
Potential register analysis [78] findcol::$12 ← findcol::yp#0 - findcol::y#0 missing fragment zpby1=xby_minus_zpby2 allocation: zp ZP_BYTE:42 [ findcol::$12 ] reg byte x [ findcol::yp#0 ] zp ZP_BYTE:38 [ findcol::y#0 ]
Potential register analysis [78] findcol::$12 ← findcol::yp#0 - findcol::y#0 missing fragment zpby1=yby_minus_zpby2 allocation: zp ZP_BYTE:42 [ findcol::$12 ] reg byte y [ findcol::yp#0 ] zp ZP_BYTE:38 [ findcol::y#0 ]
Potential register analysis [78] findcol::$12 ← findcol::yp#0 - findcol::y#0 missing fragment zpby1=zpby2_minus_xby allocation: zp ZP_BYTE:42 [ findcol::$12 ] zp ZP_BYTE:41 [ findcol::yp#0 ] reg byte x [ findcol::y#0 ]
Potential register analysis [78] findcol::$12 ← findcol::yp#0 - findcol::y#0 missing fragment zpby1=zpby2_minus_yby allocation: zp ZP_BYTE:42 [ findcol::$12 ] zp ZP_BYTE:41 [ findcol::yp#0 ] reg byte y [ findcol::y#0 ]
MISSING FRAGMENTS
zpby1=xby_minus_zpby2
zpby1=yby_minus_zpby2
zpby1=zpby2_minus_xby
zpby1=zpby2_minus_yby
Statement [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#4 findcol::$12 numpoints#1 ] always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
Potential register analysis [85] if(findcol::i#1<numpoints#1) goto findcol::@19 missing fragment zpby1_lt_xby_then_la1 allocation: reg byte x [ numpoints#19 numpoints#1 ] zp ZP_BYTE:6 [ findcol::i#12 findcol::i#1 ]
Potential register analysis [85] if(findcol::i#1<numpoints#1) goto findcol::@19 missing fragment zpby1_lt_yby_then_la1 allocation: reg byte y [ numpoints#19 numpoints#1 ] zp ZP_BYTE:6 [ findcol::i#12 findcol::i#1 ]
MISSING FRAGMENTS
zpby1_lt_xby_then_la1
zpby1_lt_yby_then_la1
Potential register analysis [88] findcol::$14 ← findcol::y#0 - findcol::yp#0 missing fragment zpby1=zpby2_minus_xby allocation: reg byte x [ findcol::yp#0 ] zp ZP_BYTE:38 [ findcol::y#0 ] zp ZP_BYTE:43 [ findcol::$14 ]
Potential register analysis [88] findcol::$14 ← findcol::y#0 - findcol::yp#0 missing fragment zpby1=zpby2_minus_yby allocation: reg byte y [ findcol::yp#0 ] zp ZP_BYTE:38 [ findcol::y#0 ] zp ZP_BYTE:43 [ findcol::$14 ]
Potential register analysis [88] findcol::$14 ← findcol::y#0 - findcol::yp#0 missing fragment zpby1=xby_minus_zpby2 allocation: zp ZP_BYTE:41 [ findcol::yp#0 ] reg byte x [ findcol::y#0 ] zp ZP_BYTE:43 [ findcol::$14 ]
Potential register analysis [88] findcol::$14 ← findcol::y#0 - findcol::yp#0 missing fragment zpby1=yby_minus_zpby2 allocation: zp ZP_BYTE:41 [ findcol::yp#0 ] reg byte y [ findcol::y#0 ] zp ZP_BYTE:43 [ findcol::$14 ]
MISSING FRAGMENTS
zpby1=zpby2_minus_xby
zpby1=zpby2_minus_yby
zpby1=xby_minus_zpby2
zpby1=yby_minus_zpby2
Statement [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#4 numpoints#1 findcol::$14 ] always clobbers reg byte a
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=zpby2_minus_aby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte a [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=zpby2_minus_xby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte x [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=zpby2_minus_yby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=xby_minus_zpby2 allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] zp ZP_BYTE:40 [ findcol::xp#0 ] reg byte x [ findcol::x#0 ]
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=yby_minus_zpby2 allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] zp ZP_BYTE:40 [ findcol::xp#0 ] reg byte y [ findcol::x#0 ]
MISSING FRAGMENTS
zpby1=zpby2_minus_aby
zpby1=zpby2_minus_xby
zpby1=zpby2_minus_yby
zpby1=xby_minus_zpby2
zpby1=yby_minus_zpby2
Statement [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#0 numpoints#1 ] always clobbers reg byte a
Statement [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:14 [ numpoints#19 numpoints#1 ]
@ -9544,50 +9499,9 @@ Statement [42] *((const byte[256]) YPOS#0+(byte) 3) ← (byte) 25 [ ] always clo
Statement [44] (byte~) animate::$26 ← (byte~) animate::$25 + (byte) 7 [ animate::$26 ] always clobbers reg byte a
Statement [49] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ animate::$31 ] always clobbers reg byte a
Statement [62] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::y#2 render::colline#1 numpoints#1 ] always clobbers reg byte a
Potential register analysis [75] findcol::diff#1 ← findcol::xp#0 - findcol::x#0 missing fragment zpby1=xby_minus_zpby2 allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte x [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [75] findcol::diff#1 ← findcol::xp#0 - findcol::x#0 missing fragment zpby1=yby_minus_zpby2 allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [75] findcol::diff#1 ← findcol::xp#0 - findcol::x#0 missing fragment zpby1=zpby2_minus_xby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] zp ZP_BYTE:40 [ findcol::xp#0 ] reg byte x [ findcol::x#0 ]
Potential register analysis [75] findcol::diff#1 ← findcol::xp#0 - findcol::x#0 missing fragment zpby1=zpby2_minus_yby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] zp ZP_BYTE:40 [ findcol::xp#0 ] reg byte y [ findcol::x#0 ]
MISSING FRAGMENTS
zpby1=xby_minus_zpby2
zpby1=yby_minus_zpby2
zpby1=zpby2_minus_xby
zpby1=zpby2_minus_yby
Statement [75] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#1 numpoints#1 ] always clobbers reg byte a
Potential register analysis [78] findcol::$12 ← findcol::yp#0 - findcol::y#0 missing fragment zpby1=xby_minus_zpby2 allocation: zp ZP_BYTE:42 [ findcol::$12 ] reg byte x [ findcol::yp#0 ] zp ZP_BYTE:38 [ findcol::y#0 ]
Potential register analysis [78] findcol::$12 ← findcol::yp#0 - findcol::y#0 missing fragment zpby1=yby_minus_zpby2 allocation: zp ZP_BYTE:42 [ findcol::$12 ] reg byte y [ findcol::yp#0 ] zp ZP_BYTE:38 [ findcol::y#0 ]
Potential register analysis [78] findcol::$12 ← findcol::yp#0 - findcol::y#0 missing fragment zpby1=zpby2_minus_xby allocation: zp ZP_BYTE:42 [ findcol::$12 ] zp ZP_BYTE:41 [ findcol::yp#0 ] reg byte x [ findcol::y#0 ]
Potential register analysis [78] findcol::$12 ← findcol::yp#0 - findcol::y#0 missing fragment zpby1=zpby2_minus_yby allocation: zp ZP_BYTE:42 [ findcol::$12 ] zp ZP_BYTE:41 [ findcol::yp#0 ] reg byte y [ findcol::y#0 ]
MISSING FRAGMENTS
zpby1=xby_minus_zpby2
zpby1=yby_minus_zpby2
zpby1=zpby2_minus_xby
zpby1=zpby2_minus_yby
Statement [78] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#4 findcol::$12 numpoints#1 ] always clobbers reg byte a
Potential register analysis [85] if(findcol::i#1<numpoints#1) goto findcol::@19 missing fragment zpby1_lt_xby_then_la1 allocation: reg byte x [ numpoints#19 numpoints#1 ] zp ZP_BYTE:6 [ findcol::i#12 findcol::i#1 ]
MISSING FRAGMENTS
zpby1_lt_xby_then_la1
Potential register analysis [88] findcol::$14 ← findcol::y#0 - findcol::yp#0 missing fragment zpby1=zpby2_minus_xby allocation: reg byte x [ findcol::yp#0 ] zp ZP_BYTE:38 [ findcol::y#0 ] zp ZP_BYTE:43 [ findcol::$14 ]
Potential register analysis [88] findcol::$14 ← findcol::y#0 - findcol::yp#0 missing fragment zpby1=zpby2_minus_yby allocation: reg byte y [ findcol::yp#0 ] zp ZP_BYTE:38 [ findcol::y#0 ] zp ZP_BYTE:43 [ findcol::$14 ]
Potential register analysis [88] findcol::$14 ← findcol::y#0 - findcol::yp#0 missing fragment zpby1=xby_minus_zpby2 allocation: zp ZP_BYTE:41 [ findcol::yp#0 ] reg byte x [ findcol::y#0 ] zp ZP_BYTE:43 [ findcol::$14 ]
Potential register analysis [88] findcol::$14 ← findcol::y#0 - findcol::yp#0 missing fragment zpby1=yby_minus_zpby2 allocation: zp ZP_BYTE:41 [ findcol::yp#0 ] reg byte y [ findcol::y#0 ] zp ZP_BYTE:43 [ findcol::$14 ]
MISSING FRAGMENTS
zpby1=zpby2_minus_xby
zpby1=zpby2_minus_yby
zpby1=xby_minus_zpby2
zpby1=yby_minus_zpby2
Statement [88] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#4 numpoints#1 findcol::$14 ] always clobbers reg byte a
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=zpby2_minus_aby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte a [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=zpby2_minus_xby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte x [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=zpby2_minus_yby allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::xp#0 ] zp ZP_BYTE:37 [ findcol::x#0 ]
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=xby_minus_zpby2 allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] zp ZP_BYTE:40 [ findcol::xp#0 ] reg byte x [ findcol::x#0 ]
Potential register analysis [90] findcol::diff#0 ← findcol::x#0 - findcol::xp#0 missing fragment zpby1=yby_minus_zpby2 allocation: zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] zp ZP_BYTE:40 [ findcol::xp#0 ] reg byte y [ findcol::x#0 ]
MISSING FRAGMENTS
zpby1=zpby2_minus_aby
zpby1=zpby2_minus_xby
zpby1=zpby2_minus_yby
zpby1=xby_minus_zpby2
zpby1=yby_minus_zpby2
Statement [90] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#0 numpoints#1 ] always clobbers reg byte a
Statement [93] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] always clobbers reg byte a reg byte y
Statement [95] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] always clobbers reg byte a
@ -9654,8 +9568,6 @@ Uplifting [] best 1711225 combination zp ZP_BYTE:14 [ numpoints#19 numpoints#1 ]
Uplifting [initscreen] best 1711225 combination zp ZP_PTR_BYTE:11 [ initscreen::screen#2 initscreen::screen#1 ]
Uplifting [addpoint] best 1711185 combination reg byte a [ addpoint::x#6 ] reg byte y [ addpoint::y#6 ] zp ZP_BYTE:16 [ addpoint::c#6 ]
Uplifting [main] best 1711185 combination
MISSING FRAGMENTS
zpby1=zpby2_minus_aby
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
Uplifting [findcol] best 1711185 combination zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
@ -9716,8 +9628,6 @@ Attempting to uplift remaining variables inzp ZP_BYTE:36 [ animate::$31 ]
Uplifting [animate] best 1711061 combination reg byte a [ animate::$31 ]
Attempting to uplift remaining variables inzp ZP_BYTE:16 [ addpoint::c#6 ]
Uplifting [addpoint] best 1711061 combination zp ZP_BYTE:16 [ addpoint::c#6 ]
MISSING FRAGMENTS
zpby1=zpby2_minus_aby
Coalescing zero page register [ zp ZP_BYTE:2 [ render::y#2 render::y#1 ] ] with [ zp ZP_BYTE:16 [ addpoint::c#6 ] ]
Coalescing zero page register [ zp ZP_PTR_BYTE:3 [ render::colline#2 render::colline#1 ] ] with [ zp ZP_PTR_BYTE:11 [ initscreen::screen#2 initscreen::screen#1 ] ]
Coalescing zero page register [ zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] ] with [ zp ZP_BYTE:40 [ findcol::xp#0 ] ]