mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-12-29 08:31:03 +00:00
Updated test data.
This commit is contained in:
parent
2479fc08db
commit
3be0b5d2d4
@ -22,8 +22,8 @@ Eliminating unused variable with no statement print::$5
|
||||
Eliminating unused variable with no statement print::$8
|
||||
Eliminating unused variable with no statement print::$9
|
||||
Converting PHI-variable modified inside __stackcall procedure queen() to load/store count
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call queen 1
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call queen queen::$4
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call queen 1
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call queen queen::$4
|
||||
Calling convention STACK_CALL replacing param(queen::row) with stackidx(byte,queen::OFFSET_STACK_ROW)
|
||||
Calling convention STACK_CALL adding stack push stackpush(byte) = 1
|
||||
Calling convention STACK_CALL adding stack push stackpush(byte) = queen::$4
|
||||
|
@ -1,4 +1,4 @@
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for main::$0 = call plus '0' 7
|
||||
Calling convention __stackcall adding prepare/execute/finalize for main::$0 = call plus '0' 7
|
||||
Calling convention STACK_CALL replacing param(plus::a) with stackidx(byte,plus::OFFSET_STACK_A)
|
||||
Calling convention STACK_CALL replacing param(plus::b) with stackidx(byte,plus::OFFSET_STACK_B)
|
||||
Calling convention STACK_CALL adding stack return stackidx(byte,plus::OFFSET_STACK_RETURN) = plus::return
|
||||
|
@ -1,4 +1,4 @@
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for main::$0 = call plus '0' 7
|
||||
Calling convention __stackcall adding prepare/execute/finalize for main::$0 = call plus '0' 7
|
||||
Calling convention STACK_CALL replacing param(plus::a) with stackidx(byte,plus::OFFSET_STACK_A)
|
||||
Calling convention STACK_CALL replacing param(plus::b) with stackidx(byte,plus::OFFSET_STACK_B)
|
||||
Calling convention STACK_CALL adding stack return stackidx(byte,plus::OFFSET_STACK_RETURN) = plus::return
|
||||
|
@ -1,9 +1,9 @@
|
||||
Inlined call call __init
|
||||
Eliminating unused variable with no statement main::$1
|
||||
Converting PHI-variable modified inside __stackcall procedure main() to load/store idx
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for { main::$1_x, main::$1_y } = call get main::i
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call print main::p_x main::p_y
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call main
|
||||
Calling convention __stackcall adding prepare/execute/finalize for { main::$1_x, main::$1_y } = call get main::i
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call print main::p_x main::p_y
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call main
|
||||
Calling convention STACK_CALL replacing param(get::i) with stackidx(byte,get::OFFSET_STACK_I)
|
||||
Calling convention STACK_CALL replacing param(print::p_x) with stackidx(byte,print::OFFSET_STACK_P_X)
|
||||
Calling convention STACK_CALL replacing param(print::p_y) with stackidx(byte,print::OFFSET_STACK_P_Y)
|
||||
|
@ -3,9 +3,9 @@ Eliminating unused variable with no statement main::$1
|
||||
Eliminating unused variable with no statement main::$1_p1
|
||||
Eliminating unused variable with no statement main::$1_p2
|
||||
Converting PHI-variable modified inside __stackcall procedure main() to load/store idx
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for { { main::$1_p1_x, main::$1_p1_y }, { main::$1_p2_x, main::$1_p2_y } } = call get main::i
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call print main::v_p1_x main::v_p1_y main::v_p2_x main::v_p2_y
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call main
|
||||
Calling convention __stackcall adding prepare/execute/finalize for { { main::$1_p1_x, main::$1_p1_y }, { main::$1_p2_x, main::$1_p2_y } } = call get main::i
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call print main::v_p1_x main::v_p1_y main::v_p2_x main::v_p2_y
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call main
|
||||
Calling convention STACK_CALL replacing param(get::i) with stackidx(byte,get::OFFSET_STACK_I)
|
||||
Calling convention STACK_CALL replacing param(print::v_p1_x) with stackidx(byte,print::OFFSET_STACK_V_P1_X)
|
||||
Calling convention STACK_CALL replacing param(print::v_p1_y) with stackidx(byte,print::OFFSET_STACK_V_P1_Y)
|
||||
|
@ -1,8 +1,8 @@
|
||||
Inlined call call __init
|
||||
Converting PHI-variable modified inside __stackcall procedure main() to load/store idx
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call print main::str 1
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call print main::str1 2
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call main
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call print main::str 1
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call print main::str1 2
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call main
|
||||
Calling convention STACK_CALL replacing param(print::str) with stackidx(byte*,print::OFFSET_STACK_STR)
|
||||
Calling convention STACK_CALL replacing param(print::spacing) with stackidx(byte,print::OFFSET_STACK_SPACING)
|
||||
Calling convention STACK_CALL adding stack push stackpush(byte*) = main::str
|
||||
|
@ -1,5 +1,5 @@
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for main::$0 = call pow2 6
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for pow2::$2 = call pow2 pow2::$1
|
||||
Calling convention __stackcall adding prepare/execute/finalize for main::$0 = call pow2 6
|
||||
Calling convention __stackcall adding prepare/execute/finalize for pow2::$2 = call pow2 pow2::$1
|
||||
Calling convention STACK_CALL replacing param(pow2::n) with stackidx(byte,pow2::OFFSET_STACK_N)
|
||||
Calling convention STACK_CALL adding stack return stackidx(byte,pow2::OFFSET_STACK_RETURN) = pow2::return
|
||||
Calling convention STACK_CALL adding stack pull main::$0 = stackpull(byte)
|
||||
|
@ -1,4 +1,4 @@
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for main::$0 = call plus $1234 $2345
|
||||
Calling convention __stackcall adding prepare/execute/finalize for main::$0 = call plus $1234 $2345
|
||||
Calling convention STACK_CALL replacing param(plus::a) with stackidx(word,plus::OFFSET_STACK_A)
|
||||
Calling convention STACK_CALL replacing param(plus::b) with stackidx(word,plus::OFFSET_STACK_B)
|
||||
Calling convention STACK_CALL adding stack return stackidx(word,plus::OFFSET_STACK_RETURN) = plus::return
|
||||
|
@ -1,4 +1,4 @@
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for main::$0 = call plus '0' 7
|
||||
Calling convention __stackcall adding prepare/execute/finalize for main::$0 = call plus '0' 7
|
||||
Calling convention STACK_CALL replacing param(plus::a) with stackidx(word,plus::OFFSET_STACK_A)
|
||||
Calling convention STACK_CALL replacing param(plus::b) with stackidx(word,plus::OFFSET_STACK_B)
|
||||
Calling convention STACK_CALL adding stack return stackidx(word,plus::OFFSET_STACK_RETURN) = plus::return
|
||||
|
@ -1,6 +1,6 @@
|
||||
Inlined call call __init
|
||||
Converting PHI-variable modified inside __stackcall procedure plus() to load/store i
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for main::$1 = call plus '0' main::v
|
||||
Calling convention __stackcall adding prepare/execute/finalize for main::$1 = call plus '0' main::v
|
||||
Calling convention STACK_CALL replacing param(plus::a) with stackidx(byte,plus::OFFSET_STACK_A)
|
||||
Calling convention STACK_CALL replacing param(plus::b) with stackidx(byte,plus::OFFSET_STACK_B)
|
||||
Calling convention STACK_CALL adding stack return stackidx(byte,plus::OFFSET_STACK_RETURN) = plus::return
|
||||
|
@ -1,7 +1,7 @@
|
||||
Inlined call call __init
|
||||
Converting PHI-variable modified inside __stackcall procedure next() to load/store current
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for main::$0 = call next
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for main::$1 = call next
|
||||
Calling convention __stackcall adding prepare/execute/finalize for main::$0 = call next
|
||||
Calling convention __stackcall adding prepare/execute/finalize for main::$1 = call next
|
||||
Calling convention STACK_CALL adding stack return stackidx(signed word,next::OFFSET_STACK_RETURN) = next::return
|
||||
Calling convention STACK_CALL adding stack pull main::$0 = stackpull(signed word)
|
||||
Calling convention STACK_CALL adding stack pull main::$1 = stackpull(signed word)
|
||||
|
@ -1,5 +1,5 @@
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call printline
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call main
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call printline
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call main
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
Inlined call call __init
|
||||
Converting PHI-variable modified inside __stackcall procedure main() to load/store val
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call printline
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call main
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call printline
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call main
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
Inlined call call __init
|
||||
Converting PHI-variable modified inside __stackcall procedure main() to load/store val
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call pval
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call printother
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call ival
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call printval
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call incval
|
||||
Calling convention STACK_CALL adding prepare/execute/finalize for call main
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call pval
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call printother
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call ival
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call printval
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call incval
|
||||
Calling convention __stackcall adding prepare/execute/finalize for call main
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
|
||||
|
26
src/test/ref/varcall-1.asm
Normal file
26
src/test/ref/varcall-1.asm
Normal file
@ -0,0 +1,26 @@
|
||||
// Test __varcall calling convention
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
.label BGCOL = $d021
|
||||
// setbg(byte zp(2) col)
|
||||
setbg: {
|
||||
.label col = 2
|
||||
// *BGCOL = col
|
||||
lda.z col
|
||||
sta BGCOL
|
||||
// }
|
||||
rts
|
||||
}
|
||||
main: {
|
||||
// setbg(0)
|
||||
lda #0
|
||||
sta.z setbg.col
|
||||
jsr setbg
|
||||
// setbg(0x0b)
|
||||
lda #$b
|
||||
sta.z setbg.col
|
||||
jsr setbg
|
||||
// }
|
||||
rts
|
||||
}
|
19
src/test/ref/varcall-1.cfg
Normal file
19
src/test/ref/varcall-1.cfg
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
__varcall void setbg(byte setbg::col)
|
||||
setbg: scope:[setbg] from
|
||||
[0] *BGCOL = setbg::col
|
||||
to:setbg::@return
|
||||
setbg::@return: scope:[setbg] from setbg
|
||||
[1] return
|
||||
to:@return
|
||||
|
||||
void main()
|
||||
main: scope:[main] from
|
||||
[2] setbg::col = 0
|
||||
[3] callexecute setbg
|
||||
[4] setbg::col = $b
|
||||
[5] callexecute setbg
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[6] return
|
||||
to:@return
|
219
src/test/ref/varcall-1.log
Normal file
219
src/test/ref/varcall-1.log
Normal file
@ -0,0 +1,219 @@
|
||||
Calling convention __varcall adding prepare/execute/finalize for call setbg 0
|
||||
Calling convention __varcall adding prepare/execute/finalize for call setbg $b
|
||||
Converting parameter in __varcall procedure to load/store setbg::col
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
|
||||
void main()
|
||||
main: scope:[main] from __start
|
||||
setbg::col = 0
|
||||
callexecute setbg
|
||||
setbg::col = $b
|
||||
callexecute setbg
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
|
||||
__varcall void setbg(byte setbg::col)
|
||||
setbg: scope:[setbg] from
|
||||
*BGCOL = setbg::col
|
||||
to:setbg::@return
|
||||
setbg::@return: scope:[setbg] from setbg
|
||||
return
|
||||
to:@return
|
||||
|
||||
void __start()
|
||||
__start: scope:[__start] from
|
||||
call main
|
||||
to:__start::@1
|
||||
__start::@1: scope:[__start] from __start
|
||||
to:__start::@return
|
||||
__start::@return: scope:[__start] from __start::@1
|
||||
return
|
||||
to:@return
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
const nomodify byte* BGCOL = (byte*)$d021
|
||||
void __start()
|
||||
void main()
|
||||
__varcall void setbg(byte setbg::col)
|
||||
byte setbg::col loadstore
|
||||
|
||||
Adding number conversion cast (unumber) 0 in setbg::col = 0
|
||||
Adding number conversion cast (unumber) $b in setbg::col = $b
|
||||
Successful SSA optimization PassNAddNumberTypeConversions
|
||||
Inlining cast setbg::col = (unumber)0
|
||||
Inlining cast setbg::col = (unumber)$b
|
||||
Successful SSA optimization Pass2InlineCast
|
||||
Simplifying constant pointer cast (byte*) 53281
|
||||
Simplifying constant integer cast 0
|
||||
Simplifying constant integer cast $b
|
||||
Successful SSA optimization PassNCastSimplification
|
||||
Finalized unsigned number type 0
|
||||
Finalized unsigned number type $b
|
||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||
Removing unused procedure __start
|
||||
Removing unused procedure block __start
|
||||
Removing unused procedure block __start::@1
|
||||
Removing unused procedure block __start::@return
|
||||
Successful SSA optimization PassNEliminateEmptyStart
|
||||
CALL GRAPH
|
||||
Calls in [main] to setbg:3 setbg:5
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
|
||||
__varcall void setbg(byte setbg::col)
|
||||
setbg: scope:[setbg] from
|
||||
[0] *BGCOL = setbg::col
|
||||
to:setbg::@return
|
||||
setbg::@return: scope:[setbg] from setbg
|
||||
[1] return
|
||||
to:@return
|
||||
|
||||
void main()
|
||||
main: scope:[main] from
|
||||
[2] setbg::col = 0
|
||||
[3] callexecute setbg
|
||||
[4] setbg::col = $b
|
||||
[5] callexecute setbg
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[6] return
|
||||
to:@return
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
void main()
|
||||
__varcall void setbg(byte setbg::col)
|
||||
byte setbg::col loadstore 7.5
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable setbg::col to live range equivalence class [ setbg::col ]
|
||||
Complete equivalence classes
|
||||
[ setbg::col ]
|
||||
Allocated zp[1]:2 [ setbg::col ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [0] *BGCOL = setbg::col [ ] ( setbg:3 [ ] { } setbg:5 [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] setbg::col = 0 [ setbg::col ] ( [ setbg::col ] { } ) always clobbers reg byte a
|
||||
Statement [4] setbg::col = $b [ setbg::col ] ( [ setbg::col ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ setbg::col ] : zp[1]:2 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [setbg] 7.5: zp[1]:2 [ setbg::col ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [setbg] best 47 combination zp[1]:2 [ setbg::col ]
|
||||
Uplifting [main] best 47 combination
|
||||
Uplifting [] best 47 combination
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ setbg::col ]
|
||||
Uplifting [setbg] best 47 combination zp[1]:2 [ setbg::col ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
// Test __varcall calling convention
|
||||
// Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BGCOL = $d021
|
||||
// setbg
|
||||
// setbg(byte zp(2) col)
|
||||
setbg: {
|
||||
.label col = 2
|
||||
// [0] *BGCOL = setbg::col -- _deref_pbuc1=vbuz1
|
||||
lda.z col
|
||||
sta BGCOL
|
||||
jmp __breturn
|
||||
// setbg::@return
|
||||
__breturn:
|
||||
// [1] return
|
||||
rts
|
||||
}
|
||||
// main
|
||||
main: {
|
||||
// [2] setbg::col = 0 -- vbuz1=vbuc1
|
||||
lda #0
|
||||
sta.z setbg.col
|
||||
// [3] callexecute setbg -- jsr
|
||||
jsr setbg
|
||||
// [4] setbg::col = $b -- vbuz1=vbuc1
|
||||
lda #$b
|
||||
sta.z setbg.col
|
||||
// [5] callexecute setbg -- jsr
|
||||
jsr setbg
|
||||
jmp __breturn
|
||||
// main::@return
|
||||
__breturn:
|
||||
// [6] return
|
||||
rts
|
||||
}
|
||||
// File Data
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp __breturn
|
||||
Removing instruction jmp __breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction __breturn:
|
||||
Removing instruction __breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
const nomodify byte* BGCOL = (byte*) 53281
|
||||
void main()
|
||||
__varcall void setbg(byte setbg::col)
|
||||
byte setbg::col loadstore zp[1]:2 7.5
|
||||
|
||||
zp[1]:2 [ setbg::col ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 41
|
||||
|
||||
// File Comments
|
||||
// Test __varcall calling convention
|
||||
// Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(main)
|
||||
.pc = $80d "Program"
|
||||
// Global Constants & labels
|
||||
.label BGCOL = $d021
|
||||
// setbg
|
||||
// setbg(byte zp(2) col)
|
||||
setbg: {
|
||||
.label col = 2
|
||||
// *BGCOL = col
|
||||
// [0] *BGCOL = setbg::col -- _deref_pbuc1=vbuz1
|
||||
lda.z col
|
||||
sta BGCOL
|
||||
// setbg::@return
|
||||
// }
|
||||
// [1] return
|
||||
rts
|
||||
}
|
||||
// main
|
||||
main: {
|
||||
// setbg(0)
|
||||
// [2] setbg::col = 0 -- vbuz1=vbuc1
|
||||
lda #0
|
||||
sta.z setbg.col
|
||||
// [3] callexecute setbg -- jsr
|
||||
jsr setbg
|
||||
// setbg(0x0b)
|
||||
// [4] setbg::col = $b -- vbuz1=vbuc1
|
||||
lda #$b
|
||||
sta.z setbg.col
|
||||
// [5] callexecute setbg -- jsr
|
||||
jsr setbg
|
||||
// main::@return
|
||||
// }
|
||||
// [6] return
|
||||
rts
|
||||
}
|
||||
// File Data
|
||||
|
6
src/test/ref/varcall-1.sym
Normal file
6
src/test/ref/varcall-1.sym
Normal file
@ -0,0 +1,6 @@
|
||||
const nomodify byte* BGCOL = (byte*) 53281
|
||||
void main()
|
||||
__varcall void setbg(byte setbg::col)
|
||||
byte setbg::col loadstore zp[1]:2 7.5
|
||||
|
||||
zp[1]:2 [ setbg::col ]
|
Loading…
Reference in New Issue
Block a user