1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-06-29 09:29:31 +00:00
kickc/src/test/ref/min-fmul-16.cfg

155 lines
7.2 KiB
INI

void main()
main: scope:[main] from
[0] phi()
[1] call mulf_init
to:main::@4
main::@4: scope:[main] from main
asm { sei }
to:main::@1
main::@1: scope:[main] from main::@4 main::@5
[3] print_char_cursor#15 = phi( main::@4/(char *) 1024, main::@5/SCREEN )
to:main::@2
main::@2: scope:[main] from main::@1 main::@2
[4] if(*RASTER!=$ff) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@2
[5] *BORDER_COLOR = ++ *BORDER_COLOR
[6] call mulf16u
[7] mulf16u::return#0 = mulf16u::return#1
to:main::@5
main::@5: scope:[main] from main::@3
[8] main::r#0 = mulf16u::return#0
[9] *BORDER_COLOR = -- *BORDER_COLOR
[10] print_ulong::dw#0 = main::r#0
[11] call print_ulong
to:main::@1
void mulf_init()
mulf_init: scope:[mulf_init] from main
[12] phi()
to:mulf_init::@1
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@3
[13] mulf_init::x_2#3 = phi( mulf_init/0, mulf_init::@3/mulf_init::x_2#2 )
[13] mulf_init::sqr1_hi#2 = phi( mulf_init/mulf_sqr1_hi+1, mulf_init::@3/mulf_init::sqr1_hi#1 )
[13] mulf_init::sqr#4 = phi( mulf_init/0, mulf_init::@3/mulf_init::sqr#1 )
[13] mulf_init::c#2 = phi( mulf_init/0, mulf_init::@3/mulf_init::c#1 )
[13] mulf_init::sqr1_lo#2 = phi( mulf_init/mulf_sqr1_lo+1, mulf_init::@3/mulf_init::sqr1_lo#1 )
[14] if(mulf_init::sqr1_lo#2!=mulf_sqr1_lo+$200) goto mulf_init::@2
to:mulf_init::@5
mulf_init::@5: scope:[mulf_init] from mulf_init::@1 mulf_init::@8
[15] mulf_init::dir#2 = phi( mulf_init::@1/$ff, mulf_init::@8/mulf_init::dir#4 )
[15] mulf_init::sqr2_hi#2 = phi( mulf_init::@1/mulf_sqr2_hi, mulf_init::@8/mulf_init::sqr2_hi#1 )
[15] mulf_init::x_255#2 = phi( mulf_init::@1/-1, mulf_init::@8/mulf_init::x_255#1 )
[15] mulf_init::sqr2_lo#2 = phi( mulf_init::@1/mulf_sqr2_lo, mulf_init::@8/mulf_init::sqr2_lo#1 )
[16] if(mulf_init::sqr2_lo#2!=mulf_sqr2_lo+$1ff) goto mulf_init::@6
to:mulf_init::@7
mulf_init::@7: scope:[mulf_init] from mulf_init::@5
[17] *(mulf_sqr2_lo+$1ff) = *(mulf_sqr1_lo+$100)
[18] *(mulf_sqr2_hi+$1ff) = *(mulf_sqr1_hi+$100)
to:mulf_init::@return
mulf_init::@return: scope:[mulf_init] from mulf_init::@7
[19] return
to:@return
mulf_init::@6: scope:[mulf_init] from mulf_init::@5
[20] *mulf_init::sqr2_lo#2 = mulf_sqr1_lo[mulf_init::x_255#2]
[21] *mulf_init::sqr2_hi#2 = mulf_sqr1_hi[mulf_init::x_255#2]
[22] mulf_init::sqr2_hi#1 = ++ mulf_init::sqr2_hi#2
[23] mulf_init::x_255#1 = mulf_init::x_255#2 + mulf_init::dir#2
[24] if(mulf_init::x_255#1!=0) goto mulf_init::@9
to:mulf_init::@8
mulf_init::@9: scope:[mulf_init] from mulf_init::@6
[25] phi()
to:mulf_init::@8
mulf_init::@8: scope:[mulf_init] from mulf_init::@6 mulf_init::@9
[26] mulf_init::dir#4 = phi( mulf_init::@6/1, mulf_init::@9/mulf_init::dir#2 )
[27] mulf_init::sqr2_lo#1 = ++ mulf_init::sqr2_lo#2
to:mulf_init::@5
mulf_init::@2: scope:[mulf_init] from mulf_init::@1
[28] mulf_init::c#1 = ++ mulf_init::c#2
[29] mulf_init::$1 = mulf_init::c#1 & 1
[30] if(mulf_init::$1!=0) goto mulf_init::@3
to:mulf_init::@4
mulf_init::@4: scope:[mulf_init] from mulf_init::@2
[31] mulf_init::x_2#1 = ++ mulf_init::x_2#3
[32] mulf_init::sqr#2 = ++ mulf_init::sqr#4
to:mulf_init::@3
mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4
[33] mulf_init::x_2#2 = phi( mulf_init::@2/mulf_init::x_2#3, mulf_init::@4/mulf_init::x_2#1 )
[33] mulf_init::sqr#3 = phi( mulf_init::@2/mulf_init::sqr#4, mulf_init::@4/mulf_init::sqr#2 )
[34] mulf_init::$4 = byte0 mulf_init::sqr#3
[35] *mulf_init::sqr1_lo#2 = mulf_init::$4
[36] mulf_init::$5 = byte1 mulf_init::sqr#3
[37] *mulf_init::sqr1_hi#2 = mulf_init::$5
[38] mulf_init::sqr1_hi#1 = ++ mulf_init::sqr1_hi#2
[39] mulf_init::sqr#1 = mulf_init::sqr#3 + mulf_init::x_2#2
[40] mulf_init::sqr1_lo#1 = ++ mulf_init::sqr1_lo#2
to:mulf_init::@1
unsigned long mulf16u(unsigned int a , unsigned int b)
mulf16u: scope:[mulf16u] from main::@3
[41] *mulf16u::memA = main::a
[42] *mulf16u::memB = main::b
asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: }
[44] mulf16u::return#1 = *mulf16u::memR
to:mulf16u::@return
mulf16u::@return: scope:[mulf16u] from mulf16u
[45] return
to:@return
void print_ulong(unsigned long dw)
print_ulong: scope:[print_ulong] from main::@5
[46] print_uint::w#0 = word1 print_ulong::dw#0
[47] call print_uint
to:print_ulong::@1
print_ulong::@1: scope:[print_ulong] from print_ulong
[48] print_uint::w#1 = word0 print_ulong::dw#0
[49] call print_uint
to:print_ulong::@return
print_ulong::@return: scope:[print_ulong] from print_ulong::@1
[50] return
to:@return
void print_uint(unsigned int w)
print_uint: scope:[print_uint] from print_ulong print_ulong::@1
[51] print_char_cursor#36 = phi( print_ulong/print_char_cursor#15, print_ulong::@1/print_char_cursor#10 )
[51] print_uint::w#2 = phi( print_ulong/print_uint::w#0, print_ulong::@1/print_uint::w#1 )
[52] print_uchar::b#0 = byte1 print_uint::w#2
[53] call print_uchar
to:print_uint::@1
print_uint::@1: scope:[print_uint] from print_uint
[54] print_uchar::b#1 = byte0 print_uint::w#2
[55] call print_uchar
to:print_uint::@return
print_uint::@return: scope:[print_uint] from print_uint::@1
[56] return
to:@return
void print_uchar(char b)
print_uchar: scope:[print_uchar] from print_uint print_uint::@1
[57] print_char_cursor#38 = phi( print_uint/print_char_cursor#36, print_uint::@1/print_char_cursor#10 )
[57] print_uchar::b#2 = phi( print_uint/print_uchar::b#0, print_uint::@1/print_uchar::b#1 )
[58] print_uchar::$0 = print_uchar::b#2 >> 4
[59] print_char::ch#0 = print_hextab[print_uchar::$0]
[60] call print_char
to:print_uchar::@1
print_uchar::@1: scope:[print_uchar] from print_uchar
[61] print_uchar::$2 = print_uchar::b#2 & $f
[62] print_char::ch#1 = print_hextab[print_uchar::$2]
[63] call print_char
to:print_uchar::@return
print_uchar::@return: scope:[print_uchar] from print_uchar::@1
[64] return
to:@return
void print_char(char ch)
print_char: scope:[print_char] from print_uchar print_uchar::@1
[65] print_char_cursor#28 = phi( print_uchar/print_char_cursor#38, print_uchar::@1/print_char_cursor#10 )
[65] print_char::ch#2 = phi( print_uchar/print_char::ch#0, print_uchar::@1/print_char::ch#1 )
[66] *print_char_cursor#28 = print_char::ch#2
[67] print_char_cursor#10 = ++ print_char_cursor#28
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
[68] return
to:@return