1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-12 09:05:36 +00:00
kickc/src/test/ref/sinusgen16b.cfg

423 lines
25 KiB
INI
Raw Normal View History

@begin: scope:[] from
2018-11-11 20:51:36 +00:00
[0] phi()
to:@42
@42: scope:[] from @begin
2018-11-11 20:51:36 +00:00
[1] phi()
[2] call main
to:@end
@end: scope:[] from @42
2018-11-11 20:51:36 +00:00
[3] phi()
main: scope:[main] from @42
2018-11-11 20:51:36 +00:00
[4] phi()
[5] call sin16s_gen
to:main::@5
main::@5: scope:[main] from main
2018-11-11 20:51:36 +00:00
[6] phi()
[7] call sin16s_genb
to:main::@6
main::@6: scope:[main] from main::@5
2018-11-11 20:51:36 +00:00
[8] phi()
[9] call print_cls
to:main::@1
main::@1: scope:[main] from main::@6 main::@9
2018-11-11 20:51:36 +00:00
[10] (byte) main::i#2 ← phi( main::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@9/(byte) main::i#1 )
[10] (byte*) print_char_cursor#49 ← phi( main::@6/(const byte*) print_line_cursor#0 main::@9/(byte*) print_char_cursor#2 )
[10] (signed word*) main::st2#2 ← phi( main::@6/(const signed word[$78]) main::sintab2#0 main::@9/(signed word*) main::st2#1 )
[10] (signed word*) main::st1#2 ← phi( main::@6/(const signed word[$78]) main::sintab1#0 main::@9/(signed word*) main::st1#1 )
2018-11-11 20:51:36 +00:00
[11] (signed word) main::sw#0 ← *((signed word*) main::st1#2) - *((signed word*) main::st2#2)
[12] if((signed word) main::sw#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2
to:main::@3
main::@3: scope:[main] from main::@1
2018-11-11 20:51:36 +00:00
[13] phi()
[14] call print_str
to:main::@2
main::@2: scope:[main] from main::@1 main::@3
2018-11-11 20:51:36 +00:00
[15] (byte*) print_char_cursor#48 ← phi( main::@1/(byte*) print_char_cursor#49 main::@3/(byte*) print_char_cursor#2 )
[16] (signed word) print_sword::w#1 ← (signed word) main::sw#0
[17] call print_sword
to:main::@8
main::@8: scope:[main] from main::@2
2018-11-11 20:51:36 +00:00
[18] phi()
[19] call print_str
to:main::@9
main::@9: scope:[main] from main::@8
2018-11-11 20:51:36 +00:00
[20] (signed word*) main::st1#1 ← (signed word*) main::st1#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
[21] (signed word*) main::st2#1 ← (signed word*) main::st2#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
[22] (byte) main::i#1 ← ++ (byte) main::i#2
[23] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $78) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@9
2018-11-11 20:51:36 +00:00
[24] return
to:@return
print_str: scope:[print_str] from main::@3 main::@8
2018-11-11 20:51:36 +00:00
[25] (byte*) print_char_cursor#51 ← phi( main::@3/(byte*) print_char_cursor#49 main::@8/(byte*) print_char_cursor#12 )
[25] (byte*) print_str::str#5 ← phi( main::@3/(const string) main::str1 main::@8/(const string) main::str )
to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2
2018-11-11 20:51:36 +00:00
[26] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#51 print_str::@2/(byte*) print_char_cursor#1 )
[26] (byte*) print_str::str#3 ← phi( print_str/(byte*) print_str::str#5 print_str::@2/(byte*) print_str::str#0 )
[27] if(*((byte*) print_str::str#3)!=(byte) '@') goto print_str::@2
to:print_str::@return
print_str::@return: scope:[print_str] from print_str::@1
2018-11-11 20:51:36 +00:00
[28] return
to:@return
print_str::@2: scope:[print_str] from print_str::@1
2018-11-11 20:51:36 +00:00
[29] *((byte*) print_char_cursor#2) ← *((byte*) print_str::str#3)
[30] (byte*) print_char_cursor#1 ← ++ (byte*) print_char_cursor#2
[31] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#3
to:print_str::@1
print_sword: scope:[print_sword] from main::@2
2018-11-11 20:51:36 +00:00
[32] if((signed word) print_sword::w#1>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto print_sword::@1
to:print_sword::@2
print_sword::@2: scope:[print_sword] from print_sword
2018-11-11 20:51:36 +00:00
[33] phi()
[34] call print_char
to:print_sword::@4
print_sword::@4: scope:[print_sword] from print_sword::@2
2018-11-11 20:51:36 +00:00
[35] (signed word) print_sword::w#0 ← - (signed word) print_sword::w#1
to:print_sword::@1
print_sword::@1: scope:[print_sword] from print_sword print_sword::@4
2018-11-11 20:51:36 +00:00
[36] (byte*) print_char_cursor#43 ← phi( print_sword/(byte*) print_char_cursor#48 print_sword::@4/(byte*) print_char_cursor#12 )
[36] (signed word) print_sword::w#3 ← phi( print_sword/(signed word) print_sword::w#1 print_sword::@4/(signed word) print_sword::w#0 )
[37] call print_word
to:print_sword::@return
print_sword::@return: scope:[print_sword] from print_sword::@1
2018-11-11 20:51:36 +00:00
[38] return
to:@return
print_word: scope:[print_word] from print_sword::@1
2018-11-11 20:51:36 +00:00
[39] (byte) print_byte::b#0 ← > (word)(signed word) print_sword::w#3
[40] call print_byte
to:print_word::@1
print_word::@1: scope:[print_word] from print_word
2018-11-11 20:51:36 +00:00
[41] (byte) print_byte::b#1 ← < (word)(signed word) print_sword::w#3
[42] call print_byte
to:print_word::@return
print_word::@return: scope:[print_word] from print_word::@1
2018-11-11 20:51:36 +00:00
[43] return
to:@return
print_byte: scope:[print_byte] from print_word print_word::@1
2018-11-11 20:51:36 +00:00
[44] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 )
[44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
[45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4
[46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
[47] call print_char
to:print_byte::@1
print_byte::@1: scope:[print_byte] from print_byte
[48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) $f
2018-11-11 20:51:36 +00:00
[49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
[50] call print_char
to:print_byte::@return
print_byte::@return: scope:[print_byte] from print_byte::@1
2018-11-11 20:51:36 +00:00
[51] return
to:@return
print_char: scope:[print_char] from print_byte print_byte::@1 print_sword::@2
2018-11-11 20:51:36 +00:00
[52] (byte*) print_char_cursor#33 ← phi( print_byte/(byte*) print_char_cursor#46 print_byte::@1/(byte*) print_char_cursor#12 print_sword::@2/(byte*) print_char_cursor#48 )
[52] (byte) print_char::ch#3 ← phi( print_byte/(byte) print_char::ch#1 print_byte::@1/(byte) print_char::ch#2 print_sword::@2/(byte) '-' )
[53] *((byte*) print_char_cursor#33) ← (byte) print_char::ch#3
[54] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#33
to:print_char::@return
print_char::@return: scope:[print_char] from print_char
2018-11-11 20:51:36 +00:00
[55] return
to:@return
print_cls: scope:[print_cls] from main::@6
2018-11-11 20:51:36 +00:00
[56] phi()
to:print_cls::@1
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
2018-11-11 20:51:36 +00:00
[57] (byte*) print_cls::sc#2 ← phi( print_cls/(const byte*) print_line_cursor#0 print_cls::@1/(byte*) print_cls::sc#1 )
[58] *((byte*) print_cls::sc#2) ← (byte) ' '
[59] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
[60] if((byte*) print_cls::sc#1!=(const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) $3e8) goto print_cls::@1
to:print_cls::@return
print_cls::@return: scope:[print_cls] from print_cls::@1
2018-11-11 20:51:36 +00:00
[61] return
to:@return
sin16s_genb: scope:[sin16s_genb] from main::@5
2018-11-11 20:51:36 +00:00
[62] phi()
[63] call div32u16u
[64] (dword) div32u16u::return#3 ← (dword) div32u16u::return#0
to:sin16s_genb::@3
sin16s_genb::@3: scope:[sin16s_genb] from sin16s_genb
2018-11-11 20:51:36 +00:00
[65] (dword) sin16s_genb::step#0 ← (dword) div32u16u::return#3
to:sin16s_genb::@1
sin16s_genb::@1: scope:[sin16s_genb] from sin16s_genb::@3 sin16s_genb::@4
2018-11-11 20:51:36 +00:00
[66] (word) sin16s_genb::i#2 ← phi( sin16s_genb::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_genb::@4/(word) sin16s_genb::i#1 )
[66] (signed word*) sin16s_genb::sintab#2 ← phi( sin16s_genb::@3/(const signed word[$78]) main::sintab2#0 sin16s_genb::@4/(signed word*) sin16s_genb::sintab#0 )
2018-11-11 20:51:36 +00:00
[66] (dword) sin16s_genb::x#2 ← phi( sin16s_genb::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_genb::@4/(dword) sin16s_genb::x#1 )
[67] (word) sin16sb::x#0 ← > (dword) sin16s_genb::x#2
[68] call sin16sb
[69] (signed word) sin16sb::return#0 ← (signed word) sin16sb::return#1
to:sin16s_genb::@4
sin16s_genb::@4: scope:[sin16s_genb] from sin16s_genb::@1
2018-11-11 20:51:36 +00:00
[70] (signed word~) sin16s_genb::$2 ← (signed word) sin16sb::return#0
[71] *((signed word*) sin16s_genb::sintab#2) ← (signed word~) sin16s_genb::$2
[72] (signed word*) sin16s_genb::sintab#0 ← (signed word*) sin16s_genb::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
[73] (dword) sin16s_genb::x#1 ← (dword) sin16s_genb::x#2 + (dword) sin16s_genb::step#0
[74] (word) sin16s_genb::i#1 ← ++ (word) sin16s_genb::i#2
[75] if((word) sin16s_genb::i#1<(const word) main::wavelength#0) goto sin16s_genb::@1
to:sin16s_genb::@return
sin16s_genb::@return: scope:[sin16s_genb] from sin16s_genb::@4
2018-11-11 20:51:36 +00:00
[76] return
to:@return
sin16sb: scope:[sin16sb] from sin16s_genb::@1
2018-11-11 20:51:36 +00:00
[77] if((word) sin16sb::x#0<(const word) PI_u4f12#0) goto sin16sb::@1
to:sin16sb::@4
sin16sb::@4: scope:[sin16sb] from sin16sb
2018-11-11 20:51:36 +00:00
[78] (word) sin16sb::x#1 ← (word) sin16sb::x#0 - (const word) PI_u4f12#0
to:sin16sb::@1
sin16sb::@1: scope:[sin16sb] from sin16sb sin16sb::@4
2018-11-11 20:51:36 +00:00
[79] (byte) sin16sb::isUpper#2 ← phi( sin16sb/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
[79] (word) sin16sb::x#4 ← phi( sin16sb/(word) sin16sb::x#0 sin16sb::@4/(word) sin16sb::x#1 )
[80] if((word) sin16sb::x#4<(const word) PI_HALF_u4f12#0) goto sin16sb::@2
to:sin16sb::@5
sin16sb::@5: scope:[sin16sb] from sin16sb::@1
2018-11-11 20:51:36 +00:00
[81] (word) sin16sb::x#2 ← (const word) PI_u4f12#0 - (word) sin16sb::x#4
to:sin16sb::@2
sin16sb::@2: scope:[sin16sb] from sin16sb::@1 sin16sb::@5
2018-11-11 20:51:36 +00:00
[82] (word) sin16sb::x#6 ← phi( sin16sb::@1/(word) sin16sb::x#4 sin16sb::@5/(word) sin16sb::x#2 )
[83] (word) sin16sb::x1#0 ← (word) sin16sb::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
[84] (word) mulu16_sel::v1#5 ← (word) sin16sb::x1#0
[85] (word) mulu16_sel::v2#5 ← (word) sin16sb::x1#0
[86] call mulu16_sel
[87] (word) mulu16_sel::return#18 ← (word) mulu16_sel::return#17
to:sin16sb::@8
sin16sb::@8: scope:[sin16sb] from sin16sb::@2
2018-11-11 20:51:36 +00:00
[88] (word) sin16sb::x2#0 ← (word) mulu16_sel::return#18
[89] (word) mulu16_sel::v1#6 ← (word) sin16sb::x2#0
[90] (word) mulu16_sel::v2#6 ← (word) sin16sb::x1#0
[91] call mulu16_sel
[92] (word) mulu16_sel::return#19 ← (word) mulu16_sel::return#17
to:sin16sb::@9
sin16sb::@9: scope:[sin16sb] from sin16sb::@8
2018-11-11 20:51:36 +00:00
[93] (word) sin16sb::x3#0 ← (word) mulu16_sel::return#19
[94] (word) mulu16_sel::v1#7 ← (word) sin16sb::x3#0
[95] call mulu16_sel
[96] (word) mulu16_sel::return#20 ← (word) mulu16_sel::return#17
to:sin16sb::@10
sin16sb::@10: scope:[sin16sb] from sin16sb::@9
2018-11-11 20:51:36 +00:00
[97] (word) sin16sb::x3_6#0 ← (word) mulu16_sel::return#20
[98] (word) sin16sb::usinx#0 ← (word) sin16sb::x1#0 - (word) sin16sb::x3_6#0
[99] (word) mulu16_sel::v1#8 ← (word) sin16sb::x3#0
[100] (word) mulu16_sel::v2#8 ← (word) sin16sb::x1#0
[101] call mulu16_sel
[102] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#17
to:sin16sb::@11
sin16sb::@11: scope:[sin16sb] from sin16sb::@10
2018-11-11 20:51:36 +00:00
[103] (word) sin16sb::x4#0 ← (word) mulu16_sel::return#10
[104] (word) mulu16_sel::v1#9 ← (word) sin16sb::x4#0
[105] (word) mulu16_sel::v2#9 ← (word) sin16sb::x1#0
[106] call mulu16_sel
[107] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#17
to:sin16sb::@12
sin16sb::@12: scope:[sin16sb] from sin16sb::@11
2018-11-11 20:51:36 +00:00
[108] (word) sin16sb::x5#0 ← (word) mulu16_sel::return#11
[109] (word) sin16sb::x5_128#0 ← (word) sin16sb::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
[110] (word) sin16sb::usinx#1 ← (word) sin16sb::usinx#0 + (word) sin16sb::x5_128#0
[111] if((byte) sin16sb::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16sb::@15
to:sin16sb::@6
sin16sb::@6: scope:[sin16sb] from sin16sb::@12
2018-11-11 20:51:36 +00:00
[112] (signed word) sin16sb::sinx#1 ← - (signed word)(word) sin16sb::usinx#1
to:sin16sb::@3
sin16sb::@3: scope:[sin16sb] from sin16sb::@15 sin16sb::@6
2018-11-11 20:51:36 +00:00
[113] (signed word) sin16sb::return#1 ← phi( sin16sb::@15/(signed word~) sin16sb::return#5 sin16sb::@6/(signed word) sin16sb::sinx#1 )
to:sin16sb::@return
sin16sb::@return: scope:[sin16sb] from sin16sb::@3
2018-11-11 20:51:36 +00:00
[114] return
to:@return
sin16sb::@15: scope:[sin16sb] from sin16sb::@12
2018-11-11 20:51:36 +00:00
[115] (signed word~) sin16sb::return#5 ← (signed word)(word) sin16sb::usinx#1
to:sin16sb::@3
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9 sin16sb::@10 sin16sb::@11 sin16sb::@2 sin16sb::@8 sin16sb::@9
2018-11-11 20:51:36 +00:00
[116] (byte) mulu16_sel::select#10 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16sb::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16sb::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16sb::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 )
[116] (word) mulu16_sel::v2#10 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 sin16sb::@10/(word) mulu16_sel::v2#8 sin16sb::@11/(word) mulu16_sel::v2#9 sin16sb::@2/(word) mulu16_sel::v2#5 sin16sb::@8/(word) mulu16_sel::v2#6 sin16sb::@9/(dword/signed dword) $10000/(byte/signed byte/word/signed word/dword/signed dword) 6 )
2018-11-11 20:51:36 +00:00
[116] (word) mulu16_sel::v1#10 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 sin16sb::@10/(word) mulu16_sel::v1#8 sin16sb::@11/(word) mulu16_sel::v1#9 sin16sb::@2/(word) mulu16_sel::v1#5 sin16sb::@8/(word) mulu16_sel::v1#6 sin16sb::@9/(word) mulu16_sel::v1#7 )
[117] (word) mul16u::a#1 ← (word) mulu16_sel::v1#10
[118] (word) mul16u::b#0 ← (word) mulu16_sel::v2#10
[119] call mul16u
[120] (dword) mul16u::return#2 ← (dword) mul16u::res#2
to:mulu16_sel::@2
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
2018-11-11 20:51:36 +00:00
[121] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#2
[122] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#10
[123] (word) mulu16_sel::return#17 ← > (dword~) mulu16_sel::$1
to:mulu16_sel::@return
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
2018-11-11 20:51:36 +00:00
[124] return
to:@return
mul16u: scope:[mul16u] from mulu16_sel
2018-11-11 20:51:36 +00:00
[125] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#0
to:mul16u::@1
mul16u::@1: scope:[mul16u] from mul16u mul16u::@8
[126] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@8/(dword) mul16u::mb#1 )
[126] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@8/(dword) mul16u::res#6 )
[126] (word) mul16u::a#2 ← phi( mul16u/(word) mul16u::a#1 mul16u::@8/(word) mul16u::a#0 )
2018-11-11 20:51:36 +00:00
[127] if((word) mul16u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
to:mul16u::@return
mul16u::@return: scope:[mul16u] from mul16u::@1
2018-11-11 20:51:36 +00:00
[128] return
to:@return
mul16u::@2: scope:[mul16u] from mul16u::@1
2018-11-11 20:51:36 +00:00
[129] (byte/word~) mul16u::$1 ← (word) mul16u::a#2 & (byte/signed byte/word/signed word/dword/signed dword) 1
[130] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@8
to:mul16u::@6
mul16u::@6: scope:[mul16u] from mul16u::@2
2018-11-11 20:51:36 +00:00
[131] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
to:mul16u::@8
mul16u::@8: scope:[mul16u] from mul16u::@2 mul16u::@6
[132] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@6/(dword) mul16u::res#1 )
2018-11-11 20:51:36 +00:00
[133] (word) mul16u::a#0 ← (word) mul16u::a#2 >> (byte/signed byte/word/signed word/dword/signed dword) 1
[134] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
to:mul16u::@1
div32u16u: scope:[div32u16u] from sin16s_gen sin16s_genb
2018-11-11 20:51:36 +00:00
[135] phi()
[136] call divr16u
[137] (word) divr16u::return#2 ← (word) divr16u::return#0
to:div32u16u::@2
div32u16u::@2: scope:[div32u16u] from div32u16u
2018-11-11 20:51:36 +00:00
[138] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
[139] (word) divr16u::rem#4 ← (word) rem16u#1
[140] call divr16u
[141] (word) divr16u::return#3 ← (word) divr16u::return#0
to:div32u16u::@3
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
2018-11-11 20:51:36 +00:00
[142] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
[143] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
to:div32u16u::@return
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
2018-11-11 20:51:36 +00:00
[144] return
to:@return
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
2018-11-11 20:51:36 +00:00
[145] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 )
[145] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 )
to:divr16u::@1
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
2018-11-11 20:51:36 +00:00
[146] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
[146] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
[146] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
[146] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
[147] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
[148] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
[149] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) $80
2018-11-11 20:51:36 +00:00
[150] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
to:divr16u::@4
divr16u::@4: scope:[divr16u] from divr16u::@1
2018-11-11 20:51:36 +00:00
[151] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
to:divr16u::@2
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
2018-11-11 20:51:36 +00:00
[152] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
[153] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
[154] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
[155] if((word) divr16u::rem#6<(const word) main::wavelength#0) goto divr16u::@3
to:divr16u::@5
divr16u::@5: scope:[divr16u] from divr16u::@2
2018-11-11 20:51:36 +00:00
[156] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
[157] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) main::wavelength#0
to:divr16u::@3
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
2018-11-11 20:51:36 +00:00
[158] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
[158] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
[159] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
[160] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $10) goto divr16u::@1
to:divr16u::@6
divr16u::@6: scope:[divr16u] from divr16u::@3
2018-11-11 20:51:36 +00:00
[161] (word) rem16u#1 ← (word) divr16u::rem#11
to:divr16u::@return
divr16u::@return: scope:[divr16u] from divr16u::@6
2018-11-11 20:51:36 +00:00
[162] return
to:@return
sin16s_gen: scope:[sin16s_gen] from main
2018-11-11 20:51:36 +00:00
[163] phi()
[164] call div32u16u
[165] (dword) div32u16u::return#2 ← (dword) div32u16u::return#0
to:sin16s_gen::@3
sin16s_gen::@3: scope:[sin16s_gen] from sin16s_gen
2018-11-11 20:51:36 +00:00
[166] (dword) sin16s_gen::step#0 ← (dword) div32u16u::return#2
to:sin16s_gen::@1
sin16s_gen::@1: scope:[sin16s_gen] from sin16s_gen::@3 sin16s_gen::@4
2018-11-11 20:51:36 +00:00
[167] (word) sin16s_gen::i#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(word) sin16s_gen::i#1 )
[167] (signed word*) sin16s_gen::sintab#2 ← phi( sin16s_gen::@3/(const signed word[$78]) main::sintab1#0 sin16s_gen::@4/(signed word*) sin16s_gen::sintab#0 )
2018-11-11 20:51:36 +00:00
[167] (dword) sin16s_gen::x#2 ← phi( sin16s_gen::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s_gen::@4/(dword) sin16s_gen::x#1 )
[168] (dword) sin16s::x#0 ← (dword) sin16s_gen::x#2
[169] call sin16s
[170] (signed word) sin16s::return#0 ← (signed word) sin16s::return#1
to:sin16s_gen::@4
sin16s_gen::@4: scope:[sin16s_gen] from sin16s_gen::@1
2018-11-11 20:51:36 +00:00
[171] (signed word~) sin16s_gen::$1 ← (signed word) sin16s::return#0
[172] *((signed word*) sin16s_gen::sintab#2) ← (signed word~) sin16s_gen::$1
[173] (signed word*) sin16s_gen::sintab#0 ← (signed word*) sin16s_gen::sintab#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
[174] (dword) sin16s_gen::x#1 ← (dword) sin16s_gen::x#2 + (dword) sin16s_gen::step#0
[175] (word) sin16s_gen::i#1 ← ++ (word) sin16s_gen::i#2
[176] if((word) sin16s_gen::i#1<(const word) main::wavelength#0) goto sin16s_gen::@1
to:sin16s_gen::@return
sin16s_gen::@return: scope:[sin16s_gen] from sin16s_gen::@4
2018-11-11 20:51:36 +00:00
[177] return
to:@return
sin16s: scope:[sin16s] from sin16s_gen::@1
2018-11-11 20:51:36 +00:00
[178] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
to:sin16s::@4
sin16s::@4: scope:[sin16s] from sin16s
2018-11-11 20:51:36 +00:00
[179] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
to:sin16s::@1
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
2018-11-11 20:51:36 +00:00
[180] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
[180] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
[181] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
to:sin16s::@5
sin16s::@5: scope:[sin16s] from sin16s::@1
2018-11-11 20:51:36 +00:00
[182] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
to:sin16s::@2
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
2018-11-11 20:51:36 +00:00
[183] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
[184] (dword~) sin16s::$4 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
[185] (word) sin16s::x1#0 ← > (dword~) sin16s::$4
2018-11-11 20:51:36 +00:00
[186] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
[187] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
[188] call mulu16_sel
[189] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#17
to:sin16s::@8
sin16s::@8: scope:[sin16s] from sin16s::@2
2018-11-11 20:51:36 +00:00
[190] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
[191] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
[192] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
[193] call mulu16_sel
[194] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#17
to:sin16s::@9
sin16s::@9: scope:[sin16s] from sin16s::@8
2018-11-11 20:51:36 +00:00
[195] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
[196] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
[197] call mulu16_sel
[198] (word) mulu16_sel::return#14 ← (word) mulu16_sel::return#17
to:sin16s::@10
sin16s::@10: scope:[sin16s] from sin16s::@9
2018-11-11 20:51:36 +00:00
[199] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#14
[200] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
[201] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
[202] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
[203] call mulu16_sel
[204] (word) mulu16_sel::return#15 ← (word) mulu16_sel::return#17
to:sin16s::@11
sin16s::@11: scope:[sin16s] from sin16s::@10
2018-11-11 20:51:36 +00:00
[205] (word) sin16s::x4#0 ← (word) mulu16_sel::return#15
[206] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
[207] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
[208] call mulu16_sel
[209] (word) mulu16_sel::return#16 ← (word) mulu16_sel::return#17
to:sin16s::@12
sin16s::@12: scope:[sin16s] from sin16s::@11
2018-11-11 20:51:36 +00:00
[210] (word) sin16s::x5#0 ← (word) mulu16_sel::return#16
[211] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
[212] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
[213] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15
to:sin16s::@6
sin16s::@6: scope:[sin16s] from sin16s::@12
2018-11-11 20:51:36 +00:00
[214] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
to:sin16s::@3
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
2018-11-11 20:51:36 +00:00
[215] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
to:sin16s::@return
sin16s::@return: scope:[sin16s] from sin16s::@3
2018-11-11 20:51:36 +00:00
[216] return
to:@return
sin16s::@15: scope:[sin16s] from sin16s::@12
2018-11-11 20:51:36 +00:00
[217] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
to:sin16s::@3