1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-04-08 14:37:40 +00:00

Improved fragment synthesis of p..z1_deref_vbuaa=... to use TAY when possible.

This commit is contained in:
jespergravgaard 2019-03-09 16:39:24 +01:00
parent a65404d7b6
commit 4d8e083a21
4 changed files with 11162 additions and 8380 deletions

View File

@ -463,10 +463,12 @@ class AsmFragmentTemplateSynthesisRule {
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx=(.*)", twoC1, "stx $ff\n" , "vb$1aa=$2", "ldx $ff\nsta {c1},x", mapC));
// Rewrite (Z1),a to save A to $FF and reload it into YY
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuaa=(.*)", twoZ1, "sta $ff\n" , "vb$1aa=$2", "ldy $ff\nsta ({z1}),y", mapZ));
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuaa=(.*)", twoZ1, "sta $ff" , "vb$1aa=$2", "ldy $ff\nsta ({z1}),y", mapZ));
// Rewrite (Z1),x to save A to $FF and reload it into YY
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuxx=(.*)", twoZ1, "stx $ff\n" , "vb$1aa=$2", "ldy $ff\nsta ({z1}),y", mapZ));
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuxx=(.*)", twoZ1, "stx $ff" , "vb$1aa=$2", "ldy $ff\nsta ({z1}),y", mapZ));
// Rewrite (Z1),a to use TAY prefix
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuaa=(.*)", twoZ1+"|"+rvalYy, "tay" , "vb$1aa=$2", "sta ({z1}),y", mapZ, "yy"));
// OLD STYLE REWRITES - written when only one rule could be taken

File diff suppressed because it is too large Load Diff

View File

@ -564,7 +564,6 @@ pbuz1_derefidx_vbuaa=vbuxx < pbuz1_derefidx_vbuyy=vbuxx < pbuz1_derefidx_vbuyy=v
sta ({z1}),y
pbuz1_derefidx_vbuaa=vbuyy < vbuaa=vbuyy - clobber:A Y cycles:14.0
sta $ff
tya
ldy $ff
sta ({z1}),y
@ -576,17 +575,15 @@ pbuz1_derefidx_vbuaa=vbuz2 < pbuz1_derefidx_vbuyy=vbuz2 < pbuz1_derefidx_vbuyy=v
tay
lda {z2}
sta ({z1}),y
pbuz1_derefidx_vbuaa=_deref_pbuz1 < pbuz1_derefidx_vbuxx=_deref_pbuz1 < pbuz1_derefidx_vbuxx=vbuaa < vbuaa=vbuaa - clobber:A X Y cycles:21.5
pbuz1_derefidx_vbuaa=_deref_pbuz1 < pbuz1_derefidx_vbuxx=_deref_pbuz1 < pbuz1_derefidx_vbuxx=vbuaa - clobber:A X Y cycles:21.5
tax
ldy #0
lda ({z1}),y
stx $ff
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuaa=_deref_pbuz2 < vbuaa=_deref_pbuz1 - clobber:A Y cycles:19.5
sta $ff
ldy #0
lda ({z2}),y
ldy $ff
@ -603,14 +600,12 @@ CANNOT SYNTHESIZE pbuz1_derefidx_vbuaa=pbuz1_derefidx_vbuz2
CANNOT SYNTHESIZE pbuz1_derefidx_vbuaa=pbuz1_derefidx_vbuc1
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuaa < vbuaa=pbuz1_derefidx_vbuaa < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:19.5
sta $ff
tay
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuaa < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:21.5
sta $ff
txa
tay
lda ({z2}),y
@ -618,35 +613,30 @@ pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuxx < vbuaa=p
sta ({z1}),y
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:17.5
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuz1 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:20.5
ldy {z1}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuz2 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:20.5
ldy {z2}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuz3 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:20.5
ldy {z3}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:19.5
ldy #{c1}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -660,7 +650,6 @@ pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuxx < pbuz1_derefidx_vbuyy=pbuc1_derefidx_
sta ({z1}),y
pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuyy < vbuaa=pbuc1_derefidx_vbuyy - clobber:A Y cycles:16.5
sta $ff
lda {c1},y
ldy $ff
sta ({z1}),y
@ -672,7 +661,6 @@ pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuz1 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_
pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuz1 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuyy < vbuaa=pbuc1_derefidx_vbuyy - clobber:A Y cycles:19.5
ldy {z1}
sta $ff
lda {c1},y
ldy $ff
sta ({z1}),y
@ -684,7 +672,6 @@ pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuz2 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_
pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuz2 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuyy < vbuaa=pbuc1_derefidx_vbuyy - clobber:A Y cycles:19.5
ldy {z2}
sta $ff
lda {c1},y
ldy $ff
sta ({z1}),y
@ -694,9 +681,8 @@ pbuz1_derefidx_vbuaa=vbuc1 < pbuz1_derefidx_vbuyy=vbuc1 < pbuz1_derefidx_vbuyy=v
tay
lda #{c1}
sta ({z1}),y
pbuz1_derefidx_vbuxx=vbuaa < vbuaa=vbuaa - clobber:Y cycles:12.0
*pbuz1_derefidx_vbuxx=vbuaa - clobber:Y cycles:12.0
stx $ff
ldy $ff
sta ({z1}),y
*pbuz1_derefidx_vbuxx=vbuxx - clobber:A Y cycles:10.0
@ -705,7 +691,6 @@ pbuz1_derefidx_vbuxx=vbuaa < vbuaa=vbuaa - clobber:Y cycles:12.0
sta ({z1}),y
pbuz1_derefidx_vbuxx=vbuyy < vbuaa=vbuyy - clobber:A Y cycles:14.0
stx $ff
tya
ldy $ff
sta ({z1}),y
@ -719,16 +704,14 @@ pbuz1_derefidx_vbuxx=vbuz1 < pbuz1_derefidx_vbuaa=vbuz1 < pbuz1_derefidx_vbuyy=v
tay
lda {z2}
sta ({z1}),y
pbuz1_derefidx_vbuxx=_deref_pbuz1 < pbuz1_derefidx_vbuxx=vbuaa < vbuaa=vbuaa - clobber:A Y cycles:19.5
pbuz1_derefidx_vbuxx=_deref_pbuz1 < pbuz1_derefidx_vbuxx=vbuaa - clobber:A Y cycles:19.5
ldy #0
lda ({z1}),y
stx $ff
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuxx=_deref_pbuz2 < vbuaa=_deref_pbuz1 - clobber:A Y cycles:19.5
stx $ff
ldy #0
lda ({z2}),y
ldy $ff
@ -746,14 +729,12 @@ CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=pbuz1_derefidx_vbuz2
CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=pbuz1_derefidx_vbuc1
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuaa < vbuaa=pbuz1_derefidx_vbuaa < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:19.5
stx $ff
tay
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuaa < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:21.5
stx $ff
txa
tay
lda ({z2}),y
@ -761,41 +742,35 @@ pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuxx < vbuaa=p
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:17.5
stx $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuz1 < pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:20.5
ldy {z1}
stx $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuz2 < pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:20.5
ldy {z2}
stx $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuz3 < pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:20.5
ldy {z3}
stx $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuc1 < pbuz1_derefidx_vbuxx=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:19.5
ldy #{c1}
stx $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuaa < vbuaa=pbuc1_derefidx_vbuaa < vbuaa=pbuc1_derefidx_vbuyy - clobber:A Y cycles:18.5
stx $ff
tay
lda {c1},y
ldy $ff
@ -805,10 +780,9 @@ pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuxx < pbuz1_derefidx_vbuaa=pbuc1_derefidx_
tay
lda {c1},y
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuyy < pbuz1_derefidx_vbuxx=vbuaa < vbuaa=vbuaa - clobber:A Y cycles:16.5
pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuyy < pbuz1_derefidx_vbuxx=vbuaa - clobber:A Y cycles:16.5
lda {c1},y
stx $ff
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuz1 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuz1 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuxx < pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx < pbuz1_derefidx_vbuyy=vbuaa - clobber:A X Y cycles:17.5
@ -817,11 +791,10 @@ pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuz1 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_
tay
lda {c1},x
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuz1 < pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuyy < pbuz1_derefidx_vbuxx=vbuaa < vbuaa=vbuaa - clobber:A Y cycles:19.5
pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuz1 < pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuyy < pbuz1_derefidx_vbuxx=vbuaa - clobber:A Y cycles:19.5
ldy {z1}
lda {c1},y
stx $ff
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuz2 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuz2 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_vbuxx < pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx < pbuz1_derefidx_vbuyy=vbuaa - clobber:A X Y cycles:17.5
@ -830,11 +803,10 @@ pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuz2 < pbuz1_derefidx_vbuaa=pbuc1_derefidx_
tay
lda {c1},x
sta ({z1}),y
pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuz2 < pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuyy < pbuz1_derefidx_vbuxx=vbuaa < vbuaa=vbuaa - clobber:A Y cycles:19.5
pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuz2 < pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuyy < pbuz1_derefidx_vbuxx=vbuaa - clobber:A Y cycles:19.5
ldy {z2}
lda {c1},y
stx $ff
ldy $ff
sta ({z1}),y
CANNOT SYNTHESIZE pbuz1_derefidx_vbuxx=pbuc1_derefidx_vbuc1
@ -858,13 +830,12 @@ pbuz1_derefidx_vbuyy=vbuz1 < pbuz1_derefidx_vbuyy=vbuaa - clobber:A cycles:9.0
pbuz1_derefidx_vbuyy=vbuz2 < pbuz1_derefidx_vbuyy=vbuaa - clobber:A cycles:9.0
lda {z2}
sta ({z1}),y
pbuz1_derefidx_vbuyy=_deref_pbuz1 < pbuz1_derefidx_vbuaa=_deref_pbuz1 < pbuz1_derefidx_vbuxx=_deref_pbuz1 < pbuz1_derefidx_vbuxx=vbuaa < vbuaa=vbuaa - clobber:A X Y cycles:23.5
pbuz1_derefidx_vbuyy=_deref_pbuz1 < pbuz1_derefidx_vbuaa=_deref_pbuz1 < pbuz1_derefidx_vbuxx=_deref_pbuz1 < pbuz1_derefidx_vbuxx=vbuaa - clobber:A X Y cycles:23.5
tya
tax
ldy #0
lda ({z1}),y
stx $ff
ldy $ff
sta ({z1}),y
pbuz1_derefidx_vbuyy=_deref_pbuz2 < vbuaa=_deref_pbuz1 - clobber:A Y cycles:19.5
@ -1005,7 +976,6 @@ pbuz1_derefidx_vbuz1=_deref_pbuz1 < pbuz1_derefidx_vbuz1=vbuaa < pbuz1_derefidx_
pbuz1_derefidx_vbuz1=_deref_pbuz2 < pbuz1_derefidx_vbuaa=_deref_pbuz2 < vbuaa=_deref_pbuz1 - clobber:A Y cycles:22.5
lda {z1}
sta $ff
ldy #0
lda ({z2}),y
ldy $ff
@ -1031,7 +1001,6 @@ pbuz1_derefidx_vbuz1=pbuz2_derefidx_vbuaa < pbuz1_derefidx_vbuyy=pbuz2_derefidx_
pbuz1_derefidx_vbuz1=pbuz2_derefidx_vbuxx < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuaa < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:24.5
lda {z1}
sta $ff
txa
tay
lda ({z2}),y
@ -1040,7 +1009,6 @@ pbuz1_derefidx_vbuz1=pbuz2_derefidx_vbuxx < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
pbuz1_derefidx_vbuz1=pbuz2_derefidx_vbuyy < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:20.5
lda {z1}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1048,7 +1016,6 @@ pbuz1_derefidx_vbuz1=pbuz2_derefidx_vbuz1 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
lda {z1}
ldy {z1}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1056,7 +1023,6 @@ pbuz1_derefidx_vbuz1=pbuz2_derefidx_vbuz2 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
lda {z1}
ldy {z2}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1064,7 +1030,6 @@ pbuz1_derefidx_vbuz1=pbuz2_derefidx_vbuz3 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
lda {z1}
ldy {z3}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1072,7 +1037,6 @@ pbuz1_derefidx_vbuz1=pbuz2_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
lda {z1}
ldy #{c1}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1136,7 +1100,6 @@ pbuz1_derefidx_vbuz2=_deref_pbuz1 < pbuz1_derefidx_vbuz2=vbuaa - clobber:A Y cy
pbuz1_derefidx_vbuz2=_deref_pbuz2 < pbuz1_derefidx_vbuaa=_deref_pbuz2 < vbuaa=_deref_pbuz1 - clobber:A Y cycles:22.5
lda {z2}
sta $ff
ldy #0
lda ({z2}),y
ldy $ff
@ -1168,7 +1131,6 @@ pbuz1_derefidx_vbuz2=pbuz2_derefidx_vbuaa < pbuz1_derefidx_vbuyy=pbuz2_derefidx_
pbuz1_derefidx_vbuz2=pbuz2_derefidx_vbuxx < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuxx < vbuaa=pbuz1_derefidx_vbuaa < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:24.5
lda {z2}
sta $ff
txa
tay
lda ({z2}),y
@ -1177,7 +1139,6 @@ pbuz1_derefidx_vbuz2=pbuz2_derefidx_vbuxx < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
pbuz1_derefidx_vbuz2=pbuz2_derefidx_vbuyy < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuyy - clobber:A Y cycles:20.5
lda {z2}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1185,7 +1146,6 @@ pbuz1_derefidx_vbuz2=pbuz2_derefidx_vbuz1 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
lda {z2}
ldy {z1}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1193,7 +1153,6 @@ pbuz1_derefidx_vbuz2=pbuz2_derefidx_vbuz2 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
lda {z2}
ldy {z2}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1201,7 +1160,6 @@ pbuz1_derefidx_vbuz2=pbuz2_derefidx_vbuz3 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
lda {z2}
ldy {z3}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1209,7 +1167,6 @@ pbuz1_derefidx_vbuz2=pbuz2_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
lda {z2}
ldy #{c1}
sta $ff
lda ({z2}),y
ldy $ff
sta ({z1}),y
@ -1247,7 +1204,6 @@ pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz4 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_
lda {z2}
ldy {z4}
sta $ff
lda ({z3}),y
ldy $ff
sta ({z1}),y

File diff suppressed because it is too large Load Diff