mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-06-29 09:29:31 +00:00
1807 lines
76 KiB
Plaintext
1807 lines
76 KiB
Plaintext
Resolving typeid() testUnsigned::$1 = typeid testUnsigned::ubc1
|
|
Resolving typeid() testUnsigned::$2 = typeid testUnsigned::ubv1
|
|
Resolving typeid() testUnsigned::$13 = typeid testUnsigned::$12
|
|
Resolving typeid() testUnsigned::$15 = typeid testUnsigned::$14
|
|
Resolving typeid() testUnsigned::$17 = typeid testUnsigned::$16
|
|
Resolving typeid() testSigned::$1 = typeid testSigned::sbc1
|
|
Resolving typeid() testSigned::$2 = typeid testSigned::sbv1
|
|
Resolving typeid() testSigned::$13 = typeid testSigned::$12
|
|
Resolving typeid() testSigned::$15 = typeid testSigned::$14
|
|
Resolving typeid() testSigned::$17 = typeid testSigned::$16
|
|
Inlined call call __init
|
|
|
|
CONTROL FLOW GRAPH SSA
|
|
|
|
void main()
|
|
main: scope:[main] from __start::@1
|
|
idx#0 = 0
|
|
call testUnsigned
|
|
to:main::@1
|
|
main::@1: scope:[main] from main
|
|
idx#60 = phi( main/idx#20 )
|
|
idx#1 = idx#60
|
|
idx#2 = $28
|
|
call testUnsignedVals
|
|
to:main::@2
|
|
main::@2: scope:[main] from main::@1
|
|
idx#61 = phi( main::@1/idx#32 )
|
|
idx#3 = idx#61
|
|
idx#4 = $28*2
|
|
call testSigned
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@2
|
|
idx#62 = phi( main::@2/idx#44 )
|
|
idx#5 = idx#62
|
|
idx#6 = $28*3
|
|
call testSignedVals
|
|
to:main::@4
|
|
main::@4: scope:[main] from main::@3
|
|
idx#63 = phi( main::@3/idx#56 )
|
|
idx#7 = idx#63
|
|
to:main::@return
|
|
main::@return: scope:[main] from main::@4
|
|
idx#64 = phi( main::@4/idx#7 )
|
|
idx#8 = idx#64
|
|
return
|
|
to:@return
|
|
|
|
void testUnsigned()
|
|
testUnsigned: scope:[testUnsigned] from main
|
|
idx#65 = phi( main/idx#0 )
|
|
testUnsigned::ubv1 = $fa
|
|
testUnsigned::$0 = typeid $fa
|
|
SCREEN[idx#65] = testUnsigned::$0
|
|
idx#9 = ++ idx#65
|
|
testUnsigned::$1 = TYPEID_BYTE
|
|
SCREEN[idx#9] = testUnsigned::$1
|
|
idx#10 = ++ idx#9
|
|
testUnsigned::$2 = TYPEID_BYTE
|
|
SCREEN[idx#10] = testUnsigned::$2
|
|
idx#11 = ++ idx#10
|
|
testUnsigned::$3 = typeid $78+$82
|
|
SCREEN[idx#11] = testUnsigned::$3
|
|
idx#12 = ++ idx#11
|
|
testUnsigned::$4 = testUnsigned::ubc1 + $fa
|
|
testUnsigned::$5 = typeid testUnsigned::$4
|
|
SCREEN[idx#12] = testUnsigned::$5
|
|
idx#13 = ++ idx#12
|
|
testUnsigned::$6 = $fa + testUnsigned::ubc1
|
|
testUnsigned::$7 = typeid testUnsigned::$6
|
|
SCREEN[idx#13] = testUnsigned::$7
|
|
idx#14 = ++ idx#13
|
|
testUnsigned::$8 = testUnsigned::ubv1 + $fa
|
|
testUnsigned::$9 = typeid testUnsigned::$8
|
|
SCREEN[idx#14] = testUnsigned::$9
|
|
idx#15 = ++ idx#14
|
|
testUnsigned::$10 = $fa + testUnsigned::ubv1
|
|
testUnsigned::$11 = typeid testUnsigned::$10
|
|
SCREEN[idx#15] = testUnsigned::$11
|
|
idx#16 = ++ idx#15
|
|
testUnsigned::$13 = TYPEID_BYTE
|
|
SCREEN[idx#16] = testUnsigned::$13
|
|
idx#17 = ++ idx#16
|
|
testUnsigned::$15 = TYPEID_BYTE
|
|
SCREEN[idx#17] = testUnsigned::$15
|
|
idx#18 = ++ idx#17
|
|
testUnsigned::$17 = TYPEID_BYTE
|
|
SCREEN[idx#18] = testUnsigned::$17
|
|
idx#19 = ++ idx#18
|
|
to:testUnsigned::@return
|
|
testUnsigned::@return: scope:[testUnsigned] from testUnsigned
|
|
idx#66 = phi( testUnsigned/idx#19 )
|
|
idx#20 = idx#66
|
|
return
|
|
to:@return
|
|
|
|
void testUnsignedVals()
|
|
testUnsignedVals: scope:[testUnsignedVals] from main::@1
|
|
idx#67 = phi( main::@1/idx#2 )
|
|
testUnsignedVals::ubv1 = $fa
|
|
SCREEN[idx#67] = $fa
|
|
idx#21 = ++ idx#67
|
|
SCREEN[idx#21] = testUnsignedVals::ubc1
|
|
idx#22 = ++ idx#21
|
|
SCREEN[idx#22] = testUnsignedVals::ubv1
|
|
idx#23 = ++ idx#22
|
|
SCREEN[idx#23] = $78+$82
|
|
idx#24 = ++ idx#23
|
|
testUnsignedVals::$0 = testUnsignedVals::ubc1 + $fa
|
|
SCREEN[idx#24] = testUnsignedVals::$0
|
|
idx#25 = ++ idx#24
|
|
testUnsignedVals::$1 = $fa + testUnsignedVals::ubc1
|
|
SCREEN[idx#25] = testUnsignedVals::$1
|
|
idx#26 = ++ idx#25
|
|
testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa
|
|
SCREEN[idx#26] = testUnsignedVals::$2
|
|
idx#27 = ++ idx#26
|
|
testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1
|
|
SCREEN[idx#27] = testUnsignedVals::$3
|
|
idx#28 = ++ idx#27
|
|
testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1
|
|
SCREEN[idx#28] = testUnsignedVals::$4
|
|
idx#29 = ++ idx#28
|
|
testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1
|
|
SCREEN[idx#29] = testUnsignedVals::$5
|
|
idx#30 = ++ idx#29
|
|
testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1
|
|
SCREEN[idx#30] = testUnsignedVals::$6
|
|
idx#31 = ++ idx#30
|
|
to:testUnsignedVals::@return
|
|
testUnsignedVals::@return: scope:[testUnsignedVals] from testUnsignedVals
|
|
idx#68 = phi( testUnsignedVals/idx#31 )
|
|
idx#32 = idx#68
|
|
return
|
|
to:@return
|
|
|
|
void testSigned()
|
|
testSigned: scope:[testSigned] from main::@2
|
|
idx#69 = phi( main::@2/idx#4 )
|
|
testSigned::sbv1 = -$78
|
|
testSigned::$0 = typeid -$78
|
|
SCREEN[idx#69] = testSigned::$0
|
|
idx#33 = ++ idx#69
|
|
testSigned::$1 = TYPEID_SIGNED_BYTE
|
|
SCREEN[idx#33] = testSigned::$1
|
|
idx#34 = ++ idx#33
|
|
testSigned::$2 = TYPEID_SIGNED_BYTE
|
|
SCREEN[idx#34] = testSigned::$2
|
|
idx#35 = ++ idx#34
|
|
testSigned::$3 = typeid -$78+-$82
|
|
SCREEN[idx#35] = testSigned::$3
|
|
idx#36 = ++ idx#35
|
|
testSigned::$4 = testSigned::sbc1 + -$78
|
|
testSigned::$5 = typeid testSigned::$4
|
|
SCREEN[idx#36] = testSigned::$5
|
|
idx#37 = ++ idx#36
|
|
testSigned::$6 = -$78 + testSigned::sbc1
|
|
testSigned::$7 = typeid testSigned::$6
|
|
SCREEN[idx#37] = testSigned::$7
|
|
idx#38 = ++ idx#37
|
|
testSigned::$8 = testSigned::sbv1 + -$78
|
|
testSigned::$9 = typeid testSigned::$8
|
|
SCREEN[idx#38] = testSigned::$9
|
|
idx#39 = ++ idx#38
|
|
testSigned::$10 = -$78 + testSigned::sbv1
|
|
testSigned::$11 = typeid testSigned::$10
|
|
SCREEN[idx#39] = testSigned::$11
|
|
idx#40 = ++ idx#39
|
|
testSigned::$13 = TYPEID_SIGNED_BYTE
|
|
SCREEN[idx#40] = testSigned::$13
|
|
idx#41 = ++ idx#40
|
|
testSigned::$15 = TYPEID_SIGNED_BYTE
|
|
SCREEN[idx#41] = testSigned::$15
|
|
idx#42 = ++ idx#41
|
|
testSigned::$17 = TYPEID_SIGNED_BYTE
|
|
SCREEN[idx#42] = testSigned::$17
|
|
idx#43 = ++ idx#42
|
|
to:testSigned::@return
|
|
testSigned::@return: scope:[testSigned] from testSigned
|
|
idx#70 = phi( testSigned/idx#43 )
|
|
idx#44 = idx#70
|
|
return
|
|
to:@return
|
|
|
|
void testSignedVals()
|
|
testSignedVals: scope:[testSignedVals] from main::@3
|
|
idx#71 = phi( main::@3/idx#6 )
|
|
testSignedVals::sbv1 = -$78
|
|
SSCREEN[idx#71] = -$78
|
|
idx#45 = ++ idx#71
|
|
SSCREEN[idx#45] = testSignedVals::sbc1
|
|
idx#46 = ++ idx#45
|
|
SSCREEN[idx#46] = testSignedVals::sbv1
|
|
idx#47 = ++ idx#46
|
|
SSCREEN[idx#47] = -$46+-$32
|
|
idx#48 = ++ idx#47
|
|
testSignedVals::$0 = testSignedVals::sbc1 + -$78
|
|
SSCREEN[idx#48] = testSignedVals::$0
|
|
idx#49 = ++ idx#48
|
|
testSignedVals::$1 = -$78 + testSignedVals::sbc1
|
|
SSCREEN[idx#49] = testSignedVals::$1
|
|
idx#50 = ++ idx#49
|
|
testSignedVals::$2 = testSignedVals::sbv1 + -$78
|
|
SSCREEN[idx#50] = testSignedVals::$2
|
|
idx#51 = ++ idx#50
|
|
testSignedVals::$3 = -$78 + testSignedVals::sbv1
|
|
SSCREEN[idx#51] = testSignedVals::$3
|
|
idx#52 = ++ idx#51
|
|
testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1
|
|
SSCREEN[idx#52] = testSignedVals::$4
|
|
idx#53 = ++ idx#52
|
|
testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1
|
|
SSCREEN[idx#53] = testSignedVals::$5
|
|
idx#54 = ++ idx#53
|
|
testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1
|
|
SSCREEN[idx#54] = testSignedVals::$6
|
|
idx#55 = ++ idx#54
|
|
to:testSignedVals::@return
|
|
testSignedVals::@return: scope:[testSignedVals] from testSignedVals
|
|
idx#72 = phi( testSignedVals/idx#55 )
|
|
idx#56 = idx#72
|
|
return
|
|
to:@return
|
|
|
|
void __start()
|
|
__start: scope:[__start] from
|
|
to:__start::__init1
|
|
__start::__init1: scope:[__start] from __start
|
|
idx#57 = 0
|
|
to:__start::@1
|
|
__start::@1: scope:[__start] from __start::__init1
|
|
idx#75 = phi( __start::__init1/idx#57 )
|
|
call main
|
|
to:__start::@2
|
|
__start::@2: scope:[__start] from __start::@1
|
|
idx#73 = phi( __start::@1/idx#8 )
|
|
idx#58 = idx#73
|
|
to:__start::@return
|
|
__start::@return: scope:[__start] from __start::@2
|
|
idx#74 = phi( __start::@2/idx#58 )
|
|
idx#59 = idx#74
|
|
return
|
|
to:@return
|
|
|
|
SYMBOL TABLE SSA
|
|
constant byte* const SCREEN = (byte*)$400
|
|
constant signed byte* const SSCREEN = (signed byte*)$400
|
|
constant byte TYPEID_BYTE = 1
|
|
constant byte TYPEID_SIGNED_BYTE = 2
|
|
void __start()
|
|
byte idx
|
|
byte idx#0
|
|
byte idx#1
|
|
byte idx#10
|
|
byte idx#11
|
|
byte idx#12
|
|
byte idx#13
|
|
byte idx#14
|
|
byte idx#15
|
|
byte idx#16
|
|
byte idx#17
|
|
byte idx#18
|
|
byte idx#19
|
|
byte idx#2
|
|
byte idx#20
|
|
byte idx#21
|
|
byte idx#22
|
|
byte idx#23
|
|
byte idx#24
|
|
byte idx#25
|
|
byte idx#26
|
|
byte idx#27
|
|
byte idx#28
|
|
byte idx#29
|
|
byte idx#3
|
|
byte idx#30
|
|
byte idx#31
|
|
byte idx#32
|
|
byte idx#33
|
|
byte idx#34
|
|
byte idx#35
|
|
byte idx#36
|
|
byte idx#37
|
|
byte idx#38
|
|
byte idx#39
|
|
byte idx#4
|
|
byte idx#40
|
|
byte idx#41
|
|
byte idx#42
|
|
byte idx#43
|
|
byte idx#44
|
|
byte idx#45
|
|
byte idx#46
|
|
byte idx#47
|
|
byte idx#48
|
|
byte idx#49
|
|
byte idx#5
|
|
byte idx#50
|
|
byte idx#51
|
|
byte idx#52
|
|
byte idx#53
|
|
byte idx#54
|
|
byte idx#55
|
|
byte idx#56
|
|
byte idx#57
|
|
byte idx#58
|
|
byte idx#59
|
|
byte idx#6
|
|
byte idx#60
|
|
byte idx#61
|
|
byte idx#62
|
|
byte idx#63
|
|
byte idx#64
|
|
byte idx#65
|
|
byte idx#66
|
|
byte idx#67
|
|
byte idx#68
|
|
byte idx#69
|
|
byte idx#7
|
|
byte idx#70
|
|
byte idx#71
|
|
byte idx#72
|
|
byte idx#73
|
|
byte idx#74
|
|
byte idx#75
|
|
byte idx#8
|
|
byte idx#9
|
|
void main()
|
|
void testSigned()
|
|
byte~ testSigned::$0
|
|
byte~ testSigned::$1
|
|
number~ testSigned::$10
|
|
byte~ testSigned::$11
|
|
byte~ testSigned::$13
|
|
byte~ testSigned::$15
|
|
byte~ testSigned::$17
|
|
byte~ testSigned::$2
|
|
byte~ testSigned::$3
|
|
number~ testSigned::$4
|
|
byte~ testSigned::$5
|
|
number~ testSigned::$6
|
|
byte~ testSigned::$7
|
|
number~ testSigned::$8
|
|
byte~ testSigned::$9
|
|
constant signed byte testSigned::sbc1 = -$78
|
|
volatile signed byte testSigned::sbv1 loadstore
|
|
void testSignedVals()
|
|
number~ testSignedVals::$0
|
|
number~ testSignedVals::$1
|
|
number~ testSignedVals::$2
|
|
number~ testSignedVals::$3
|
|
signed byte~ testSignedVals::$4
|
|
signed byte~ testSignedVals::$5
|
|
signed byte~ testSignedVals::$6
|
|
constant signed byte testSignedVals::sbc1 = -$78
|
|
volatile signed byte testSignedVals::sbv1 loadstore
|
|
void testUnsigned()
|
|
byte~ testUnsigned::$0
|
|
byte~ testUnsigned::$1
|
|
number~ testUnsigned::$10
|
|
byte~ testUnsigned::$11
|
|
byte~ testUnsigned::$13
|
|
byte~ testUnsigned::$15
|
|
byte~ testUnsigned::$17
|
|
byte~ testUnsigned::$2
|
|
byte~ testUnsigned::$3
|
|
number~ testUnsigned::$4
|
|
byte~ testUnsigned::$5
|
|
number~ testUnsigned::$6
|
|
byte~ testUnsigned::$7
|
|
number~ testUnsigned::$8
|
|
byte~ testUnsigned::$9
|
|
constant byte testUnsigned::ubc1 = $fa
|
|
volatile byte testUnsigned::ubv1 loadstore
|
|
void testUnsignedVals()
|
|
number~ testUnsignedVals::$0
|
|
number~ testUnsignedVals::$1
|
|
number~ testUnsignedVals::$2
|
|
number~ testUnsignedVals::$3
|
|
byte~ testUnsignedVals::$4
|
|
byte~ testUnsignedVals::$5
|
|
byte~ testUnsignedVals::$6
|
|
constant byte testUnsignedVals::ubc1 = $fa
|
|
volatile byte testUnsignedVals::ubv1 loadstore
|
|
|
|
Adding number conversion cast (unumber) 0 in idx#0 = 0
|
|
Adding number conversion cast (unumber) $28 in idx#2 = $28
|
|
Adding number conversion cast (unumber) $28*2 in idx#4 = $28*2
|
|
Adding number conversion cast (unumber) $28*3 in idx#6 = $28*3
|
|
Adding number conversion cast (unumber) $fa in testUnsigned::$4 = testUnsigned::ubc1 + $fa
|
|
Adding number conversion cast (unumber) testUnsigned::$4 in testUnsigned::$4 = testUnsigned::ubc1 + (unumber)$fa
|
|
Adding number conversion cast (unumber) $fa in testUnsigned::$6 = $fa + testUnsigned::ubc1
|
|
Adding number conversion cast (unumber) testUnsigned::$6 in testUnsigned::$6 = (unumber)$fa + testUnsigned::ubc1
|
|
Adding number conversion cast (unumber) $fa in testUnsigned::$8 = testUnsigned::ubv1 + $fa
|
|
Adding number conversion cast (unumber) testUnsigned::$8 in testUnsigned::$8 = testUnsigned::ubv1 + (unumber)$fa
|
|
Adding number conversion cast (unumber) $fa in testUnsigned::$10 = $fa + testUnsigned::ubv1
|
|
Adding number conversion cast (unumber) testUnsigned::$10 in testUnsigned::$10 = (unumber)$fa + testUnsigned::ubv1
|
|
Adding number conversion cast (unumber) $fa in SCREEN[idx#67] = $fa
|
|
Adding number conversion cast (unumber) $78+$82 in SCREEN[idx#23] = $78+$82
|
|
Adding number conversion cast (unumber) $fa in testUnsignedVals::$0 = testUnsignedVals::ubc1 + $fa
|
|
Adding number conversion cast (unumber) testUnsignedVals::$0 in testUnsignedVals::$0 = testUnsignedVals::ubc1 + (unumber)$fa
|
|
Adding number conversion cast (unumber) $fa in testUnsignedVals::$1 = $fa + testUnsignedVals::ubc1
|
|
Adding number conversion cast (unumber) testUnsignedVals::$1 in testUnsignedVals::$1 = (unumber)$fa + testUnsignedVals::ubc1
|
|
Adding number conversion cast (unumber) $fa in testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa
|
|
Adding number conversion cast (unumber) testUnsignedVals::$2 in testUnsignedVals::$2 = testUnsignedVals::ubv1 + (unumber)$fa
|
|
Adding number conversion cast (unumber) $fa in testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1
|
|
Adding number conversion cast (unumber) testUnsignedVals::$3 in testUnsignedVals::$3 = (unumber)$fa + testUnsignedVals::ubv1
|
|
Adding number conversion cast (snumber) -$78 in testSigned::$4 = testSigned::sbc1 + -$78
|
|
Adding number conversion cast (snumber) testSigned::$4 in testSigned::$4 = testSigned::sbc1 + (snumber)-$78
|
|
Adding number conversion cast (snumber) -$78 in testSigned::$6 = -$78 + testSigned::sbc1
|
|
Adding number conversion cast (snumber) testSigned::$6 in testSigned::$6 = (snumber)-$78 + testSigned::sbc1
|
|
Adding number conversion cast (snumber) -$78 in testSigned::$8 = testSigned::sbv1 + -$78
|
|
Adding number conversion cast (snumber) testSigned::$8 in testSigned::$8 = testSigned::sbv1 + (snumber)-$78
|
|
Adding number conversion cast (snumber) -$78 in testSigned::$10 = -$78 + testSigned::sbv1
|
|
Adding number conversion cast (snumber) testSigned::$10 in testSigned::$10 = (snumber)-$78 + testSigned::sbv1
|
|
Adding number conversion cast (snumber) -$78 in SSCREEN[idx#71] = -$78
|
|
Adding number conversion cast (snumber) -$46+-$32 in SSCREEN[idx#47] = -$46+-$32
|
|
Adding number conversion cast (snumber) -$78 in testSignedVals::$0 = testSignedVals::sbc1 + -$78
|
|
Adding number conversion cast (snumber) testSignedVals::$0 in testSignedVals::$0 = testSignedVals::sbc1 + (snumber)-$78
|
|
Adding number conversion cast (snumber) -$78 in testSignedVals::$1 = -$78 + testSignedVals::sbc1
|
|
Adding number conversion cast (snumber) testSignedVals::$1 in testSignedVals::$1 = (snumber)-$78 + testSignedVals::sbc1
|
|
Adding number conversion cast (snumber) -$78 in testSignedVals::$2 = testSignedVals::sbv1 + -$78
|
|
Adding number conversion cast (snumber) testSignedVals::$2 in testSignedVals::$2 = testSignedVals::sbv1 + (snumber)-$78
|
|
Adding number conversion cast (snumber) -$78 in testSignedVals::$3 = -$78 + testSignedVals::sbv1
|
|
Adding number conversion cast (snumber) testSignedVals::$3 in testSignedVals::$3 = (snumber)-$78 + testSignedVals::sbv1
|
|
Successful SSA optimization PassNAddNumberTypeConversions
|
|
Inlining cast idx#0 = (unumber)0
|
|
Inlining cast idx#2 = (unumber)$28
|
|
Inlining cast idx#4 = (unumber)$28*2
|
|
Inlining cast idx#6 = (unumber)$28*3
|
|
Inlining cast SCREEN[idx#67] = (unumber)$fa
|
|
Inlining cast SCREEN[idx#23] = (unumber)$78+$82
|
|
Inlining cast SSCREEN[idx#71] = (snumber)-$78
|
|
Inlining cast SSCREEN[idx#47] = (snumber)-$46+-$32
|
|
Successful SSA optimization Pass2InlineCast
|
|
Simplifying constant pointer cast (byte*) 1024
|
|
Simplifying constant pointer cast (signed byte*) 1024
|
|
Simplifying constant integer cast 0
|
|
Simplifying constant integer cast $28
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast $fa
|
|
Simplifying constant integer cast -$78
|
|
Simplifying constant integer cast -$78
|
|
Simplifying constant integer cast -$78
|
|
Simplifying constant integer cast -$78
|
|
Simplifying constant integer cast -$78
|
|
Simplifying constant integer cast -$78
|
|
Simplifying constant integer cast -$78
|
|
Simplifying constant integer cast -$78
|
|
Simplifying constant integer cast -$78
|
|
Successful SSA optimization PassNCastSimplification
|
|
Finalized unsigned number type (byte) 0
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized unsigned number type (byte) $fa
|
|
Finalized signed number type (signed byte) -$78
|
|
Finalized signed number type (signed byte) -$78
|
|
Finalized signed number type (signed byte) -$78
|
|
Finalized signed number type (signed byte) -$78
|
|
Finalized signed number type (signed byte) -$78
|
|
Finalized signed number type (signed byte) -$78
|
|
Finalized signed number type (signed byte) -$78
|
|
Finalized signed number type (signed byte) -$78
|
|
Finalized signed number type (signed byte) -$78
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Inferred type updated to byte in testUnsigned::$4 = testUnsigned::ubc1 + $fa
|
|
Inferred type updated to byte in testUnsigned::$6 = $fa + testUnsigned::ubc1
|
|
Inferred type updated to byte in testUnsigned::$8 = testUnsigned::ubv1 + $fa
|
|
Inferred type updated to byte in testUnsigned::$10 = $fa + testUnsigned::ubv1
|
|
Inferred type updated to byte in testUnsignedVals::$0 = testUnsignedVals::ubc1 + $fa
|
|
Inferred type updated to byte in testUnsignedVals::$1 = $fa + testUnsignedVals::ubc1
|
|
Inferred type updated to byte in testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa
|
|
Inferred type updated to byte in testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1
|
|
Inferred type updated to signed byte in testSigned::$4 = testSigned::sbc1 + -$78
|
|
Inferred type updated to signed byte in testSigned::$6 = -$78 + testSigned::sbc1
|
|
Inferred type updated to signed byte in testSigned::$8 = testSigned::sbv1 + -$78
|
|
Inferred type updated to signed byte in testSigned::$10 = -$78 + testSigned::sbv1
|
|
Inferred type updated to signed byte in testSignedVals::$0 = testSignedVals::sbc1 + -$78
|
|
Inferred type updated to signed byte in testSignedVals::$1 = -$78 + testSignedVals::sbc1
|
|
Inferred type updated to signed byte in testSignedVals::$2 = testSignedVals::sbv1 + -$78
|
|
Inferred type updated to signed byte in testSignedVals::$3 = -$78 + testSignedVals::sbv1
|
|
Resolving typeid() testUnsigned::$5 = typeid testUnsigned::$4
|
|
Resolving typeid() testUnsigned::$7 = typeid testUnsigned::$6
|
|
Resolving typeid() testUnsigned::$9 = typeid testUnsigned::$8
|
|
Resolving typeid() testUnsigned::$11 = typeid testUnsigned::$10
|
|
Resolving typeid() testSigned::$5 = typeid testSigned::$4
|
|
Resolving typeid() testSigned::$7 = typeid testSigned::$6
|
|
Resolving typeid() testSigned::$9 = typeid testSigned::$8
|
|
Resolving typeid() testSigned::$11 = typeid testSigned::$10
|
|
Successful SSA optimization PassNTypeIdSimplification
|
|
Alias idx#1 = idx#60
|
|
Alias idx#3 = idx#61
|
|
Alias idx#5 = idx#62
|
|
Alias idx#63 = idx#7 idx#64 idx#8
|
|
Alias idx#19 = idx#66 idx#20
|
|
Alias idx#31 = idx#68 idx#32
|
|
Alias idx#43 = idx#70 idx#44
|
|
Alias idx#55 = idx#72 idx#56
|
|
Alias idx#57 = idx#75
|
|
Alias idx#58 = idx#73 idx#74 idx#59
|
|
Successful SSA optimization Pass2AliasElimination
|
|
Identical Phi Values idx#1 idx#19
|
|
Identical Phi Values idx#3 idx#31
|
|
Identical Phi Values idx#5 idx#43
|
|
Identical Phi Values idx#63 idx#55
|
|
Identical Phi Values idx#65 idx#0
|
|
Identical Phi Values idx#67 idx#2
|
|
Identical Phi Values idx#69 idx#4
|
|
Identical Phi Values idx#71 idx#6
|
|
Identical Phi Values idx#58 idx#63
|
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
|
Constant right-side identified [6] idx#4 = (unumber)$28*2
|
|
Constant right-side identified [9] idx#6 = (unumber)$28*3
|
|
Constant right-side identified [15] testUnsigned::$0 = typeid $fa
|
|
Constant right-side identified [24] testUnsigned::$3 = typeid $78+$82
|
|
Constant right-side identified [27] testUnsigned::$4 = testUnsigned::ubc1 + $fa
|
|
Constant right-side identified [31] testUnsigned::$6 = $fa + testUnsigned::ubc1
|
|
Constant right-side identified [61] SCREEN[idx#23] = (unumber)$78+$82
|
|
Constant right-side identified [63] testUnsignedVals::$0 = testUnsignedVals::ubc1 + $fa
|
|
Constant right-side identified [66] testUnsignedVals::$1 = $fa + testUnsignedVals::ubc1
|
|
Constant right-side identified [87] testSigned::$0 = typeid -$78
|
|
Constant right-side identified [96] testSigned::$3 = typeid -$78+-$82
|
|
Constant right-side identified [99] testSigned::$4 = testSigned::sbc1 + -$78
|
|
Constant right-side identified [103] testSigned::$6 = -$78 + testSigned::sbc1
|
|
Constant right-side identified [133] SSCREEN[idx#47] = (snumber)-$46+-$32
|
|
Constant right-side identified [135] testSignedVals::$0 = testSignedVals::sbc1 + -$78
|
|
Constant right-side identified [138] testSignedVals::$1 = -$78 + testSignedVals::sbc1
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#0 = 0
|
|
Constant idx#2 = $28
|
|
Constant idx#4 = (unumber)$28*2
|
|
Constant idx#6 = (unumber)$28*3
|
|
Constant testUnsigned::$0 = typeid $fa
|
|
Constant testUnsigned::$1 = TYPEID_BYTE
|
|
Constant testUnsigned::$2 = TYPEID_BYTE
|
|
Constant testUnsigned::$3 = typeid $78+$82
|
|
Constant testUnsigned::$4 = testUnsigned::ubc1+$fa
|
|
Constant testUnsigned::$5 = TYPEID_BYTE
|
|
Constant testUnsigned::$6 = $fa+testUnsigned::ubc1
|
|
Constant testUnsigned::$7 = TYPEID_BYTE
|
|
Constant testUnsigned::$9 = TYPEID_BYTE
|
|
Constant testUnsigned::$11 = TYPEID_BYTE
|
|
Constant testUnsigned::$13 = TYPEID_BYTE
|
|
Constant testUnsigned::$15 = TYPEID_BYTE
|
|
Constant testUnsigned::$17 = TYPEID_BYTE
|
|
Constant testUnsignedVals::$0 = testUnsignedVals::ubc1+$fa
|
|
Constant testUnsignedVals::$1 = $fa+testUnsignedVals::ubc1
|
|
Constant testSigned::$0 = typeid -$78
|
|
Constant testSigned::$1 = TYPEID_SIGNED_BYTE
|
|
Constant testSigned::$2 = TYPEID_SIGNED_BYTE
|
|
Constant testSigned::$3 = typeid -$78+-$82
|
|
Constant testSigned::$4 = testSigned::sbc1+-$78
|
|
Constant testSigned::$5 = TYPEID_SIGNED_BYTE
|
|
Constant testSigned::$6 = -$78+testSigned::sbc1
|
|
Constant testSigned::$7 = TYPEID_SIGNED_BYTE
|
|
Constant testSigned::$9 = TYPEID_SIGNED_BYTE
|
|
Constant testSigned::$11 = TYPEID_SIGNED_BYTE
|
|
Constant testSigned::$13 = TYPEID_SIGNED_BYTE
|
|
Constant testSigned::$15 = TYPEID_SIGNED_BYTE
|
|
Constant testSigned::$17 = TYPEID_SIGNED_BYTE
|
|
Constant testSignedVals::$0 = testSignedVals::sbc1+-$78
|
|
Constant testSignedVals::$1 = -$78+testSignedVals::sbc1
|
|
Constant idx#57 = 0
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Simplifying constant evaluating to zero typeid $fa in
|
|
Simplifying constant evaluating to zero typeid $78+$82 in
|
|
Simplifying constant evaluating to zero typeid -$78 in
|
|
Simplifying constant evaluating to zero typeid -$78+-$82 in
|
|
Successful SSA optimization PassNSimplifyConstantZero
|
|
Simplifying expression containing zero SCREEN in [16] SCREEN[idx#0] = testUnsigned::$0
|
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
|
Eliminating unused variable testUnsigned::$8 and assignment [18] testUnsigned::$8 = testUnsigned::ubv1 + $fa
|
|
Eliminating unused variable testUnsigned::$10 and assignment [21] testUnsigned::$10 = $fa + testUnsigned::ubv1
|
|
Eliminating unused variable idx#19 and assignment [29] idx#19 = ++ idx#18
|
|
Eliminating unused variable idx#31 and assignment [58] idx#31 = ++ idx#30
|
|
Eliminating unused variable testSigned::$8 and assignment [73] testSigned::$8 = testSigned::sbv1 + -$78
|
|
Eliminating unused variable testSigned::$10 and assignment [76] testSigned::$10 = -$78 + testSigned::sbv1
|
|
Eliminating unused variable idx#43 and assignment [84] idx#43 = ++ idx#42
|
|
Eliminating unused variable idx#55 and assignment [113] idx#55 = ++ idx#54
|
|
Eliminating unused constant testUnsigned::$4
|
|
Eliminating unused constant testUnsigned::$6
|
|
Eliminating unused constant testSigned::$4
|
|
Eliminating unused constant testSigned::$6
|
|
Eliminating unused constant idx#57
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Eliminating unused variable testUnsigned::ubv1 and assignment [5] testUnsigned::ubv1 = $fa
|
|
Eliminating unused variable testSigned::sbv1 and assignment [56] testSigned::sbv1 = -$78
|
|
Eliminating unused constant testUnsigned::ubc1
|
|
Eliminating unused constant testSigned::sbc1
|
|
Successful SSA optimization PassNEliminateUnusedVars
|
|
Removing unused procedure __start
|
|
Removing unused procedure block __start
|
|
Removing unused procedure block __start::__init1
|
|
Removing unused procedure block __start::@1
|
|
Removing unused procedure block __start::@2
|
|
Removing unused procedure block __start::@return
|
|
Successful SSA optimization PassNEliminateEmptyStart
|
|
Constant right-side identified [6] idx#9 = ++ idx#0
|
|
Constant right-side identified [29] idx#21 = ++ idx#2
|
|
Constant right-side identified [56] idx#33 = ++ idx#4
|
|
Constant right-side identified [79] idx#45 = ++ idx#6
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#9 = ++idx#0
|
|
Constant idx#21 = ++idx#2
|
|
Constant idx#33 = ++idx#4
|
|
Constant idx#45 = ++idx#6
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [7] idx#10 = ++ idx#9
|
|
Constant right-side identified [29] idx#22 = ++ idx#21
|
|
Constant right-side identified [55] idx#34 = ++ idx#33
|
|
Constant right-side identified [77] idx#46 = ++ idx#45
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#10 = ++idx#9
|
|
Constant idx#22 = ++idx#21
|
|
Constant idx#34 = ++idx#33
|
|
Constant idx#46 = ++idx#45
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [8] idx#11 = ++ idx#10
|
|
Constant right-side identified [29] idx#23 = ++ idx#22
|
|
Constant right-side identified [54] idx#35 = ++ idx#34
|
|
Constant right-side identified [75] idx#47 = ++ idx#46
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#11 = ++idx#10
|
|
Constant idx#23 = ++idx#22
|
|
Constant idx#35 = ++idx#34
|
|
Constant idx#47 = ++idx#46
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [9] idx#12 = ++ idx#11
|
|
Constant right-side identified [29] idx#24 = ++ idx#23
|
|
Constant right-side identified [53] idx#36 = ++ idx#35
|
|
Constant right-side identified [73] idx#48 = ++ idx#47
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#12 = ++idx#11
|
|
Constant idx#24 = ++idx#23
|
|
Constant idx#36 = ++idx#35
|
|
Constant idx#48 = ++idx#47
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [10] idx#13 = ++ idx#12
|
|
Constant right-side identified [29] idx#25 = ++ idx#24
|
|
Constant right-side identified [52] idx#37 = ++ idx#36
|
|
Constant right-side identified [71] idx#49 = ++ idx#48
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#13 = ++idx#12
|
|
Constant idx#25 = ++idx#24
|
|
Constant idx#37 = ++idx#36
|
|
Constant idx#49 = ++idx#48
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [11] idx#14 = ++ idx#13
|
|
Constant right-side identified [29] idx#26 = ++ idx#25
|
|
Constant right-side identified [51] idx#38 = ++ idx#37
|
|
Constant right-side identified [69] idx#50 = ++ idx#49
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#14 = ++idx#13
|
|
Constant idx#26 = ++idx#25
|
|
Constant idx#38 = ++idx#37
|
|
Constant idx#50 = ++idx#49
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [12] idx#15 = ++ idx#14
|
|
Constant right-side identified [30] idx#27 = ++ idx#26
|
|
Constant right-side identified [50] idx#39 = ++ idx#38
|
|
Constant right-side identified [68] idx#51 = ++ idx#50
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#15 = ++idx#14
|
|
Constant idx#27 = ++idx#26
|
|
Constant idx#39 = ++idx#38
|
|
Constant idx#51 = ++idx#50
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [13] idx#16 = ++ idx#15
|
|
Constant right-side identified [31] idx#28 = ++ idx#27
|
|
Constant right-side identified [49] idx#40 = ++ idx#39
|
|
Constant right-side identified [67] idx#52 = ++ idx#51
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#16 = ++idx#15
|
|
Constant idx#28 = ++idx#27
|
|
Constant idx#40 = ++idx#39
|
|
Constant idx#52 = ++idx#51
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [14] idx#17 = ++ idx#16
|
|
Constant right-side identified [32] idx#29 = ++ idx#28
|
|
Constant right-side identified [48] idx#41 = ++ idx#40
|
|
Constant right-side identified [66] idx#53 = ++ idx#52
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#17 = ++idx#16
|
|
Constant idx#29 = ++idx#28
|
|
Constant idx#41 = ++idx#40
|
|
Constant idx#53 = ++idx#52
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Constant right-side identified [15] idx#18 = ++ idx#17
|
|
Constant right-side identified [33] idx#30 = ++ idx#29
|
|
Constant right-side identified [47] idx#42 = ++ idx#41
|
|
Constant right-side identified [65] idx#54 = ++ idx#53
|
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
|
Constant idx#18 = ++idx#17
|
|
Constant idx#30 = ++idx#29
|
|
Constant idx#42 = ++idx#41
|
|
Constant idx#54 = ++idx#53
|
|
Successful SSA optimization Pass2ConstantIdentification
|
|
Inlining constant with different constant siblings idx#0
|
|
Inlining constant with different constant siblings idx#2
|
|
Inlining constant with different constant siblings idx#4
|
|
Inlining constant with different constant siblings idx#6
|
|
Inlining constant with different constant siblings idx#9
|
|
Inlining constant with different constant siblings idx#21
|
|
Inlining constant with different constant siblings idx#33
|
|
Inlining constant with different constant siblings idx#45
|
|
Inlining constant with different constant siblings idx#10
|
|
Inlining constant with different constant siblings idx#22
|
|
Inlining constant with different constant siblings idx#34
|
|
Inlining constant with different constant siblings idx#46
|
|
Inlining constant with different constant siblings idx#11
|
|
Inlining constant with different constant siblings idx#23
|
|
Inlining constant with different constant siblings idx#35
|
|
Inlining constant with different constant siblings idx#47
|
|
Inlining constant with different constant siblings idx#12
|
|
Inlining constant with different constant siblings idx#24
|
|
Inlining constant with different constant siblings idx#36
|
|
Inlining constant with different constant siblings idx#48
|
|
Inlining constant with different constant siblings idx#13
|
|
Inlining constant with different constant siblings idx#25
|
|
Inlining constant with different constant siblings idx#37
|
|
Inlining constant with different constant siblings idx#49
|
|
Inlining constant with different constant siblings idx#14
|
|
Inlining constant with different constant siblings idx#26
|
|
Inlining constant with different constant siblings idx#38
|
|
Inlining constant with different constant siblings idx#50
|
|
Inlining constant with different constant siblings idx#15
|
|
Inlining constant with different constant siblings idx#27
|
|
Inlining constant with different constant siblings idx#39
|
|
Inlining constant with different constant siblings idx#51
|
|
Inlining constant with different constant siblings idx#16
|
|
Inlining constant with different constant siblings idx#28
|
|
Inlining constant with different constant siblings idx#40
|
|
Inlining constant with different constant siblings idx#52
|
|
Inlining constant with different constant siblings idx#17
|
|
Inlining constant with different constant siblings idx#29
|
|
Inlining constant with different constant siblings idx#41
|
|
Inlining constant with different constant siblings idx#53
|
|
Inlining constant with different constant siblings idx#18
|
|
Inlining constant with different constant siblings idx#30
|
|
Inlining constant with different constant siblings idx#42
|
|
Inlining constant with different constant siblings idx#54
|
|
Constant inlined testUnsigned::$3 = 0
|
|
Constant inlined testUnsigned::$1 = TYPEID_BYTE
|
|
Constant inlined idx#34 = ++++(byte)$28*2
|
|
Constant inlined testUnsigned::$2 = TYPEID_BYTE
|
|
Constant inlined idx#33 = ++(byte)$28*2
|
|
Constant inlined testUnsigned::$0 = 0
|
|
Constant inlined idx#9 = ++0
|
|
Constant inlined idx#6 = (byte)$28*3
|
|
Constant inlined idx#30 = ++++++++++++++++++++$28
|
|
Constant inlined idx#39 = ++++++++++++++(byte)$28*2
|
|
Constant inlined testUnsigned::$9 = TYPEID_BYTE
|
|
Constant inlined testUnsigned::$7 = TYPEID_BYTE
|
|
Constant inlined idx#36 = ++++++++(byte)$28*2
|
|
Constant inlined idx#35 = ++++++(byte)$28*2
|
|
Constant inlined testUnsigned::$5 = TYPEID_BYTE
|
|
Constant inlined idx#38 = ++++++++++++(byte)$28*2
|
|
Constant inlined idx#37 = ++++++++++(byte)$28*2
|
|
Constant inlined testUnsigned::$17 = TYPEID_BYTE
|
|
Constant inlined testUnsigned::$15 = TYPEID_BYTE
|
|
Constant inlined idx#4 = (byte)$28*2
|
|
Constant inlined idx#2 = $28
|
|
Constant inlined idx#0 = 0
|
|
Constant inlined idx#21 = ++$28
|
|
Constant inlined idx#23 = ++++++$28
|
|
Constant inlined idx#22 = ++++$28
|
|
Constant inlined idx#29 = ++++++++++++++++++$28
|
|
Constant inlined idx#28 = ++++++++++++++++$28
|
|
Constant inlined idx#25 = ++++++++++$28
|
|
Constant inlined idx#24 = ++++++++$28
|
|
Constant inlined idx#27 = ++++++++++++++$28
|
|
Constant inlined idx#26 = ++++++++++++$28
|
|
Constant inlined testUnsignedVals::$0 = testUnsignedVals::ubc1+$fa
|
|
Constant inlined testUnsignedVals::$1 = $fa+testUnsignedVals::ubc1
|
|
Constant inlined idx#10 = ++++0
|
|
Constant inlined idx#54 = ++++++++++++++++++++(byte)$28*3
|
|
Constant inlined idx#53 = ++++++++++++++++++(byte)$28*3
|
|
Constant inlined idx#12 = ++++++++0
|
|
Constant inlined idx#11 = ++++++0
|
|
Constant inlined idx#50 = ++++++++++++(byte)$28*3
|
|
Constant inlined idx#52 = ++++++++++++++++(byte)$28*3
|
|
Constant inlined idx#51 = ++++++++++++++(byte)$28*3
|
|
Constant inlined idx#18 = ++++++++++++++++++++0
|
|
Constant inlined idx#17 = ++++++++++++++++++0
|
|
Constant inlined idx#14 = ++++++++++++0
|
|
Constant inlined idx#13 = ++++++++++0
|
|
Constant inlined idx#16 = ++++++++++++++++0
|
|
Constant inlined idx#15 = ++++++++++++++0
|
|
Constant inlined testSigned::$7 = TYPEID_SIGNED_BYTE
|
|
Constant inlined testSigned::$9 = TYPEID_SIGNED_BYTE
|
|
Constant inlined testSigned::$2 = TYPEID_SIGNED_BYTE
|
|
Constant inlined testSigned::$17 = TYPEID_SIGNED_BYTE
|
|
Constant inlined testSigned::$3 = 0
|
|
Constant inlined idx#42 = ++++++++++++++++++++(byte)$28*2
|
|
Constant inlined idx#45 = ++(byte)$28*3
|
|
Constant inlined testSigned::$5 = TYPEID_SIGNED_BYTE
|
|
Constant inlined testSigned::$13 = TYPEID_SIGNED_BYTE
|
|
Constant inlined testSigned::$0 = 0
|
|
Constant inlined idx#41 = ++++++++++++++++++(byte)$28*2
|
|
Constant inlined testSigned::$1 = TYPEID_SIGNED_BYTE
|
|
Constant inlined testSigned::$15 = TYPEID_SIGNED_BYTE
|
|
Constant inlined idx#40 = ++++++++++++++++(byte)$28*2
|
|
Constant inlined testUnsigned::$13 = TYPEID_BYTE
|
|
Constant inlined testUnsigned::$11 = TYPEID_BYTE
|
|
Constant inlined testSignedVals::$1 = -$78+testSignedVals::sbc1
|
|
Constant inlined testSigned::$11 = TYPEID_SIGNED_BYTE
|
|
Constant inlined testSignedVals::$0 = testSignedVals::sbc1+-$78
|
|
Constant inlined idx#47 = ++++++(byte)$28*3
|
|
Constant inlined idx#46 = ++++(byte)$28*3
|
|
Constant inlined idx#49 = ++++++++++(byte)$28*3
|
|
Constant inlined idx#48 = ++++++++(byte)$28*3
|
|
Successful SSA optimization Pass2ConstantInlining
|
|
Consolidated array index constant in *(SCREEN+++0)
|
|
Consolidated array index constant in *(SCREEN+++++0)
|
|
Consolidated array index constant in *(SCREEN+++++++0)
|
|
Consolidated array index constant in *(SCREEN+++++++++0)
|
|
Consolidated array index constant in *(SCREEN+++++++++++0)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++0)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++0)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++++0)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++++++0)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++++++++0)
|
|
Consolidated array index constant in *(SCREEN+$28)
|
|
Consolidated array index constant in *(SCREEN+++$28)
|
|
Consolidated array index constant in *(SCREEN+++++$28)
|
|
Consolidated array index constant in *(SCREEN+++++++$28)
|
|
Consolidated array index constant in *(SCREEN+++++++++$28)
|
|
Consolidated array index constant in *(SCREEN+++++++++++$28)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++$28)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++$28)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++++$28)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++++++$28)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++++++++$28)
|
|
Consolidated array index constant in *(SCREEN+(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++++(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++++++(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++++++++(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++++++++++(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++++(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++++++(byte)$28*2)
|
|
Consolidated array index constant in *(SCREEN+++++++++++++++++++++(byte)$28*2)
|
|
Consolidated array index constant in *(SSCREEN+(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++++(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++++++(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++++++++(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++++++++++(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++++++++++++(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++++++++++++++(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++++++++++++++++(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++++++++++++++++++(byte)$28*3)
|
|
Consolidated array index constant in *(SSCREEN+++++++++++++++++++++(byte)$28*3)
|
|
Successful SSA optimization Pass2ConstantAdditionElimination
|
|
Simplifying constant integer increment ++0
|
|
Simplifying constant integer increment ++0
|
|
Simplifying constant integer increment ++1
|
|
Simplifying constant integer increment ++2
|
|
Simplifying constant integer increment ++3
|
|
Simplifying constant integer increment ++4
|
|
Simplifying constant integer increment ++5
|
|
Simplifying constant integer increment ++6
|
|
Simplifying constant integer increment ++7
|
|
Simplifying constant integer increment ++8
|
|
Simplifying constant integer increment ++$28
|
|
Simplifying constant integer increment ++$28
|
|
Simplifying constant integer increment ++$29
|
|
Simplifying constant integer increment ++$2a
|
|
Simplifying constant integer increment ++$2b
|
|
Simplifying constant integer increment ++$2c
|
|
Simplifying constant integer increment ++$2d
|
|
Simplifying constant integer increment ++$2e
|
|
Simplifying constant integer increment ++$2f
|
|
Simplifying constant integer increment ++$30
|
|
Successful SSA optimization Pass2ConstantSimplification
|
|
Simplifying constant integer increment ++1
|
|
Simplifying constant integer increment ++2
|
|
Simplifying constant integer increment ++3
|
|
Simplifying constant integer increment ++4
|
|
Simplifying constant integer increment ++5
|
|
Simplifying constant integer increment ++6
|
|
Simplifying constant integer increment ++7
|
|
Simplifying constant integer increment ++8
|
|
Simplifying constant integer increment ++9
|
|
Simplifying constant integer increment ++$29
|
|
Simplifying constant integer increment ++$2a
|
|
Simplifying constant integer increment ++$2b
|
|
Simplifying constant integer increment ++$2c
|
|
Simplifying constant integer increment ++$2d
|
|
Simplifying constant integer increment ++$2e
|
|
Simplifying constant integer increment ++$2f
|
|
Simplifying constant integer increment ++$30
|
|
Simplifying constant integer increment ++$31
|
|
Successful SSA optimization Pass2ConstantSimplification
|
|
Finalized unsigned number type (byte) 1
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) $78
|
|
Finalized unsigned number type (byte) $82
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) 2
|
|
Finalized unsigned number type (byte) $28
|
|
Finalized unsigned number type (byte) 3
|
|
Finalized signed number type (signed byte) -$46
|
|
Finalized signed number type (signed byte) -$32
|
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
|
Simplifying constant integer cast $78+$82
|
|
Simplifying constant integer cast $28*2
|
|
Simplifying constant integer cast $28*2
|
|
Simplifying constant integer cast $28*3
|
|
Simplifying constant integer cast $28*3
|
|
Simplifying constant integer cast -$46+-$32
|
|
Successful SSA optimization PassNCastSimplification
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::@1
|
|
Adding NOP phi() at start of main::@2
|
|
Adding NOP phi() at start of main::@3
|
|
Adding NOP phi() at start of main::@4
|
|
CALL GRAPH
|
|
Calls in [main] to testUnsigned:1 testUnsignedVals:3 testSigned:5 testSignedVals:7
|
|
|
|
Created 0 initial phi equivalence classes
|
|
Coalesced down to 0 phi equivalence classes
|
|
Culled Empty Block label main::@4
|
|
Adding NOP phi() at start of main
|
|
Adding NOP phi() at start of main::@1
|
|
Adding NOP phi() at start of main::@2
|
|
Adding NOP phi() at start of main::@3
|
|
|
|
FINAL CONTROL FLOW GRAPH
|
|
|
|
void main()
|
|
main: scope:[main] from
|
|
[0] phi()
|
|
[1] call testUnsigned
|
|
to:main::@1
|
|
main::@1: scope:[main] from main
|
|
[2] phi()
|
|
[3] call testUnsignedVals
|
|
to:main::@2
|
|
main::@2: scope:[main] from main::@1
|
|
[4] phi()
|
|
[5] call testSigned
|
|
to:main::@3
|
|
main::@3: scope:[main] from main::@2
|
|
[6] phi()
|
|
[7] call testSignedVals
|
|
to:main::@return
|
|
main::@return: scope:[main] from main::@3
|
|
[8] return
|
|
to:@return
|
|
|
|
void testUnsigned()
|
|
testUnsigned: scope:[testUnsigned] from main
|
|
[9] *SCREEN = 0
|
|
[10] *(SCREEN+1) = TYPEID_BYTE
|
|
[11] *(SCREEN+2) = TYPEID_BYTE
|
|
[12] *(SCREEN+3) = 0
|
|
[13] *(SCREEN+4) = TYPEID_BYTE
|
|
[14] *(SCREEN+5) = TYPEID_BYTE
|
|
[15] *(SCREEN+6) = TYPEID_BYTE
|
|
[16] *(SCREEN+7) = TYPEID_BYTE
|
|
[17] *(SCREEN+8) = TYPEID_BYTE
|
|
[18] *(SCREEN+9) = TYPEID_BYTE
|
|
[19] *(SCREEN+$a) = TYPEID_BYTE
|
|
to:testUnsigned::@return
|
|
testUnsigned::@return: scope:[testUnsigned] from testUnsigned
|
|
[20] return
|
|
to:@return
|
|
|
|
void testUnsignedVals()
|
|
testUnsignedVals: scope:[testUnsignedVals] from main::@1
|
|
[21] testUnsignedVals::ubv1 = $fa
|
|
[22] *(SCREEN+$28) = $fa
|
|
[23] *(SCREEN+$29) = testUnsignedVals::ubc1
|
|
[24] *(SCREEN+$2a) = testUnsignedVals::ubv1
|
|
[25] *(SCREEN+$2b) = $78+$82
|
|
[26] *(SCREEN+$2c) = testUnsignedVals::ubc1+$fa
|
|
[27] *(SCREEN+$2d) = $fa+testUnsignedVals::ubc1
|
|
[28] testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa
|
|
[29] *(SCREEN+$2e) = testUnsignedVals::$2
|
|
[30] testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1
|
|
[31] *(SCREEN+$2f) = testUnsignedVals::$3
|
|
[32] testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1
|
|
[33] *(SCREEN+$30) = testUnsignedVals::$4
|
|
[34] testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1
|
|
[35] *(SCREEN+$31) = testUnsignedVals::$5
|
|
[36] testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1
|
|
[37] *(SCREEN+$32) = testUnsignedVals::$6
|
|
to:testUnsignedVals::@return
|
|
testUnsignedVals::@return: scope:[testUnsignedVals] from testUnsignedVals
|
|
[38] return
|
|
to:@return
|
|
|
|
void testSigned()
|
|
testSigned: scope:[testSigned] from main::@2
|
|
[39] *(SCREEN+$28*2) = 0
|
|
[40] *(SCREEN+++$28*2) = TYPEID_SIGNED_BYTE
|
|
[41] *(SCREEN+++++$28*2) = TYPEID_SIGNED_BYTE
|
|
[42] *(SCREEN+++++++$28*2) = 0
|
|
[43] *(SCREEN+++++++++$28*2) = TYPEID_SIGNED_BYTE
|
|
[44] *(SCREEN+++++++++++$28*2) = TYPEID_SIGNED_BYTE
|
|
[45] *(SCREEN+++++++++++++$28*2) = TYPEID_SIGNED_BYTE
|
|
[46] *(SCREEN+++++++++++++++$28*2) = TYPEID_SIGNED_BYTE
|
|
[47] *(SCREEN+++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE
|
|
[48] *(SCREEN+++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE
|
|
[49] *(SCREEN+++++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE
|
|
to:testSigned::@return
|
|
testSigned::@return: scope:[testSigned] from testSigned
|
|
[50] return
|
|
to:@return
|
|
|
|
void testSignedVals()
|
|
testSignedVals: scope:[testSignedVals] from main::@3
|
|
[51] testSignedVals::sbv1 = -$78
|
|
[52] *(SSCREEN+$28*3) = -$78
|
|
[53] *(SSCREEN+++$28*3) = testSignedVals::sbc1
|
|
[54] *(SSCREEN+++++$28*3) = testSignedVals::sbv1
|
|
[55] *(SSCREEN+++++++$28*3) = -$46+-$32
|
|
[56] *(SSCREEN+++++++++$28*3) = testSignedVals::sbc1+-$78
|
|
[57] *(SSCREEN+++++++++++$28*3) = -$78+testSignedVals::sbc1
|
|
[58] testSignedVals::$2 = testSignedVals::sbv1 + -$78
|
|
[59] *(SSCREEN+++++++++++++$28*3) = testSignedVals::$2
|
|
[60] testSignedVals::$3 = -$78 + testSignedVals::sbv1
|
|
[61] *(SSCREEN+++++++++++++++$28*3) = testSignedVals::$3
|
|
[62] testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1
|
|
[63] *(SSCREEN+++++++++++++++++$28*3) = testSignedVals::$4
|
|
[64] testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1
|
|
[65] *(SSCREEN+++++++++++++++++++$28*3) = testSignedVals::$5
|
|
[66] testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1
|
|
[67] *(SSCREEN+++++++++++++++++++++$28*3) = testSignedVals::$6
|
|
to:testSignedVals::@return
|
|
testSignedVals::@return: scope:[testSignedVals] from testSignedVals
|
|
[68] return
|
|
to:@return
|
|
|
|
|
|
VARIABLE REGISTER WEIGHTS
|
|
byte idx
|
|
void main()
|
|
void testSigned()
|
|
void testSignedVals()
|
|
signed byte~ testSignedVals::$2 22.0
|
|
signed byte~ testSignedVals::$3 22.0
|
|
signed byte~ testSignedVals::$4 22.0
|
|
signed byte~ testSignedVals::$5 22.0
|
|
signed byte~ testSignedVals::$6 22.0
|
|
volatile signed byte testSignedVals::sbv1 loadstore 5.866666666666666
|
|
void testUnsigned()
|
|
void testUnsignedVals()
|
|
byte~ testUnsignedVals::$2 22.0
|
|
byte~ testUnsignedVals::$3 22.0
|
|
byte~ testUnsignedVals::$4 22.0
|
|
byte~ testUnsignedVals::$5 22.0
|
|
byte~ testUnsignedVals::$6 22.0
|
|
volatile byte testUnsignedVals::ubv1 loadstore 5.866666666666666
|
|
|
|
Initial phi equivalence classes
|
|
Added variable testUnsignedVals::ubv1 to live range equivalence class [ testUnsignedVals::ubv1 ]
|
|
Added variable testUnsignedVals::$2 to live range equivalence class [ testUnsignedVals::$2 ]
|
|
Added variable testUnsignedVals::$3 to live range equivalence class [ testUnsignedVals::$3 ]
|
|
Added variable testUnsignedVals::$4 to live range equivalence class [ testUnsignedVals::$4 ]
|
|
Added variable testUnsignedVals::$5 to live range equivalence class [ testUnsignedVals::$5 ]
|
|
Added variable testUnsignedVals::$6 to live range equivalence class [ testUnsignedVals::$6 ]
|
|
Added variable testSignedVals::sbv1 to live range equivalence class [ testSignedVals::sbv1 ]
|
|
Added variable testSignedVals::$2 to live range equivalence class [ testSignedVals::$2 ]
|
|
Added variable testSignedVals::$3 to live range equivalence class [ testSignedVals::$3 ]
|
|
Added variable testSignedVals::$4 to live range equivalence class [ testSignedVals::$4 ]
|
|
Added variable testSignedVals::$5 to live range equivalence class [ testSignedVals::$5 ]
|
|
Added variable testSignedVals::$6 to live range equivalence class [ testSignedVals::$6 ]
|
|
Complete equivalence classes
|
|
[ testUnsignedVals::ubv1 ]
|
|
[ testUnsignedVals::$2 ]
|
|
[ testUnsignedVals::$3 ]
|
|
[ testUnsignedVals::$4 ]
|
|
[ testUnsignedVals::$5 ]
|
|
[ testUnsignedVals::$6 ]
|
|
[ testSignedVals::sbv1 ]
|
|
[ testSignedVals::$2 ]
|
|
[ testSignedVals::$3 ]
|
|
[ testSignedVals::$4 ]
|
|
[ testSignedVals::$5 ]
|
|
[ testSignedVals::$6 ]
|
|
Allocated zp[1]:2 [ testUnsignedVals::ubv1 ]
|
|
Allocated zp[1]:3 [ testUnsignedVals::$2 ]
|
|
Allocated zp[1]:4 [ testUnsignedVals::$3 ]
|
|
Allocated zp[1]:5 [ testUnsignedVals::$4 ]
|
|
Allocated zp[1]:6 [ testUnsignedVals::$5 ]
|
|
Allocated zp[1]:7 [ testUnsignedVals::$6 ]
|
|
Allocated zp[1]:8 [ testSignedVals::sbv1 ]
|
|
Allocated zp[1]:9 [ testSignedVals::$2 ]
|
|
Allocated zp[1]:10 [ testSignedVals::$3 ]
|
|
Allocated zp[1]:11 [ testSignedVals::$4 ]
|
|
Allocated zp[1]:12 [ testSignedVals::$5 ]
|
|
Allocated zp[1]:13 [ testSignedVals::$6 ]
|
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
|
Statement [9] *SCREEN = 0 [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [10] *(SCREEN+1) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [11] *(SCREEN+2) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [12] *(SCREEN+3) = 0 [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [13] *(SCREEN+4) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [14] *(SCREEN+5) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [15] *(SCREEN+6) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [16] *(SCREEN+7) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [17] *(SCREEN+8) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [18] *(SCREEN+9) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [19] *(SCREEN+$a) = TYPEID_BYTE [ ] ( testUnsigned:1 [ ] { } ) always clobbers reg byte a
|
|
Statement [21] testUnsignedVals::ubv1 = $fa [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
|
|
Statement [22] *(SCREEN+$28) = $fa [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
|
|
Statement [23] *(SCREEN+$29) = testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
|
|
Statement [24] *(SCREEN+$2a) = testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
|
|
Statement [25] *(SCREEN+$2b) = $78+$82 [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
|
|
Statement [26] *(SCREEN+$2c) = testUnsignedVals::ubc1+$fa [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
|
|
Statement [27] *(SCREEN+$2d) = $fa+testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 ] { } ) always clobbers reg byte a
|
|
Statement [28] testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa [ testUnsignedVals::ubv1 testUnsignedVals::$2 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 testUnsignedVals::$2 ] { } ) always clobbers reg byte a
|
|
Statement [30] testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 testUnsignedVals::$3 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 testUnsignedVals::$3 ] { } ) always clobbers reg byte a
|
|
Statement [32] testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1 [ testUnsignedVals::ubv1 testUnsignedVals::$4 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 testUnsignedVals::$4 ] { } ) always clobbers reg byte a
|
|
Statement [34] testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1 [ testUnsignedVals::ubv1 testUnsignedVals::$5 ] ( testUnsignedVals:3 [ testUnsignedVals::ubv1 testUnsignedVals::$5 ] { } ) always clobbers reg byte a
|
|
Statement [36] testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1 [ testUnsignedVals::$6 ] ( testUnsignedVals:3 [ testUnsignedVals::$6 ] { } ) always clobbers reg byte a
|
|
Statement [39] *(SCREEN+$28*2) = 0 [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [40] *(SCREEN+++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [41] *(SCREEN+++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [42] *(SCREEN+++++++$28*2) = 0 [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [43] *(SCREEN+++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [44] *(SCREEN+++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [45] *(SCREEN+++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [46] *(SCREEN+++++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [47] *(SCREEN+++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [48] *(SCREEN+++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [49] *(SCREEN+++++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE [ ] ( testSigned:5 [ ] { } ) always clobbers reg byte a
|
|
Statement [51] testSignedVals::sbv1 = -$78 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
|
|
Statement [52] *(SSCREEN+$28*3) = -$78 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
|
|
Statement [53] *(SSCREEN+++$28*3) = testSignedVals::sbc1 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
|
|
Statement [54] *(SSCREEN+++++$28*3) = testSignedVals::sbv1 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
|
|
Statement [55] *(SSCREEN+++++++$28*3) = -$46+-$32 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
|
|
Statement [56] *(SSCREEN+++++++++$28*3) = testSignedVals::sbc1+-$78 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
|
|
Statement [57] *(SSCREEN+++++++++++$28*3) = -$78+testSignedVals::sbc1 [ testSignedVals::sbv1 ] ( testSignedVals:7 [ testSignedVals::sbv1 ] { } ) always clobbers reg byte a
|
|
Statement [58] testSignedVals::$2 = testSignedVals::sbv1 + -$78 [ testSignedVals::sbv1 testSignedVals::$2 ] ( testSignedVals:7 [ testSignedVals::sbv1 testSignedVals::$2 ] { } ) always clobbers reg byte a
|
|
Statement [60] testSignedVals::$3 = -$78 + testSignedVals::sbv1 [ testSignedVals::sbv1 testSignedVals::$3 ] ( testSignedVals:7 [ testSignedVals::sbv1 testSignedVals::$3 ] { } ) always clobbers reg byte a
|
|
Statement [62] testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1 [ testSignedVals::sbv1 testSignedVals::$4 ] ( testSignedVals:7 [ testSignedVals::sbv1 testSignedVals::$4 ] { } ) always clobbers reg byte a
|
|
Statement [64] testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1 [ testSignedVals::sbv1 testSignedVals::$5 ] ( testSignedVals:7 [ testSignedVals::sbv1 testSignedVals::$5 ] { } ) always clobbers reg byte a
|
|
Statement [66] testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1 [ testSignedVals::$6 ] ( testSignedVals:7 [ testSignedVals::$6 ] { } ) always clobbers reg byte a
|
|
Potential registers zp[1]:2 [ testUnsignedVals::ubv1 ] : zp[1]:2 ,
|
|
Potential registers zp[1]:3 [ testUnsignedVals::$2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:4 [ testUnsignedVals::$3 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:5 [ testUnsignedVals::$4 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:6 [ testUnsignedVals::$5 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:7 [ testUnsignedVals::$6 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:8 [ testSignedVals::sbv1 ] : zp[1]:8 ,
|
|
Potential registers zp[1]:9 [ testSignedVals::$2 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:10 [ testSignedVals::$3 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:11 [ testSignedVals::$4 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:12 [ testSignedVals::$5 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y ,
|
|
Potential registers zp[1]:13 [ testSignedVals::$6 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y ,
|
|
|
|
REGISTER UPLIFT SCOPES
|
|
Uplift Scope [testUnsignedVals] 22: zp[1]:3 [ testUnsignedVals::$2 ] 22: zp[1]:4 [ testUnsignedVals::$3 ] 22: zp[1]:5 [ testUnsignedVals::$4 ] 22: zp[1]:6 [ testUnsignedVals::$5 ] 22: zp[1]:7 [ testUnsignedVals::$6 ] 5.87: zp[1]:2 [ testUnsignedVals::ubv1 ]
|
|
Uplift Scope [testSignedVals] 22: zp[1]:9 [ testSignedVals::$2 ] 22: zp[1]:10 [ testSignedVals::$3 ] 22: zp[1]:11 [ testSignedVals::$4 ] 22: zp[1]:12 [ testSignedVals::$5 ] 22: zp[1]:13 [ testSignedVals::$6 ] 5.87: zp[1]:8 [ testSignedVals::sbv1 ]
|
|
Uplift Scope [main]
|
|
Uplift Scope [testUnsigned]
|
|
Uplift Scope [testSigned]
|
|
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 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 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 398 combination reg byte a [ testUnsignedVals::$6 ]
|
|
Attempting to uplift remaining variables inzp[1]:13 [ 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 392 combination zp[1]:2 [ testUnsignedVals::ubv1 ]
|
|
Attempting to uplift remaining variables inzp[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
|
|
// File Comments
|
|
// Test that plus creates the expected type for all legal combinations of bytes (signed/unsigned - constant/variable)
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="typeid-plus-bytes.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(main)
|
|
// Global Constants & labels
|
|
.const TYPEID_BYTE = 1
|
|
.const TYPEID_SIGNED_BYTE = 2
|
|
.label SCREEN = $400
|
|
.label SSCREEN = $400
|
|
.segment Code
|
|
// main
|
|
main: {
|
|
// [1] call testUnsigned
|
|
jsr testUnsigned
|
|
// [2] phi from main to main::@1 [phi:main->main::@1]
|
|
__b1_from_main:
|
|
jmp __b1
|
|
// main::@1
|
|
__b1:
|
|
// [3] call testUnsignedVals
|
|
jsr testUnsignedVals
|
|
// [4] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
__b2_from___b1:
|
|
jmp __b2
|
|
// main::@2
|
|
__b2:
|
|
// [5] call testSigned
|
|
jsr testSigned
|
|
// [6] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
|
|
__b3_from___b2:
|
|
jmp __b3
|
|
// main::@3
|
|
__b3:
|
|
// [7] call testSignedVals
|
|
jsr testSignedVals
|
|
jmp __breturn
|
|
// main::@return
|
|
__breturn:
|
|
// [8] return
|
|
rts
|
|
}
|
|
// testUnsigned
|
|
testUnsigned: {
|
|
// [9] *SCREEN = 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SCREEN
|
|
// [10] *(SCREEN+1) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+1
|
|
// [11] *(SCREEN+2) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+2
|
|
// [12] *(SCREEN+3) = 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SCREEN+3
|
|
// [13] *(SCREEN+4) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+4
|
|
// [14] *(SCREEN+5) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+5
|
|
// [15] *(SCREEN+6) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+6
|
|
// [16] *(SCREEN+7) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+7
|
|
// [17] *(SCREEN+8) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+8
|
|
// [18] *(SCREEN+9) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+9
|
|
// [19] *(SCREEN+$a) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+$a
|
|
jmp __breturn
|
|
// testUnsigned::@return
|
|
__breturn:
|
|
// [20] return
|
|
rts
|
|
}
|
|
// testUnsignedVals
|
|
testUnsignedVals: {
|
|
.const ubc1 = $fa
|
|
.label ubv1 = 2
|
|
// [21] testUnsignedVals::ubv1 = $fa -- vbuz1=vbuc1
|
|
lda #$fa
|
|
sta.z ubv1
|
|
// [22] *(SCREEN+$28) = $fa -- _deref_pbuc1=vbuc2
|
|
lda #$fa
|
|
sta SCREEN+$28
|
|
// [23] *(SCREEN+$29) = testUnsignedVals::ubc1 -- _deref_pbuc1=vbuc2
|
|
lda #ubc1
|
|
sta SCREEN+$29
|
|
// [24] *(SCREEN+$2a) = testUnsignedVals::ubv1 -- _deref_pbuc1=vbuz1
|
|
lda.z ubv1
|
|
sta SCREEN+$2a
|
|
// [25] *(SCREEN+$2b) = $78+$82 -- _deref_pbuc1=vbuc2
|
|
lda #$78+$82
|
|
sta SCREEN+$2b
|
|
// [26] *(SCREEN+$2c) = testUnsignedVals::ubc1+$fa -- _deref_pbuc1=vbuc2
|
|
lda #ubc1+$fa
|
|
sta SCREEN+$2c
|
|
// [27] *(SCREEN+$2d) = $fa+testUnsignedVals::ubc1 -- _deref_pbuc1=vbuc2
|
|
lda #$fa+ubc1
|
|
sta SCREEN+$2d
|
|
// [28] testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa -- vbuxx=vbuz1_plus_vbuc1
|
|
lax.z ubv1
|
|
axs #-[$fa]
|
|
// [29] *(SCREEN+$2e) = testUnsignedVals::$2 -- _deref_pbuc1=vbuxx
|
|
stx SCREEN+$2e
|
|
// [30] testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1 -- vbuxx=vbuc1_plus_vbuz1
|
|
lax.z ubv1
|
|
axs #-[$fa]
|
|
// [31] *(SCREEN+$2f) = testUnsignedVals::$3 -- _deref_pbuc1=vbuxx
|
|
stx SCREEN+$2f
|
|
// [32] testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1 -- vbuaa=vbuz1_plus_vbuc1
|
|
lda #ubc1
|
|
clc
|
|
adc.z ubv1
|
|
// [33] *(SCREEN+$30) = testUnsignedVals::$4 -- _deref_pbuc1=vbuaa
|
|
sta SCREEN+$30
|
|
// [34] testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1 -- vbuaa=vbuc1_plus_vbuz1
|
|
lda #ubc1
|
|
clc
|
|
adc.z ubv1
|
|
// [35] *(SCREEN+$31) = testUnsignedVals::$5 -- _deref_pbuc1=vbuaa
|
|
sta SCREEN+$31
|
|
// [36] testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1 -- vbuaa=vbuz1_plus_vbuz1
|
|
lda.z ubv1
|
|
asl
|
|
// [37] *(SCREEN+$32) = testUnsignedVals::$6 -- _deref_pbuc1=vbuaa
|
|
sta SCREEN+$32
|
|
jmp __breturn
|
|
// testUnsignedVals::@return
|
|
__breturn:
|
|
// [38] return
|
|
rts
|
|
}
|
|
// testSigned
|
|
testSigned: {
|
|
// [39] *(SCREEN+$28*2) = 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SCREEN+$28*2
|
|
// [40] *(SCREEN+++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1
|
|
// [41] *(SCREEN+++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1+1
|
|
// [42] *(SCREEN+++++++$28*2) = 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SCREEN+$28*2+1+1+1
|
|
// [43] *(SCREEN+++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1+1+1+1
|
|
// [44] *(SCREEN+++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1+1+1+1+1
|
|
// [45] *(SCREEN+++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1+1+1+1+1+1
|
|
// [46] *(SCREEN+++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1+1+1+1+1+1+1
|
|
// [47] *(SCREEN+++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1+1+1+1+1+1+1+1
|
|
// [48] *(SCREEN+++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1+1+1+1+1+1+1+1+1
|
|
// [49] *(SCREEN+++++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1+1+1+1+1+1+1+1+1+1
|
|
jmp __breturn
|
|
// testSigned::@return
|
|
__breturn:
|
|
// [50] return
|
|
rts
|
|
}
|
|
// testSignedVals
|
|
testSignedVals: {
|
|
.const sbc1 = -$78
|
|
.label sbv1 = 3
|
|
// [51] testSignedVals::sbv1 = -$78 -- vbsz1=vbsc1
|
|
lda #-$78
|
|
sta.z sbv1
|
|
// [52] *(SSCREEN+$28*3) = -$78 -- _deref_pbsc1=vbsc2
|
|
lda #-$78
|
|
sta SSCREEN+$28*3
|
|
// [53] *(SSCREEN+++$28*3) = testSignedVals::sbc1 -- _deref_pbsc1=vbsc2
|
|
lda #sbc1
|
|
sta SSCREEN+$28*3+1
|
|
// [54] *(SSCREEN+++++$28*3) = testSignedVals::sbv1 -- _deref_pbsc1=vbsz1
|
|
lda.z sbv1
|
|
sta SSCREEN+$28*3+1+1
|
|
// [55] *(SSCREEN+++++++$28*3) = -$46+-$32 -- _deref_pbsc1=vbsc2
|
|
lda #-$46+-$32
|
|
sta SSCREEN+$28*3+1+1+1
|
|
// [56] *(SSCREEN+++++++++$28*3) = testSignedVals::sbc1+-$78 -- _deref_pbsc1=vbsc2
|
|
lda #sbc1+-$78
|
|
sta SSCREEN+$28*3+1+1+1+1
|
|
// [57] *(SSCREEN+++++++++++$28*3) = -$78+testSignedVals::sbc1 -- _deref_pbsc1=vbsc2
|
|
lda #-$78+sbc1
|
|
sta SSCREEN+$28*3+1+1+1+1+1
|
|
// [58] testSignedVals::$2 = testSignedVals::sbv1 + -$78 -- vbsxx=vbsz1_plus_vbsc1
|
|
lax.z sbv1
|
|
axs #-[-$78]
|
|
// [59] *(SSCREEN+++++++++++++$28*3) = testSignedVals::$2 -- _deref_pbsc1=vbsxx
|
|
stx SSCREEN+$28*3+1+1+1+1+1+1
|
|
// [60] testSignedVals::$3 = -$78 + testSignedVals::sbv1 -- vbsxx=vbsc1_plus_vbsz1
|
|
lax.z sbv1
|
|
axs #-[-$78]
|
|
// [61] *(SSCREEN+++++++++++++++$28*3) = testSignedVals::$3 -- _deref_pbsc1=vbsxx
|
|
stx SSCREEN+$28*3+1+1+1+1+1+1+1
|
|
// [62] testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1 -- vbsaa=vbsz1_plus_vbsc1
|
|
lda #sbc1
|
|
clc
|
|
adc.z sbv1
|
|
// [63] *(SSCREEN+++++++++++++++++$28*3) = testSignedVals::$4 -- _deref_pbsc1=vbsaa
|
|
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1
|
|
// [64] testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1 -- vbsaa=vbsc1_plus_vbsz1
|
|
lda #sbc1
|
|
clc
|
|
adc.z sbv1
|
|
// [65] *(SSCREEN+++++++++++++++++++$28*3) = testSignedVals::$5 -- _deref_pbsc1=vbsaa
|
|
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1+1
|
|
// [66] testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1 -- vbsaa=vbsz1_plus_vbsz1
|
|
lda.z sbv1
|
|
asl
|
|
// [67] *(SSCREEN+++++++++++++++++++++$28*3) = testSignedVals::$6 -- _deref_pbsc1=vbsaa
|
|
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1+1+1
|
|
jmp __breturn
|
|
// testSignedVals::@return
|
|
__breturn:
|
|
// [68] return
|
|
rts
|
|
}
|
|
// File Data
|
|
|
|
ASSEMBLER OPTIMIZATIONS
|
|
Removing instruction jmp __b1
|
|
Removing instruction jmp __b2
|
|
Removing instruction jmp __b3
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Removing instruction jmp __breturn
|
|
Succesful ASM optimization Pass5NextJumpElimination
|
|
Removing instruction lda #TYPEID_BYTE
|
|
Removing instruction lda #TYPEID_BYTE
|
|
Removing instruction lda #TYPEID_BYTE
|
|
Removing instruction lda #TYPEID_BYTE
|
|
Removing instruction lda #TYPEID_BYTE
|
|
Removing instruction lda #TYPEID_BYTE
|
|
Removing instruction lda #TYPEID_BYTE
|
|
Removing instruction lda #$fa
|
|
Removing instruction lda #TYPEID_SIGNED_BYTE
|
|
Removing instruction lda #TYPEID_SIGNED_BYTE
|
|
Removing instruction lda #TYPEID_SIGNED_BYTE
|
|
Removing instruction lda #TYPEID_SIGNED_BYTE
|
|
Removing instruction lda #TYPEID_SIGNED_BYTE
|
|
Removing instruction lda #TYPEID_SIGNED_BYTE
|
|
Removing instruction lda #TYPEID_SIGNED_BYTE
|
|
Removing instruction lda #-$78
|
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
Removing instruction __b1_from_main:
|
|
Removing instruction __b2_from___b1:
|
|
Removing instruction __b3_from___b2:
|
|
Succesful ASM optimization Pass5RedundantLabelElimination
|
|
Removing instruction __b1:
|
|
Removing instruction __b2:
|
|
Removing instruction __b3:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Removing instruction __breturn:
|
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
|
|
|
FINAL SYMBOL TABLE
|
|
constant byte* const SCREEN = (byte*) 1024
|
|
constant signed byte* const SSCREEN = (signed byte*) 1024
|
|
constant byte TYPEID_BYTE = 1
|
|
constant byte TYPEID_SIGNED_BYTE = 2
|
|
byte idx
|
|
void main()
|
|
void testSigned()
|
|
void testSignedVals()
|
|
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
|
|
constant signed byte testSignedVals::sbc1 = -$78
|
|
volatile signed byte testSignedVals::sbv1 loadstore zp[1]:3 5.866666666666666
|
|
void testUnsigned()
|
|
void testUnsignedVals()
|
|
byte~ testUnsignedVals::$2 reg byte x 22.0
|
|
byte~ testUnsignedVals::$3 reg byte x 22.0
|
|
byte~ testUnsignedVals::$4 reg byte a 22.0
|
|
byte~ testUnsignedVals::$5 reg byte a 22.0
|
|
byte~ testUnsignedVals::$6 reg byte a 22.0
|
|
constant byte testUnsignedVals::ubc1 = $fa
|
|
volatile byte testUnsignedVals::ubv1 loadstore zp[1]:2 5.866666666666666
|
|
|
|
zp[1]:2 [ testUnsignedVals::ubv1 ]
|
|
reg byte x [ testUnsignedVals::$2 ]
|
|
reg byte x [ testUnsignedVals::$3 ]
|
|
reg byte a [ testUnsignedVals::$4 ]
|
|
reg byte a [ testUnsignedVals::$5 ]
|
|
reg byte a [ testUnsignedVals::$6 ]
|
|
zp[1]:3 [ testSignedVals::sbv1 ]
|
|
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: 336
|
|
|
|
// File Comments
|
|
// Test that plus creates the expected type for all legal combinations of bytes (signed/unsigned - constant/variable)
|
|
// Upstart
|
|
// Commodore 64 PRG executable file
|
|
.file [name="typeid-plus-bytes.prg", type="prg", segments="Program"]
|
|
.segmentdef Program [segments="Basic, Code, Data"]
|
|
.segmentdef Basic [start=$0801]
|
|
.segmentdef Code [start=$80d]
|
|
.segmentdef Data [startAfter="Code"]
|
|
.segment Basic
|
|
:BasicUpstart(main)
|
|
// Global Constants & labels
|
|
.const TYPEID_BYTE = 1
|
|
.const TYPEID_SIGNED_BYTE = 2
|
|
.label SCREEN = $400
|
|
.label SSCREEN = $400
|
|
.segment Code
|
|
// main
|
|
main: {
|
|
// testUnsigned()
|
|
// [1] call testUnsigned
|
|
jsr testUnsigned
|
|
// [2] phi from main to main::@1 [phi:main->main::@1]
|
|
// main::@1
|
|
// testUnsignedVals()
|
|
// [3] call testUnsignedVals
|
|
jsr testUnsignedVals
|
|
// [4] phi from main::@1 to main::@2 [phi:main::@1->main::@2]
|
|
// main::@2
|
|
// testSigned()
|
|
// [5] call testSigned
|
|
jsr testSigned
|
|
// [6] phi from main::@2 to main::@3 [phi:main::@2->main::@3]
|
|
// main::@3
|
|
// testSignedVals()
|
|
// [7] call testSignedVals
|
|
jsr testSignedVals
|
|
// main::@return
|
|
// }
|
|
// [8] return
|
|
rts
|
|
}
|
|
// testUnsigned
|
|
testUnsigned: {
|
|
// SCREEN[idx++] = typeid(250)
|
|
// [9] *SCREEN = 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SCREEN
|
|
// SCREEN[idx++] = typeid(ubc1)
|
|
// [10] *(SCREEN+1) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+1
|
|
// SCREEN[idx++] = typeid(ubv1)
|
|
// [11] *(SCREEN+2) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+2
|
|
// SCREEN[idx++] = typeid(120+130)
|
|
// [12] *(SCREEN+3) = 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SCREEN+3
|
|
// SCREEN[idx++] = typeid(ubc1+250)
|
|
// [13] *(SCREEN+4) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_BYTE
|
|
sta SCREEN+4
|
|
// SCREEN[idx++] = typeid(250+ubc1)
|
|
// [14] *(SCREEN+5) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+5
|
|
// SCREEN[idx++] = typeid(ubv1+250)
|
|
// [15] *(SCREEN+6) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+6
|
|
// SCREEN[idx++] = typeid(250+ubv1)
|
|
// [16] *(SCREEN+7) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+7
|
|
// SCREEN[idx++] = typeid(ubv1+ubc1)
|
|
// [17] *(SCREEN+8) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+8
|
|
// SCREEN[idx++] = typeid(ubc1+ubv1)
|
|
// [18] *(SCREEN+9) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+9
|
|
// SCREEN[idx++] = typeid(ubv1+ubv1)
|
|
// [19] *(SCREEN+$a) = TYPEID_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+$a
|
|
// testUnsigned::@return
|
|
// }
|
|
// [20] return
|
|
rts
|
|
}
|
|
// testUnsignedVals
|
|
testUnsignedVals: {
|
|
.const ubc1 = $fa
|
|
.label ubv1 = 2
|
|
// volatile unsigned byte ubv1 = 250
|
|
// [21] testUnsignedVals::ubv1 = $fa -- vbuz1=vbuc1
|
|
lda #$fa
|
|
sta.z ubv1
|
|
// SCREEN[idx++] = 250
|
|
// [22] *(SCREEN+$28) = $fa -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+$28
|
|
// SCREEN[idx++] = ubc1
|
|
// [23] *(SCREEN+$29) = testUnsignedVals::ubc1 -- _deref_pbuc1=vbuc2
|
|
lda #ubc1
|
|
sta SCREEN+$29
|
|
// SCREEN[idx++] = ubv1
|
|
// [24] *(SCREEN+$2a) = testUnsignedVals::ubv1 -- _deref_pbuc1=vbuz1
|
|
lda.z ubv1
|
|
sta SCREEN+$2a
|
|
// SCREEN[idx++] = 120+130
|
|
// [25] *(SCREEN+$2b) = $78+$82 -- _deref_pbuc1=vbuc2
|
|
lda #$78+$82
|
|
sta SCREEN+$2b
|
|
// SCREEN[idx++] = ubc1+250
|
|
// [26] *(SCREEN+$2c) = testUnsignedVals::ubc1+$fa -- _deref_pbuc1=vbuc2
|
|
lda #ubc1+$fa
|
|
sta SCREEN+$2c
|
|
// SCREEN[idx++] = 250+ubc1
|
|
// [27] *(SCREEN+$2d) = $fa+testUnsignedVals::ubc1 -- _deref_pbuc1=vbuc2
|
|
lda #$fa+ubc1
|
|
sta SCREEN+$2d
|
|
// ubv1+250
|
|
// [28] testUnsignedVals::$2 = testUnsignedVals::ubv1 + $fa -- vbuxx=vbuz1_plus_vbuc1
|
|
lax.z ubv1
|
|
axs #-[$fa]
|
|
// SCREEN[idx++] = ubv1+250
|
|
// [29] *(SCREEN+$2e) = testUnsignedVals::$2 -- _deref_pbuc1=vbuxx
|
|
stx SCREEN+$2e
|
|
// 250+ubv1
|
|
// [30] testUnsignedVals::$3 = $fa + testUnsignedVals::ubv1 -- vbuxx=vbuc1_plus_vbuz1
|
|
lax.z ubv1
|
|
axs #-[$fa]
|
|
// SCREEN[idx++] = 250+ubv1
|
|
// [31] *(SCREEN+$2f) = testUnsignedVals::$3 -- _deref_pbuc1=vbuxx
|
|
stx SCREEN+$2f
|
|
// ubv1+ubc1
|
|
// [32] testUnsignedVals::$4 = testUnsignedVals::ubv1 + testUnsignedVals::ubc1 -- vbuaa=vbuz1_plus_vbuc1
|
|
lda #ubc1
|
|
clc
|
|
adc.z ubv1
|
|
// SCREEN[idx++] = ubv1+ubc1
|
|
// [33] *(SCREEN+$30) = testUnsignedVals::$4 -- _deref_pbuc1=vbuaa
|
|
sta SCREEN+$30
|
|
// ubc1+ubv1
|
|
// [34] testUnsignedVals::$5 = testUnsignedVals::ubc1 + testUnsignedVals::ubv1 -- vbuaa=vbuc1_plus_vbuz1
|
|
lda #ubc1
|
|
clc
|
|
adc.z ubv1
|
|
// SCREEN[idx++] = ubc1+ubv1
|
|
// [35] *(SCREEN+$31) = testUnsignedVals::$5 -- _deref_pbuc1=vbuaa
|
|
sta SCREEN+$31
|
|
// ubv1+ubv1
|
|
// [36] testUnsignedVals::$6 = testUnsignedVals::ubv1 + testUnsignedVals::ubv1 -- vbuaa=vbuz1_plus_vbuz1
|
|
lda.z ubv1
|
|
asl
|
|
// SCREEN[idx++] = ubv1+ubv1
|
|
// [37] *(SCREEN+$32) = testUnsignedVals::$6 -- _deref_pbuc1=vbuaa
|
|
sta SCREEN+$32
|
|
// testUnsignedVals::@return
|
|
// }
|
|
// [38] return
|
|
rts
|
|
}
|
|
// testSigned
|
|
testSigned: {
|
|
// SCREEN[idx++] = typeid(-120)
|
|
// [39] *(SCREEN+$28*2) = 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SCREEN+$28*2
|
|
// SCREEN[idx++] = typeid(sbc1)
|
|
// [40] *(SCREEN+++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1
|
|
// SCREEN[idx++] = typeid(sbv1)
|
|
// [41] *(SCREEN+++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+$28*2+1+1
|
|
// SCREEN[idx++] = typeid(-120+-130)
|
|
// [42] *(SCREEN+++++++$28*2) = 0 -- _deref_pbuc1=vbuc2
|
|
lda #0
|
|
sta SCREEN+$28*2+1+1+1
|
|
// SCREEN[idx++] = typeid(sbc1+-120)
|
|
// [43] *(SCREEN+++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
lda #TYPEID_SIGNED_BYTE
|
|
sta SCREEN+$28*2+1+1+1+1
|
|
// SCREEN[idx++] = typeid(-120+sbc1)
|
|
// [44] *(SCREEN+++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+$28*2+1+1+1+1+1
|
|
// SCREEN[idx++] = typeid(sbv1+-120)
|
|
// [45] *(SCREEN+++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+$28*2+1+1+1+1+1+1
|
|
// SCREEN[idx++] = typeid(-120+sbv1)
|
|
// [46] *(SCREEN+++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+$28*2+1+1+1+1+1+1+1
|
|
// SCREEN[idx++] = typeid(sbv1+sbc1)
|
|
// [47] *(SCREEN+++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+$28*2+1+1+1+1+1+1+1+1
|
|
// SCREEN[idx++] = typeid(sbc1+sbv1)
|
|
// [48] *(SCREEN+++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+$28*2+1+1+1+1+1+1+1+1+1
|
|
// SCREEN[idx++] = typeid(sbv1+sbv1)
|
|
// [49] *(SCREEN+++++++++++++++++++++$28*2) = TYPEID_SIGNED_BYTE -- _deref_pbuc1=vbuc2
|
|
sta SCREEN+$28*2+1+1+1+1+1+1+1+1+1+1
|
|
// testSigned::@return
|
|
// }
|
|
// [50] return
|
|
rts
|
|
}
|
|
// testSignedVals
|
|
testSignedVals: {
|
|
.const sbc1 = -$78
|
|
.label sbv1 = 3
|
|
// volatile signed byte sbv1 = -120
|
|
// [51] testSignedVals::sbv1 = -$78 -- vbsz1=vbsc1
|
|
lda #-$78
|
|
sta.z sbv1
|
|
// SSCREEN[idx++] = (-120)
|
|
// [52] *(SSCREEN+$28*3) = -$78 -- _deref_pbsc1=vbsc2
|
|
sta SSCREEN+$28*3
|
|
// SSCREEN[idx++] = (sbc1)
|
|
// [53] *(SSCREEN+++$28*3) = testSignedVals::sbc1 -- _deref_pbsc1=vbsc2
|
|
lda #sbc1
|
|
sta SSCREEN+$28*3+1
|
|
// SSCREEN[idx++] = (sbv1)
|
|
// [54] *(SSCREEN+++++$28*3) = testSignedVals::sbv1 -- _deref_pbsc1=vbsz1
|
|
lda.z sbv1
|
|
sta SSCREEN+$28*3+1+1
|
|
// SSCREEN[idx++] = (-70+-50)
|
|
// [55] *(SSCREEN+++++++$28*3) = -$46+-$32 -- _deref_pbsc1=vbsc2
|
|
lda #-$46+-$32
|
|
sta SSCREEN+$28*3+1+1+1
|
|
// SSCREEN[idx++] = (sbc1+-120)
|
|
// [56] *(SSCREEN+++++++++$28*3) = testSignedVals::sbc1+-$78 -- _deref_pbsc1=vbsc2
|
|
lda #sbc1+-$78
|
|
sta SSCREEN+$28*3+1+1+1+1
|
|
// SSCREEN[idx++] = (-120+sbc1)
|
|
// [57] *(SSCREEN+++++++++++$28*3) = -$78+testSignedVals::sbc1 -- _deref_pbsc1=vbsc2
|
|
lda #-$78+sbc1
|
|
sta SSCREEN+$28*3+1+1+1+1+1
|
|
// sbv1+-120
|
|
// [58] testSignedVals::$2 = testSignedVals::sbv1 + -$78 -- vbsxx=vbsz1_plus_vbsc1
|
|
lax.z sbv1
|
|
axs #-[-$78]
|
|
// SSCREEN[idx++] = (sbv1+-120)
|
|
// [59] *(SSCREEN+++++++++++++$28*3) = testSignedVals::$2 -- _deref_pbsc1=vbsxx
|
|
stx SSCREEN+$28*3+1+1+1+1+1+1
|
|
// -120+sbv1
|
|
// [60] testSignedVals::$3 = -$78 + testSignedVals::sbv1 -- vbsxx=vbsc1_plus_vbsz1
|
|
lax.z sbv1
|
|
axs #-[-$78]
|
|
// SSCREEN[idx++] = (-120+sbv1)
|
|
// [61] *(SSCREEN+++++++++++++++$28*3) = testSignedVals::$3 -- _deref_pbsc1=vbsxx
|
|
stx SSCREEN+$28*3+1+1+1+1+1+1+1
|
|
// sbv1+sbc1
|
|
// [62] testSignedVals::$4 = testSignedVals::sbv1 + testSignedVals::sbc1 -- vbsaa=vbsz1_plus_vbsc1
|
|
lda #sbc1
|
|
clc
|
|
adc.z sbv1
|
|
// SSCREEN[idx++] = (sbv1+sbc1)
|
|
// [63] *(SSCREEN+++++++++++++++++$28*3) = testSignedVals::$4 -- _deref_pbsc1=vbsaa
|
|
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1
|
|
// sbc1+sbv1
|
|
// [64] testSignedVals::$5 = testSignedVals::sbc1 + testSignedVals::sbv1 -- vbsaa=vbsc1_plus_vbsz1
|
|
lda #sbc1
|
|
clc
|
|
adc.z sbv1
|
|
// SSCREEN[idx++] = (sbc1+sbv1)
|
|
// [65] *(SSCREEN+++++++++++++++++++$28*3) = testSignedVals::$5 -- _deref_pbsc1=vbsaa
|
|
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1+1
|
|
// sbv1+sbv1
|
|
// [66] testSignedVals::$6 = testSignedVals::sbv1 + testSignedVals::sbv1 -- vbsaa=vbsz1_plus_vbsz1
|
|
lda.z sbv1
|
|
asl
|
|
// SSCREEN[idx++] = (sbv1+sbv1)
|
|
// [67] *(SSCREEN+++++++++++++++++++++$28*3) = testSignedVals::$6 -- _deref_pbsc1=vbsaa
|
|
sta SSCREEN+$28*3+1+1+1+1+1+1+1+1+1+1
|
|
// testSignedVals::@return
|
|
// }
|
|
// [68] return
|
|
rts
|
|
}
|
|
// File Data
|
|
|