MaxCompilerDesignData.dat 158 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383
  1. #ifdef MAXCOMPILER_VERSION_INFO
  2. #define MAXCOMPILER_VERSION_INFO_PRESENT 1
  3. #define MAXFILE_MAXCOMPILER_VERSION_YEAR 2018
  4. #define MAXFILE_MAXCOMPILER_VERSION_NUM 3
  5. #define MAXFILE_MAXCOMPILER_VERSION_POINT 1
  6. #define MAXFILE_MAXCOMPILER_VERSION_PATCH ""
  7. #define MAXFILE_MAXCOMPILER_VERSION_REV "b189b8e"
  8. #define MAXFILE_MAXCOMPILER_VERSION_RELEASE_DATE "2019-01-09"
  9. #define MAXFILE_MAXCOMPILER_VERSION_RELEASE_MODE true
  10. #endif
  11. #ifdef MAXFILE_BUILD_INFO
  12. #define MAXFILE_BUILD_INFO_PRESENT 1
  13. #define MAXFILE_BUILD_NAME "StreamFMA"
  14. #define MAXFILE_BUILD_DIR "/mnt/beegfs/home/jusers/makni1/jumax/makni2/starpu.git/tests/./StreamFMA_MAX5C_DFE_SIM"
  15. #define MAXFILE_BUILD_DATE 20200128
  16. #define MAXFILE_BUILD_REV 1
  17. #endif
  18. #ifdef PARAM
  19. #define PARAM_PRESENT 1
  20. PARAM(DYNAMIC_CLOCKS_ENABLED, 0)
  21. PARAM(MemCtrlPro_TotalNumStreams0, 6)
  22. PARAM(MemCtrlPro_NumRdStreams0, 4)
  23. PARAM(MemCtrlPro_NumWrStreams0, 2)
  24. PARAM(MemCtrlPro_DDRType0, 4)
  25. PARAM(MemCtrlPro_BurstSizeInBytes0, 192)
  26. PARAM(MemCtrlPro_MainFIFODepth0, 512)
  27. PARAM(APP_ID, 0)
  28. PARAM(REV_ID, 0)
  29. PARAM(CHAIN_LENGTH, 160)
  30. PARAM(IS_SIMULATION, 1)
  31. PARAM(MEC_SUPPORTED, 1)
  32. PARAM(PCIE_SLAVE_STREAMING, 0)
  33. PARAM(PCIE_ALIGNMENT, 16)
  34. PARAM(NUM_IFPGA_LINKS, 0)
  35. #endif
  36. #ifdef STRING_PARAM
  37. #define STRING_PARAM_PRESENT 1
  38. STRING_PARAM(BOARD_MODEL, "MAX5_LIMA")
  39. #endif
  40. #ifdef INCLUDE_GENERATED_CPP_HEADERS
  41. #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_oDataT2.h"
  42. #endif
  43. #ifdef INCLUDE_GENERATED_CPP_HEADERS
  44. #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_oDataT1.h"
  45. #endif
  46. #ifdef INCLUDE_GENERATED_CPP_HEADERS
  47. #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_inBT2.h"
  48. #endif
  49. #ifdef INCLUDE_GENERATED_CPP_HEADERS
  50. #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_inAT3.h"
  51. #endif
  52. #ifdef INCLUDE_GENERATED_CPP_HEADERS
  53. #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_inBT3.h"
  54. #endif
  55. #ifdef INCLUDE_GENERATED_CPP_HEADERS
  56. #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_inAT2.h"
  57. #endif
  58. #ifdef INCLUDE_GENERATED_CPP_HEADERS
  59. #include "StateMachineManagerBlock_impl_MemoryControllerPro0.h"
  60. #endif
  61. #ifdef INCLUDE_GENERATED_CPP_HEADERS
  62. #include "StreamFMAKernel.h"
  63. #endif
  64. #ifdef ENGINE_PARAMETERS
  65. #define ENGINE_PARAMETERS_PRESENT 1
  66. ENGINE_PARAMETERS(DFEModel, DFEMODEL, MAIA)
  67. ENGINE_PARAMETERS(maxFileName, STRING, "StreamFMA")
  68. ENGINE_PARAMETERS(target, ENUM, DFE_SIM)
  69. ENGINE_PARAMETERS(enableMPCX, BOOL, false)
  70. ENGINE_PARAMETERS(MPPRStartCT, INT, 1)
  71. ENGINE_PARAMETERS(MPPREndCT, INT, 1)
  72. ENGINE_PARAMETERS(MPPRThreads, INT, 1)
  73. ENGINE_PARAMETERS(MPPRRetryThreshold, INT, 0)
  74. #endif
  75. #ifdef MANAGER_NODE
  76. #define MANAGER_NODE_PRESENT 1
  77. MANAGER_NODE(StreamFMAKernel, Kernel)
  78. MANAGER_NODE(inAT1, PCIe_From_Host)
  79. MANAGER_NODE(inBT1, PCIe_From_Host)
  80. MANAGER_NODE(oDataT3, PCIe_To_Host)
  81. MANAGER_NODE(MemoryControllerPro0, ManagerStateMachine_MemoryControllerPro0)
  82. MANAGER_NODE(MemoryControllerPro0_IntSource, MemoryInterruptSource)
  83. MANAGER_NODE(MemoryControllerInterface_b, MemoryControllerInterface_b)
  84. MANAGER_NODE(MemoryControllerInterface_a, MemoryControllerInterface_a)
  85. MANAGER_NODE(MemoryControllerInterface_c, MemoryControllerInterface_c)
  86. MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_inAT2, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_inAT2)
  87. MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_inBT2, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_inBT2)
  88. MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_inAT3, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_inAT3)
  89. MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_inBT3, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_inBT3)
  90. MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_oDataT1, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_oDataT1)
  91. MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_oDataT2, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_oDataT2)
  92. MANAGER_NODE(Stream_34_pipeline_4, Stream_34_pipeline)
  93. MANAGER_NODE(Stream_29_pipeline_4, Stream_29_pipeline)
  94. MANAGER_NODE(Stream_39_pipeline_4, Stream_39_pipeline)
  95. MANAGER_NODE(Stream_28_pipeline_4, Stream_28_pipeline)
  96. MANAGER_NODE(Stream_33_pipeline_4, Stream_33_pipeline)
  97. MANAGER_NODE(Stream_38_pipeline_4, Stream_38_pipeline)
  98. MANAGER_NODE(Stream_60, DualAspectReg)
  99. MANAGER_NODE(Stream_64, DualAspectReg)
  100. MANAGER_NODE(Stream_1, DualAspectMux)
  101. MANAGER_NODE(Stream_4, DualAspectMux)
  102. MANAGER_NODE(Stream_8, DualAspectMux)
  103. MANAGER_NODE(Stream_10, DualAspectMux)
  104. MANAGER_NODE(Stream_12, DualAspectMux)
  105. MANAGER_NODE(Stream_14, DualAspectMux)
  106. MANAGER_NODE(Stream_20, DualAspectReg)
  107. MANAGER_NODE(Stream_92, StreamPullPushAdapter)
  108. MANAGER_NODE(Stream_96, StreamPullPushAdapter)
  109. MANAGER_NODE(Stream_124, StreamPullPushAdapter)
  110. MANAGER_NODE(Stream_98, Fifo)
  111. MANAGER_NODE(Stream_102, Fifo)
  112. MANAGER_NODE(Stream_94, Fifo)
  113. MANAGER_NODE(Stream_80, Fifo)
  114. MANAGER_NODE(Stream_84, Fifo)
  115. MANAGER_NODE(Stream_90, Fifo)
  116. MANAGER_NODE(Stream_68, Fifo)
  117. MANAGER_NODE(Stream_72, Fifo)
  118. MANAGER_NODE(Stream_76, Fifo)
  119. MANAGER_NODE(Stream_42, Fifo)
  120. MANAGER_NODE(Stream_46, Fifo)
  121. MANAGER_NODE(Stream_50, Fifo)
  122. MANAGER_NODE(Stream_54, Fifo)
  123. MANAGER_NODE(Stream_58, Fifo)
  124. MANAGER_NODE(Stream_62, Fifo)
  125. MANAGER_NODE(Stream_100, Fifo)
  126. MANAGER_NODE(Stream_104, Fifo)
  127. MANAGER_NODE(Stream_108, Fifo)
  128. MANAGER_NODE(Stream_112, Fifo)
  129. MANAGER_NODE(Stream_116, Fifo)
  130. MANAGER_NODE(Stream_120, Fifo)
  131. MANAGER_NODE(Stream_88, Fifo)
  132. MANAGER_NODE(Stream_122, Fifo)
  133. #endif
  134. #ifdef MANAGER_NODE_IO
  135. #define MANAGER_NODE_IO_PRESENT 1
  136. MANAGER_NODE_IO(StreamFMAKernel, inAT1, IN, STREAM, 32, PULL)
  137. MANAGER_NODE_IO(StreamFMAKernel, inBT1, IN, STREAM, 32, PULL)
  138. MANAGER_NODE_IO(StreamFMAKernel, inAT2, IN, STREAM, 32, PULL)
  139. MANAGER_NODE_IO(StreamFMAKernel, inBT2, IN, STREAM, 32, PULL)
  140. MANAGER_NODE_IO(StreamFMAKernel, inAT3, IN, STREAM, 32, PULL)
  141. MANAGER_NODE_IO(StreamFMAKernel, inBT3, IN, STREAM, 32, PULL)
  142. MANAGER_NODE_IO(StreamFMAKernel, oDataT1, OUT, STREAM, 32, PUSH)
  143. MANAGER_NODE_IO(StreamFMAKernel, oDataT2, OUT, STREAM, 32, PUSH)
  144. MANAGER_NODE_IO(StreamFMAKernel, oDataT3, OUT, STREAM, 32, PUSH)
  145. MANAGER_NODE_IO(inAT1, inAT1, OUT, PCIE, 128, PUSH)
  146. MANAGER_NODE_IO(inBT1, inBT1, OUT, PCIE, 128, PUSH)
  147. MANAGER_NODE_IO(oDataT3, oDataT3, IN, PCIE, 128, PUSH)
  148. MANAGER_NODE_IO(MemoryControllerPro0, read_stream_maxj_a, IN, MemoryControllerPro0_clk, 512, PULL)
  149. MANAGER_NODE_IO(MemoryControllerPro0, read_stream_maxj_b, IN, MemoryControllerPro0_clk, 512, PULL)
  150. MANAGER_NODE_IO(MemoryControllerPro0, read_stream_maxj_c, IN, MemoryControllerPro0_clk, 512, PULL)
  151. MANAGER_NODE_IO(MemoryControllerPro0, read_command_0, IN, MemoryControllerPro0_clk, 64, PUSH)
  152. MANAGER_NODE_IO(MemoryControllerPro0, read_command_1, IN, MemoryControllerPro0_clk, 64, PUSH)
  153. MANAGER_NODE_IO(MemoryControllerPro0, read_command_2, IN, MemoryControllerPro0_clk, 64, PUSH)
  154. MANAGER_NODE_IO(MemoryControllerPro0, read_command_3, IN, MemoryControllerPro0_clk, 64, PUSH)
  155. MANAGER_NODE_IO(MemoryControllerPro0, write_0, IN, STREAM, 1536, PUSH)
  156. MANAGER_NODE_IO(MemoryControllerPro0, write_1, IN, STREAM, 1536, PUSH)
  157. MANAGER_NODE_IO(MemoryControllerPro0, write_command_0, IN, MemoryControllerPro0_clk, 64, PUSH)
  158. MANAGER_NODE_IO(MemoryControllerPro0, write_command_1, IN, MemoryControllerPro0_clk, 64, PUSH)
  159. MANAGER_NODE_IO(MemoryControllerPro0, read_0, OUT, STREAM, 1536, PULL)
  160. MANAGER_NODE_IO(MemoryControllerPro0, read_1, OUT, STREAM, 1536, PULL)
  161. MANAGER_NODE_IO(MemoryControllerPro0, read_2, OUT, STREAM, 1536, PULL)
  162. MANAGER_NODE_IO(MemoryControllerPro0, read_3, OUT, STREAM, 1536, PULL)
  163. MANAGER_NODE_IO(MemoryControllerPro0, Tag_Out, OUT, MemoryControllerPro0_clk, 1, PUSH)
  164. MANAGER_NODE_IO(MemoryControllerPro0, cmd_stream_maxj_a, OUT, MemoryControllerPro0_clk, 544, PUSH)
  165. MANAGER_NODE_IO(MemoryControllerPro0, cmd_stream_maxj_b, OUT, MemoryControllerPro0_clk, 544, PUSH)
  166. MANAGER_NODE_IO(MemoryControllerPro0, cmd_stream_maxj_c, OUT, MemoryControllerPro0_clk, 544, PUSH)
  167. MANAGER_NODE_IO(MemoryControllerPro0_IntSource, Tag_In, IN, MemoryControllerPro0_clk, 1, PUSH)
  168. MANAGER_NODE_IO(MemoryControllerInterface_b, cmd_stream_maxj, IN, DDR_CLK_b, 544, PULL)
  169. MANAGER_NODE_IO(MemoryControllerInterface_b, read_stream_maxj, OUT, DDR_CLK_b, 512, PUSH)
  170. MANAGER_NODE_IO(MemoryControllerInterface_a, cmd_stream_maxj, IN, DDR_CLK_a, 544, PULL)
  171. MANAGER_NODE_IO(MemoryControllerInterface_a, read_stream_maxj, OUT, DDR_CLK_a, 512, PUSH)
  172. MANAGER_NODE_IO(MemoryControllerInterface_c, cmd_stream_maxj, IN, DDR_CLK_c, 544, PULL)
  173. MANAGER_NODE_IO(MemoryControllerInterface_c, read_stream_maxj, OUT, DDR_CLK_c, 512, PUSH)
  174. MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_inAT2, cgen_out_0, OUT, STREAM, 64, PUSH)
  175. MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_inBT2, cgen_out_0, OUT, STREAM, 64, PUSH)
  176. MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_inAT3, cgen_out_0, OUT, STREAM, 64, PUSH)
  177. MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_inBT3, cgen_out_0, OUT, STREAM, 64, PUSH)
  178. MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_oDataT1, cgen_out_0, OUT, STREAM, 64, PUSH)
  179. MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_oDataT2, cgen_out_0, OUT, STREAM, 64, PUSH)
  180. MANAGER_NODE_IO(Stream_34_pipeline_4, input, IN, DDR_CLK_a, 512, PUSH)
  181. MANAGER_NODE_IO(Stream_34_pipeline_4, output, OUT, DDR_CLK_a, 512, PUSH)
  182. MANAGER_NODE_IO(Stream_29_pipeline_4, input, IN, DDR_CLK_b, 512, PUSH)
  183. MANAGER_NODE_IO(Stream_29_pipeline_4, output, OUT, DDR_CLK_b, 512, PUSH)
  184. MANAGER_NODE_IO(Stream_39_pipeline_4, input, IN, DDR_CLK_c, 512, PUSH)
  185. MANAGER_NODE_IO(Stream_39_pipeline_4, output, OUT, DDR_CLK_c, 512, PUSH)
  186. MANAGER_NODE_IO(Stream_28_pipeline_4, input, IN, MemoryControllerPro0_clk, 544, PUSH)
  187. MANAGER_NODE_IO(Stream_28_pipeline_4, output, OUT, MemoryControllerPro0_clk, 544, PUSH)
  188. MANAGER_NODE_IO(Stream_33_pipeline_4, input, IN, MemoryControllerPro0_clk, 544, PUSH)
  189. MANAGER_NODE_IO(Stream_33_pipeline_4, output, OUT, MemoryControllerPro0_clk, 544, PUSH)
  190. MANAGER_NODE_IO(Stream_38_pipeline_4, input, IN, MemoryControllerPro0_clk, 544, PUSH)
  191. MANAGER_NODE_IO(Stream_38_pipeline_4, output, OUT, MemoryControllerPro0_clk, 544, PUSH)
  192. MANAGER_NODE_IO(Stream_60, input, IN, STREAM, 32, PULL)
  193. MANAGER_NODE_IO(Stream_60, output, OUT, STREAM, 1536, PULL)
  194. MANAGER_NODE_IO(Stream_64, input, IN, STREAM, 32, PULL)
  195. MANAGER_NODE_IO(Stream_64, output, OUT, STREAM, 1536, PULL)
  196. MANAGER_NODE_IO(Stream_1, input, IN, PCIE, 128, PULL)
  197. MANAGER_NODE_IO(Stream_1, output, OUT, PCIE, 32, PUSH)
  198. MANAGER_NODE_IO(Stream_4, input, IN, PCIE, 128, PULL)
  199. MANAGER_NODE_IO(Stream_4, output, OUT, PCIE, 32, PUSH)
  200. MANAGER_NODE_IO(Stream_8, input, IN, STREAM, 1536, PULL)
  201. MANAGER_NODE_IO(Stream_8, output, OUT, STREAM, 32, PUSH)
  202. MANAGER_NODE_IO(Stream_10, input, IN, STREAM, 1536, PULL)
  203. MANAGER_NODE_IO(Stream_10, output, OUT, STREAM, 32, PUSH)
  204. MANAGER_NODE_IO(Stream_12, input, IN, STREAM, 1536, PULL)
  205. MANAGER_NODE_IO(Stream_12, output, OUT, STREAM, 32, PUSH)
  206. MANAGER_NODE_IO(Stream_14, input, IN, STREAM, 1536, PULL)
  207. MANAGER_NODE_IO(Stream_14, output, OUT, STREAM, 32, PUSH)
  208. MANAGER_NODE_IO(Stream_20, input, IN, PCIE, 32, PULL)
  209. MANAGER_NODE_IO(Stream_20, output, OUT, PCIE, 128, PULL)
  210. MANAGER_NODE_IO(Stream_92, input, IN, STREAM, 1536, PULL)
  211. MANAGER_NODE_IO(Stream_92, output, OUT, STREAM, 1536, PUSH)
  212. MANAGER_NODE_IO(Stream_96, input, IN, STREAM, 1536, PULL)
  213. MANAGER_NODE_IO(Stream_96, output, OUT, STREAM, 1536, PUSH)
  214. MANAGER_NODE_IO(Stream_124, input, IN, PCIE, 128, PULL)
  215. MANAGER_NODE_IO(Stream_124, output, OUT, PCIE, 128, PUSH)
  216. MANAGER_NODE_IO(Stream_98, input, IN, PCIE, 128, PUSH)
  217. MANAGER_NODE_IO(Stream_98, output, OUT, PCIE, 128, PULL)
  218. MANAGER_NODE_IO(Stream_102, input, IN, PCIE, 128, PUSH)
  219. MANAGER_NODE_IO(Stream_102, output, OUT, PCIE, 128, PULL)
  220. MANAGER_NODE_IO(Stream_94, input, IN, STREAM, 32, PUSH)
  221. MANAGER_NODE_IO(Stream_94, output, OUT, STREAM, 32, PULL)
  222. MANAGER_NODE_IO(Stream_80, input, IN, MemoryControllerPro0_clk, 544, PUSH)
  223. MANAGER_NODE_IO(Stream_80, output, OUT, DDR_CLK_b, 544, PULL)
  224. MANAGER_NODE_IO(Stream_84, input, IN, MemoryControllerPro0_clk, 544, PUSH)
  225. MANAGER_NODE_IO(Stream_84, output, OUT, DDR_CLK_a, 544, PULL)
  226. MANAGER_NODE_IO(Stream_90, input, IN, STREAM, 32, PUSH)
  227. MANAGER_NODE_IO(Stream_90, output, OUT, STREAM, 32, PULL)
  228. MANAGER_NODE_IO(Stream_68, input, IN, DDR_CLK_a, 512, PUSH)
  229. MANAGER_NODE_IO(Stream_68, output, OUT, MemoryControllerPro0_clk, 512, PULL)
  230. MANAGER_NODE_IO(Stream_72, input, IN, DDR_CLK_b, 512, PUSH)
  231. MANAGER_NODE_IO(Stream_72, output, OUT, MemoryControllerPro0_clk, 512, PULL)
  232. MANAGER_NODE_IO(Stream_76, input, IN, DDR_CLK_c, 512, PUSH)
  233. MANAGER_NODE_IO(Stream_76, output, OUT, MemoryControllerPro0_clk, 512, PULL)
  234. MANAGER_NODE_IO(Stream_42, input, IN, STREAM, 64, PUSH)
  235. MANAGER_NODE_IO(Stream_42, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
  236. MANAGER_NODE_IO(Stream_46, input, IN, STREAM, 64, PUSH)
  237. MANAGER_NODE_IO(Stream_46, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
  238. MANAGER_NODE_IO(Stream_50, input, IN, STREAM, 64, PUSH)
  239. MANAGER_NODE_IO(Stream_50, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
  240. MANAGER_NODE_IO(Stream_54, input, IN, STREAM, 64, PUSH)
  241. MANAGER_NODE_IO(Stream_54, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
  242. MANAGER_NODE_IO(Stream_58, input, IN, STREAM, 64, PUSH)
  243. MANAGER_NODE_IO(Stream_58, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
  244. MANAGER_NODE_IO(Stream_62, input, IN, STREAM, 64, PUSH)
  245. MANAGER_NODE_IO(Stream_62, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
  246. MANAGER_NODE_IO(Stream_100, input, IN, PCIE, 32, PUSH)
  247. MANAGER_NODE_IO(Stream_100, output, OUT, STREAM, 32, PULL)
  248. MANAGER_NODE_IO(Stream_104, input, IN, PCIE, 32, PUSH)
  249. MANAGER_NODE_IO(Stream_104, output, OUT, STREAM, 32, PULL)
  250. MANAGER_NODE_IO(Stream_108, input, IN, STREAM, 32, PUSH)
  251. MANAGER_NODE_IO(Stream_108, output, OUT, STREAM, 32, PULL)
  252. MANAGER_NODE_IO(Stream_112, input, IN, STREAM, 32, PUSH)
  253. MANAGER_NODE_IO(Stream_112, output, OUT, STREAM, 32, PULL)
  254. MANAGER_NODE_IO(Stream_116, input, IN, STREAM, 32, PUSH)
  255. MANAGER_NODE_IO(Stream_116, output, OUT, STREAM, 32, PULL)
  256. MANAGER_NODE_IO(Stream_120, input, IN, STREAM, 32, PUSH)
  257. MANAGER_NODE_IO(Stream_120, output, OUT, STREAM, 32, PULL)
  258. MANAGER_NODE_IO(Stream_88, input, IN, MemoryControllerPro0_clk, 544, PUSH)
  259. MANAGER_NODE_IO(Stream_88, output, OUT, DDR_CLK_c, 544, PULL)
  260. MANAGER_NODE_IO(Stream_122, input, IN, STREAM, 32, PUSH)
  261. MANAGER_NODE_IO(Stream_122, output, OUT, PCIE, 32, PULL)
  262. #endif
  263. #ifdef MANAGER_STREAM
  264. #define MANAGER_STREAM_PRESENT 1
  265. MANAGER_STREAM(inAT1, inAT1, Stream_98, input, 128)
  266. MANAGER_STREAM(inBT1, inBT1, Stream_102, input, 128)
  267. MANAGER_STREAM(StreamFMAKernel, oDataT1, Stream_90, input, 32)
  268. MANAGER_STREAM(StreamFMAKernel, oDataT2, Stream_94, input, 32)
  269. MANAGER_STREAM(StreamFMAKernel, oDataT3, Stream_122, input, 32)
  270. MANAGER_STREAM(MemoryControllerPro0, Tag_Out, MemoryControllerPro0_IntSource, Tag_In, 1)
  271. MANAGER_STREAM(MemoryControllerPro0, cmd_stream_maxj_b, Stream_28_pipeline_4, input, 544)
  272. MANAGER_STREAM(MemoryControllerInterface_b, read_stream_maxj, Stream_29_pipeline_4, input, 512)
  273. MANAGER_STREAM(MemoryControllerPro0, cmd_stream_maxj_a, Stream_33_pipeline_4, input, 544)
  274. MANAGER_STREAM(MemoryControllerInterface_a, read_stream_maxj, Stream_34_pipeline_4, input, 512)
  275. MANAGER_STREAM(MemoryControllerPro0, cmd_stream_maxj_c, Stream_38_pipeline_4, input, 544)
  276. MANAGER_STREAM(MemoryControllerInterface_c, read_stream_maxj, Stream_39_pipeline_4, input, 512)
  277. MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_inAT2, cgen_out_0, Stream_42, input, 64)
  278. MANAGER_STREAM(MemoryControllerPro0, read_0, Stream_8, input, 1536)
  279. MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_inBT2, cgen_out_0, Stream_46, input, 64)
  280. MANAGER_STREAM(MemoryControllerPro0, read_1, Stream_10, input, 1536)
  281. MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_inAT3, cgen_out_0, Stream_50, input, 64)
  282. MANAGER_STREAM(MemoryControllerPro0, read_2, Stream_12, input, 1536)
  283. MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_inBT3, cgen_out_0, Stream_54, input, 64)
  284. MANAGER_STREAM(MemoryControllerPro0, read_3, Stream_14, input, 1536)
  285. MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_oDataT1, cgen_out_0, Stream_58, input, 64)
  286. MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_oDataT2, cgen_out_0, Stream_62, input, 64)
  287. MANAGER_STREAM(Stream_34_pipeline_4, output, Stream_68, input, 512)
  288. MANAGER_STREAM(Stream_29_pipeline_4, output, Stream_72, input, 512)
  289. MANAGER_STREAM(Stream_39_pipeline_4, output, Stream_76, input, 512)
  290. MANAGER_STREAM(Stream_28_pipeline_4, output, Stream_80, input, 544)
  291. MANAGER_STREAM(Stream_33_pipeline_4, output, Stream_84, input, 544)
  292. MANAGER_STREAM(Stream_38_pipeline_4, output, Stream_88, input, 544)
  293. MANAGER_STREAM(Stream_60, output, Stream_92, input, 1536)
  294. MANAGER_STREAM(Stream_64, output, Stream_96, input, 1536)
  295. MANAGER_STREAM(Stream_1, output, Stream_100, input, 32)
  296. MANAGER_STREAM(Stream_4, output, Stream_104, input, 32)
  297. MANAGER_STREAM(Stream_8, output, Stream_108, input, 32)
  298. MANAGER_STREAM(Stream_10, output, Stream_112, input, 32)
  299. MANAGER_STREAM(Stream_12, output, Stream_116, input, 32)
  300. MANAGER_STREAM(Stream_14, output, Stream_120, input, 32)
  301. MANAGER_STREAM(Stream_20, output, Stream_124, input, 128)
  302. MANAGER_STREAM(Stream_92, output, MemoryControllerPro0, write_0, 1536)
  303. MANAGER_STREAM(Stream_96, output, MemoryControllerPro0, write_1, 1536)
  304. MANAGER_STREAM(Stream_124, output, oDataT3, oDataT3, 128)
  305. MANAGER_STREAM(Stream_98, output, Stream_1, input, 128)
  306. MANAGER_STREAM(Stream_102, output, Stream_4, input, 128)
  307. MANAGER_STREAM(Stream_94, output, Stream_64, input, 32)
  308. MANAGER_STREAM(Stream_80, output, MemoryControllerInterface_b, cmd_stream_maxj, 544)
  309. MANAGER_STREAM(Stream_84, output, MemoryControllerInterface_a, cmd_stream_maxj, 544)
  310. MANAGER_STREAM(Stream_90, output, Stream_60, input, 32)
  311. MANAGER_STREAM(Stream_68, output, MemoryControllerPro0, read_stream_maxj_a, 512)
  312. MANAGER_STREAM(Stream_72, output, MemoryControllerPro0, read_stream_maxj_b, 512)
  313. MANAGER_STREAM(Stream_76, output, MemoryControllerPro0, read_stream_maxj_c, 512)
  314. MANAGER_STREAM(Stream_42, output, MemoryControllerPro0, read_command_0, 64)
  315. MANAGER_STREAM(Stream_46, output, MemoryControllerPro0, read_command_1, 64)
  316. MANAGER_STREAM(Stream_50, output, MemoryControllerPro0, read_command_2, 64)
  317. MANAGER_STREAM(Stream_54, output, MemoryControllerPro0, read_command_3, 64)
  318. MANAGER_STREAM(Stream_58, output, MemoryControllerPro0, write_command_0, 64)
  319. MANAGER_STREAM(Stream_62, output, MemoryControllerPro0, write_command_1, 64)
  320. MANAGER_STREAM(Stream_100, output, StreamFMAKernel, inAT1, 32)
  321. MANAGER_STREAM(Stream_104, output, StreamFMAKernel, inBT1, 32)
  322. MANAGER_STREAM(Stream_108, output, StreamFMAKernel, inAT2, 32)
  323. MANAGER_STREAM(Stream_112, output, StreamFMAKernel, inBT2, 32)
  324. MANAGER_STREAM(Stream_116, output, StreamFMAKernel, inAT3, 32)
  325. MANAGER_STREAM(Stream_120, output, StreamFMAKernel, inBT3, 32)
  326. MANAGER_STREAM(Stream_88, output, MemoryControllerInterface_c, cmd_stream_maxj, 544)
  327. MANAGER_STREAM(Stream_122, output, Stream_20, input, 32)
  328. #endif
  329. #ifdef MANAGER_NODE_STACK_TRACE
  330. #define MANAGER_NODE_STACK_TRACE_PRESENT 1
  331. MANAGER_NODE_STACK_TRACE(StreamFMAKernel, "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  332. MANAGER_NODE_STACK_TRACE(inAT1, "com.maxeler.platform.max5.manager.Max5ManagerBase.addStreamFromCPU(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:26)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  333. MANAGER_NODE_STACK_TRACE(inBT1, "com.maxeler.platform.max5.manager.Max5ManagerBase.addStreamFromCPU(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:27)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  334. MANAGER_NODE_STACK_TRACE(oDataT3, "com.maxeler.platform.max5.manager.Max5ManagerBase.addStreamToCPU(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:52)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  335. MANAGER_NODE_STACK_TRACE(MemoryControllerPro0, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  336. MANAGER_NODE_STACK_TRACE(MemoryControllerPro0_IntSource, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  337. MANAGER_NODE_STACK_TRACE(MemoryControllerInterface_b, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  338. MANAGER_NODE_STACK_TRACE(MemoryControllerInterface_a, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  339. MANAGER_NODE_STACK_TRACE(MemoryControllerInterface_c, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  340. MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_inAT2, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  341. MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_inBT2, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  342. MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_inAT3, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  343. MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_inBT3, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  344. MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_oDataT1, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  345. MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_oDataT2, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  346. MANAGER_NODE_STACK_TRACE(Stream_34_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  347. MANAGER_NODE_STACK_TRACE(Stream_29_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  348. MANAGER_NODE_STACK_TRACE(Stream_39_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  349. MANAGER_NODE_STACK_TRACE(Stream_28_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  350. MANAGER_NODE_STACK_TRACE(Stream_33_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  351. MANAGER_NODE_STACK_TRACE(Stream_38_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  352. MANAGER_NODE_STACK_TRACE(Stream_60, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  353. MANAGER_NODE_STACK_TRACE(Stream_64, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  354. MANAGER_NODE_STACK_TRACE(Stream_1, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  355. MANAGER_NODE_STACK_TRACE(Stream_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  356. MANAGER_NODE_STACK_TRACE(Stream_8, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  357. MANAGER_NODE_STACK_TRACE(Stream_10, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  358. MANAGER_NODE_STACK_TRACE(Stream_12, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  359. MANAGER_NODE_STACK_TRACE(Stream_14, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  360. MANAGER_NODE_STACK_TRACE(Stream_20, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  361. MANAGER_NODE_STACK_TRACE(Stream_92, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  362. MANAGER_NODE_STACK_TRACE(Stream_96, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  363. MANAGER_NODE_STACK_TRACE(Stream_124, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  364. MANAGER_NODE_STACK_TRACE(Stream_98, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  365. MANAGER_NODE_STACK_TRACE(Stream_102, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  366. MANAGER_NODE_STACK_TRACE(Stream_94, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  367. MANAGER_NODE_STACK_TRACE(Stream_80, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  368. MANAGER_NODE_STACK_TRACE(Stream_84, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  369. MANAGER_NODE_STACK_TRACE(Stream_90, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  370. MANAGER_NODE_STACK_TRACE(Stream_68, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  371. MANAGER_NODE_STACK_TRACE(Stream_72, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  372. MANAGER_NODE_STACK_TRACE(Stream_76, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  373. MANAGER_NODE_STACK_TRACE(Stream_42, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  374. MANAGER_NODE_STACK_TRACE(Stream_46, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  375. MANAGER_NODE_STACK_TRACE(Stream_50, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  376. MANAGER_NODE_STACK_TRACE(Stream_54, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  377. MANAGER_NODE_STACK_TRACE(Stream_58, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  378. MANAGER_NODE_STACK_TRACE(Stream_62, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  379. MANAGER_NODE_STACK_TRACE(Stream_100, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  380. MANAGER_NODE_STACK_TRACE(Stream_104, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  381. MANAGER_NODE_STACK_TRACE(Stream_108, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  382. MANAGER_NODE_STACK_TRACE(Stream_112, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  383. MANAGER_NODE_STACK_TRACE(Stream_116, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  384. MANAGER_NODE_STACK_TRACE(Stream_120, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  385. MANAGER_NODE_STACK_TRACE(Stream_88, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  386. MANAGER_NODE_STACK_TRACE(Stream_122, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
  387. #endif
  388. #ifdef MANAGER_NODE_PROPERTY
  389. #define MANAGER_NODE_PROPERTY_PRESENT 1
  390. MANAGER_NODE_PROPERTY(StreamFMAKernel, control_pipelining_depth, 2)
  391. #endif
  392. #ifdef KERNEL_CORE
  393. #define KERNEL_CORE_PRESENT 1
  394. KERNEL_CORE(StreamFMAKernel)
  395. #endif
  396. #ifdef KERNEL_HOST_CONTROLLED
  397. #define KERNEL_HOST_CONTROLLED_PRESENT 1
  398. KERNEL_HOST_CONTROLLED(StreamFMAKernel, StreamFMAKernel)
  399. #endif
  400. #ifdef DEBUG_INPUT_BITS
  401. #define DEBUG_INPUT_BITS_PRESENT 1
  402. DEBUG_INPUT_BITS(StreamFMAKernel, inAT1, 0)
  403. DEBUG_INPUT_BITS(StreamFMAKernel, inBT1, 1)
  404. DEBUG_INPUT_BITS(StreamFMAKernel, inAT2, 2)
  405. DEBUG_INPUT_BITS(StreamFMAKernel, inBT2, 3)
  406. DEBUG_INPUT_BITS(StreamFMAKernel, inAT3, 4)
  407. DEBUG_INPUT_BITS(StreamFMAKernel, inBT3, 5)
  408. #endif
  409. #ifdef DEBUG_OUTPUT_BITS
  410. #define DEBUG_OUTPUT_BITS_PRESENT 1
  411. DEBUG_OUTPUT_BITS(StreamFMAKernel, oDataT1, 0)
  412. DEBUG_OUTPUT_BITS(StreamFMAKernel, oDataT2, 1)
  413. DEBUG_OUTPUT_BITS(StreamFMAKernel, oDataT3, 2)
  414. #endif
  415. #ifdef MANAGER_NODE_CPP_SIM_MODEL_CTOR
  416. #define MANAGER_NODE_CPP_SIM_MODEL_CTOR_PRESENT 1
  417. MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_oDataT2, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_oDataT2, "addrgen_cmd_MemoryControllerPro0_oDataT2")
  418. MANAGER_NODE_CPP_SIM_MODEL_CTOR(inAT1, PCIePushSourceSync16, "inAT1")
  419. MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_oDataT1, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_oDataT1, "addrgen_cmd_MemoryControllerPro0_oDataT1")
  420. MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_inBT2, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_inBT2, "addrgen_cmd_MemoryControllerPro0_inBT2")
  421. MANAGER_NODE_CPP_SIM_MODEL_CTOR(inBT1, PCIePushSourceSync16, "inBT1")
  422. MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_inAT3, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_inAT3, "addrgen_cmd_MemoryControllerPro0_inAT3")
  423. MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_inBT3, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_inBT3, "addrgen_cmd_MemoryControllerPro0_inBT3")
  424. MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_inAT2, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_inAT2, "addrgen_cmd_MemoryControllerPro0_inAT2")
  425. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_58, FifoPushToPushSync, "Stream_58", false, 512, 64)
  426. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_50, FifoPushToPushSync, "Stream_50", false, 512, 64)
  427. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_42, FifoPushToPushSync, "Stream_42", false, 512, 64)
  428. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_98, FifoPushToPullSync, "Stream_98", false, 512, 128)
  429. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_62, FifoPushToPushSync, "Stream_62", false, 512, 64)
  430. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_54, FifoPushToPushSync, "Stream_54", false, 512, 64)
  431. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_46, FifoPushToPushSync, "Stream_46", false, 512, 64)
  432. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_102, FifoPushToPullSync, "Stream_102", false, 512, 128)
  433. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_4, DualAspectMuxSync, "Stream_4", 32, 4)
  434. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_1, DualAspectMuxSync, "Stream_1", 32, 4)
  435. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_104, FifoPushToPullSync, "Stream_104", false, 512, 32)
  436. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_100, FifoPushToPullSync, "Stream_100", false, 512, 32)
  437. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_96, PullToPushAdapterSync, "Stream_96")
  438. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_28_pipeline_4, PipelineSync, "Stream_28_pipeline_4", 4, 544)
  439. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_80, FifoPushToPullSync, "Stream_80", false, 512, 544)
  440. MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerInterface_b, LMemSim, "MemoryControllerInterface_b", ConfigFactory<LMemMax5LimaConfig>::getConfig(0, "_b", 3, 0))
  441. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_29_pipeline_4, PipelineSync, "Stream_29_pipeline_4", 4, 512)
  442. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_72, FifoPushToPullSync, "Stream_72", false, 512, 512)
  443. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_84, FifoPushToPullSync, "Stream_84", false, 512, 544)
  444. MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerInterface_a, LMemSim, "MemoryControllerInterface_a", ConfigFactory<LMemMax5LimaConfig>::getConfig(0, "_a", 3, 1))
  445. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_34_pipeline_4, PipelineSync, "Stream_34_pipeline_4", 4, 512)
  446. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_68, FifoPushToPullSync, "Stream_68", false, 512, 512)
  447. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_90, FifoPushToPullSync, "Stream_90", false, 512, 32)
  448. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_60, DualAspectRegSync, "Stream_60", 32, 48)
  449. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_92, PullToPushAdapterSync, "Stream_92")
  450. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_8, DualAspectMuxSync, "Stream_8", 32, 48)
  451. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_108, FifoPushToPullSync, "Stream_108", false, 512, 32)
  452. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_112, FifoPushToPullSync, "Stream_112", false, 512, 32)
  453. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_124, PullToPushAdapterSync, "Stream_124")
  454. MANAGER_NODE_CPP_SIM_MODEL_CTOR(oDataT3, PCIePushSinkSync16, "oDataT3")
  455. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_10, DualAspectMuxSync, "Stream_10", 32, 48)
  456. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_39_pipeline_4, PipelineSync, "Stream_39_pipeline_4", 4, 512)
  457. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_76, FifoPushToPullSync, "Stream_76", false, 512, 512)
  458. MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerPro0, maxcompilersim::state_machine::ManagerBlockSM_MemoryControllerPro0, "MemoryControllerPro0")
  459. MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerPro0_IntSource, McpInterruptSource, "MemoryControllerPro0_IntSource")
  460. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_12, DualAspectMuxSync, "Stream_12", 32, 48)
  461. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_14, DualAspectMuxSync, "Stream_14", 32, 48)
  462. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_38_pipeline_4, PipelineSync, "Stream_38_pipeline_4", 4, 544)
  463. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_33_pipeline_4, PipelineSync, "Stream_33_pipeline_4", 4, 544)
  464. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_116, FifoPushToPullSync, "Stream_116", false, 512, 32)
  465. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_120, FifoPushToPullSync, "Stream_120", false, 512, 32)
  466. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_88, FifoPushToPullSync, "Stream_88", false, 512, 544)
  467. MANAGER_NODE_CPP_SIM_MODEL_CTOR(StreamFMAKernel, StreamFMAKernel, "StreamFMAKernel")
  468. MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerInterface_c, LMemSim, "MemoryControllerInterface_c", ConfigFactory<LMemMax5LimaConfig>::getConfig(0, "_c", 3, 2))
  469. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_122, FifoPushToPullSync, "Stream_122", false, 512, 32)
  470. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_94, FifoPushToPullSync, "Stream_94", false, 512, 32)
  471. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_20, DualAspectRegSync, "Stream_20", 32, 4)
  472. MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_64, DualAspectRegSync, "Stream_64", 32, 48)
  473. MANAGER_NODE_CPP_SIM_MODEL_CTOR(CapabilityReg, CapRegs, "CapabilityReg", 0, 2, 1, 0, 0, 0, 0, 0, 160)
  474. MANAGER_NODE_CPP_SIM_MODEL_CTOR(ifpga, IFPGARegs)
  475. MANAGER_NODE_CPP_SIM_MODEL_CTOR(sfa, SFARegs)
  476. MANAGER_NODE_CPP_SIM_MODEL_CTOR(ChecksumMemory, ChecksumMem, "ChecksumMemory", "5677d622f2daecc91b0561585ae87653a418e3bb53c0a22186ca7832455db10b")
  477. #endif
  478. #ifdef MANAGER_NODE_CPP_SIM_MODEL_SETUP
  479. #define MANAGER_NODE_CPP_SIM_MODEL_SETUP_PRESENT 1
  480. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_almost_empty, 6, 0)
  481. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_done, 6, 0)
  482. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_empty, 6, 0)
  483. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_read, 6, 0)
  484. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_read_pipe_dbg, 18, 0)
  485. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_request, 6, 0)
  486. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_done_out, 1, 0)
  487. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_fill_level, 4, 0)
  488. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_flush_level, 4, 0)
  489. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_flush_start, 1, 0)
  490. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_flush_start_level, 4, 0)
  491. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_flushing, 1, 0)
  492. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_full_level, 4, 0)
  493. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_out_stall, 3, 0)
  494. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_out_valid, 3, 0)
  495. MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_stall_vector, 3, 0)
  496. #endif
  497. #ifdef PCIE_STREAM
  498. #define PCIE_STREAM_PRESENT 1
  499. PCIE_STREAM(inAT1, STREAM_FROM_HOST, 0)
  500. PCIE_STREAM(inBT1, STREAM_FROM_HOST, 1)
  501. PCIE_STREAM(oDataT3, STREAM_TO_HOST, 0)
  502. #endif
  503. #ifdef REG
  504. #define REG_PRESENT 1
  505. REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Addr_En, 0x0, 1, hwOffsetFix(1, 0, UNSIGNED))
  506. REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_BlockSize_X, 0x1, 5, hwOffsetFix(33, 0, UNSIGNED))
  507. REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_CmdSize, 0x6, 1, hwOffsetFix(8, 0, UNSIGNED))
  508. REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Offset_0, 0x7, 4, hwOffsetFix(31, 0, UNSIGNED))
  509. REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Start_X_Addr, 0xb, 4, hwOffsetFix(32, 0, UNSIGNED))
  510. REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Wrap_X, 0xf, 4, hwOffsetFix(32, 0, UNSIGNED))
  511. REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Addr_En, 0x13, 1, hwOffsetFix(1, 0, UNSIGNED))
  512. REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_BlockSize_X, 0x14, 5, hwOffsetFix(33, 0, UNSIGNED))
  513. REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_CmdSize, 0x19, 1, hwOffsetFix(8, 0, UNSIGNED))
  514. REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Offset_0, 0x1a, 4, hwOffsetFix(31, 0, UNSIGNED))
  515. REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Start_X_Addr, 0x1e, 4, hwOffsetFix(32, 0, UNSIGNED))
  516. REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Wrap_X, 0x22, 4, hwOffsetFix(32, 0, UNSIGNED))
  517. REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Addr_En, 0x26, 1, hwOffsetFix(1, 0, UNSIGNED))
  518. REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_BlockSize_X, 0x27, 5, hwOffsetFix(33, 0, UNSIGNED))
  519. REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_CmdSize, 0x2c, 1, hwOffsetFix(8, 0, UNSIGNED))
  520. REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Offset_0, 0x2d, 4, hwOffsetFix(31, 0, UNSIGNED))
  521. REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Start_X_Addr, 0x31, 4, hwOffsetFix(32, 0, UNSIGNED))
  522. REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Wrap_X, 0x35, 4, hwOffsetFix(32, 0, UNSIGNED))
  523. REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Addr_En, 0x39, 1, hwOffsetFix(1, 0, UNSIGNED))
  524. REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_BlockSize_X, 0x3a, 5, hwOffsetFix(33, 0, UNSIGNED))
  525. REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_CmdSize, 0x3f, 1, hwOffsetFix(8, 0, UNSIGNED))
  526. REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Offset_0, 0x40, 4, hwOffsetFix(31, 0, UNSIGNED))
  527. REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Start_X_Addr, 0x44, 4, hwOffsetFix(32, 0, UNSIGNED))
  528. REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Wrap_X, 0x48, 4, hwOffsetFix(32, 0, UNSIGNED))
  529. REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Addr_En, 0x4c, 1, hwOffsetFix(1, 0, UNSIGNED))
  530. REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_BlockSize_X, 0x4d, 5, hwOffsetFix(33, 0, UNSIGNED))
  531. REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_CmdSize, 0x52, 1, hwOffsetFix(8, 0, UNSIGNED))
  532. REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Offset_0, 0x53, 4, hwOffsetFix(31, 0, UNSIGNED))
  533. REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Start_X_Addr, 0x57, 4, hwOffsetFix(32, 0, UNSIGNED))
  534. REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Wrap_X, 0x5b, 4, hwOffsetFix(32, 0, UNSIGNED))
  535. REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Addr_En, 0x5f, 1, hwOffsetFix(1, 0, UNSIGNED))
  536. REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_BlockSize_X, 0x60, 5, hwOffsetFix(33, 0, UNSIGNED))
  537. REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_CmdSize, 0x65, 1, hwOffsetFix(8, 0, UNSIGNED))
  538. REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Offset_0, 0x66, 4, hwOffsetFix(31, 0, UNSIGNED))
  539. REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Start_X_Addr, 0x6a, 4, hwOffsetFix(32, 0, UNSIGNED))
  540. REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Wrap_X, 0x6e, 4, hwOffsetFix(32, 0, UNSIGNED))
  541. REG(MemoryControllerPro0.Mcp_Int_Disable_OR, 0x72, 1, hwOffsetFix(6, 0, UNSIGNED))
  542. REG(MemoryControllerPro0.Mcp_Int_Enable_AND, 0x73, 1, hwOffsetFix(6, 0, UNSIGNED))
  543. REG(StreamFMAKernel.io_inAT1_force_disabled, 0x74, 1, hwOffsetFix(1, 0, UNSIGNED))
  544. REG(StreamFMAKernel.io_inBT1_force_disabled, 0x75, 1, hwOffsetFix(1, 0, UNSIGNED))
  545. REG(StreamFMAKernel.io_inAT2_force_disabled, 0x76, 1, hwOffsetFix(1, 0, UNSIGNED))
  546. REG(StreamFMAKernel.io_inBT2_force_disabled, 0x77, 1, hwOffsetFix(1, 0, UNSIGNED))
  547. REG(StreamFMAKernel.io_inAT3_force_disabled, 0x78, 1, hwOffsetFix(1, 0, UNSIGNED))
  548. REG(StreamFMAKernel.io_inBT3_force_disabled, 0x79, 1, hwOffsetFix(1, 0, UNSIGNED))
  549. REG(StreamFMAKernel.io_oDataT1_force_disabled, 0x7a, 1, hwOffsetFix(1, 0, UNSIGNED))
  550. REG(StreamFMAKernel.io_oDataT2_force_disabled, 0x7b, 1, hwOffsetFix(1, 0, UNSIGNED))
  551. REG(StreamFMAKernel.io_oDataT3_force_disabled, 0x7c, 1, hwOffsetFix(1, 0, UNSIGNED))
  552. REG(StreamFMAKernel.run_cycle_count, 0x7d, 6, hwOffsetFix(48, 0, UNSIGNED))
  553. REG(StreamFMAKernel.current_run_cycle_count, 0x83, 6, hwOffsetFix(48, 0, UNSIGNED))
  554. REG(StreamFMAKernel.dbg_ctld_almost_empty, 0x89, 1, hwBits(6))
  555. REG(StreamFMAKernel.dbg_ctld_done, 0x8a, 1, hwBits(6))
  556. REG(StreamFMAKernel.dbg_ctld_empty, 0x8b, 1, hwBits(6))
  557. REG(StreamFMAKernel.dbg_ctld_read, 0x8c, 1, hwBits(6))
  558. REG(StreamFMAKernel.dbg_ctld_read_pipe_dbg, 0x8d, 3, hwBits(18))
  559. REG(StreamFMAKernel.dbg_ctld_request, 0x90, 1, hwBits(6))
  560. REG(StreamFMAKernel.dbg_done_out, 0x91, 1, hwBits(1))
  561. REG(StreamFMAKernel.dbg_fill_level, 0x92, 1, hwBits(4))
  562. REG(StreamFMAKernel.dbg_flush_level, 0x93, 1, hwBits(4))
  563. REG(StreamFMAKernel.dbg_flush_start, 0x94, 1, hwBits(1))
  564. REG(StreamFMAKernel.dbg_flush_start_level, 0x95, 1, hwBits(4))
  565. REG(StreamFMAKernel.dbg_flushing, 0x96, 1, hwBits(1))
  566. REG(StreamFMAKernel.dbg_full_level, 0x97, 1, hwBits(4))
  567. REG(StreamFMAKernel.dbg_out_stall, 0x98, 1, hwBits(3))
  568. REG(StreamFMAKernel.dbg_out_valid, 0x99, 1, hwBits(3))
  569. REG(StreamFMAKernel.dbg_stall_vector, 0x9a, 1, hwBits(3))
  570. REG(ifpga.ifpga_ctrl, 0x9b, 1, hwBits(8))
  571. REG(SignalForwardingAdapter.SFA_FORWARD_EN, 0x9c, 4, hwBits(32))
  572. #endif
  573. #ifdef REG_V2
  574. #define REG_V2_PRESENT 1
  575. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Addr_En, 0x0, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  576. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_BlockSize_X, 0x1, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  577. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_CmdSize, 0x6, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  578. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Offset_0, 0x7, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  579. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Start_X_Addr, 0xb, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  580. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Wrap_X, 0xf, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  581. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Addr_En, 0x13, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  582. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_BlockSize_X, 0x14, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  583. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_CmdSize, 0x19, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  584. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Offset_0, 0x1a, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  585. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Start_X_Addr, 0x1e, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  586. REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Wrap_X, 0x22, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  587. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Addr_En, 0x26, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  588. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_BlockSize_X, 0x27, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  589. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_CmdSize, 0x2c, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  590. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Offset_0, 0x2d, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  591. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Start_X_Addr, 0x31, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  592. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Wrap_X, 0x35, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  593. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Addr_En, 0x39, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  594. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_BlockSize_X, 0x3a, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  595. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_CmdSize, 0x3f, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  596. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Offset_0, 0x40, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  597. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Start_X_Addr, 0x44, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  598. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Wrap_X, 0x48, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  599. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Addr_En, 0x4c, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  600. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_BlockSize_X, 0x4d, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  601. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_CmdSize, 0x52, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  602. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Offset_0, 0x53, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  603. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Start_X_Addr, 0x57, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  604. REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Wrap_X, 0x5b, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  605. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Addr_En, 0x5f, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  606. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_BlockSize_X, 0x60, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  607. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_CmdSize, 0x65, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  608. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Offset_0, 0x66, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  609. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Start_X_Addr, 0x6a, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  610. REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Wrap_X, 0x6e, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  611. REG_V2(MemoryControllerPro0.Mcp_Int_Disable_OR, 0x72, 1, hwOffsetFix(6, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  612. REG_V2(MemoryControllerPro0.Mcp_Int_Enable_AND, 0x73, 1, hwOffsetFix(6, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  613. REG_V2(StreamFMAKernel.io_inAT1_force_disabled, 0x74, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
  614. REG_V2(StreamFMAKernel.io_inBT1_force_disabled, 0x75, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
  615. REG_V2(StreamFMAKernel.io_inAT2_force_disabled, 0x76, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
  616. REG_V2(StreamFMAKernel.io_inBT2_force_disabled, 0x77, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
  617. REG_V2(StreamFMAKernel.io_inAT3_force_disabled, 0x78, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
  618. REG_V2(StreamFMAKernel.io_inBT3_force_disabled, 0x79, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
  619. REG_V2(StreamFMAKernel.io_oDataT1_force_disabled, 0x7a, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
  620. REG_V2(StreamFMAKernel.io_oDataT2_force_disabled, 0x7b, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
  621. REG_V2(StreamFMAKernel.io_oDataT3_force_disabled, 0x7c, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
  622. REG_V2(StreamFMAKernel.run_cycle_count, 0x7d, 6, hwOffsetFix(48, 0, UNSIGNED), HOST_WRITE_ONLY, false)
  623. REG_V2(StreamFMAKernel.current_run_cycle_count, 0x83, 6, hwOffsetFix(48, 0, UNSIGNED), HOST_READ_ONLY, false)
  624. REG_V2(StreamFMAKernel.dbg_ctld_almost_empty, 0x89, 1, hwBits(6), HOST_READ_ONLY, false)
  625. REG_V2(StreamFMAKernel.dbg_ctld_done, 0x8a, 1, hwBits(6), HOST_READ_ONLY, false)
  626. REG_V2(StreamFMAKernel.dbg_ctld_empty, 0x8b, 1, hwBits(6), HOST_READ_ONLY, false)
  627. REG_V2(StreamFMAKernel.dbg_ctld_read, 0x8c, 1, hwBits(6), HOST_READ_ONLY, false)
  628. REG_V2(StreamFMAKernel.dbg_ctld_read_pipe_dbg, 0x8d, 3, hwBits(18), HOST_READ_ONLY, false)
  629. REG_V2(StreamFMAKernel.dbg_ctld_request, 0x90, 1, hwBits(6), HOST_READ_ONLY, false)
  630. REG_V2(StreamFMAKernel.dbg_done_out, 0x91, 1, hwBits(1), HOST_READ_ONLY, false)
  631. REG_V2(StreamFMAKernel.dbg_fill_level, 0x92, 1, hwBits(4), HOST_READ_ONLY, false)
  632. REG_V2(StreamFMAKernel.dbg_flush_level, 0x93, 1, hwBits(4), HOST_READ_ONLY, false)
  633. REG_V2(StreamFMAKernel.dbg_flush_start, 0x94, 1, hwBits(1), HOST_READ_ONLY, false)
  634. REG_V2(StreamFMAKernel.dbg_flush_start_level, 0x95, 1, hwBits(4), HOST_READ_ONLY, false)
  635. REG_V2(StreamFMAKernel.dbg_flushing, 0x96, 1, hwBits(1), HOST_READ_ONLY, false)
  636. REG_V2(StreamFMAKernel.dbg_full_level, 0x97, 1, hwBits(4), HOST_READ_ONLY, false)
  637. REG_V2(StreamFMAKernel.dbg_out_stall, 0x98, 1, hwBits(3), HOST_READ_ONLY, false)
  638. REG_V2(StreamFMAKernel.dbg_out_valid, 0x99, 1, hwBits(3), HOST_READ_ONLY, false)
  639. REG_V2(StreamFMAKernel.dbg_stall_vector, 0x9a, 1, hwBits(3), HOST_READ_ONLY, false)
  640. REG_V2(ifpga.ifpga_ctrl, 0x9b, 1, hwBits(8), HOST_READ_WRITE, false)
  641. REG_V2(SignalForwardingAdapter.SFA_FORWARD_EN, 0x9c, 4, hwBits(32), HOST_READ_WRITE, false)
  642. #endif
  643. #ifdef CHECKSUM
  644. #define CHECKSUM_PRESENT 1
  645. CHECKSUM("5677d622f2daecc91b0561585ae87653a418e3bb53c0a22186ca7832455db10b")
  646. #endif
  647. #ifdef MANAGER_MEMCTL
  648. #define MANAGER_MEMCTL_PRESENT 1
  649. MANAGER_MEMCTL(MemoryControllerPro0, MemoryControllerPro0.Mcp, 192, 0)
  650. #endif
  651. #ifdef MANAGER_MEMCTL_CONTROL_GROUP
  652. #define MANAGER_MEMCTL_CONTROL_GROUP_PRESENT 1
  653. MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_inAT2, addrgen_cmd_MemoryControllerPro0_inAT2.AGen, LINEAR_1D)
  654. MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_inBT2, addrgen_cmd_MemoryControllerPro0_inBT2.AGen, LINEAR_1D)
  655. MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_inAT3, addrgen_cmd_MemoryControllerPro0_inAT3.AGen, LINEAR_1D)
  656. MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_inBT3, addrgen_cmd_MemoryControllerPro0_inBT3.AGen, LINEAR_1D)
  657. MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_oDataT1, addrgen_cmd_MemoryControllerPro0_oDataT1.AGen, LINEAR_1D)
  658. MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_oDataT2, addrgen_cmd_MemoryControllerPro0_oDataT2.AGen, LINEAR_1D)
  659. #endif
  660. #ifdef MANAGER_MEMCTL_DATA_STREAM
  661. #define MANAGER_MEMCTL_DATA_STREAM_PRESENT 1
  662. MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_inAT2, inAT2, 0, 0, READ)
  663. MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_inBT2, inBT2, 0, 1, READ)
  664. MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_inAT3, inAT3, 0, 2, READ)
  665. MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_inBT3, inBT3, 0, 3, READ)
  666. MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_oDataT1, oDataT1, 0, 4, WRITE)
  667. MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_oDataT2, oDataT2, 0, 5, WRITE)
  668. #endif
  669. #ifdef CAPABILITY
  670. #define CAPABILITY_PRESENT 1
  671. CAPABILITY(LIMAREV, LIMAREVA)
  672. CAPABILITY(LIMARAM, DDR4_48GB)
  673. CAPABILITY(LIMAFPGA, xcVU9P_FLGB2104_2_E)
  674. #endif
  675. #ifdef DEFINE_DESIGN_NAME
  676. #define DESIGN_NAME StreamFMA
  677. #endif /* DEFINE_DESIGN_NAME */
  678. #ifndef SLIC_NO_DECLARATIONS
  679. /**\file */
  680. #ifndef SLIC_DECLARATIONS_StreamFMA_H
  681. #define SLIC_DECLARATIONS_StreamFMA_H
  682. #include "MaxSLiCInterface.h"
  683. #ifdef __cplusplus
  684. extern "C" {
  685. #endif /* __cplusplus */
  686. #define StreamFMA_DYNAMIC_CLOCKS_ENABLED (0)
  687. #define StreamFMA_PCIE_ALIGNMENT (16)
  688. /*----------------------------------------------------------------------------*/
  689. /*---------------------------- Interface default -----------------------------*/
  690. /*----------------------------------------------------------------------------*/
  691. /**
  692. * \brief Basic static function for the interface 'default'.
  693. *
  694. * \param [in] ticks_StreamFMAKernel The number of ticks for which kernel "StreamFMAKernel" will run.
  695. * \param [in] instream_inAT1 Stream "inAT1".
  696. * \param [in] instream_size_inAT1 The size of the stream instream_inAT1 in bytes.
  697. * \param [in] instream_inBT1 Stream "inBT1".
  698. * \param [in] instream_size_inBT1 The size of the stream instream_inBT1 in bytes.
  699. * \param [out] outstream_oDataT3 Stream "oDataT3".
  700. * \param [in] outstream_size_oDataT3 The size of the stream outstream_oDataT3 in bytes.
  701. * \param [in] lmem_address_MemoryControllerPro0_inAT2 Linear LMem control for "inAT2" stream: base address, in bytes.
  702. * \param [in] lmem_arr_size_MemoryControllerPro0_inAT2 Linear LMem control for "inAT2" stream: array size, in bytes.
  703. * \param [in] lmem_address_MemoryControllerPro0_inAT3 Linear LMem control for "inAT3" stream: base address, in bytes.
  704. * \param [in] lmem_arr_size_MemoryControllerPro0_inAT3 Linear LMem control for "inAT3" stream: array size, in bytes.
  705. * \param [in] lmem_address_MemoryControllerPro0_inBT2 Linear LMem control for "inBT2" stream: base address, in bytes.
  706. * \param [in] lmem_arr_size_MemoryControllerPro0_inBT2 Linear LMem control for "inBT2" stream: array size, in bytes.
  707. * \param [in] lmem_address_MemoryControllerPro0_inBT3 Linear LMem control for "inBT3" stream: base address, in bytes.
  708. * \param [in] lmem_arr_size_MemoryControllerPro0_inBT3 Linear LMem control for "inBT3" stream: array size, in bytes.
  709. * \param [in] lmem_address_MemoryControllerPro0_oDataT1 Linear LMem control for "oDataT1" stream: base address, in bytes.
  710. * \param [in] lmem_arr_size_MemoryControllerPro0_oDataT1 Linear LMem control for "oDataT1" stream: array size, in bytes.
  711. * \param [in] lmem_address_MemoryControllerPro0_oDataT2 Linear LMem control for "oDataT2" stream: base address, in bytes.
  712. * \param [in] lmem_arr_size_MemoryControllerPro0_oDataT2 Linear LMem control for "oDataT2" stream: array size, in bytes.
  713. */
  714. void StreamFMA(
  715. uint64_t ticks_StreamFMAKernel,
  716. const void *instream_inAT1,
  717. size_t instream_size_inAT1,
  718. const void *instream_inBT1,
  719. size_t instream_size_inBT1,
  720. void *outstream_oDataT3,
  721. size_t outstream_size_oDataT3,
  722. size_t lmem_address_MemoryControllerPro0_inAT2,
  723. size_t lmem_arr_size_MemoryControllerPro0_inAT2,
  724. size_t lmem_address_MemoryControllerPro0_inAT3,
  725. size_t lmem_arr_size_MemoryControllerPro0_inAT3,
  726. size_t lmem_address_MemoryControllerPro0_inBT2,
  727. size_t lmem_arr_size_MemoryControllerPro0_inBT2,
  728. size_t lmem_address_MemoryControllerPro0_inBT3,
  729. size_t lmem_arr_size_MemoryControllerPro0_inBT3,
  730. size_t lmem_address_MemoryControllerPro0_oDataT1,
  731. size_t lmem_arr_size_MemoryControllerPro0_oDataT1,
  732. size_t lmem_address_MemoryControllerPro0_oDataT2,
  733. size_t lmem_arr_size_MemoryControllerPro0_oDataT2);
  734. /**
  735. * \brief Basic static non-blocking function for the interface 'default'.
  736. *
  737. * Schedule to run on an engine and return immediately.
  738. * The status of the run can be checked either by ::max_wait or ::max_nowait;
  739. * note that one of these *must* be called, so that associated memory can be released.
  740. *
  741. *
  742. * \param [in] ticks_StreamFMAKernel The number of ticks for which kernel "StreamFMAKernel" will run.
  743. * \param [in] instream_inAT1 Stream "inAT1".
  744. * \param [in] instream_size_inAT1 The size of the stream instream_inAT1 in bytes.
  745. * \param [in] instream_inBT1 Stream "inBT1".
  746. * \param [in] instream_size_inBT1 The size of the stream instream_inBT1 in bytes.
  747. * \param [out] outstream_oDataT3 Stream "oDataT3".
  748. * \param [in] outstream_size_oDataT3 The size of the stream outstream_oDataT3 in bytes.
  749. * \param [in] lmem_address_MemoryControllerPro0_inAT2 Linear LMem control for "inAT2" stream: base address, in bytes.
  750. * \param [in] lmem_arr_size_MemoryControllerPro0_inAT2 Linear LMem control for "inAT2" stream: array size, in bytes.
  751. * \param [in] lmem_address_MemoryControllerPro0_inAT3 Linear LMem control for "inAT3" stream: base address, in bytes.
  752. * \param [in] lmem_arr_size_MemoryControllerPro0_inAT3 Linear LMem control for "inAT3" stream: array size, in bytes.
  753. * \param [in] lmem_address_MemoryControllerPro0_inBT2 Linear LMem control for "inBT2" stream: base address, in bytes.
  754. * \param [in] lmem_arr_size_MemoryControllerPro0_inBT2 Linear LMem control for "inBT2" stream: array size, in bytes.
  755. * \param [in] lmem_address_MemoryControllerPro0_inBT3 Linear LMem control for "inBT3" stream: base address, in bytes.
  756. * \param [in] lmem_arr_size_MemoryControllerPro0_inBT3 Linear LMem control for "inBT3" stream: array size, in bytes.
  757. * \param [in] lmem_address_MemoryControllerPro0_oDataT1 Linear LMem control for "oDataT1" stream: base address, in bytes.
  758. * \param [in] lmem_arr_size_MemoryControllerPro0_oDataT1 Linear LMem control for "oDataT1" stream: array size, in bytes.
  759. * \param [in] lmem_address_MemoryControllerPro0_oDataT2 Linear LMem control for "oDataT2" stream: base address, in bytes.
  760. * \param [in] lmem_arr_size_MemoryControllerPro0_oDataT2 Linear LMem control for "oDataT2" stream: array size, in bytes.
  761. * \return A handle on the execution status, or NULL in case of error.
  762. */
  763. max_run_t *StreamFMA_nonblock(
  764. uint64_t ticks_StreamFMAKernel,
  765. const void *instream_inAT1,
  766. size_t instream_size_inAT1,
  767. const void *instream_inBT1,
  768. size_t instream_size_inBT1,
  769. void *outstream_oDataT3,
  770. size_t outstream_size_oDataT3,
  771. size_t lmem_address_MemoryControllerPro0_inAT2,
  772. size_t lmem_arr_size_MemoryControllerPro0_inAT2,
  773. size_t lmem_address_MemoryControllerPro0_inAT3,
  774. size_t lmem_arr_size_MemoryControllerPro0_inAT3,
  775. size_t lmem_address_MemoryControllerPro0_inBT2,
  776. size_t lmem_arr_size_MemoryControllerPro0_inBT2,
  777. size_t lmem_address_MemoryControllerPro0_inBT3,
  778. size_t lmem_arr_size_MemoryControllerPro0_inBT3,
  779. size_t lmem_address_MemoryControllerPro0_oDataT1,
  780. size_t lmem_arr_size_MemoryControllerPro0_oDataT1,
  781. size_t lmem_address_MemoryControllerPro0_oDataT2,
  782. size_t lmem_arr_size_MemoryControllerPro0_oDataT2);
  783. /**
  784. * \brief Advanced static interface, structure for the engine interface 'default'
  785. *
  786. */
  787. typedef struct {
  788. uint64_t ticks_StreamFMAKernel; /**< [in] The number of ticks for which kernel "StreamFMAKernel" will run. */
  789. const void *instream_inAT1; /**< [in] Stream "inAT1". */
  790. size_t instream_size_inAT1; /**< [in] The size of the stream instream_inAT1 in bytes. */
  791. const void *instream_inBT1; /**< [in] Stream "inBT1". */
  792. size_t instream_size_inBT1; /**< [in] The size of the stream instream_inBT1 in bytes. */
  793. void *outstream_oDataT3; /**< [out] Stream "oDataT3". */
  794. size_t outstream_size_oDataT3; /**< [in] The size of the stream outstream_oDataT3 in bytes. */
  795. size_t lmem_address_MemoryControllerPro0_inAT2; /**< [in] Linear LMem control for "inAT2" stream: base address, in bytes. */
  796. size_t lmem_arr_size_MemoryControllerPro0_inAT2; /**< [in] Linear LMem control for "inAT2" stream: array size, in bytes. */
  797. size_t lmem_address_MemoryControllerPro0_inAT3; /**< [in] Linear LMem control for "inAT3" stream: base address, in bytes. */
  798. size_t lmem_arr_size_MemoryControllerPro0_inAT3; /**< [in] Linear LMem control for "inAT3" stream: array size, in bytes. */
  799. size_t lmem_address_MemoryControllerPro0_inBT2; /**< [in] Linear LMem control for "inBT2" stream: base address, in bytes. */
  800. size_t lmem_arr_size_MemoryControllerPro0_inBT2; /**< [in] Linear LMem control for "inBT2" stream: array size, in bytes. */
  801. size_t lmem_address_MemoryControllerPro0_inBT3; /**< [in] Linear LMem control for "inBT3" stream: base address, in bytes. */
  802. size_t lmem_arr_size_MemoryControllerPro0_inBT3; /**< [in] Linear LMem control for "inBT3" stream: array size, in bytes. */
  803. size_t lmem_address_MemoryControllerPro0_oDataT1; /**< [in] Linear LMem control for "oDataT1" stream: base address, in bytes. */
  804. size_t lmem_arr_size_MemoryControllerPro0_oDataT1; /**< [in] Linear LMem control for "oDataT1" stream: array size, in bytes. */
  805. size_t lmem_address_MemoryControllerPro0_oDataT2; /**< [in] Linear LMem control for "oDataT2" stream: base address, in bytes. */
  806. size_t lmem_arr_size_MemoryControllerPro0_oDataT2; /**< [in] Linear LMem control for "oDataT2" stream: array size, in bytes. */
  807. } StreamFMA_actions_t;
  808. /**
  809. * \brief Advanced static function for the interface 'default'.
  810. *
  811. * \param [in] engine The engine on which the actions will be executed.
  812. * \param [in,out] interface_actions Actions to be executed.
  813. */
  814. void StreamFMA_run(
  815. max_engine_t *engine,
  816. StreamFMA_actions_t *interface_actions);
  817. /**
  818. * \brief Advanced static non-blocking function for the interface 'default'.
  819. *
  820. * Schedule the actions to run on the engine and return immediately.
  821. * The status of the run can be checked either by ::max_wait or ::max_nowait;
  822. * note that one of these *must* be called, so that associated memory can be released.
  823. *
  824. *
  825. * \param [in] engine The engine on which the actions will be executed.
  826. * \param [in] interface_actions Actions to be executed.
  827. * \return A handle on the execution status of the actions, or NULL in case of error.
  828. */
  829. max_run_t *StreamFMA_run_nonblock(
  830. max_engine_t *engine,
  831. StreamFMA_actions_t *interface_actions);
  832. /**
  833. * \brief Group run advanced static function for the interface 'default'.
  834. *
  835. * \param [in] group Group to use.
  836. * \param [in,out] interface_actions Actions to run.
  837. *
  838. * Run the actions on the first device available in the group.
  839. */
  840. void StreamFMA_run_group(max_group_t *group, StreamFMA_actions_t *interface_actions);
  841. /**
  842. * \brief Group run advanced static non-blocking function for the interface 'default'.
  843. *
  844. *
  845. * Schedule the actions to run on the first device available in the group and return immediately.
  846. * The status of the run must be checked with ::max_wait.
  847. * Note that use of ::max_nowait is prohibited with non-blocking running on groups:
  848. * see the ::max_run_group_nonblock documentation for more explanation.
  849. *
  850. * \param [in] group Group to use.
  851. * \param [in] interface_actions Actions to run.
  852. * \return A handle on the execution status of the actions, or NULL in case of error.
  853. */
  854. max_run_t *StreamFMA_run_group_nonblock(max_group_t *group, StreamFMA_actions_t *interface_actions);
  855. /**
  856. * \brief Array run advanced static function for the interface 'default'.
  857. *
  858. * \param [in] engarray The array of devices to use.
  859. * \param [in,out] interface_actions The array of actions to run.
  860. *
  861. * Run the array of actions on the array of engines. The length of interface_actions
  862. * must match the size of engarray.
  863. */
  864. void StreamFMA_run_array(max_engarray_t *engarray, StreamFMA_actions_t *interface_actions[]);
  865. /**
  866. * \brief Array run advanced static non-blocking function for the interface 'default'.
  867. *
  868. *
  869. * Schedule to run the array of actions on the array of engines, and return immediately.
  870. * The length of interface_actions must match the size of engarray.
  871. * The status of the run can be checked either by ::max_wait or ::max_nowait;
  872. * note that one of these *must* be called, so that associated memory can be released.
  873. *
  874. * \param [in] engarray The array of devices to use.
  875. * \param [in] interface_actions The array of actions to run.
  876. * \return A handle on the execution status of the actions, or NULL in case of error.
  877. */
  878. max_run_t *StreamFMA_run_array_nonblock(max_engarray_t *engarray, StreamFMA_actions_t *interface_actions[]);
  879. /**
  880. * \brief Converts a static-interface action struct into a dynamic-interface max_actions_t struct.
  881. *
  882. * Note that this is an internal utility function used by other functions in the static interface.
  883. *
  884. * \param [in] maxfile The maxfile to use.
  885. * \param [in] interface_actions The interface-specific actions to run.
  886. * \return The dynamic-interface actions to run, or NULL in case of error.
  887. */
  888. max_actions_t* StreamFMA_convert(max_file_t *maxfile, StreamFMA_actions_t *interface_actions);
  889. /**
  890. * \brief Initialise a maxfile.
  891. */
  892. max_file_t* StreamFMA_init(void);
  893. /* Error handling functions */
  894. int StreamFMA_has_errors(void);
  895. const char* StreamFMA_get_errors(void);
  896. void StreamFMA_clear_errors(void);
  897. /* Free statically allocated maxfile data */
  898. void StreamFMA_free(void);
  899. /* returns: -1 = error running command; 0 = no error reported */
  900. int StreamFMA_simulator_start(void);
  901. /* returns: -1 = error running command; 0 = no error reported */
  902. int StreamFMA_simulator_stop(void);
  903. #ifdef __cplusplus
  904. }
  905. #endif /* __cplusplus */
  906. #endif /* SLIC_DECLARATIONS_StreamFMA_H */
  907. #endif /* SLIC_NO_DECLARATIONS */
  908. #ifdef PHOTON_NODE_DATA
  909. #define PHOTON_NODE_DATA_PRESENT 1
  910. PHOTON_NODE_DATA(StreamFMAKernel, 22, NodeInputMappedReg, "Scalar input (io_oDataT1_force_disabled)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.output(IO.java:836)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:31)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  911. PHOTON_NODE_DATA(StreamFMAKernel, 23, NodeNot, "~", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.output(IO.java:836)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:31)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  912. PHOTON_NODE_DATA(StreamFMAKernel, 0, NodeInputMappedReg, "Scalar input (io_inAT1_force_disabled)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:15)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  913. PHOTON_NODE_DATA(StreamFMAKernel, 1, NodeNot, "~", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:15)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  914. PHOTON_NODE_DATA(StreamFMAKernel, 2, NodeInput, "Input(inAT1)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:15)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  915. PHOTON_NODE_DATA(StreamFMAKernel, 3, NodeInputMappedReg, "Scalar input (io_inBT1_force_disabled)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:16)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  916. PHOTON_NODE_DATA(StreamFMAKernel, 4, NodeNot, "~", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:16)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  917. PHOTON_NODE_DATA(StreamFMAKernel, 5, NodeInput, "Input(inBT1)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:16)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  918. PHOTON_NODE_DATA(StreamFMAKernel, 18, NodeAdd, "+", "com.maxeler.maxcompiler.v2.kernelcompiler.types.base.DFEVar.add(DFEVar.java:1010)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:27)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  919. PHOTON_NODE_DATA(StreamFMAKernel, 25, NodeOutput, "Output(oDataT1)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.output(IO.java:836)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:31)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  920. PHOTON_NODE_DATA(StreamFMAKernel, 27, NodeInputMappedReg, "Scalar input (io_oDataT2_force_disabled)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.output(IO.java:836)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:32)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  921. PHOTON_NODE_DATA(StreamFMAKernel, 28, NodeNot, "~", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.output(IO.java:836)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:32)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  922. PHOTON_NODE_DATA(StreamFMAKernel, 6, NodeInputMappedReg, "Scalar input (io_inAT2_force_disabled)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:19)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  923. PHOTON_NODE_DATA(StreamFMAKernel, 7, NodeNot, "~", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:19)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  924. PHOTON_NODE_DATA(StreamFMAKernel, 8, NodeInput, "Input(inAT2)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:19)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  925. PHOTON_NODE_DATA(StreamFMAKernel, 9, NodeInputMappedReg, "Scalar input (io_inBT2_force_disabled)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:20)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  926. PHOTON_NODE_DATA(StreamFMAKernel, 10, NodeNot, "~", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:20)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  927. PHOTON_NODE_DATA(StreamFMAKernel, 11, NodeInput, "Input(inBT2)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:20)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  928. PHOTON_NODE_DATA(StreamFMAKernel, 19, NodeMul, "*", "com.maxeler.maxcompiler.v2.kernelcompiler.types.base.DFEVar.mul(DFEVar.java:1118)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:28)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  929. PHOTON_NODE_DATA(StreamFMAKernel, 30, NodeOutput, "Output(oDataT2)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.output(IO.java:836)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:32)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  930. PHOTON_NODE_DATA(StreamFMAKernel, 32, NodeInputMappedReg, "Scalar input (io_oDataT3_force_disabled)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.output(IO.java:836)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:33)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  931. PHOTON_NODE_DATA(StreamFMAKernel, 33, NodeNot, "~", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.output(IO.java:836)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:33)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  932. PHOTON_NODE_DATA(StreamFMAKernel, 12, NodeInputMappedReg, "Scalar input (io_inAT3_force_disabled)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:23)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  933. PHOTON_NODE_DATA(StreamFMAKernel, 13, NodeNot, "~", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:23)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  934. PHOTON_NODE_DATA(StreamFMAKernel, 14, NodeInput, "Input(inAT3)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:23)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  935. PHOTON_NODE_DATA(StreamFMAKernel, 15, NodeInputMappedReg, "Scalar input (io_inBT3_force_disabled)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:24)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  936. PHOTON_NODE_DATA(StreamFMAKernel, 16, NodeNot, "~", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:24)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  937. PHOTON_NODE_DATA(StreamFMAKernel, 17, NodeInput, "Input(inBT3)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.input(IO.java:630)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:24)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  938. PHOTON_NODE_DATA(StreamFMAKernel, 20, NodeAdd, "+", "com.maxeler.maxcompiler.v2.kernelcompiler.types.base.DFEVar.add(DFEVar.java:1010)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:29)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  939. PHOTON_NODE_DATA(StreamFMAKernel, 35, NodeOutput, "Output(oDataT3)", "com.maxeler.maxcompiler.v2.kernelcompiler.stdlib.core.IO.output(IO.java:836)\nperfmodels.StreamFMAKernel.<init>(StreamFMAKernel.maxj:33)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  940. PHOTON_NODE_DATA(StreamFMAKernel, 40, NodeConstantRawBits, "{HWOffsetFix:1, 0, UNSIGNED}\n0x1; 1.0", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  941. PHOTON_NODE_DATA(StreamFMAKernel, 50, NodeConstantRawBits, "{HWOffsetFix:1, 0, UNSIGNED}\n0x1; 1.0", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  942. PHOTON_NODE_DATA(StreamFMAKernel, 37, NodeConstantRawBits, "{HWOffsetFix:49, 0, UNSIGNED}\n0x1000000000000; 2.81474976710656E14", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  943. PHOTON_NODE_DATA(StreamFMAKernel, 38, NodeCounter, "Counter(NUMERIC_INCREMENTING)\nInc: 1\nReset: 0\nInit: 0", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  944. PHOTON_NODE_DATA(StreamFMAKernel, 39, NodeStreamOffset, "stream offset: 1", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  945. PHOTON_NODE_DATA(StreamFMAKernel, 41, NodeOutputMappedReg, "Scalar output (current_run_cycle_count)", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  946. PHOTON_NODE_DATA(StreamFMAKernel, 49, NodeConstantRawBits, "{HWOffsetFix:1, 0, UNSIGNED}\n0x1; 1.0", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  947. PHOTON_NODE_DATA(StreamFMAKernel, 43, NodeConstantRawBits, "{HWOffsetFix:49, 0, UNSIGNED}\n0x1000000000000; 2.81474976710656E14", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  948. PHOTON_NODE_DATA(StreamFMAKernel, 44, NodeCounter, "Counter(NUMERIC_INCREMENTING)\nInc: 1\nReset: 0\nInit: 0", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  949. PHOTON_NODE_DATA(StreamFMAKernel, 46, NodeInputMappedReg, "Scalar input (run_cycle_count)", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  950. PHOTON_NODE_DATA(StreamFMAKernel, 48, NodeEqInlined, "==", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  951. PHOTON_NODE_DATA(StreamFMAKernel, 45, NodeFlush, "flush on trigger", "com.maxeler.platform.max5.manager.Max5ManagerBase.addKernel(Unknown Source)\nperfmodels.StreamFMAManager.<init>(StreamFMAManager.maxj:22)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:59)\n")
  952. #endif
  953. #ifdef SLIC_USE_DEFINITIONS
  954. #include <stdio.h>
  955. #include <math.h>
  956. #include <pthread.h>
  957. #include <string.h>
  958. #include <unistd.h>
  959. #include <stdlib.h>
  960. static max_file_t *stored_maxfile = NULL;
  961. static max_engine_t *stored_engine = NULL;
  962. static char *stored_error = NULL;
  963. static int stored_has_error = 0;
  964. static pthread_once_t slic_bs_is_initialised = PTHREAD_ONCE_INIT;
  965. static void set_error(const char *error_str)
  966. {
  967. stored_has_error = 1;
  968. if(stored_error == NULL) {
  969. stored_error = strdup(error_str);
  970. } else {
  971. char *nerr = malloc(strlen(stored_error) + strlen(error_str) + 2);
  972. sprintf(nerr, "%s\n%s", stored_error, error_str);
  973. free(stored_error);
  974. stored_error = nerr;
  975. }
  976. }
  977. static void set_error_and_free(char *error_str){
  978. set_error(error_str);
  979. free(error_str);
  980. }
  981. int StreamFMA_has_errors(void)
  982. { return stored_has_error; }
  983. const char* StreamFMA_get_errors(void)
  984. { return stored_error; }
  985. void StreamFMA_clear_errors(void)
  986. {
  987. free(stored_error);
  988. stored_error = NULL;
  989. stored_has_error = 0;
  990. }
  991. static char StreamFMA_use_simulation[16];
  992. static void StreamFMA_def_use_simulation(void)
  993. {
  994. long pid = ((long) getpid()) % 100000;
  995. snprintf(StreamFMA_use_simulation, 16, "StreamFM_%05ld_", pid);
  996. }
  997. static const char *StreamFMA_check_use_simulation(void)
  998. {
  999. StreamFMA_def_use_simulation();
  1000. const char *use_sim = max_config_get_string(MAX_CONFIG_USE_SIMULATION);
  1001. if (use_sim == NULL) {
  1002. use_sim = StreamFMA_use_simulation;
  1003. max_config_set_string(MAX_CONFIG_USE_SIMULATION, use_sim);
  1004. }
  1005. return use_sim;
  1006. }
  1007. static int StreamFMA_simulation_launch = 0;
  1008. int StreamFMA_simulator_start(void)
  1009. {
  1010. int retval = 0;
  1011. const char *use_sim = StreamFMA_check_use_simulation();
  1012. char buff[1024];
  1013. snprintf(buff, 1024, "PATH=simutils:$PATH maxcompilersim -d 1 -n %s -c MAX5C -S simutils restart", use_sim);
  1014. FILE *pipe_fp = popen(buff, "r");
  1015. if (pipe_fp == NULL) {
  1016. strncat(buff, " : failed to execute.", (1024 - strlen(buff)));
  1017. set_error(buff);
  1018. return -1;
  1019. }
  1020. while (fgets(buff, 1024, pipe_fp) != NULL) {
  1021. /* Uncomment this to get simulator command output */
  1022. /* fprintf(stderr, buff); */
  1023. if (strstr(buff, "Error")) {
  1024. set_error(buff);
  1025. retval = -1;
  1026. }
  1027. }
  1028. pclose(pipe_fp);
  1029. return retval;
  1030. }
  1031. int StreamFMA_simulator_stop(void)
  1032. {
  1033. const char *use_sim = StreamFMA_check_use_simulation();
  1034. char buff[1024];
  1035. snprintf(buff, 1024, "PATH=simutils:$PATH maxcompilersim -d 1 -n %s -c MAX5C -S simutils stop", use_sim);
  1036. FILE *pipe_fp = popen(buff, "r");
  1037. if (pipe_fp == NULL) {
  1038. strncat(buff, " : failed to execute.", (1024 - strlen(buff)));
  1039. set_error(buff);
  1040. return -1;
  1041. }
  1042. while (fgets(buff, 1024, pipe_fp) != NULL) {
  1043. /* Uncomment this to get simulator command output */
  1044. /* fprintf(stderr, buff); */
  1045. ;
  1046. }
  1047. pclose(pipe_fp);
  1048. return 0;
  1049. }
  1050. static void StreamFMA_static_init(void)
  1051. {
  1052. stored_maxfile = StreamFMA_init();
  1053. if (stored_maxfile == NULL || !max_ok(stored_maxfile->errors)) {
  1054. stored_maxfile = NULL;
  1055. if(max_config_get_bool(MAX_CONFIG_STATIC_INTERFACE_ABORT_ON_ERROR)) abort();
  1056. else { set_error("Unable to load maxfile"); return; }
  1057. }
  1058. if(!max_ok(max_global_errors())) {
  1059. set_error_and_free(max_errors_trace(max_global_errors()));
  1060. return;
  1061. }
  1062. if(!max_config_get_bool(MAX_CONFIG_STATIC_INTERFACE_ABORT_ON_ERROR))
  1063. max_errors_mode(stored_maxfile->errors, 0);
  1064. time_t timeout_previous = max_load_timeout(stored_maxfile, 30);
  1065. const char *use_sim = StreamFMA_check_use_simulation();
  1066. if (max_ping_daemon(stored_maxfile, use_sim) == 0) {
  1067. int sim_stat = StreamFMA_simulator_start();
  1068. if ((sim_stat == 0) && (max_ping_daemon(stored_maxfile, use_sim) == 1)) {
  1069. StreamFMA_simulation_launch = 1;
  1070. } else {
  1071. set_error("Error: An error occurred while trying to start the simulation infrastructure automatically.");
  1072. set_error("Error: Check that 'use_simulation=<simulator_name>' is set correctly in your SLiC configuration");
  1073. set_error("Error: and that the associated simulated system daemon is running.");
  1074. max_file_free(stored_maxfile);
  1075. stored_maxfile = NULL;
  1076. return;
  1077. }
  1078. }
  1079. stored_engine = max_load(stored_maxfile, "*");
  1080. if (!max_ok(stored_maxfile->errors)) {
  1081. if(max_config_get_bool(MAX_CONFIG_STATIC_INTERFACE_ABORT_ON_ERROR)) {
  1082. fprintf(stderr, "\nUnable to load engine: aborting now.\n\n");
  1083. fflush(stderr);
  1084. abort();
  1085. } else {
  1086. set_error_and_free(max_errors_trace(stored_maxfile->errors));
  1087. max_file_free(stored_maxfile);
  1088. stored_maxfile = NULL;
  1089. return;
  1090. }
  1091. }
  1092. max_load_timeout(stored_maxfile, timeout_previous);
  1093. }
  1094. void StreamFMA_free(void)
  1095. {
  1096. if (stored_engine != NULL) {
  1097. max_unload(stored_engine);
  1098. stored_engine = NULL;
  1099. }
  1100. if (stored_maxfile != NULL) {
  1101. max_file_free(stored_maxfile);
  1102. stored_maxfile = NULL;
  1103. }
  1104. if (stored_error != NULL) {
  1105. free(stored_error);
  1106. stored_error = NULL;
  1107. }
  1108. if (StreamFMA_simulation_launch == 1) {
  1109. int sim_stat = StreamFMA_simulator_stop();
  1110. if (sim_stat != 0 ) {
  1111. fprintf(stderr, "Error stopping simulator.");
  1112. }
  1113. StreamFMA_simulation_launch = 0;
  1114. }
  1115. }
  1116. static int StreamFMA_get_pcie_alignment(void)
  1117. {
  1118. #ifdef StreamFMA_PCIE_ALIGNMENT
  1119. return ((StreamFMA_PCIE_ALIGNMENT < 1) ? 16 : StreamFMA_PCIE_ALIGNMENT);
  1120. #else
  1121. return 16;
  1122. #endif
  1123. }
  1124. static int StreamFMA_check_aligned(const void *data)
  1125. {
  1126. uintptr_t pointer = (uintptr_t) data;
  1127. int alignment = StreamFMA_get_pcie_alignment();
  1128. return (pointer % alignment) ? 1 : 0;
  1129. }
  1130. static void *StreamFMA_malloc_aligned(const size_t size)
  1131. {
  1132. void *ptr;
  1133. int alignment = StreamFMA_get_pcie_alignment();
  1134. posix_memalign(&ptr, alignment, size);
  1135. return ptr;
  1136. }
  1137. /*----------------------------------------------------------------------------*/
  1138. /*---------------------------- Interface default -----------------------------*/
  1139. /*----------------------------------------------------------------------------*/
  1140. #define CHECK_ERRORS_ST(ST, RET) if(!max_ok(ST->errors)) { if(max_config_get_bool(MAX_CONFIG_STATIC_INTERFACE_ABORT_ON_ERROR)) { fprintf(stderr, "%s\n", max_errors_trace(ST->errors)); abort(); } set_error_and_free(max_errors_trace(ST->errors)); return RET; }
  1141. #define CHECK_NULL(VALUE, MESSAGE, RET) if(VALUE == NULL) { if (max_config_get_bool(MAX_CONFIG_STATIC_INTERFACE_ABORT_ON_ERROR)) { fprintf(stderr, "%s\n%s\n", (stored_error == NULL) ? "" : stored_error, MESSAGE); abort(); } set_error(MESSAGE); return RET; }
  1142. typedef struct StreamFMA_callback_stream {
  1143. uint8_t *user_ptr;
  1144. uint8_t *aligned_ptr;
  1145. size_t size;
  1146. int is_output;
  1147. } StreamFMA_callback_stream_t;
  1148. typedef struct StreamFMA_callback_data {
  1149. StreamFMA_callback_stream_t stream[3];
  1150. int count;
  1151. int max_count;
  1152. } StreamFMA_callback_data_t;
  1153. static void StreamFMA_callback_internal(void *cb_data)
  1154. {
  1155. StreamFMA_callback_data_t *data = (StreamFMA_callback_data_t*) cb_data;
  1156. for (int i = 0 ; i < data->count ; i++ ) {
  1157. StreamFMA_callback_stream_t *s = &data->stream[i];
  1158. if (s->is_output && (s->size > 0)) {
  1159. memcpy(s->user_ptr, s->aligned_ptr, s->size);
  1160. }
  1161. free(s->aligned_ptr);
  1162. }
  1163. free(data);
  1164. }
  1165. static max_actions_t* StreamFMA_convert_internal(
  1166. max_file_t *maxfile,
  1167. StreamFMA_actions_t *interface_actions,
  1168. int is_internal_call,
  1169. void (**callback_func)(void*),
  1170. void **callback_data)
  1171. {
  1172. max_actions_t *actions = max_actions_init(maxfile, NULL);
  1173. if(actions == NULL) return NULL;
  1174. #define CHECK_ERRORS if(!max_ok(actions->errors)) { set_error_and_free(max_errors_trace(actions->errors)); return NULL; }
  1175. StreamFMA_callback_data_t *cb_data = NULL;
  1176. int use_callback = (callback_func != NULL) && (callback_data != NULL);
  1177. if (use_callback) {
  1178. cb_data = malloc(sizeof(StreamFMA_callback_data_t));
  1179. if (cb_data == NULL) {
  1180. fprintf(stderr, "Unable to allocate memory for stream callback data in function StreamFMA_convert_internal\n");
  1181. return NULL;
  1182. }
  1183. cb_data->max_count = 3;
  1184. cb_data->count = 0;
  1185. *callback_data = cb_data;
  1186. *callback_func = &StreamFMA_callback_internal;
  1187. }
  1188. /* code for scalar StreamFMAKernel.run_cycle_count */
  1189. uint64_t ticks_StreamFMAKernel = interface_actions->ticks_StreamFMAKernel;
  1190. max_set_ticks(actions, "StreamFMAKernel", ticks_StreamFMAKernel);
  1191. CHECK_ERRORS;
  1192. /* end of code for scalar StreamFMAKernel.run_cycle_count*/
  1193. /* code for stream inAT1 */
  1194. size_t instream_size_inAT1 = interface_actions->instream_size_inAT1;
  1195. if (instream_size_inAT1 > 0) {
  1196. const void *stream_ptr = interface_actions->instream_inAT1;
  1197. if (use_callback && (1 == StreamFMA_check_aligned(interface_actions->instream_inAT1))) {
  1198. void *aligned_instream_inAT1 = malloc(instream_size_inAT1);
  1199. if (aligned_instream_inAT1 == NULL) {
  1200. max_report_error_slic(actions->errors, __FILE__, __LINE__, 526, "Failed to allocate aligned memory for stream 'inAT1'");
  1201. CHECK_ERRORS;
  1202. }
  1203. (&cb_data->stream[cb_data->count])->user_ptr = (uint8_t*) interface_actions->instream_inAT1;
  1204. (&cb_data->stream[cb_data->count])->aligned_ptr = (uint8_t*) aligned_instream_inAT1;
  1205. (&cb_data->stream[cb_data->count])->size = instream_size_inAT1;
  1206. (&cb_data->stream[cb_data->count])->is_output = 0;
  1207. cb_data->count += 1;
  1208. memcpy(aligned_instream_inAT1, interface_actions->instream_inAT1, instream_size_inAT1);
  1209. stream_ptr = aligned_instream_inAT1;
  1210. }
  1211. max_queue_input(actions, "inAT1", stream_ptr, instream_size_inAT1);
  1212. CHECK_ERRORS;
  1213. }
  1214. /* end of code for stream inAT1 */
  1215. /* code for stream inBT1 */
  1216. size_t instream_size_inBT1 = interface_actions->instream_size_inBT1;
  1217. if (instream_size_inBT1 > 0) {
  1218. const void *stream_ptr = interface_actions->instream_inBT1;
  1219. if (use_callback && (1 == StreamFMA_check_aligned(interface_actions->instream_inBT1))) {
  1220. void *aligned_instream_inBT1 = malloc(instream_size_inBT1);
  1221. if (aligned_instream_inBT1 == NULL) {
  1222. max_report_error_slic(actions->errors, __FILE__, __LINE__, 526, "Failed to allocate aligned memory for stream 'inBT1'");
  1223. CHECK_ERRORS;
  1224. }
  1225. (&cb_data->stream[cb_data->count])->user_ptr = (uint8_t*) interface_actions->instream_inBT1;
  1226. (&cb_data->stream[cb_data->count])->aligned_ptr = (uint8_t*) aligned_instream_inBT1;
  1227. (&cb_data->stream[cb_data->count])->size = instream_size_inBT1;
  1228. (&cb_data->stream[cb_data->count])->is_output = 0;
  1229. cb_data->count += 1;
  1230. memcpy(aligned_instream_inBT1, interface_actions->instream_inBT1, instream_size_inBT1);
  1231. stream_ptr = aligned_instream_inBT1;
  1232. }
  1233. max_queue_input(actions, "inBT1", stream_ptr, instream_size_inBT1);
  1234. CHECK_ERRORS;
  1235. }
  1236. /* end of code for stream inBT1 */
  1237. /* code for stream oDataT3 */
  1238. size_t outstream_size_oDataT3 = interface_actions->outstream_size_oDataT3;
  1239. if (outstream_size_oDataT3 > 0) {
  1240. void *stream_ptr = interface_actions->outstream_oDataT3;
  1241. if (use_callback && (1 == StreamFMA_check_aligned(interface_actions->outstream_oDataT3))) {
  1242. void *aligned_outstream_oDataT3 = malloc(outstream_size_oDataT3);
  1243. if (aligned_outstream_oDataT3 == NULL) {
  1244. max_report_error_slic(actions->errors, __FILE__, __LINE__, 526, "Failed to allocate aligned memory for stream 'oDataT3'");
  1245. CHECK_ERRORS;
  1246. }
  1247. (&cb_data->stream[cb_data->count])->user_ptr = (uint8_t*) interface_actions->outstream_oDataT3;
  1248. (&cb_data->stream[cb_data->count])->aligned_ptr = (uint8_t*) aligned_outstream_oDataT3;
  1249. (&cb_data->stream[cb_data->count])->size = outstream_size_oDataT3;
  1250. (&cb_data->stream[cb_data->count])->is_output = 1;
  1251. cb_data->count += 1;
  1252. stream_ptr = aligned_outstream_oDataT3;
  1253. }
  1254. max_queue_output(actions, "oDataT3", stream_ptr, outstream_size_oDataT3);
  1255. CHECK_ERRORS;
  1256. }
  1257. /* end of code for stream oDataT3 */
  1258. /* code for linear memory-stream "inAT2" in memory-controller "MemoryControllerPro0" */
  1259. size_t lmem_address_MemoryControllerPro0_inAT2 = interface_actions->lmem_address_MemoryControllerPro0_inAT2;
  1260. size_t lmem_arr_size_MemoryControllerPro0_inAT2 = interface_actions->lmem_arr_size_MemoryControllerPro0_inAT2;
  1261. int lmem_burst_size_MemoryControllerPro0_inAT2 = max_get_burst_size(maxfile, "MemoryControllerPro0");
  1262. if ( (lmem_address_MemoryControllerPro0_inAT2 % lmem_burst_size_MemoryControllerPro0_inAT2) != 0 ) {
  1263. fprintf(stdout, "\nSLiC Error: %s:%d : LMem inAT2 parameter 'lmem_address_MemoryControllerPro0_inAT2' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_address_MemoryControllerPro0_inAT2, lmem_burst_size_MemoryControllerPro0_inAT2 );
  1264. }
  1265. if ( (lmem_arr_size_MemoryControllerPro0_inAT2 % lmem_burst_size_MemoryControllerPro0_inAT2) != 0 ) {
  1266. fprintf(stdout, "\nSLiC Error: %s:%d : LMem inAT2 parameter 'lmem_arr_size_MemoryControllerPro0_inAT2' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_arr_size_MemoryControllerPro0_inAT2, lmem_burst_size_MemoryControllerPro0_inAT2 );
  1267. }
  1268. if (lmem_arr_size_MemoryControllerPro0_inAT2 > 0) {
  1269. max_memctl_linear(actions, "MemoryControllerPro0", "inAT2", lmem_address_MemoryControllerPro0_inAT2, lmem_arr_size_MemoryControllerPro0_inAT2);
  1270. } else {
  1271. max_ignore_memctl(actions, "MemoryControllerPro0", "inAT2");
  1272. }
  1273. CHECK_ERRORS;
  1274. /* end of code for linear memory-stream "inAT2" in memory-controller "MemoryControllerPro0" */
  1275. /* code for linear memory-stream "inAT3" in memory-controller "MemoryControllerPro0" */
  1276. size_t lmem_address_MemoryControllerPro0_inAT3 = interface_actions->lmem_address_MemoryControllerPro0_inAT3;
  1277. size_t lmem_arr_size_MemoryControllerPro0_inAT3 = interface_actions->lmem_arr_size_MemoryControllerPro0_inAT3;
  1278. int lmem_burst_size_MemoryControllerPro0_inAT3 = max_get_burst_size(maxfile, "MemoryControllerPro0");
  1279. if ( (lmem_address_MemoryControllerPro0_inAT3 % lmem_burst_size_MemoryControllerPro0_inAT3) != 0 ) {
  1280. fprintf(stdout, "\nSLiC Error: %s:%d : LMem inAT3 parameter 'lmem_address_MemoryControllerPro0_inAT3' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_address_MemoryControllerPro0_inAT3, lmem_burst_size_MemoryControllerPro0_inAT3 );
  1281. }
  1282. if ( (lmem_arr_size_MemoryControllerPro0_inAT3 % lmem_burst_size_MemoryControllerPro0_inAT3) != 0 ) {
  1283. fprintf(stdout, "\nSLiC Error: %s:%d : LMem inAT3 parameter 'lmem_arr_size_MemoryControllerPro0_inAT3' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_arr_size_MemoryControllerPro0_inAT3, lmem_burst_size_MemoryControllerPro0_inAT3 );
  1284. }
  1285. if (lmem_arr_size_MemoryControllerPro0_inAT3 > 0) {
  1286. max_memctl_linear(actions, "MemoryControllerPro0", "inAT3", lmem_address_MemoryControllerPro0_inAT3, lmem_arr_size_MemoryControllerPro0_inAT3);
  1287. } else {
  1288. max_ignore_memctl(actions, "MemoryControllerPro0", "inAT3");
  1289. }
  1290. CHECK_ERRORS;
  1291. /* end of code for linear memory-stream "inAT3" in memory-controller "MemoryControllerPro0" */
  1292. /* code for linear memory-stream "inBT2" in memory-controller "MemoryControllerPro0" */
  1293. size_t lmem_address_MemoryControllerPro0_inBT2 = interface_actions->lmem_address_MemoryControllerPro0_inBT2;
  1294. size_t lmem_arr_size_MemoryControllerPro0_inBT2 = interface_actions->lmem_arr_size_MemoryControllerPro0_inBT2;
  1295. int lmem_burst_size_MemoryControllerPro0_inBT2 = max_get_burst_size(maxfile, "MemoryControllerPro0");
  1296. if ( (lmem_address_MemoryControllerPro0_inBT2 % lmem_burst_size_MemoryControllerPro0_inBT2) != 0 ) {
  1297. fprintf(stdout, "\nSLiC Error: %s:%d : LMem inBT2 parameter 'lmem_address_MemoryControllerPro0_inBT2' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_address_MemoryControllerPro0_inBT2, lmem_burst_size_MemoryControllerPro0_inBT2 );
  1298. }
  1299. if ( (lmem_arr_size_MemoryControllerPro0_inBT2 % lmem_burst_size_MemoryControllerPro0_inBT2) != 0 ) {
  1300. fprintf(stdout, "\nSLiC Error: %s:%d : LMem inBT2 parameter 'lmem_arr_size_MemoryControllerPro0_inBT2' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_arr_size_MemoryControllerPro0_inBT2, lmem_burst_size_MemoryControllerPro0_inBT2 );
  1301. }
  1302. if (lmem_arr_size_MemoryControllerPro0_inBT2 > 0) {
  1303. max_memctl_linear(actions, "MemoryControllerPro0", "inBT2", lmem_address_MemoryControllerPro0_inBT2, lmem_arr_size_MemoryControllerPro0_inBT2);
  1304. } else {
  1305. max_ignore_memctl(actions, "MemoryControllerPro0", "inBT2");
  1306. }
  1307. CHECK_ERRORS;
  1308. /* end of code for linear memory-stream "inBT2" in memory-controller "MemoryControllerPro0" */
  1309. /* code for linear memory-stream "inBT3" in memory-controller "MemoryControllerPro0" */
  1310. size_t lmem_address_MemoryControllerPro0_inBT3 = interface_actions->lmem_address_MemoryControllerPro0_inBT3;
  1311. size_t lmem_arr_size_MemoryControllerPro0_inBT3 = interface_actions->lmem_arr_size_MemoryControllerPro0_inBT3;
  1312. int lmem_burst_size_MemoryControllerPro0_inBT3 = max_get_burst_size(maxfile, "MemoryControllerPro0");
  1313. if ( (lmem_address_MemoryControllerPro0_inBT3 % lmem_burst_size_MemoryControllerPro0_inBT3) != 0 ) {
  1314. fprintf(stdout, "\nSLiC Error: %s:%d : LMem inBT3 parameter 'lmem_address_MemoryControllerPro0_inBT3' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_address_MemoryControllerPro0_inBT3, lmem_burst_size_MemoryControllerPro0_inBT3 );
  1315. }
  1316. if ( (lmem_arr_size_MemoryControllerPro0_inBT3 % lmem_burst_size_MemoryControllerPro0_inBT3) != 0 ) {
  1317. fprintf(stdout, "\nSLiC Error: %s:%d : LMem inBT3 parameter 'lmem_arr_size_MemoryControllerPro0_inBT3' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_arr_size_MemoryControllerPro0_inBT3, lmem_burst_size_MemoryControllerPro0_inBT3 );
  1318. }
  1319. if (lmem_arr_size_MemoryControllerPro0_inBT3 > 0) {
  1320. max_memctl_linear(actions, "MemoryControllerPro0", "inBT3", lmem_address_MemoryControllerPro0_inBT3, lmem_arr_size_MemoryControllerPro0_inBT3);
  1321. } else {
  1322. max_ignore_memctl(actions, "MemoryControllerPro0", "inBT3");
  1323. }
  1324. CHECK_ERRORS;
  1325. /* end of code for linear memory-stream "inBT3" in memory-controller "MemoryControllerPro0" */
  1326. /* code for linear memory-stream "oDataT1" in memory-controller "MemoryControllerPro0" */
  1327. size_t lmem_address_MemoryControllerPro0_oDataT1 = interface_actions->lmem_address_MemoryControllerPro0_oDataT1;
  1328. size_t lmem_arr_size_MemoryControllerPro0_oDataT1 = interface_actions->lmem_arr_size_MemoryControllerPro0_oDataT1;
  1329. int lmem_burst_size_MemoryControllerPro0_oDataT1 = max_get_burst_size(maxfile, "MemoryControllerPro0");
  1330. if ( (lmem_address_MemoryControllerPro0_oDataT1 % lmem_burst_size_MemoryControllerPro0_oDataT1) != 0 ) {
  1331. fprintf(stdout, "\nSLiC Error: %s:%d : LMem oDataT1 parameter 'lmem_address_MemoryControllerPro0_oDataT1' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_address_MemoryControllerPro0_oDataT1, lmem_burst_size_MemoryControllerPro0_oDataT1 );
  1332. }
  1333. if ( (lmem_arr_size_MemoryControllerPro0_oDataT1 % lmem_burst_size_MemoryControllerPro0_oDataT1) != 0 ) {
  1334. fprintf(stdout, "\nSLiC Error: %s:%d : LMem oDataT1 parameter 'lmem_arr_size_MemoryControllerPro0_oDataT1' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_arr_size_MemoryControllerPro0_oDataT1, lmem_burst_size_MemoryControllerPro0_oDataT1 );
  1335. }
  1336. if (lmem_arr_size_MemoryControllerPro0_oDataT1 > 0) {
  1337. max_memctl_linear(actions, "MemoryControllerPro0", "oDataT1", lmem_address_MemoryControllerPro0_oDataT1, lmem_arr_size_MemoryControllerPro0_oDataT1);
  1338. } else {
  1339. max_ignore_memctl(actions, "MemoryControllerPro0", "oDataT1");
  1340. }
  1341. CHECK_ERRORS;
  1342. /* end of code for linear memory-stream "oDataT1" in memory-controller "MemoryControllerPro0" */
  1343. /* code for linear memory-stream "oDataT2" in memory-controller "MemoryControllerPro0" */
  1344. size_t lmem_address_MemoryControllerPro0_oDataT2 = interface_actions->lmem_address_MemoryControllerPro0_oDataT2;
  1345. size_t lmem_arr_size_MemoryControllerPro0_oDataT2 = interface_actions->lmem_arr_size_MemoryControllerPro0_oDataT2;
  1346. int lmem_burst_size_MemoryControllerPro0_oDataT2 = max_get_burst_size(maxfile, "MemoryControllerPro0");
  1347. if ( (lmem_address_MemoryControllerPro0_oDataT2 % lmem_burst_size_MemoryControllerPro0_oDataT2) != 0 ) {
  1348. fprintf(stdout, "\nSLiC Error: %s:%d : LMem oDataT2 parameter 'lmem_address_MemoryControllerPro0_oDataT2' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_address_MemoryControllerPro0_oDataT2, lmem_burst_size_MemoryControllerPro0_oDataT2 );
  1349. }
  1350. if ( (lmem_arr_size_MemoryControllerPro0_oDataT2 % lmem_burst_size_MemoryControllerPro0_oDataT2) != 0 ) {
  1351. fprintf(stdout, "\nSLiC Error: %s:%d : LMem oDataT2 parameter 'lmem_arr_size_MemoryControllerPro0_oDataT2' is set to %zd bytes; it must be a multiple of %d bytes\n", __FILE__, __LINE__, lmem_arr_size_MemoryControllerPro0_oDataT2, lmem_burst_size_MemoryControllerPro0_oDataT2 );
  1352. }
  1353. if (lmem_arr_size_MemoryControllerPro0_oDataT2 > 0) {
  1354. max_memctl_linear(actions, "MemoryControllerPro0", "oDataT2", lmem_address_MemoryControllerPro0_oDataT2, lmem_arr_size_MemoryControllerPro0_oDataT2);
  1355. } else {
  1356. max_ignore_memctl(actions, "MemoryControllerPro0", "oDataT2");
  1357. }
  1358. CHECK_ERRORS;
  1359. /* end of code for linear memory-stream "oDataT2" in memory-controller "MemoryControllerPro0" */
  1360. if (use_callback && cb_data->count == 0) {
  1361. *callback_data = NULL;
  1362. *callback_func = NULL;
  1363. free(cb_data);
  1364. }
  1365. return actions;
  1366. #undef CHECK_ERRORS
  1367. }
  1368. void StreamFMA(
  1369. uint64_t ticks_StreamFMAKernel,
  1370. const void *instream_inAT1,
  1371. size_t instream_size_inAT1,
  1372. const void *instream_inBT1,
  1373. size_t instream_size_inBT1,
  1374. void *outstream_oDataT3,
  1375. size_t outstream_size_oDataT3,
  1376. size_t lmem_address_MemoryControllerPro0_inAT2,
  1377. size_t lmem_arr_size_MemoryControllerPro0_inAT2,
  1378. size_t lmem_address_MemoryControllerPro0_inAT3,
  1379. size_t lmem_arr_size_MemoryControllerPro0_inAT3,
  1380. size_t lmem_address_MemoryControllerPro0_inBT2,
  1381. size_t lmem_arr_size_MemoryControllerPro0_inBT2,
  1382. size_t lmem_address_MemoryControllerPro0_inBT3,
  1383. size_t lmem_arr_size_MemoryControllerPro0_inBT3,
  1384. size_t lmem_address_MemoryControllerPro0_oDataT1,
  1385. size_t lmem_arr_size_MemoryControllerPro0_oDataT1,
  1386. size_t lmem_address_MemoryControllerPro0_oDataT2,
  1387. size_t lmem_arr_size_MemoryControllerPro0_oDataT2)
  1388. {
  1389. (void) pthread_once(&slic_bs_is_initialised, StreamFMA_static_init);
  1390. CHECK_NULL(stored_maxfile, "Maxfile was not loaded", );
  1391. max_run_t *run = StreamFMA_nonblock(ticks_StreamFMAKernel, instream_inAT1, instream_size_inAT1, instream_inBT1, instream_size_inBT1, outstream_oDataT3, outstream_size_oDataT3, lmem_address_MemoryControllerPro0_inAT2, lmem_arr_size_MemoryControllerPro0_inAT2, lmem_address_MemoryControllerPro0_inAT3, lmem_arr_size_MemoryControllerPro0_inAT3, lmem_address_MemoryControllerPro0_inBT2, lmem_arr_size_MemoryControllerPro0_inBT2, lmem_address_MemoryControllerPro0_inBT3, lmem_arr_size_MemoryControllerPro0_inBT3, lmem_address_MemoryControllerPro0_oDataT1, lmem_arr_size_MemoryControllerPro0_oDataT1, lmem_address_MemoryControllerPro0_oDataT2, lmem_arr_size_MemoryControllerPro0_oDataT2);
  1392. CHECK_NULL(run, "Unable to run actions", );
  1393. max_wait(run);
  1394. }
  1395. max_run_t *StreamFMA_nonblock(
  1396. uint64_t ticks_StreamFMAKernel,
  1397. const void *instream_inAT1,
  1398. size_t instream_size_inAT1,
  1399. const void *instream_inBT1,
  1400. size_t instream_size_inBT1,
  1401. void *outstream_oDataT3,
  1402. size_t outstream_size_oDataT3,
  1403. size_t lmem_address_MemoryControllerPro0_inAT2,
  1404. size_t lmem_arr_size_MemoryControllerPro0_inAT2,
  1405. size_t lmem_address_MemoryControllerPro0_inAT3,
  1406. size_t lmem_arr_size_MemoryControllerPro0_inAT3,
  1407. size_t lmem_address_MemoryControllerPro0_inBT2,
  1408. size_t lmem_arr_size_MemoryControllerPro0_inBT2,
  1409. size_t lmem_address_MemoryControllerPro0_inBT3,
  1410. size_t lmem_arr_size_MemoryControllerPro0_inBT3,
  1411. size_t lmem_address_MemoryControllerPro0_oDataT1,
  1412. size_t lmem_arr_size_MemoryControllerPro0_oDataT1,
  1413. size_t lmem_address_MemoryControllerPro0_oDataT2,
  1414. size_t lmem_arr_size_MemoryControllerPro0_oDataT2)
  1415. {
  1416. StreamFMA_actions_t interface_actions;
  1417. interface_actions.ticks_StreamFMAKernel = ticks_StreamFMAKernel;
  1418. interface_actions.instream_inAT1 = instream_inAT1;
  1419. interface_actions.instream_size_inAT1 = instream_size_inAT1;
  1420. interface_actions.instream_inBT1 = instream_inBT1;
  1421. interface_actions.instream_size_inBT1 = instream_size_inBT1;
  1422. interface_actions.outstream_oDataT3 = outstream_oDataT3;
  1423. interface_actions.outstream_size_oDataT3 = outstream_size_oDataT3;
  1424. interface_actions.lmem_address_MemoryControllerPro0_inAT2 = lmem_address_MemoryControllerPro0_inAT2;
  1425. interface_actions.lmem_arr_size_MemoryControllerPro0_inAT2 = lmem_arr_size_MemoryControllerPro0_inAT2;
  1426. interface_actions.lmem_address_MemoryControllerPro0_inAT3 = lmem_address_MemoryControllerPro0_inAT3;
  1427. interface_actions.lmem_arr_size_MemoryControllerPro0_inAT3 = lmem_arr_size_MemoryControllerPro0_inAT3;
  1428. interface_actions.lmem_address_MemoryControllerPro0_inBT2 = lmem_address_MemoryControllerPro0_inBT2;
  1429. interface_actions.lmem_arr_size_MemoryControllerPro0_inBT2 = lmem_arr_size_MemoryControllerPro0_inBT2;
  1430. interface_actions.lmem_address_MemoryControllerPro0_inBT3 = lmem_address_MemoryControllerPro0_inBT3;
  1431. interface_actions.lmem_arr_size_MemoryControllerPro0_inBT3 = lmem_arr_size_MemoryControllerPro0_inBT3;
  1432. interface_actions.lmem_address_MemoryControllerPro0_oDataT1 = lmem_address_MemoryControllerPro0_oDataT1;
  1433. interface_actions.lmem_arr_size_MemoryControllerPro0_oDataT1 = lmem_arr_size_MemoryControllerPro0_oDataT1;
  1434. interface_actions.lmem_address_MemoryControllerPro0_oDataT2 = lmem_address_MemoryControllerPro0_oDataT2;
  1435. interface_actions.lmem_arr_size_MemoryControllerPro0_oDataT2 = lmem_arr_size_MemoryControllerPro0_oDataT2;
  1436. (void) pthread_once(&slic_bs_is_initialised, StreamFMA_static_init);
  1437. CHECK_NULL(stored_maxfile, "Maxfile was not loaded", NULL);
  1438. void (*cb_func)(void*) = NULL;
  1439. void *cb_data = NULL;
  1440. max_actions_t *actions = StreamFMA_convert_internal(stored_maxfile, &interface_actions, 1, &cb_func, &cb_data);
  1441. CHECK_NULL(actions, "Unable to build actions", NULL);
  1442. max_validate(actions);
  1443. CHECK_ERRORS_ST(actions, NULL);
  1444. CHECK_ERRORS_ST(stored_engine, NULL);
  1445. max_run_t *run;
  1446. if (cb_func == NULL) {
  1447. run = max_run_nonblock(stored_engine, actions);
  1448. } else {
  1449. run = max_run_nonblock_with_cb(stored_engine, actions, cb_func, cb_data);
  1450. }
  1451. CHECK_NULL(run, "Unable to run actions", NULL);
  1452. CHECK_ERRORS_ST(actions, NULL);
  1453. max_actions_free(actions);
  1454. return run;
  1455. }
  1456. void StreamFMA_run(
  1457. max_engine_t *engine,
  1458. StreamFMA_actions_t *interface_actions)
  1459. {
  1460. max_run_t *run = StreamFMA_run_nonblock(engine, interface_actions);
  1461. CHECK_NULL(run, "Unable to run actions", );
  1462. max_wait(run);
  1463. }
  1464. max_run_t *StreamFMA_run_nonblock(
  1465. max_engine_t *engine,
  1466. StreamFMA_actions_t *interface_actions)
  1467. {
  1468. max_file_t *maxfile = max_engine_get_max_file(engine);
  1469. void (*cb_func)(void*) = NULL;
  1470. void *cb_data = NULL;
  1471. max_actions_t *actions = StreamFMA_convert_internal(maxfile, interface_actions, 1, &cb_func, &cb_data);
  1472. CHECK_NULL(actions, "Unable to build actions", NULL);
  1473. max_validate(actions);
  1474. CHECK_ERRORS_ST(actions, NULL);
  1475. max_run_t *run;
  1476. if (cb_func == NULL) {
  1477. run = max_run_nonblock(engine, actions);
  1478. } else {
  1479. run = max_run_nonblock_with_cb(engine, actions, cb_func, cb_data);
  1480. }
  1481. CHECK_NULL(run, "Unable to run actions", NULL);
  1482. max_actions_free(actions);
  1483. return run;
  1484. }
  1485. /**
  1486. * \brief Group run advanced static function for the interface 'default'.
  1487. *
  1488. * \param [in] group Group to use.
  1489. * \param [in,out] interface_actions Actions to run.
  1490. *
  1491. * Run the actions on the first device available in the group.
  1492. */
  1493. void StreamFMA_run_group(max_group_t *group, StreamFMA_actions_t *interface_actions)
  1494. {
  1495. max_run_t *run = StreamFMA_run_group_nonblock(group, interface_actions);
  1496. CHECK_NULL(run, "Unable to run actions", );
  1497. max_wait(run);
  1498. }
  1499. /**
  1500. * \brief Group run advanced static non-blocking function for the interface 'default'.
  1501. *
  1502. *
  1503. * Schedule the actions to run on the first device available in the group and return immediately.
  1504. * The status of the run must be checked with ::max_wait.
  1505. * Note that use of ::max_nowait is prohibited with non-blocking running on groups:
  1506. * see the ::max_run_group_nonblock documentation for more explanation.
  1507. *
  1508. * \param [in] group Group to use.
  1509. * \param [in] interface_actions Actions to run.
  1510. * \return A handle on the execution status of the actions, or NULL in case of error.
  1511. */
  1512. max_run_t *StreamFMA_run_group_nonblock(max_group_t *group, StreamFMA_actions_t *interface_actions)
  1513. {
  1514. max_file_t *maxfile = max_group_get_max_file(group);
  1515. max_actions_t *actions = StreamFMA_convert_internal(maxfile, interface_actions, 1, NULL, NULL);
  1516. if(actions == NULL) return NULL;
  1517. if(!max_ok(actions->errors)) return NULL;
  1518. max_validate(actions);
  1519. max_run_t *run = max_run_group_nonblock(group, actions);
  1520. max_actions_free(actions);
  1521. return run;
  1522. }
  1523. /**
  1524. * \brief Array run advanced static function for the interface 'default'.
  1525. *
  1526. * \param [in] engarray The array of devices to use.
  1527. * \param [in,out] interface_actions The array of actions to run.
  1528. *
  1529. * Run the array of actions on the array of engines. The length of interface_actions
  1530. * must match the size of engarray.
  1531. */
  1532. void StreamFMA_run_array(max_engarray_t *engarray, StreamFMA_actions_t *interface_actions[])
  1533. {
  1534. max_run_t *run = StreamFMA_run_array_nonblock(engarray, interface_actions);
  1535. CHECK_NULL(run, "Unable to run actions", );
  1536. max_wait(run);
  1537. }
  1538. /**
  1539. * \brief Array run advanced static non-blocking function for the interface 'default'.
  1540. *
  1541. *
  1542. * Schedule to run the array of actions on the array of engines, and return immediately.
  1543. * The length of interface_actions must match the size of engarray.
  1544. * The status of the run can be checked either by ::max_wait or ::max_nowait;
  1545. * note that one of these *must* be called, so that associated memory can be released.
  1546. *
  1547. * \param [in] engarray The array of devices to use.
  1548. * \param [in] interface_actions The array of actions to run.
  1549. * \return A handle on the execution status of the actions, or NULL in case of error.
  1550. */
  1551. max_run_t *StreamFMA_run_array_nonblock(max_engarray_t *engarray, StreamFMA_actions_t *interface_actions[])
  1552. {
  1553. max_file_t *maxfile = max_engarray_get_max_file(engarray, 0);
  1554. int i;
  1555. max_actarray_t *actarray = max_actarray_init(maxfile, engarray->size);
  1556. if (actarray == NULL) return NULL;
  1557. max_actions_t **arr_actions = malloc(engarray->size * sizeof(max_actions_t*));
  1558. for ( i = 0 ; i < actarray->size; i++ ) {
  1559. max_actions_t *actions = StreamFMA_convert_internal(maxfile, interface_actions[i], 1, NULL, NULL);
  1560. if (actions == NULL) return NULL;
  1561. arr_actions[i] = actions;
  1562. max_set_action(actarray, i, actions);
  1563. }
  1564. max_run_t *run = max_run_array_nonblock(engarray, actarray);
  1565. for ( i = 0 ; i < actarray->size ; i++ ) { max_actions_free(arr_actions[i]); }
  1566. max_actarray_free(actarray);
  1567. free(arr_actions);
  1568. return run;
  1569. }
  1570. /**
  1571. * \brief Converts a static-interface action struct into a dynamic-interface max_actions_t struct.
  1572. *
  1573. * Note that this is an internal utility function used by other functions in the static interface.
  1574. *
  1575. * \param [in] maxfile The maxfile to use.
  1576. * \param [in] interface_actions The interface-specific actions to run.
  1577. * \return The dynamic-interface actions to run, or NULL in case of error.
  1578. */
  1579. max_actions_t* StreamFMA_convert(max_file_t *maxfile, StreamFMA_actions_t *interface_actions)
  1580. {
  1581. return StreamFMA_convert_internal(maxfile, interface_actions, 0, NULL, NULL);
  1582. }
  1583. #undef CHECK_ERRORS_ST
  1584. #undef CHECK_NULL
  1585. #endif /* SLIC_USE_DEFINITIONS */
  1586. #ifdef SLIC_DYNAMIC_CODE
  1587. SLIC_MODE_START(default)
  1588. SLIC_MODE_END(default)
  1589. #endif /* SLIC_DYNAMIC_CODE */
  1590. #ifdef SKIN_META_DATA
  1591. PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PG1h
  1592. eGZpbGUgZm9ybWF0LXZlcnNpb249IjIwMTIwMjAwIiBoZWFkZXI9IlN0cmVhbUZNQS5oIiBuYW1l
  1593. PSJTdHJlYW1GTUEiPjxjb25zdGFudCBuYW1lPSJEWU5BTUlDX0NMT0NLU19FTkFCTEVEIiB0eXBl
  1594. PSJsb25nIiB2YWx1ZT0iMCIvPjxjb25zdGFudCBuYW1lPSJQQ0lFX0FMSUdOTUVOVCIgdHlwZT0i
  1595. bG9uZyIgdmFsdWU9IjE2Ii8+PGVuZ2luZW1vZGUgbmFtZT0iZGVmYXVsdCI+PGZ1bmN0aW9uIG5h
  1596. bWU9IlN0cmVhbUZNQSIgcmV0dXJuLXZhbHVlPSJ2b2lkIj48c2NhbGFyIGRlc2M9IlRoZSBudW1i
  1597. ZXIgb2YgdGlja3MgZm9yIHdoaWNoIGtlcm5lbCAmcXVvdDtTdHJlYW1GTUFLZXJuZWwmcXVvdDsg
  1598. d2lsbCBydW4uIiBkaXJlY3Rpb249IklucHV0IiBuYW1lPSJ0aWNrc19TdHJlYW1GTUFLZXJuZWwi
  1599. IHR5cGU9InVpbnQ2NF90Ii8+PGFycmF5IGRlc2M9IlN0cmVhbSAmcXVvdDtpbkFUMSZxdW90Oy4i
  1600. IGRpcmVjdGlvbj0iSW5wdXQiIG5hbWU9Imluc3RyZWFtX2luQVQxIiBzaXplPSJpbnN0cmVhbV9z
  1601. aXplX2luQVQxIiB0cmFuc3Bvc2U9ImZhbHNlIiB0eXBlPSJ2b2lkIi8+PHNjYWxhciBkZXNjPSJU
  1602. aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGluc3RyZWFtX2luQVQxIGluIGJ5dGVzLiIgZGlyZWN0aW9u
  1603. PSJJbnB1dCIgbmFtZT0iaW5zdHJlYW1fc2l6ZV9pbkFUMSIgdHlwZT0idWludDY0X3QiLz48YXJy
  1604. YXkgZGVzYz0iU3RyZWFtICZxdW90O2luQlQxJnF1b3Q7LiIgZGlyZWN0aW9uPSJJbnB1dCIgbmFt
  1605. ZT0iaW5zdHJlYW1faW5CVDEiIHNpemU9Imluc3RyZWFtX3NpemVfaW5CVDEiIHRyYW5zcG9zZT0i
  1606. ZmFsc2UiIHR5cGU9InZvaWQiLz48c2NhbGFyIGRlc2M9IlRoZSBzaXplIG9mIHRoZSBzdHJlYW0g
  1607. aW5zdHJlYW1faW5CVDEgaW4gYnl0ZXMuIiBkaXJlY3Rpb249IklucHV0IiBuYW1lPSJpbnN0cmVh
  1608. bV9zaXplX2luQlQxIiB0eXBlPSJ1aW50NjRfdCIvPjxhcnJheSBkZXNjPSJTdHJlYW0gJnF1b3Q7
  1609. b0RhdGFUMyZxdW90Oy4iIGRpcmVjdGlvbj0iT3V0cHV0IiBuYW1lPSJvdXRzdHJlYW1fb0RhdGFU
  1610. MyIgc2l6ZT0ib3V0c3RyZWFtX3NpemVfb0RhdGFUMyIgdHJhbnNwb3NlPSJmYWxzZSIgdHlwZT0i
  1611. dm9pZCIvPjxzY2FsYXIgZGVzYz0iVGhlIHNpemUgb2YgdGhlIHN0cmVhbSBvdXRzdHJlYW1fb0Rh
  1612. dGFUMyBpbiBieXRlcy4iIGRpcmVjdGlvbj0iSW5wdXQiIG5hbWU9Im91dHN0cmVhbV9zaXplX29E
  1613. YXRhVDMiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9s
  1614. IGZvciAmcXVvdDtpbkFUMiZxdW90OyBzdHJlYW06IGJhc2UgYWRkcmVzcywgaW4gYnl0ZXMuIiBk
  1615. aXJlY3Rpb249IklucHV0IiBuYW1lPSJsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBf
  1616. aW5BVDIiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9s
  1617. IGZvciAmcXVvdDtpbkFUMiZxdW90OyBzdHJlYW06IGFycmF5IHNpemUsIGluIGJ5dGVzLiIgZGly
  1618. ZWN0aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9p
  1619. bkFUMiIgdHlwZT0idWludDY0X3QiLz48c2NhbGFyIGRlc2M9IkxpbmVhciBMTWVtIGNvbnRyb2wg
  1620. Zm9yICZxdW90O2luQVQzJnF1b3Q7IHN0cmVhbTogYmFzZSBhZGRyZXNzLCBpbiBieXRlcy4iIGRp
  1621. cmVjdGlvbj0iSW5wdXQiIG5hbWU9ImxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9p
  1622. bkFUMyIgdHlwZT0idWludDY0X3QiLz48c2NhbGFyIGRlc2M9IkxpbmVhciBMTWVtIGNvbnRyb2wg
  1623. Zm9yICZxdW90O2luQVQzJnF1b3Q7IHN0cmVhbTogYXJyYXkgc2l6ZSwgaW4gYnl0ZXMuIiBkaXJl
  1624. Y3Rpb249IklucHV0IiBuYW1lPSJsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2lu
  1625. QVQzIiB0eXBlPSJ1aW50NjRfdCIvPjxzY2FsYXIgZGVzYz0iTGluZWFyIExNZW0gY29udHJvbCBm
  1626. b3IgJnF1b3Q7aW5CVDImcXVvdDsgc3RyZWFtOiBiYXNlIGFkZHJlc3MsIGluIGJ5dGVzLiIgZGly
  1627. ZWN0aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2lu
  1628. QlQyIiB0eXBlPSJ1aW50NjRfdCIvPjxzY2FsYXIgZGVzYz0iTGluZWFyIExNZW0gY29udHJvbCBm
  1629. b3IgJnF1b3Q7aW5CVDImcXVvdDsgc3RyZWFtOiBhcnJheSBzaXplLCBpbiBieXRlcy4iIGRpcmVj
  1630. dGlvbj0iSW5wdXQiIG5hbWU9ImxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5C
  1631. VDIiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9sIGZv
  1632. ciAmcXVvdDtpbkJUMyZxdW90OyBzdHJlYW06IGJhc2UgYWRkcmVzcywgaW4gYnl0ZXMuIiBkaXJl
  1633. Y3Rpb249IklucHV0IiBuYW1lPSJsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5C
  1634. VDMiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9sIGZv
  1635. ciAmcXVvdDtpbkJUMyZxdW90OyBzdHJlYW06IGFycmF5IHNpemUsIGluIGJ5dGVzLiIgZGlyZWN0
  1636. aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJU
  1637. MyIgdHlwZT0idWludDY0X3QiLz48c2NhbGFyIGRlc2M9IkxpbmVhciBMTWVtIGNvbnRyb2wgZm9y
  1638. ICZxdW90O29EYXRhVDEmcXVvdDsgc3RyZWFtOiBiYXNlIGFkZHJlc3MsIGluIGJ5dGVzLiIgZGly
  1639. ZWN0aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29E
  1640. YXRhVDEiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9s
  1641. IGZvciAmcXVvdDtvRGF0YVQxJnF1b3Q7IHN0cmVhbTogYXJyYXkgc2l6ZSwgaW4gYnl0ZXMuIiBk
  1642. aXJlY3Rpb249IklucHV0IiBuYW1lPSJsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8w
  1643. X29EYXRhVDEiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250
  1644. cm9sIGZvciAmcXVvdDtvRGF0YVQyJnF1b3Q7IHN0cmVhbTogYmFzZSBhZGRyZXNzLCBpbiBieXRl
  1645. cy4iIGRpcmVjdGlvbj0iSW5wdXQiIG5hbWU9ImxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVy
  1646. UHJvMF9vRGF0YVQyIiB0eXBlPSJ1aW50NjRfdCIvPjxzY2FsYXIgZGVzYz0iTGluZWFyIExNZW0g
  1647. Y29udHJvbCBmb3IgJnF1b3Q7b0RhdGFUMiZxdW90OyBzdHJlYW06IGFycmF5IHNpemUsIGluIGJ5
  1648. dGVzLiIgZGlyZWN0aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9s
  1649. bGVyUHJvMF9vRGF0YVQyIiB0eXBlPSJ1aW50NjRfdCIvPjwvZnVuY3Rpb24+PC9lbmdpbmVtb2Rl
  1650. PjwvbWF4ZmlsZT4=
  1651. #endif /* SKIN_META_DATA */
  1652. #ifdef SLIC_B64_DEFINITIONS
  1653. I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxwdGhyZWFkLmg+
  1654. CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RkbGli
  1655. Lmg+CnN0YXRpYyBtYXhfZmlsZV90ICpzdG9yZWRfbWF4ZmlsZSA9IE5VTEw7CnN0YXRpYyBtYXhf
  1656. ZW5naW5lX3QgKnN0b3JlZF9lbmdpbmUgPSBOVUxMOwpzdGF0aWMgY2hhciAqc3RvcmVkX2Vycm9y
  1657. ID0gTlVMTDsKc3RhdGljIGludCBzdG9yZWRfaGFzX2Vycm9yID0gMDsKc3RhdGljIHB0aHJlYWRf
  1658. b25jZV90IHNsaWNfYnNfaXNfaW5pdGlhbGlzZWQgPSBQVEhSRUFEX09OQ0VfSU5JVDsKCnN0YXRp
  1659. YyB2b2lkIHNldF9lcnJvcihjb25zdCBjaGFyICplcnJvcl9zdHIpCnsKCXN0b3JlZF9oYXNfZXJy
  1660. b3IgPSAxOyAKCWlmKHN0b3JlZF9lcnJvciA9PSBOVUxMKSB7CgkJc3RvcmVkX2Vycm9yID0gc3Ry
  1661. ZHVwKGVycm9yX3N0cik7Cgl9IGVsc2UgewoJCWNoYXIgKm5lcnIgPSBtYWxsb2Moc3RybGVuKHN0
  1662. b3JlZF9lcnJvcikgKyBzdHJsZW4oZXJyb3Jfc3RyKSArIDIpOwoJCXNwcmludGYobmVyciwgIiVz
  1663. XG4lcyIsIHN0b3JlZF9lcnJvciwgZXJyb3Jfc3RyKTsKCQlmcmVlKHN0b3JlZF9lcnJvcik7CgkJ
  1664. c3RvcmVkX2Vycm9yID0gbmVycjsKCX0KfQpzdGF0aWMgdm9pZCBzZXRfZXJyb3JfYW5kX2ZyZWUo
  1665. Y2hhciAqZXJyb3Jfc3RyKXsKCXNldF9lcnJvcihlcnJvcl9zdHIpOwoJZnJlZShlcnJvcl9zdHIp
  1666. Owp9CmludCBTdHJlYW1GTUFfaGFzX2Vycm9ycyh2b2lkKQp7CXJldHVybiBzdG9yZWRfaGFzX2Vy
  1667. cm9yOyB9CmNvbnN0IGNoYXIqIFN0cmVhbUZNQV9nZXRfZXJyb3JzKHZvaWQpCnsJcmV0dXJuIHN0
  1668. b3JlZF9lcnJvcjsgfQp2b2lkIFN0cmVhbUZNQV9jbGVhcl9lcnJvcnModm9pZCkKewoJZnJlZShz
  1669. dG9yZWRfZXJyb3IpOwoJc3RvcmVkX2Vycm9yID0gTlVMTDsKCXN0b3JlZF9oYXNfZXJyb3IgPSAw
  1670. Owp9CgpzdGF0aWMgY2hhciBTdHJlYW1GTUFfdXNlX3NpbXVsYXRpb25bMTZdOwpzdGF0aWMgdm9p
  1671. ZCBTdHJlYW1GTUFfZGVmX3VzZV9zaW11bGF0aW9uKHZvaWQpCnsKCWxvbmcgcGlkID0gKChsb25n
  1672. KSBnZXRwaWQoKSkgJSAxMDAwMDA7CglzbnByaW50ZihTdHJlYW1GTUFfdXNlX3NpbXVsYXRpb24s
  1673. IDE2LCAiU3RyZWFtRk1fJTA1bGRfIiwgcGlkKTsKfQpzdGF0aWMgY29uc3QgY2hhciAqU3RyZWFt
  1674. Rk1BX2NoZWNrX3VzZV9zaW11bGF0aW9uKHZvaWQpCnsKCVN0cmVhbUZNQV9kZWZfdXNlX3NpbXVs
  1675. YXRpb24oKTsKCWNvbnN0IGNoYXIgKnVzZV9zaW0gPSBtYXhfY29uZmlnX2dldF9zdHJpbmcoTUFY
  1676. X0NPTkZJR19VU0VfU0lNVUxBVElPTik7CglpZiAodXNlX3NpbSA9PSBOVUxMKSB7CgkJdXNlX3Np
  1677. bSA9IFN0cmVhbUZNQV91c2Vfc2ltdWxhdGlvbjsKCQltYXhfY29uZmlnX3NldF9zdHJpbmcoTUFY
  1678. X0NPTkZJR19VU0VfU0lNVUxBVElPTiwgdXNlX3NpbSk7Cgl9CglyZXR1cm4gdXNlX3NpbTsKfQoK
  1679. c3RhdGljIGludCBTdHJlYW1GTUFfc2ltdWxhdGlvbl9sYXVuY2ggPSAwOwppbnQgU3RyZWFtRk1B
  1680. X3NpbXVsYXRvcl9zdGFydCh2b2lkKQp7CglpbnQgcmV0dmFsID0gMDsKCWNvbnN0IGNoYXIgKnVz
  1681. ZV9zaW0gPSBTdHJlYW1GTUFfY2hlY2tfdXNlX3NpbXVsYXRpb24oKTsKCWNoYXIgYnVmZlsxMDI0
  1682. XTsKCXNucHJpbnRmKGJ1ZmYsIDEwMjQsICJQQVRIPXNpbXV0aWxzOiRQQVRIIG1heGNvbXBpbGVy
  1683. c2ltIC1kIDEgLW4gJXMgLWMgTUFYNUMgLVMgc2ltdXRpbHMgcmVzdGFydCIsIHVzZV9zaW0pOwoJ
  1684. RklMRSAqcGlwZV9mcCA9IHBvcGVuKGJ1ZmYsICJyIik7CglpZiAocGlwZV9mcCA9PSBOVUxMKSB7
  1685. CgkJc3RybmNhdChidWZmLCAiIDogZmFpbGVkIHRvIGV4ZWN1dGUuIiwgKDEwMjQgLSBzdHJsZW4o
  1686. YnVmZikpKTsKCQlzZXRfZXJyb3IoYnVmZik7CgkJcmV0dXJuIC0xOwoJfQoJd2hpbGUgKGZnZXRz
  1687. KGJ1ZmYsIDEwMjQsIHBpcGVfZnApICE9IE5VTEwpIHsKCQkvKiBVbmNvbW1lbnQgdGhpcyB0byBn
  1688. ZXQgc2ltdWxhdG9yIGNvbW1hbmQgb3V0cHV0ICovCgkJLyogZnByaW50ZihzdGRlcnIsIGJ1ZmYp
  1689. OyAqLwoJCWlmIChzdHJzdHIoYnVmZiwgIkVycm9yIikpIHsKCQkJc2V0X2Vycm9yKGJ1ZmYpOwoJ
  1690. CQlyZXR2YWwgPSAtMTsKCQl9Cgl9CglwY2xvc2UocGlwZV9mcCk7CglyZXR1cm4gcmV0dmFsOwp9
  1691. CgppbnQgU3RyZWFtRk1BX3NpbXVsYXRvcl9zdG9wKHZvaWQpCnsKCWNvbnN0IGNoYXIgKnVzZV9z
  1692. aW0gPSBTdHJlYW1GTUFfY2hlY2tfdXNlX3NpbXVsYXRpb24oKTsKCWNoYXIgYnVmZlsxMDI0XTsK
  1693. CXNucHJpbnRmKGJ1ZmYsIDEwMjQsICJQQVRIPXNpbXV0aWxzOiRQQVRIIG1heGNvbXBpbGVyc2lt
  1694. IC1kIDEgLW4gJXMgLWMgTUFYNUMgLVMgc2ltdXRpbHMgc3RvcCIsIHVzZV9zaW0pOwoJRklMRSAq
  1695. cGlwZV9mcCA9IHBvcGVuKGJ1ZmYsICJyIik7CglpZiAocGlwZV9mcCA9PSBOVUxMKSB7CgkJc3Ry
  1696. bmNhdChidWZmLCAiIDogZmFpbGVkIHRvIGV4ZWN1dGUuIiwgKDEwMjQgLSBzdHJsZW4oYnVmZikp
  1697. KTsKCQlzZXRfZXJyb3IoYnVmZik7CgkJcmV0dXJuIC0xOwoJfQoJd2hpbGUgKGZnZXRzKGJ1ZmYs
  1698. IDEwMjQsIHBpcGVfZnApICE9IE5VTEwpIHsKCQkvKiBVbmNvbW1lbnQgdGhpcyB0byBnZXQgc2lt
  1699. dWxhdG9yIGNvbW1hbmQgb3V0cHV0ICovCgkJLyogZnByaW50ZihzdGRlcnIsIGJ1ZmYpOyAqLwoJ
  1700. CTsKCX0KCXBjbG9zZShwaXBlX2ZwKTsKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZCBTdHJlYW1G
  1701. TUFfc3RhdGljX2luaXQodm9pZCkgCnsKCXN0b3JlZF9tYXhmaWxlID0gU3RyZWFtRk1BX2luaXQo
  1702. KTsKCWlmIChzdG9yZWRfbWF4ZmlsZSA9PSBOVUxMIHx8ICFtYXhfb2soc3RvcmVkX21heGZpbGUt
  1703. PmVycm9ycykpIHsKCQlzdG9yZWRfbWF4ZmlsZSA9IE5VTEw7CgkJaWYobWF4X2NvbmZpZ19nZXRf
  1704. Ym9vbChNQVhfQ09ORklHX1NUQVRJQ19JTlRFUkZBQ0VfQUJPUlRfT05fRVJST1IpKSBhYm9ydCgp
  1705. OwoJCWVsc2UgeyBzZXRfZXJyb3IoIlVuYWJsZSB0byBsb2FkIG1heGZpbGUiKTsgcmV0dXJuOyB9
  1706. Cgl9CglpZighbWF4X29rKG1heF9nbG9iYWxfZXJyb3JzKCkpKSB7CgkJc2V0X2Vycm9yX2FuZF9m
  1707. cmVlKG1heF9lcnJvcnNfdHJhY2UobWF4X2dsb2JhbF9lcnJvcnMoKSkpOwoJCXJldHVybjsKCX0K
  1708. CWlmKCFtYXhfY29uZmlnX2dldF9ib29sKE1BWF9DT05GSUdfU1RBVElDX0lOVEVSRkFDRV9BQk9S
  1709. VF9PTl9FUlJPUikpCgkJbWF4X2Vycm9yc19tb2RlKHN0b3JlZF9tYXhmaWxlLT5lcnJvcnMsIDAp
  1710. OwoJdGltZV90IHRpbWVvdXRfcHJldmlvdXMgPSBtYXhfbG9hZF90aW1lb3V0KHN0b3JlZF9tYXhm
  1711. aWxlLCAzMCk7Cgljb25zdCBjaGFyICp1c2Vfc2ltID0gU3RyZWFtRk1BX2NoZWNrX3VzZV9zaW11
  1712. bGF0aW9uKCk7CglpZiAobWF4X3BpbmdfZGFlbW9uKHN0b3JlZF9tYXhmaWxlLCB1c2Vfc2ltKSA9
  1713. PSAwKSB7CgkJaW50IHNpbV9zdGF0ID0gU3RyZWFtRk1BX3NpbXVsYXRvcl9zdGFydCgpOwoJCWlm
  1714. ICgoc2ltX3N0YXQgPT0gMCkgJiYgKG1heF9waW5nX2RhZW1vbihzdG9yZWRfbWF4ZmlsZSwgdXNl
  1715. X3NpbSkgPT0gMSkpIHsKCQkJU3RyZWFtRk1BX3NpbXVsYXRpb25fbGF1bmNoID0gMTsKCQl9IGVs
  1716. c2UgewoJCQlzZXRfZXJyb3IoIkVycm9yOiBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcg
  1717. dG8gc3RhcnQgdGhlIHNpbXVsYXRpb24gaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGljYWxseS4iKTsK
  1718. CQkJc2V0X2Vycm9yKCJFcnJvcjogQ2hlY2sgdGhhdCAndXNlX3NpbXVsYXRpb249PHNpbXVsYXRv
  1719. cl9uYW1lPicgaXMgc2V0IGNvcnJlY3RseSBpbiB5b3VyIFNMaUMgY29uZmlndXJhdGlvbiIpOwoJ
  1720. CQlzZXRfZXJyb3IoIkVycm9yOiBhbmQgdGhhdCB0aGUgYXNzb2NpYXRlZCBzaW11bGF0ZWQgc3lz
  1721. dGVtIGRhZW1vbiBpcyBydW5uaW5nLiIpOwoJCQltYXhfZmlsZV9mcmVlKHN0b3JlZF9tYXhmaWxl
  1722. KTsKCQkJc3RvcmVkX21heGZpbGUgPSBOVUxMOwoJCQlyZXR1cm47CgkJfQoJfQoJc3RvcmVkX2Vu
  1723. Z2luZSA9IG1heF9sb2FkKHN0b3JlZF9tYXhmaWxlLCAiKiIpOwoJaWYgKCFtYXhfb2soc3RvcmVk
  1724. X21heGZpbGUtPmVycm9ycykpIHsKCQlpZihtYXhfY29uZmlnX2dldF9ib29sKE1BWF9DT05GSUdf
  1725. U1RBVElDX0lOVEVSRkFDRV9BQk9SVF9PTl9FUlJPUikpIHsKCQkJZnByaW50ZihzdGRlcnIsICJc
  1726. blVuYWJsZSB0byBsb2FkIGVuZ2luZTogYWJvcnRpbmcgbm93LlxuXG4iKTsKCQkJZmZsdXNoKHN0
  1727. ZGVycik7CgkJCWFib3J0KCk7CgkJfSBlbHNlIHsKCQkJc2V0X2Vycm9yX2FuZF9mcmVlKG1heF9l
  1728. cnJvcnNfdHJhY2Uoc3RvcmVkX21heGZpbGUtPmVycm9ycykpOwoJCQltYXhfZmlsZV9mcmVlKHN0
  1729. b3JlZF9tYXhmaWxlKTsKCQkJc3RvcmVkX21heGZpbGUgPSBOVUxMOwoJCQlyZXR1cm47CgkJfSAK
  1730. CX0gCgltYXhfbG9hZF90aW1lb3V0KHN0b3JlZF9tYXhmaWxlLCB0aW1lb3V0X3ByZXZpb3VzKTsK
  1731. fQp2b2lkIFN0cmVhbUZNQV9mcmVlKHZvaWQpCnsKCWlmIChzdG9yZWRfZW5naW5lICE9IE5VTEwp
  1732. IHsKCQltYXhfdW5sb2FkKHN0b3JlZF9lbmdpbmUpOwoJCXN0b3JlZF9lbmdpbmUgPSBOVUxMOwoJ
  1733. fQoJaWYgKHN0b3JlZF9tYXhmaWxlICE9IE5VTEwpIHsKCQltYXhfZmlsZV9mcmVlKHN0b3JlZF9t
  1734. YXhmaWxlKTsKCQlzdG9yZWRfbWF4ZmlsZSA9IE5VTEw7Cgl9CglpZiAoc3RvcmVkX2Vycm9yICE9
  1735. IE5VTEwpIHsKCQlmcmVlKHN0b3JlZF9lcnJvcik7CgkJc3RvcmVkX2Vycm9yID0gTlVMTDsKCX0K
  1736. CWlmIChTdHJlYW1GTUFfc2ltdWxhdGlvbl9sYXVuY2ggPT0gMSkgewoJCWludCBzaW1fc3RhdCA9
  1737. IFN0cmVhbUZNQV9zaW11bGF0b3Jfc3RvcCgpOwoJCWlmIChzaW1fc3RhdCAhPSAwICkgewoJCQlm
  1738. cHJpbnRmKHN0ZGVyciwgIkVycm9yIHN0b3BwaW5nIHNpbXVsYXRvci4iKTsKCQl9CgkJU3RyZWFt
  1739. Rk1BX3NpbXVsYXRpb25fbGF1bmNoID0gMDsKCX0KfQoKc3RhdGljIGludCBTdHJlYW1GTUFfZ2V0
  1740. X3BjaWVfYWxpZ25tZW50KHZvaWQpCnsKI2lmZGVmIFN0cmVhbUZNQV9QQ0lFX0FMSUdOTUVOVAoJ
  1741. cmV0dXJuICgoU3RyZWFtRk1BX1BDSUVfQUxJR05NRU5UIDwgMSkgPyAxNiA6IFN0cmVhbUZNQV9Q
  1742. Q0lFX0FMSUdOTUVOVCk7CiNlbHNlCglyZXR1cm4gMTY7CiNlbmRpZgp9CgpzdGF0aWMgaW50IFN0
  1743. cmVhbUZNQV9jaGVja19hbGlnbmVkKGNvbnN0IHZvaWQgKmRhdGEpCnsKCXVpbnRwdHJfdCBwb2lu
  1744. dGVyID0gKHVpbnRwdHJfdCkgZGF0YTsKCWludCBhbGlnbm1lbnQgPSBTdHJlYW1GTUFfZ2V0X3Bj
  1745. aWVfYWxpZ25tZW50KCk7CglyZXR1cm4gKHBvaW50ZXIgJSBhbGlnbm1lbnQpID8gMSA6IDA7Cn0K
  1746. CnN0YXRpYyB2b2lkICpTdHJlYW1GTUFfbWFsbG9jX2FsaWduZWQoY29uc3Qgc2l6ZV90IHNpemUp
  1747. CnsKCXZvaWQgKnB0cjsKCWludCBhbGlnbm1lbnQgPSBTdHJlYW1GTUFfZ2V0X3BjaWVfYWxpZ25t
  1748. ZW50KCk7Cglwb3NpeF9tZW1hbGlnbigmcHRyLCBhbGlnbm1lbnQsIHNpemUpOwoJcmV0dXJuIHB0
  1749. cjsKfQoKCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1750. LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1751. LS0tLS0gSW50ZXJmYWNlIGRlZmF1bHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwov
  1752. Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  1753. LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgojZGVmaW5lIENIRUNLX0VSUk9SU19TVChTVCwgUkVU
  1754. KSBpZighbWF4X29rKFNULT5lcnJvcnMpKSB7IGlmKG1heF9jb25maWdfZ2V0X2Jvb2woTUFYX0NP
  1755. TkZJR19TVEFUSUNfSU5URVJGQUNFX0FCT1JUX09OX0VSUk9SKSkgeyBmcHJpbnRmKHN0ZGVyciwg
  1756. IiVzXG4iLCBtYXhfZXJyb3JzX3RyYWNlKFNULT5lcnJvcnMpKTsgYWJvcnQoKTsgfSBzZXRfZXJy
  1757. b3JfYW5kX2ZyZWUobWF4X2Vycm9yc190cmFjZShTVC0+ZXJyb3JzKSk7IHJldHVybiBSRVQ7IH0g
  1758. CiNkZWZpbmUgQ0hFQ0tfTlVMTChWQUxVRSwgTUVTU0FHRSwgUkVUKSBpZihWQUxVRSA9PSBOVUxM
  1759. KSB7IGlmIChtYXhfY29uZmlnX2dldF9ib29sKE1BWF9DT05GSUdfU1RBVElDX0lOVEVSRkFDRV9B
  1760. Qk9SVF9PTl9FUlJPUikpIHsgZnByaW50ZihzdGRlcnIsICIlc1xuJXNcbiIsIChzdG9yZWRfZXJy
  1761. b3IgPT0gTlVMTCkgPyAiIiA6IHN0b3JlZF9lcnJvciwgTUVTU0FHRSk7IGFib3J0KCk7IH0gc2V0
  1762. X2Vycm9yKE1FU1NBR0UpOyByZXR1cm4gUkVUOyB9CgogCnR5cGVkZWYgc3RydWN0IFN0cmVhbUZN
  1763. QV9jYWxsYmFja19zdHJlYW0gewoJdWludDhfdCAqdXNlcl9wdHI7Cgl1aW50OF90ICphbGlnbmVk
  1764. X3B0cjsKCXNpemVfdCAgIHNpemU7CglpbnQgICAgICBpc19vdXRwdXQ7Cn0gU3RyZWFtRk1BX2Nh
  1765. bGxiYWNrX3N0cmVhbV90OwoKdHlwZWRlZiBzdHJ1Y3QgU3RyZWFtRk1BX2NhbGxiYWNrX2RhdGEg
  1766. ewoJU3RyZWFtRk1BX2NhbGxiYWNrX3N0cmVhbV90IHN0cmVhbVszXTsgCglpbnQgY291bnQ7Cglp
  1767. bnQgbWF4X2NvdW50Owp9IFN0cmVhbUZNQV9jYWxsYmFja19kYXRhX3Q7CgpzdGF0aWMgdm9pZCBT
  1768. dHJlYW1GTUFfY2FsbGJhY2tfaW50ZXJuYWwodm9pZCAqY2JfZGF0YSkKewoJU3RyZWFtRk1BX2Nh
  1769. bGxiYWNrX2RhdGFfdCAqZGF0YSA9IChTdHJlYW1GTUFfY2FsbGJhY2tfZGF0YV90KikgY2JfZGF0
  1770. YTsKCWZvciAoaW50IGkgPSAwIDsgaSA8IGRhdGEtPmNvdW50IDsgaSsrICkgewoJCVN0cmVhbUZN
  1771. QV9jYWxsYmFja19zdHJlYW1fdCAqcyA9ICZkYXRhLT5zdHJlYW1baV07CgkJaWYgKHMtPmlzX291
  1772. dHB1dCAmJiAocy0+c2l6ZSA+IDApKSB7CgkJCW1lbWNweShzLT51c2VyX3B0ciwgcy0+YWxpZ25l
  1773. ZF9wdHIsIHMtPnNpemUpOwoJCX0KCQlmcmVlKHMtPmFsaWduZWRfcHRyKTsKCX0KCWZyZWUoZGF0
  1774. YSk7Cn0KCnN0YXRpYyBtYXhfYWN0aW9uc190KiBTdHJlYW1GTUFfY29udmVydF9pbnRlcm5hbCgK
  1775. CW1heF9maWxlX3QgKm1heGZpbGUsCglTdHJlYW1GTUFfYWN0aW9uc190ICppbnRlcmZhY2VfYWN0
  1776. aW9ucywKCWludCAgaXNfaW50ZXJuYWxfY2FsbCwKCXZvaWQgKCoqY2FsbGJhY2tfZnVuYykodm9p
  1777. ZCopLAoJdm9pZCAqKmNhbGxiYWNrX2RhdGEpCnsKCW1heF9hY3Rpb25zX3QgKmFjdGlvbnMgPSBt
  1778. YXhfYWN0aW9uc19pbml0KG1heGZpbGUsIE5VTEwpOwoJaWYoYWN0aW9ucyA9PSBOVUxMKSByZXR1
  1779. cm4gTlVMTDsKCiNkZWZpbmUgQ0hFQ0tfRVJST1JTIGlmKCFtYXhfb2soYWN0aW9ucy0+ZXJyb3Jz
  1780. KSkgeyBzZXRfZXJyb3JfYW5kX2ZyZWUobWF4X2Vycm9yc190cmFjZShhY3Rpb25zLT5lcnJvcnMp
  1781. KTsgcmV0dXJuIE5VTEw7IH0gCgoJU3RyZWFtRk1BX2NhbGxiYWNrX2RhdGFfdCAqY2JfZGF0YSA9
  1782. IE5VTEw7CglpbnQgdXNlX2NhbGxiYWNrID0gKGNhbGxiYWNrX2Z1bmMgIT0gTlVMTCkgJiYgKGNh
  1783. bGxiYWNrX2RhdGEgIT0gTlVMTCk7CglpZiAodXNlX2NhbGxiYWNrKSB7CgkJY2JfZGF0YSA9IG1h
  1784. bGxvYyhzaXplb2YoU3RyZWFtRk1BX2NhbGxiYWNrX2RhdGFfdCkpOwoJCWlmIChjYl9kYXRhID09
  1785. IE5VTEwpIHsKCQkJZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZv
  1786. ciBzdHJlYW0gY2FsbGJhY2sgZGF0YSBpbiBmdW5jdGlvbiBTdHJlYW1GTUFfY29udmVydF9pbnRl
  1787. cm5hbFxuIik7CgkJCXJldHVybiBOVUxMOwoJCX0KCQljYl9kYXRhLT5tYXhfY291bnQgPSAzOwoJ
  1788. CWNiX2RhdGEtPmNvdW50ICAgICA9IDA7CgkJKmNhbGxiYWNrX2RhdGEgICAgID0gY2JfZGF0YTsK
  1789. CQkqY2FsbGJhY2tfZnVuYyAgICAgPSAmU3RyZWFtRk1BX2NhbGxiYWNrX2ludGVybmFsOwoJfQoK
  1790. CS8qIGNvZGUgZm9yIHNjYWxhciBTdHJlYW1GTUFLZXJuZWwucnVuX2N5Y2xlX2NvdW50ICovCgl1
  1791. aW50NjRfdCB0aWNrc19TdHJlYW1GTUFLZXJuZWwgPSBpbnRlcmZhY2VfYWN0aW9ucy0+dGlja3Nf
  1792. U3RyZWFtRk1BS2VybmVsOwoJbWF4X3NldF90aWNrcyhhY3Rpb25zLCAiU3RyZWFtRk1BS2VybmVs
  1793. IiwgdGlja3NfU3RyZWFtRk1BS2VybmVsKTsKCUNIRUNLX0VSUk9SUzsKCS8qIGVuZCBvZiBjb2Rl
  1794. IGZvciBzY2FsYXIgU3RyZWFtRk1BS2VybmVsLnJ1bl9jeWNsZV9jb3VudCovCgkKCS8qIGNvZGUg
  1795. Zm9yIHN0cmVhbSBpbkFUMSAqLwoJc2l6ZV90IGluc3RyZWFtX3NpemVfaW5BVDEgPSBpbnRlcmZh
  1796. Y2VfYWN0aW9ucy0+aW5zdHJlYW1fc2l6ZV9pbkFUMTsKCWlmIChpbnN0cmVhbV9zaXplX2luQVQx
  1797. ID4gMCkgewoJCWNvbnN0IHZvaWQgKnN0cmVhbV9wdHIgPSBpbnRlcmZhY2VfYWN0aW9ucy0+aW5z
  1798. dHJlYW1faW5BVDE7CgkJaWYgKHVzZV9jYWxsYmFjayAmJiAoMSA9PSBTdHJlYW1GTUFfY2hlY2tf
  1799. YWxpZ25lZChpbnRlcmZhY2VfYWN0aW9ucy0+aW5zdHJlYW1faW5BVDEpKSkgewoJCQl2b2lkICph
  1800. bGlnbmVkX2luc3RyZWFtX2luQVQxID0gbWFsbG9jKGluc3RyZWFtX3NpemVfaW5BVDEpOwoJCQlp
  1801. ZiAoYWxpZ25lZF9pbnN0cmVhbV9pbkFUMSA9PSBOVUxMKSB7CgkJCQltYXhfcmVwb3J0X2Vycm9y
  1802. X3NsaWMoYWN0aW9ucy0+ZXJyb3JzLCBfX0ZJTEVfXywgX19MSU5FX18sIDUyNiwgIkZhaWxlZCB0
  1803. byBhbGxvY2F0ZSBhbGlnbmVkIG1lbW9yeSBmb3Igc3RyZWFtICdpbkFUMSciKTsKCQkJCUNIRUNL
  1804. X0VSUk9SUzsKCQkJfQoJCQkoJmNiX2RhdGEtPnN0cmVhbVtjYl9kYXRhLT5jb3VudF0pLT51c2Vy
  1805. X3B0ciAgICA9ICh1aW50OF90KikgaW50ZXJmYWNlX2FjdGlvbnMtPmluc3RyZWFtX2luQVQxOwoJ
  1806. CQkoJmNiX2RhdGEtPnN0cmVhbVtjYl9kYXRhLT5jb3VudF0pLT5hbGlnbmVkX3B0ciA9ICh1aW50
  1807. OF90KikgYWxpZ25lZF9pbnN0cmVhbV9pbkFUMTsKCQkJKCZjYl9kYXRhLT5zdHJlYW1bY2JfZGF0
  1808. YS0+Y291bnRdKS0+c2l6ZSAgICAgICAgPSBpbnN0cmVhbV9zaXplX2luQVQxOwoJCQkoJmNiX2Rh
  1809. dGEtPnN0cmVhbVtjYl9kYXRhLT5jb3VudF0pLT5pc19vdXRwdXQgICA9IDA7CgkJCWNiX2RhdGEt
  1810. PmNvdW50ICs9IDE7CgkJCW1lbWNweShhbGlnbmVkX2luc3RyZWFtX2luQVQxLCBpbnRlcmZhY2Vf
  1811. YWN0aW9ucy0+aW5zdHJlYW1faW5BVDEsIGluc3RyZWFtX3NpemVfaW5BVDEpOwoJCQlzdHJlYW1f
  1812. cHRyID0gYWxpZ25lZF9pbnN0cmVhbV9pbkFUMTsKCQl9CgkJbWF4X3F1ZXVlX2lucHV0KGFjdGlv
  1813. bnMsICJpbkFUMSIsIHN0cmVhbV9wdHIsIGluc3RyZWFtX3NpemVfaW5BVDEpOwoJCUNIRUNLX0VS
  1814. Uk9SUzsKCX0KCS8qIGVuZCBvZiBjb2RlIGZvciBzdHJlYW0gaW5BVDEgKi8KCQoJLyogY29kZSBm
  1815. b3Igc3RyZWFtIGluQlQxICovCglzaXplX3QgaW5zdHJlYW1fc2l6ZV9pbkJUMSA9IGludGVyZmFj
  1816. ZV9hY3Rpb25zLT5pbnN0cmVhbV9zaXplX2luQlQxOwoJaWYgKGluc3RyZWFtX3NpemVfaW5CVDEg
  1817. PiAwKSB7CgkJY29uc3Qgdm9pZCAqc3RyZWFtX3B0ciA9IGludGVyZmFjZV9hY3Rpb25zLT5pbnN0
  1818. cmVhbV9pbkJUMTsKCQlpZiAodXNlX2NhbGxiYWNrICYmICgxID09IFN0cmVhbUZNQV9jaGVja19h
  1819. bGlnbmVkKGludGVyZmFjZV9hY3Rpb25zLT5pbnN0cmVhbV9pbkJUMSkpKSB7CgkJCXZvaWQgKmFs
  1820. aWduZWRfaW5zdHJlYW1faW5CVDEgPSBtYWxsb2MoaW5zdHJlYW1fc2l6ZV9pbkJUMSk7CgkJCWlm
  1821. IChhbGlnbmVkX2luc3RyZWFtX2luQlQxID09IE5VTEwpIHsKCQkJCW1heF9yZXBvcnRfZXJyb3Jf
  1822. c2xpYyhhY3Rpb25zLT5lcnJvcnMsIF9fRklMRV9fLCBfX0xJTkVfXywgNTI2LCAiRmFpbGVkIHRv
  1823. IGFsbG9jYXRlIGFsaWduZWQgbWVtb3J5IGZvciBzdHJlYW0gJ2luQlQxJyIpOwoJCQkJQ0hFQ0tf
  1824. RVJST1JTOwoJCQl9CgkJCSgmY2JfZGF0YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50XSktPnVzZXJf
  1825. cHRyICAgID0gKHVpbnQ4X3QqKSBpbnRlcmZhY2VfYWN0aW9ucy0+aW5zdHJlYW1faW5CVDE7CgkJ
  1826. CSgmY2JfZGF0YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50XSktPmFsaWduZWRfcHRyID0gKHVpbnQ4
  1827. X3QqKSBhbGlnbmVkX2luc3RyZWFtX2luQlQxOwoJCQkoJmNiX2RhdGEtPnN0cmVhbVtjYl9kYXRh
  1828. LT5jb3VudF0pLT5zaXplICAgICAgICA9IGluc3RyZWFtX3NpemVfaW5CVDE7CgkJCSgmY2JfZGF0
  1829. YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50XSktPmlzX291dHB1dCAgID0gMDsKCQkJY2JfZGF0YS0+
  1830. Y291bnQgKz0gMTsKCQkJbWVtY3B5KGFsaWduZWRfaW5zdHJlYW1faW5CVDEsIGludGVyZmFjZV9h
  1831. Y3Rpb25zLT5pbnN0cmVhbV9pbkJUMSwgaW5zdHJlYW1fc2l6ZV9pbkJUMSk7CgkJCXN0cmVhbV9w
  1832. dHIgPSBhbGlnbmVkX2luc3RyZWFtX2luQlQxOwoJCX0KCQltYXhfcXVldWVfaW5wdXQoYWN0aW9u
  1833. cywgImluQlQxIiwgc3RyZWFtX3B0ciwgaW5zdHJlYW1fc2l6ZV9pbkJUMSk7CgkJQ0hFQ0tfRVJS
  1834. T1JTOwoJfQoJLyogZW5kIG9mIGNvZGUgZm9yIHN0cmVhbSBpbkJUMSAqLwoJCgkvKiBjb2RlIGZv
  1835. ciBzdHJlYW0gb0RhdGFUMyAqLwoJc2l6ZV90IG91dHN0cmVhbV9zaXplX29EYXRhVDMgPSBpbnRl
  1836. cmZhY2VfYWN0aW9ucy0+b3V0c3RyZWFtX3NpemVfb0RhdGFUMzsKCWlmIChvdXRzdHJlYW1fc2l6
  1837. ZV9vRGF0YVQzID4gMCkgewoJCXZvaWQgKnN0cmVhbV9wdHIgPSBpbnRlcmZhY2VfYWN0aW9ucy0+
  1838. b3V0c3RyZWFtX29EYXRhVDM7CgkJaWYgKHVzZV9jYWxsYmFjayAmJiAoMSA9PSBTdHJlYW1GTUFf
  1839. Y2hlY2tfYWxpZ25lZChpbnRlcmZhY2VfYWN0aW9ucy0+b3V0c3RyZWFtX29EYXRhVDMpKSkgewoJ
  1840. CQl2b2lkICphbGlnbmVkX291dHN0cmVhbV9vRGF0YVQzID0gbWFsbG9jKG91dHN0cmVhbV9zaXpl
  1841. X29EYXRhVDMpOwoJCQlpZiAoYWxpZ25lZF9vdXRzdHJlYW1fb0RhdGFUMyA9PSBOVUxMKSB7CgkJ
  1842. CQltYXhfcmVwb3J0X2Vycm9yX3NsaWMoYWN0aW9ucy0+ZXJyb3JzLCBfX0ZJTEVfXywgX19MSU5F
  1843. X18sIDUyNiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBhbGlnbmVkIG1lbW9yeSBmb3Igc3RyZWFtICdv
  1844. RGF0YVQzJyIpOwoJCQkJQ0hFQ0tfRVJST1JTOwoJCQl9CgkJCSgmY2JfZGF0YS0+c3RyZWFtW2Ni
  1845. X2RhdGEtPmNvdW50XSktPnVzZXJfcHRyICAgID0gKHVpbnQ4X3QqKSBpbnRlcmZhY2VfYWN0aW9u
  1846. cy0+b3V0c3RyZWFtX29EYXRhVDM7CgkJCSgmY2JfZGF0YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50
  1847. XSktPmFsaWduZWRfcHRyID0gKHVpbnQ4X3QqKSBhbGlnbmVkX291dHN0cmVhbV9vRGF0YVQzOwoJ
  1848. CQkoJmNiX2RhdGEtPnN0cmVhbVtjYl9kYXRhLT5jb3VudF0pLT5zaXplICAgICAgICA9IG91dHN0
  1849. cmVhbV9zaXplX29EYXRhVDM7CgkJCSgmY2JfZGF0YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50XSkt
  1850. PmlzX291dHB1dCAgID0gMTsKCQkJY2JfZGF0YS0+Y291bnQgKz0gMTsKCQkJc3RyZWFtX3B0ciA9
  1851. IGFsaWduZWRfb3V0c3RyZWFtX29EYXRhVDM7CgkJfQoJCW1heF9xdWV1ZV9vdXRwdXQoYWN0aW9u
  1852. cywgIm9EYXRhVDMiLCBzdHJlYW1fcHRyLCBvdXRzdHJlYW1fc2l6ZV9vRGF0YVQzKTsKCQlDSEVD
  1853. S19FUlJPUlM7Cgl9CgkvKiBlbmQgb2YgY29kZSBmb3Igc3RyZWFtIG9EYXRhVDMgKi8KCQoJLyog
  1854. Y29kZSBmb3IgbGluZWFyIG1lbW9yeS1zdHJlYW0gImluQVQyIiBpbiBtZW1vcnktY29udHJvbGxl
  1855. ciAiTWVtb3J5Q29udHJvbGxlclBybzAiICovCglzaXplX3QgbG1lbV9hZGRyZXNzX01lbW9yeUNv
  1856. bnRyb2xsZXJQcm8wX2luQVQyID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1fYWRkcmVzc19NZW1v
  1857. cnlDb250cm9sbGVyUHJvMF9pbkFUMjsKCXNpemVfdCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRy
  1858. b2xsZXJQcm8wX2luQVQyID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1fYXJyX3NpemVfTWVtb3J5
  1859. Q29udHJvbGxlclBybzBfaW5BVDI7CglpbnQgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xs
  1860. ZXJQcm8wX2luQVQyID0gbWF4X2dldF9idXJzdF9zaXplKG1heGZpbGUsICJNZW1vcnlDb250cm9s
  1861. bGVyUHJvMCIpOwoJaWYgKCAobG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQy
  1862. ICUgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyKSAhPSAwICkgewoJ
  1863. CWZwcmludGYoc3Rkb3V0LCAiXG5TTGlDIEVycm9yOiAlczolZCA6IExNZW0gaW5BVDIgcGFyYW1l
  1864. dGVyICdsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDInIGlzIHNldCB0byAl
  1865. emQgYnl0ZXM7IGl0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAlZCBieXRlc1xuIiwgX19GSUxFX18s
  1866. IF9fTElORV9fLCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDIsIGxtZW1f
  1867. YnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMiApOwoJfQoJaWYgKCAobG1lbV9h
  1868. cnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMiAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1v
  1869. cnlDb250cm9sbGVyUHJvMF9pbkFUMikgIT0gMCApIHsKCQlmcHJpbnRmKHN0ZG91dCwgIlxuU0xp
  1870. QyBFcnJvcjogJXM6JWQgOiBMTWVtIGluQVQyIHBhcmFtZXRlciAnbG1lbV9hcnJfc2l6ZV9NZW1v
  1871. cnlDb250cm9sbGVyUHJvMF9pbkFUMicgaXMgc2V0IHRvICV6ZCBieXRlczsgaXQgbXVzdCBiZSBh
  1872. IG11bHRpcGxlIG9mICVkIGJ5dGVzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIGxtZW1fYXJyX3Np
  1873. emVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDIsIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250
  1874. cm9sbGVyUHJvMF9pbkFUMiApOwoJfQoJaWYgKGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxl
  1875. clBybzBfaW5BVDIgPiAwKSB7CgkJbWF4X21lbWN0bF9saW5lYXIoYWN0aW9ucywgIk1lbW9yeUNv
  1876. bnRyb2xsZXJQcm8wIiwgImluQVQyIiwgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8w
  1877. X2luQVQyLCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyKTsKCX0gZWxz
  1878. ZSB7CgkJbWF4X2lnbm9yZV9tZW1jdGwoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiwg
  1879. ImluQVQyIik7Cgl9CglDSEVDS19FUlJPUlM7CgkvKiBlbmQgb2YgY29kZSBmb3IgbGluZWFyIG1l
  1880. bW9yeS1zdHJlYW0gImluQVQyIiBpbiBtZW1vcnktY29udHJvbGxlciAiTWVtb3J5Q29udHJvbGxl
  1881. clBybzAiICovCgkKCS8qIGNvZGUgZm9yIGxpbmVhciBtZW1vcnktc3RyZWFtICJpbkFUMyIgaW4g
  1882. bWVtb3J5LWNvbnRyb2xsZXIgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiAqLwoJc2l6ZV90IGxtZW1f
  1883. YWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMyA9IGludGVyZmFjZV9hY3Rpb25zLT5s
  1884. bWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDM7CglzaXplX3QgbG1lbV9hcnJf
  1885. c2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMyA9IGludGVyZmFjZV9hY3Rpb25zLT5sbWVt
  1886. X2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzOwoJaW50IGxtZW1fYnVyc3Rfc2l6
  1887. ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMyA9IG1heF9nZXRfYnVyc3Rfc2l6ZShtYXhmaWxl
  1888. LCAiTWVtb3J5Q29udHJvbGxlclBybzAiKTsKCWlmICggKGxtZW1fYWRkcmVzc19NZW1vcnlDb250
  1889. cm9sbGVyUHJvMF9pbkFUMyAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9p
  1890. bkFUMykgIT0gMCApIHsKCQlmcHJpbnRmKHN0ZG91dCwgIlxuU0xpQyBFcnJvcjogJXM6JWQgOiBM
  1891. TWVtIGluQVQzIHBhcmFtZXRlciAnbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2lu
  1892. QVQzJyBpcyBzZXQgdG8gJXpkIGJ5dGVzOyBpdCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJWQgYnl0
  1893. ZXNcbiIsIF9fRklMRV9fLCBfX0xJTkVfXywgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQ
  1894. cm8wX2luQVQzLCBsbWVtX2J1cnN0X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMgKTsK
  1895. CX0KCWlmICggKGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMgJSBsbWVt
  1896. X2J1cnN0X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMpICE9IDAgKSB7CgkJZnByaW50
  1897. ZihzdGRvdXQsICJcblNMaUMgRXJyb3I6ICVzOiVkIDogTE1lbSBpbkFUMyBwYXJhbWV0ZXIgJ2xt
  1898. ZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMnIGlzIHNldCB0byAlemQgYnl0
  1899. ZXM7IGl0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAlZCBieXRlc1xuIiwgX19GSUxFX18sIF9fTElO
  1900. RV9fLCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzLCBsbWVtX2J1cnN0
  1901. X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMgKTsKCX0KCWlmIChsbWVtX2Fycl9zaXpl
  1902. X01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzID4gMCkgewoJCW1heF9tZW1jdGxfbGluZWFyKGFj
  1903. dGlvbnMsICJNZW1vcnlDb250cm9sbGVyUHJvMCIsICJpbkFUMyIsIGxtZW1fYWRkcmVzc19NZW1v
  1904. cnlDb250cm9sbGVyUHJvMF9pbkFUMywgbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
  1905. MF9pbkFUMyk7Cgl9IGVsc2UgewoJCW1heF9pZ25vcmVfbWVtY3RsKGFjdGlvbnMsICJNZW1vcnlD
  1906. b250cm9sbGVyUHJvMCIsICJpbkFUMyIpOwoJfQoJQ0hFQ0tfRVJST1JTOwoJLyogZW5kIG9mIGNv
  1907. ZGUgZm9yIGxpbmVhciBtZW1vcnktc3RyZWFtICJpbkFUMyIgaW4gbWVtb3J5LWNvbnRyb2xsZXIg
  1908. Ik1lbW9yeUNvbnRyb2xsZXJQcm8wIiAqLwoJCgkvKiBjb2RlIGZvciBsaW5lYXIgbWVtb3J5LXN0
  1909. cmVhbSAiaW5CVDIiIGluIG1lbW9yeS1jb250cm9sbGVyICJNZW1vcnlDb250cm9sbGVyUHJvMCIg
  1910. Ki8KCXNpemVfdCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIgPSBpbnRl
  1911. cmZhY2VfYWN0aW9ucy0+bG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyOwoJ
  1912. c2l6ZV90IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIgPSBpbnRlcmZh
  1913. Y2VfYWN0aW9ucy0+bG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMjsKCWlu
  1914. dCBsbWVtX2J1cnN0X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIgPSBtYXhfZ2V0X2J1
  1915. cnN0X3NpemUobWF4ZmlsZSwgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIik7CglpZiAoIChsbWVtX2Fk
  1916. ZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIgJSBsbWVtX2J1cnN0X3NpemVfTWVtb3J5
  1917. Q29udHJvbGxlclBybzBfaW5CVDIpICE9IDAgKSB7CgkJZnByaW50ZihzdGRvdXQsICJcblNMaUMg
  1918. RXJyb3I6ICVzOiVkIDogTE1lbSBpbkJUMiBwYXJhbWV0ZXIgJ2xtZW1fYWRkcmVzc19NZW1vcnlD
  1919. b250cm9sbGVyUHJvMF9pbkJUMicgaXMgc2V0IHRvICV6ZCBieXRlczsgaXQgbXVzdCBiZSBhIG11
  1920. bHRpcGxlIG9mICVkIGJ5dGVzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIGxtZW1fYWRkcmVzc19N
  1921. ZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMiwgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xs
  1922. ZXJQcm8wX2luQlQyICk7Cgl9CglpZiAoIChsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQ
  1923. cm8wX2luQlQyICUgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyKSAh
  1924. PSAwICkgewoJCWZwcmludGYoc3Rkb3V0LCAiXG5TTGlDIEVycm9yOiAlczolZCA6IExNZW0gaW5C
  1925. VDIgcGFyYW1ldGVyICdsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyJyBp
  1926. cyBzZXQgdG8gJXpkIGJ5dGVzOyBpdCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJWQgYnl0ZXNcbiIs
  1927. IF9fRklMRV9fLCBfX0xJTkVfXywgbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9p
  1928. bkJUMiwgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyICk7Cgl9Cglp
  1929. ZiAobG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMiA+IDApIHsKCQltYXhf
  1930. bWVtY3RsX2xpbmVhcihhY3Rpb25zLCAiTWVtb3J5Q29udHJvbGxlclBybzAiLCAiaW5CVDIiLCBs
  1931. bWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIsIGxtZW1fYXJyX3NpemVfTWVt
  1932. b3J5Q29udHJvbGxlclBybzBfaW5CVDIpOwoJfSBlbHNlIHsKCQltYXhfaWdub3JlX21lbWN0bChh
  1933. Y3Rpb25zLCAiTWVtb3J5Q29udHJvbGxlclBybzAiLCAiaW5CVDIiKTsKCX0KCUNIRUNLX0VSUk9S
  1934. UzsKCS8qIGVuZCBvZiBjb2RlIGZvciBsaW5lYXIgbWVtb3J5LXN0cmVhbSAiaW5CVDIiIGluIG1l
  1935. bW9yeS1jb250cm9sbGVyICJNZW1vcnlDb250cm9sbGVyUHJvMCIgKi8KCQoJLyogY29kZSBmb3Ig
  1936. bGluZWFyIG1lbW9yeS1zdHJlYW0gImluQlQzIiBpbiBtZW1vcnktY29udHJvbGxlciAiTWVtb3J5
  1937. Q29udHJvbGxlclBybzAiICovCglzaXplX3QgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQ
  1938. cm8wX2luQlQzID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9s
  1939. bGVyUHJvMF9pbkJUMzsKCXNpemVfdCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8w
  1940. X2luQlQzID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxl
  1941. clBybzBfaW5CVDM7CglpbnQgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2lu
  1942. QlQzID0gbWF4X2dldF9idXJzdF9zaXplKG1heGZpbGUsICJNZW1vcnlDb250cm9sbGVyUHJvMCIp
  1943. OwoJaWYgKCAobG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzICUgbG1lbV9i
  1944. dXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzKSAhPSAwICkgewoJCWZwcmludGYo
  1945. c3Rkb3V0LCAiXG5TTGlDIEVycm9yOiAlczolZCA6IExNZW0gaW5CVDMgcGFyYW1ldGVyICdsbWVt
  1946. X2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDMnIGlzIHNldCB0byAlemQgYnl0ZXM7
  1947. IGl0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAlZCBieXRlc1xuIiwgX19GSUxFX18sIF9fTElORV9f
  1948. LCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDMsIGxtZW1fYnVyc3Rfc2l6
  1949. ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMyApOwoJfQoJaWYgKCAobG1lbV9hcnJfc2l6ZV9N
  1950. ZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMyAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9s
  1951. bGVyUHJvMF9pbkJUMykgIT0gMCApIHsKCQlmcHJpbnRmKHN0ZG91dCwgIlxuU0xpQyBFcnJvcjog
  1952. JXM6JWQgOiBMTWVtIGluQlQzIHBhcmFtZXRlciAnbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9s
  1953. bGVyUHJvMF9pbkJUMycgaXMgc2V0IHRvICV6ZCBieXRlczsgaXQgbXVzdCBiZSBhIG11bHRpcGxl
  1954. IG9mICVkIGJ5dGVzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIGxtZW1fYXJyX3NpemVfTWVtb3J5
  1955. Q29udHJvbGxlclBybzBfaW5CVDMsIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
  1956. MF9pbkJUMyApOwoJfQoJaWYgKGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5C
  1957. VDMgPiAwKSB7CgkJbWF4X21lbWN0bF9saW5lYXIoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQ
  1958. cm8wIiwgImluQlQzIiwgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLCBs
  1959. bWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzKTsKCX0gZWxzZSB7CgkJbWF4
  1960. X2lnbm9yZV9tZW1jdGwoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiwgImluQlQzIik7
  1961. Cgl9CglDSEVDS19FUlJPUlM7CgkvKiBlbmQgb2YgY29kZSBmb3IgbGluZWFyIG1lbW9yeS1zdHJl
  1962. YW0gImluQlQzIiBpbiBtZW1vcnktY29udHJvbGxlciAiTWVtb3J5Q29udHJvbGxlclBybzAiICov
  1963. CgkKCS8qIGNvZGUgZm9yIGxpbmVhciBtZW1vcnktc3RyZWFtICJvRGF0YVQxIiBpbiBtZW1vcnkt
  1964. Y29udHJvbGxlciAiTWVtb3J5Q29udHJvbGxlclBybzAiICovCglzaXplX3QgbG1lbV9hZGRyZXNz
  1965. X01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDEgPSBpbnRlcmZhY2VfYWN0aW9ucy0+bG1lbV9h
  1966. ZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDE7CglzaXplX3QgbG1lbV9hcnJfc2l6
  1967. ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQxID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1f
  1968. YXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMTsKCWludCBsbWVtX2J1cnN0X3Np
  1969. emVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMSA9IG1heF9nZXRfYnVyc3Rfc2l6ZShtYXhm
  1970. aWxlLCAiTWVtb3J5Q29udHJvbGxlclBybzAiKTsKCWlmICggKGxtZW1fYWRkcmVzc19NZW1vcnlD
  1971. b250cm9sbGVyUHJvMF9vRGF0YVQxICUgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQ
  1972. cm8wX29EYXRhVDEpICE9IDAgKSB7CgkJZnByaW50ZihzdGRvdXQsICJcblNMaUMgRXJyb3I6ICVz
  1973. OiVkIDogTE1lbSBvRGF0YVQxIHBhcmFtZXRlciAnbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xs
  1974. ZXJQcm8wX29EYXRhVDEnIGlzIHNldCB0byAlemQgYnl0ZXM7IGl0IG11c3QgYmUgYSBtdWx0aXBs
  1975. ZSBvZiAlZCBieXRlc1xuIiwgX19GSUxFX18sIF9fTElORV9fLCBsbWVtX2FkZHJlc3NfTWVtb3J5
  1976. Q29udHJvbGxlclBybzBfb0RhdGFUMSwgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQ
  1977. cm8wX29EYXRhVDEgKTsKCX0KCWlmICggKGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBy
  1978. bzBfb0RhdGFUMSAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQx
  1979. KSAhPSAwICkgewoJCWZwcmludGYoc3Rkb3V0LCAiXG5TTGlDIEVycm9yOiAlczolZCA6IExNZW0g
  1980. b0RhdGFUMSBwYXJhbWV0ZXIgJ2xtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0Rh
  1981. dGFUMScgaXMgc2V0IHRvICV6ZCBieXRlczsgaXQgbXVzdCBiZSBhIG11bHRpcGxlIG9mICVkIGJ5
  1982. dGVzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxl
  1983. clBybzBfb0RhdGFUMSwgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRh
  1984. VDEgKTsKCX0KCWlmIChsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDEg
  1985. PiAwKSB7CgkJbWF4X21lbWN0bF9saW5lYXIoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQcm8w
  1986. IiwgIm9EYXRhVDEiLCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMSwg
  1987. bG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQxKTsKCX0gZWxzZSB7CgkJ
  1988. bWF4X2lnbm9yZV9tZW1jdGwoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiwgIm9EYXRh
  1989. VDEiKTsKCX0KCUNIRUNLX0VSUk9SUzsKCS8qIGVuZCBvZiBjb2RlIGZvciBsaW5lYXIgbWVtb3J5
  1990. LXN0cmVhbSAib0RhdGFUMSIgaW4gbWVtb3J5LWNvbnRyb2xsZXIgIk1lbW9yeUNvbnRyb2xsZXJQ
  1991. cm8wIiAqLwoJCgkvKiBjb2RlIGZvciBsaW5lYXIgbWVtb3J5LXN0cmVhbSAib0RhdGFUMiIgaW4g
  1992. bWVtb3J5LWNvbnRyb2xsZXIgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiAqLwoJc2l6ZV90IGxtZW1f
  1993. YWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyID0gaW50ZXJmYWNlX2FjdGlvbnMt
  1994. PmxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyOwoJc2l6ZV90IGxtZW1f
  1995. YXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiA9IGludGVyZmFjZV9hY3Rpb25z
  1996. LT5sbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDI7CglpbnQgbG1lbV9i
  1997. dXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDIgPSBtYXhfZ2V0X2J1cnN0X3Np
  1998. emUobWF4ZmlsZSwgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIik7CglpZiAoIChsbWVtX2FkZHJlc3Nf
  1999. TWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250
  2000. cm9sbGVyUHJvMF9vRGF0YVQyKSAhPSAwICkgewoJCWZwcmludGYoc3Rkb3V0LCAiXG5TTGlDIEVy
  2001. cm9yOiAlczolZCA6IExNZW0gb0RhdGFUMiBwYXJhbWV0ZXIgJ2xtZW1fYWRkcmVzc19NZW1vcnlD
  2002. b250cm9sbGVyUHJvMF9vRGF0YVQyJyBpcyBzZXQgdG8gJXpkIGJ5dGVzOyBpdCBtdXN0IGJlIGEg
  2003. bXVsdGlwbGUgb2YgJWQgYnl0ZXNcbiIsIF9fRklMRV9fLCBfX0xJTkVfXywgbG1lbV9hZGRyZXNz
  2004. X01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDIsIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250
  2005. cm9sbGVyUHJvMF9vRGF0YVQyICk7Cgl9CglpZiAoIChsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRy
  2006. b2xsZXJQcm8wX29EYXRhVDIgJSBsbWVtX2J1cnN0X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBf
  2007. b0RhdGFUMikgIT0gMCApIHsKCQlmcHJpbnRmKHN0ZG91dCwgIlxuU0xpQyBFcnJvcjogJXM6JWQg
  2008. OiBMTWVtIG9EYXRhVDIgcGFyYW1ldGVyICdsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQ
  2009. cm8wX29EYXRhVDInIGlzIHNldCB0byAlemQgYnl0ZXM7IGl0IG11c3QgYmUgYSBtdWx0aXBsZSBv
  2010. ZiAlZCBieXRlc1xuIiwgX19GSUxFX18sIF9fTElORV9fLCBsbWVtX2Fycl9zaXplX01lbW9yeUNv
  2011. bnRyb2xsZXJQcm8wX29EYXRhVDIsIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
  2012. MF9vRGF0YVQyICk7Cgl9CglpZiAobG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9v
  2013. RGF0YVQyID4gMCkgewoJCW1heF9tZW1jdGxfbGluZWFyKGFjdGlvbnMsICJNZW1vcnlDb250cm9s
  2014. bGVyUHJvMCIsICJvRGF0YVQyIiwgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29E
  2015. YXRhVDIsIGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMik7Cgl9IGVs
  2016. c2UgewoJCW1heF9pZ25vcmVfbWVtY3RsKGFjdGlvbnMsICJNZW1vcnlDb250cm9sbGVyUHJvMCIs
  2017. ICJvRGF0YVQyIik7Cgl9CglDSEVDS19FUlJPUlM7CgkvKiBlbmQgb2YgY29kZSBmb3IgbGluZWFy
  2018. IG1lbW9yeS1zdHJlYW0gIm9EYXRhVDIiIGluIG1lbW9yeS1jb250cm9sbGVyICJNZW1vcnlDb250
  2019. cm9sbGVyUHJvMCIgKi8KCQoJaWYgKHVzZV9jYWxsYmFjayAmJiBjYl9kYXRhLT5jb3VudCA9PSAw
  2020. KSB7CgkJKmNhbGxiYWNrX2RhdGEgPSBOVUxMOwoJCSpjYWxsYmFja19mdW5jID0gTlVMTDsKCQlm
  2021. cmVlKGNiX2RhdGEpOwoJfQoJcmV0dXJuIGFjdGlvbnM7CiN1bmRlZiBDSEVDS19FUlJPUlMKfQoK
  2022. dm9pZCBTdHJlYW1GTUEoCgl1aW50NjRfdCB0aWNrc19TdHJlYW1GTUFLZXJuZWwsCgljb25zdCB2
  2023. b2lkICppbnN0cmVhbV9pbkFUMSwKCXNpemVfdCBpbnN0cmVhbV9zaXplX2luQVQxLAoJY29uc3Qg
  2024. dm9pZCAqaW5zdHJlYW1faW5CVDEsCglzaXplX3QgaW5zdHJlYW1fc2l6ZV9pbkJUMSwKCXZvaWQg
  2025. Km91dHN0cmVhbV9vRGF0YVQzLAoJc2l6ZV90IG91dHN0cmVhbV9zaXplX29EYXRhVDMsCglzaXpl
  2026. X3QgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyLAoJc2l6ZV90IGxtZW1f
  2027. YXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDIsCglzaXplX3QgbG1lbV9hZGRyZXNz
  2028. X01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzLAoJc2l6ZV90IGxtZW1fYXJyX3NpemVfTWVtb3J5
  2029. Q29udHJvbGxlclBybzBfaW5BVDMsCglzaXplX3QgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xs
  2030. ZXJQcm8wX2luQlQyLAoJc2l6ZV90IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBf
  2031. aW5CVDIsCglzaXplX3QgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLAoJ
  2032. c2l6ZV90IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDMsCglzaXplX3Qg
  2033. bG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDEsCglzaXplX3QgbG1lbV9h
  2034. cnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQxLAoJc2l6ZV90IGxtZW1fYWRkcmVz
  2035. c19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyLAoJc2l6ZV90IGxtZW1fYXJyX3NpemVfTWVt
  2036. b3J5Q29udHJvbGxlclBybzBfb0RhdGFUMikKewoJKHZvaWQpIHB0aHJlYWRfb25jZSgmc2xpY19i
  2037. c19pc19pbml0aWFsaXNlZCwgU3RyZWFtRk1BX3N0YXRpY19pbml0KTsKCUNIRUNLX05VTEwoc3Rv
  2038. cmVkX21heGZpbGUsICJNYXhmaWxlIHdhcyBub3QgbG9hZGVkIiwgKTsKCW1heF9ydW5fdCAqcnVu
  2039. ID0gU3RyZWFtRk1BX25vbmJsb2NrKHRpY2tzX1N0cmVhbUZNQUtlcm5lbCwgaW5zdHJlYW1faW5B
  2040. VDEsIGluc3RyZWFtX3NpemVfaW5BVDEsIGluc3RyZWFtX2luQlQxLCBpbnN0cmVhbV9zaXplX2lu
  2041. QlQxLCBvdXRzdHJlYW1fb0RhdGFUMywgb3V0c3RyZWFtX3NpemVfb0RhdGFUMywgbG1lbV9hZGRy
  2042. ZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyLCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRy
  2043. b2xsZXJQcm8wX2luQVQyLCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMs
  2044. IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMsIGxtZW1fYWRkcmVzc19N
  2045. ZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMiwgbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVy
  2046. UHJvMF9pbkJUMiwgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLCBsbWVt
  2047. X2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLCBsbWVtX2FkZHJlc3NfTWVtb3J5
  2048. Q29udHJvbGxlclBybzBfb0RhdGFUMSwgbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
  2049. MF9vRGF0YVQxLCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiwgbG1l
  2050. bV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyKTsKCUNIRUNLX05VTEwocnVu
  2051. LCAiVW5hYmxlIHRvIHJ1biBhY3Rpb25zIiwgKTsKCW1heF93YWl0KHJ1bik7Cn0KCm1heF9ydW5f
  2052. dCAqU3RyZWFtRk1BX25vbmJsb2NrKAoJdWludDY0X3QgdGlja3NfU3RyZWFtRk1BS2VybmVsLAoJ
  2053. Y29uc3Qgdm9pZCAqaW5zdHJlYW1faW5BVDEsCglzaXplX3QgaW5zdHJlYW1fc2l6ZV9pbkFUMSwK
  2054. CWNvbnN0IHZvaWQgKmluc3RyZWFtX2luQlQxLAoJc2l6ZV90IGluc3RyZWFtX3NpemVfaW5CVDEs
  2055. Cgl2b2lkICpvdXRzdHJlYW1fb0RhdGFUMywKCXNpemVfdCBvdXRzdHJlYW1fc2l6ZV9vRGF0YVQz
  2056. LAoJc2l6ZV90IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMiwKCXNpemVf
  2057. dCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyLAoJc2l6ZV90IGxtZW1f
  2058. YWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMywKCXNpemVfdCBsbWVtX2Fycl9zaXpl
  2059. X01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzLAoJc2l6ZV90IGxtZW1fYWRkcmVzc19NZW1vcnlD
  2060. b250cm9sbGVyUHJvMF9pbkJUMiwKCXNpemVfdCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xs
  2061. ZXJQcm8wX2luQlQyLAoJc2l6ZV90IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9p
  2062. bkJUMywKCXNpemVfdCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLAoJ
  2063. c2l6ZV90IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQxLAoJc2l6ZV90
  2064. IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMSwKCXNpemVfdCBsbWVt
  2065. X2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiwKCXNpemVfdCBsbWVtX2Fycl9z
  2066. aXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDIpCnsKCVN0cmVhbUZNQV9hY3Rpb25zX3Qg
  2067. aW50ZXJmYWNlX2FjdGlvbnM7CglpbnRlcmZhY2VfYWN0aW9ucy50aWNrc19TdHJlYW1GTUFLZXJu
  2068. ZWwgPSB0aWNrc19TdHJlYW1GTUFLZXJuZWw7CglpbnRlcmZhY2VfYWN0aW9ucy5pbnN0cmVhbV9p
  2069. bkFUMSA9IGluc3RyZWFtX2luQVQxOwoJaW50ZXJmYWNlX2FjdGlvbnMuaW5zdHJlYW1fc2l6ZV9p
  2070. bkFUMSA9IGluc3RyZWFtX3NpemVfaW5BVDE7CglpbnRlcmZhY2VfYWN0aW9ucy5pbnN0cmVhbV9p
  2071. bkJUMSA9IGluc3RyZWFtX2luQlQxOwoJaW50ZXJmYWNlX2FjdGlvbnMuaW5zdHJlYW1fc2l6ZV9p
  2072. bkJUMSA9IGluc3RyZWFtX3NpemVfaW5CVDE7CglpbnRlcmZhY2VfYWN0aW9ucy5vdXRzdHJlYW1f
  2073. b0RhdGFUMyA9IG91dHN0cmVhbV9vRGF0YVQzOwoJaW50ZXJmYWNlX2FjdGlvbnMub3V0c3RyZWFt
  2074. X3NpemVfb0RhdGFUMyA9IG91dHN0cmVhbV9zaXplX29EYXRhVDM7CglpbnRlcmZhY2VfYWN0aW9u
  2075. cy5sbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDIgPSBsbWVtX2FkZHJlc3Nf
  2076. TWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDI7CglpbnRlcmZhY2VfYWN0aW9ucy5sbWVtX2Fycl9z
  2077. aXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyID0gbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250
  2078. cm9sbGVyUHJvMF9pbkFUMjsKCWludGVyZmFjZV9hY3Rpb25zLmxtZW1fYWRkcmVzc19NZW1vcnlD
  2079. b250cm9sbGVyUHJvMF9pbkFUMyA9IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9p
  2080. bkFUMzsKCWludGVyZmFjZV9hY3Rpb25zLmxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBy
  2081. bzBfaW5BVDMgPSBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzOwoJaW50
  2082. ZXJmYWNlX2FjdGlvbnMubG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyID0g
  2083. bG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyOwoJaW50ZXJmYWNlX2FjdGlv
  2084. bnMubG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMiA9IGxtZW1fYXJyX3Np
  2085. emVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDI7CglpbnRlcmZhY2VfYWN0aW9ucy5sbWVtX2Fk
  2086. ZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDMgPSBsbWVtX2FkZHJlc3NfTWVtb3J5Q29u
  2087. dHJvbGxlclBybzBfaW5CVDM7CglpbnRlcmZhY2VfYWN0aW9ucy5sbWVtX2Fycl9zaXplX01lbW9y
  2088. eUNvbnRyb2xsZXJQcm8wX2luQlQzID0gbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
  2089. MF9pbkJUMzsKCWludGVyZmFjZV9hY3Rpb25zLmxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVy
  2090. UHJvMF9vRGF0YVQxID0gbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDE7
  2091. CglpbnRlcmZhY2VfYWN0aW9ucy5sbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29E
  2092. YXRhVDEgPSBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDE7CglpbnRl
  2093. cmZhY2VfYWN0aW9ucy5sbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiA9
  2094. IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyOwoJaW50ZXJmYWNlX2Fj
  2095. dGlvbnMubG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyID0gbG1lbV9h
  2096. cnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyOwoJKHZvaWQpIHB0aHJlYWRfb25j
  2097. ZSgmc2xpY19ic19pc19pbml0aWFsaXNlZCwgU3RyZWFtRk1BX3N0YXRpY19pbml0KTsKCUNIRUNL
  2098. X05VTEwoc3RvcmVkX21heGZpbGUsICJNYXhmaWxlIHdhcyBub3QgbG9hZGVkIiwgTlVMTCk7Cgl2
  2099. b2lkICgqY2JfZnVuYykodm9pZCopID0gTlVMTDsKCXZvaWQgICpjYl9kYXRhICAgICAgICAgPSBO
  2100. VUxMOwoJbWF4X2FjdGlvbnNfdCAqYWN0aW9ucyA9IFN0cmVhbUZNQV9jb252ZXJ0X2ludGVybmFs
  2101. KHN0b3JlZF9tYXhmaWxlLCAmaW50ZXJmYWNlX2FjdGlvbnMsIDEsICZjYl9mdW5jLCAmY2JfZGF0
  2102. YSk7CglDSEVDS19OVUxMKGFjdGlvbnMsICJVbmFibGUgdG8gYnVpbGQgYWN0aW9ucyIsIE5VTEwp
  2103. OwoJbWF4X3ZhbGlkYXRlKGFjdGlvbnMpOwoJQ0hFQ0tfRVJST1JTX1NUKGFjdGlvbnMsIE5VTEwp
  2104. OwoJQ0hFQ0tfRVJST1JTX1NUKHN0b3JlZF9lbmdpbmUsIE5VTEwpOwoJbWF4X3J1bl90ICpydW47
  2105. CglpZiAoY2JfZnVuYyA9PSBOVUxMKSB7CgkJcnVuID0gbWF4X3J1bl9ub25ibG9jayhzdG9yZWRf
  2106. ZW5naW5lLCBhY3Rpb25zKTsKCX0gZWxzZSB7CgkJcnVuID0gbWF4X3J1bl9ub25ibG9ja193aXRo
  2107. X2NiKHN0b3JlZF9lbmdpbmUsIGFjdGlvbnMsIGNiX2Z1bmMsIGNiX2RhdGEpOwoJfQoJQ0hFQ0tf
  2108. TlVMTChydW4sICJVbmFibGUgdG8gcnVuIGFjdGlvbnMiLCBOVUxMKTsKCUNIRUNLX0VSUk9SU19T
  2109. VChhY3Rpb25zLCBOVUxMKTsKCW1heF9hY3Rpb25zX2ZyZWUoYWN0aW9ucyk7CglyZXR1cm4gcnVu
  2110. Owp9Cgp2b2lkIFN0cmVhbUZNQV9ydW4oCgltYXhfZW5naW5lX3QgKmVuZ2luZSwKCVN0cmVhbUZN
  2111. QV9hY3Rpb25zX3QgKmludGVyZmFjZV9hY3Rpb25zKQp7CgltYXhfcnVuX3QgKnJ1biA9IFN0cmVh
  2112. bUZNQV9ydW5fbm9uYmxvY2soZW5naW5lLCBpbnRlcmZhY2VfYWN0aW9ucyk7CglDSEVDS19OVUxM
  2113. KHJ1biwgIlVuYWJsZSB0byBydW4gYWN0aW9ucyIsICk7CgltYXhfd2FpdChydW4pOwp9CgptYXhf
  2114. cnVuX3QgKlN0cmVhbUZNQV9ydW5fbm9uYmxvY2soCgltYXhfZW5naW5lX3QgKmVuZ2luZSwKCVN0
  2115. cmVhbUZNQV9hY3Rpb25zX3QgKmludGVyZmFjZV9hY3Rpb25zKQp7CgltYXhfZmlsZV90ICptYXhm
  2116. aWxlID0gbWF4X2VuZ2luZV9nZXRfbWF4X2ZpbGUoZW5naW5lKTsgCgl2b2lkICgqY2JfZnVuYyko
  2117. dm9pZCopID0gTlVMTDsKCXZvaWQgICpjYl9kYXRhICAgICAgICAgPSBOVUxMOwoJbWF4X2FjdGlv
  2118. bnNfdCAqYWN0aW9ucyA9IFN0cmVhbUZNQV9jb252ZXJ0X2ludGVybmFsKG1heGZpbGUsIGludGVy
  2119. ZmFjZV9hY3Rpb25zLCAxLCAmY2JfZnVuYywgJmNiX2RhdGEpOwoJQ0hFQ0tfTlVMTChhY3Rpb25z
  2120. LCAiVW5hYmxlIHRvIGJ1aWxkIGFjdGlvbnMiLCBOVUxMKTsKCW1heF92YWxpZGF0ZShhY3Rpb25z
  2121. KTsKCUNIRUNLX0VSUk9SU19TVChhY3Rpb25zLCBOVUxMKTsKCW1heF9ydW5fdCAqcnVuOwoJaWYg
  2122. KGNiX2Z1bmMgPT0gTlVMTCkgewoJCXJ1biA9IG1heF9ydW5fbm9uYmxvY2soZW5naW5lLCBhY3Rp
  2123. b25zKTsKCX0gZWxzZSB7CgkJcnVuID0gbWF4X3J1bl9ub25ibG9ja193aXRoX2NiKGVuZ2luZSwg
  2124. YWN0aW9ucywgY2JfZnVuYywgY2JfZGF0YSk7Cgl9CglDSEVDS19OVUxMKHJ1biwgIlVuYWJsZSB0
  2125. byBydW4gYWN0aW9ucyIsIE5VTEwpOwoJbWF4X2FjdGlvbnNfZnJlZShhY3Rpb25zKTsKCXJldHVy
  2126. biBydW47Cn0KCgovKioKICogXGJyaWVmIEdyb3VwIHJ1biBhZHZhbmNlZCBzdGF0aWMgZnVuY3Rp
  2127. b24gZm9yIHRoZSBpbnRlcmZhY2UgJ2RlZmF1bHQnLgogKiAKICogXHBhcmFtIFtpbl0gZ3JvdXAg
  2128. R3JvdXAgdG8gdXNlLgogKiBccGFyYW0gW2luLG91dF0gaW50ZXJmYWNlX2FjdGlvbnMgQWN0aW9u
  2129. cyB0byBydW4uCiAqCiAqIFJ1biB0aGUgYWN0aW9ucyBvbiB0aGUgZmlyc3QgZGV2aWNlIGF2YWls
  2130. YWJsZSBpbiB0aGUgZ3JvdXAuCiAqLwp2b2lkIFN0cmVhbUZNQV9ydW5fZ3JvdXAobWF4X2dyb3Vw
  2131. X3QgKmdyb3VwLCBTdHJlYW1GTUFfYWN0aW9uc190ICppbnRlcmZhY2VfYWN0aW9ucykKewoJbWF4
  2132. X3J1bl90ICpydW4gPSBTdHJlYW1GTUFfcnVuX2dyb3VwX25vbmJsb2NrKGdyb3VwLCBpbnRlcmZh
  2133. Y2VfYWN0aW9ucyk7CglDSEVDS19OVUxMKHJ1biwgIlVuYWJsZSB0byBydW4gYWN0aW9ucyIsICk7
  2134. CgltYXhfd2FpdChydW4pOwp9CgoKLyoqCiAqIFxicmllZiBHcm91cCBydW4gYWR2YW5jZWQgc3Rh
  2135. dGljIG5vbi1ibG9ja2luZyBmdW5jdGlvbiBmb3IgdGhlIGludGVyZmFjZSAnZGVmYXVsdCcuCiAq
  2136. IAogKgogKiBTY2hlZHVsZSB0aGUgYWN0aW9ucyB0byBydW4gb24gdGhlIGZpcnN0IGRldmljZSBh
  2137. dmFpbGFibGUgaW4gdGhlIGdyb3VwIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkuCiAqIFRoZSBzdGF0
  2138. dXMgb2YgdGhlIHJ1biBtdXN0IGJlIGNoZWNrZWQgd2l0aCA6Om1heF93YWl0LiAKICogTm90ZSB0
  2139. aGF0IHVzZSBvZiA6Om1heF9ub3dhaXQgaXMgcHJvaGliaXRlZCB3aXRoIG5vbi1ibG9ja2luZyBy
  2140. dW5uaW5nIG9uIGdyb3VwczoKICogc2VlIHRoZSA6Om1heF9ydW5fZ3JvdXBfbm9uYmxvY2sgZG9j
  2141. dW1lbnRhdGlvbiBmb3IgbW9yZSBleHBsYW5hdGlvbi4KICoKICogXHBhcmFtIFtpbl0gZ3JvdXAg
  2142. R3JvdXAgdG8gdXNlLgogKiBccGFyYW0gW2luXSBpbnRlcmZhY2VfYWN0aW9ucyBBY3Rpb25zIHRv
  2143. IHJ1bi4KICogXHJldHVybiBBIGhhbmRsZSBvbiB0aGUgZXhlY3V0aW9uIHN0YXR1cyBvZiB0aGUg
  2144. YWN0aW9ucywgb3IgTlVMTCBpbiBjYXNlIG9mIGVycm9yLgogKi8KbWF4X3J1bl90ICpTdHJlYW1G
  2145. TUFfcnVuX2dyb3VwX25vbmJsb2NrKG1heF9ncm91cF90ICpncm91cCwgU3RyZWFtRk1BX2FjdGlv
  2146. bnNfdCAqaW50ZXJmYWNlX2FjdGlvbnMpCnsKCW1heF9maWxlX3QgKm1heGZpbGUgPSBtYXhfZ3Jv
  2147. dXBfZ2V0X21heF9maWxlKGdyb3VwKTsKCW1heF9hY3Rpb25zX3QgKmFjdGlvbnMgPSBTdHJlYW1G
  2148. TUFfY29udmVydF9pbnRlcm5hbChtYXhmaWxlLCBpbnRlcmZhY2VfYWN0aW9ucywgMSwgTlVMTCwg
  2149. TlVMTCk7CglpZihhY3Rpb25zID09IE5VTEwpIHJldHVybiBOVUxMOwoJaWYoIW1heF9vayhhY3Rp
  2150. b25zLT5lcnJvcnMpKSByZXR1cm4gTlVMTDsKCW1heF92YWxpZGF0ZShhY3Rpb25zKTsKCW1heF9y
  2151. dW5fdCAqcnVuID0gbWF4X3J1bl9ncm91cF9ub25ibG9jayhncm91cCwgYWN0aW9ucyk7CgltYXhf
  2152. YWN0aW9uc19mcmVlKGFjdGlvbnMpOwoJcmV0dXJuIHJ1bjsKfQoKCi8qKgogKiBcYnJpZWYgQXJy
  2153. YXkgcnVuIGFkdmFuY2VkIHN0YXRpYyBmdW5jdGlvbiBmb3IgdGhlIGludGVyZmFjZSAnZGVmYXVs
  2154. dCcuCiAqIAogKiBccGFyYW0gW2luXSBlbmdhcnJheSBUaGUgYXJyYXkgb2YgZGV2aWNlcyB0byB1
  2155. c2UuCiAqIFxwYXJhbSBbaW4sb3V0XSBpbnRlcmZhY2VfYWN0aW9ucyBUaGUgYXJyYXkgb2YgYWN0
  2156. aW9ucyB0byBydW4uCiAqCiAqIFJ1biB0aGUgYXJyYXkgb2YgYWN0aW9ucyBvbiB0aGUgYXJyYXkg
  2157. b2YgZW5naW5lcy4gIFRoZSBsZW5ndGggb2YgaW50ZXJmYWNlX2FjdGlvbnMKICogbXVzdCBtYXRj
  2158. aCB0aGUgc2l6ZSBvZiBlbmdhcnJheS4KICovCnZvaWQgU3RyZWFtRk1BX3J1bl9hcnJheShtYXhf
  2159. ZW5nYXJyYXlfdCAqZW5nYXJyYXksIFN0cmVhbUZNQV9hY3Rpb25zX3QgKmludGVyZmFjZV9hY3Rp
  2160. b25zW10pCnsKCW1heF9ydW5fdCAqcnVuID0gU3RyZWFtRk1BX3J1bl9hcnJheV9ub25ibG9jayhl
  2161. bmdhcnJheSwgaW50ZXJmYWNlX2FjdGlvbnMpOwoJQ0hFQ0tfTlVMTChydW4sICJVbmFibGUgdG8g
  2162. cnVuIGFjdGlvbnMiLCApOwoJbWF4X3dhaXQocnVuKTsKfQoKCi8qKgogKiBcYnJpZWYgQXJyYXkg
  2163. cnVuIGFkdmFuY2VkIHN0YXRpYyBub24tYmxvY2tpbmcgZnVuY3Rpb24gZm9yIHRoZSBpbnRlcmZh
  2164. Y2UgJ2RlZmF1bHQnLgogKiAKICoKICogU2NoZWR1bGUgdG8gcnVuIHRoZSBhcnJheSBvZiBhY3Rp
  2165. b25zIG9uIHRoZSBhcnJheSBvZiBlbmdpbmVzLCBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5LgogKiBU
  2166. aGUgbGVuZ3RoIG9mIGludGVyZmFjZV9hY3Rpb25zIG11c3QgbWF0Y2ggdGhlIHNpemUgb2YgZW5n
  2167. YXJyYXkuCiAqIFRoZSBzdGF0dXMgb2YgdGhlIHJ1biBjYW4gYmUgY2hlY2tlZCBlaXRoZXIgYnkg
  2168. OjptYXhfd2FpdCBvciA6Om1heF9ub3dhaXQ7CiAqIG5vdGUgdGhhdCBvbmUgb2YgdGhlc2UgKm11
  2169. c3QqIGJlIGNhbGxlZCwgc28gdGhhdCBhc3NvY2lhdGVkIG1lbW9yeSBjYW4gYmUgcmVsZWFzZWQu
  2170. CiAqCiAqIFxwYXJhbSBbaW5dIGVuZ2FycmF5IFRoZSBhcnJheSBvZiBkZXZpY2VzIHRvIHVzZS4K
  2171. ICogXHBhcmFtIFtpbl0gaW50ZXJmYWNlX2FjdGlvbnMgVGhlIGFycmF5IG9mIGFjdGlvbnMgdG8g
  2172. cnVuLgogKiBccmV0dXJuIEEgaGFuZGxlIG9uIHRoZSBleGVjdXRpb24gc3RhdHVzIG9mIHRoZSBh
  2173. Y3Rpb25zLCBvciBOVUxMIGluIGNhc2Ugb2YgZXJyb3IuCiAqLwptYXhfcnVuX3QgKlN0cmVhbUZN
  2174. QV9ydW5fYXJyYXlfbm9uYmxvY2sobWF4X2VuZ2FycmF5X3QgKmVuZ2FycmF5LCBTdHJlYW1GTUFf
  2175. YWN0aW9uc190ICppbnRlcmZhY2VfYWN0aW9uc1tdKQp7CgltYXhfZmlsZV90ICptYXhmaWxlID0g
  2176. bWF4X2VuZ2FycmF5X2dldF9tYXhfZmlsZShlbmdhcnJheSwgMCk7CglpbnQgaTsKCW1heF9hY3Rh
  2177. cnJheV90ICphY3RhcnJheSA9IG1heF9hY3RhcnJheV9pbml0KG1heGZpbGUsIGVuZ2FycmF5LT5z
  2178. aXplKTsKCWlmIChhY3RhcnJheSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKCW1heF9hY3Rpb25zX3Qg
  2179. KiphcnJfYWN0aW9ucyA9IG1hbGxvYyhlbmdhcnJheS0+c2l6ZSAqIHNpemVvZihtYXhfYWN0aW9u
  2180. c190KikpOwoJZm9yICggaSA9IDAgOyBpIDwgYWN0YXJyYXktPnNpemU7IGkrKyApIHsKCQltYXhf
  2181. YWN0aW9uc190ICphY3Rpb25zID0gU3RyZWFtRk1BX2NvbnZlcnRfaW50ZXJuYWwobWF4ZmlsZSwg
  2182. aW50ZXJmYWNlX2FjdGlvbnNbaV0sIDEsIE5VTEwsIE5VTEwpOwoJCWlmIChhY3Rpb25zID09IE5V
  2183. TEwpIHJldHVybiBOVUxMOwoJCWFycl9hY3Rpb25zW2ldID0gYWN0aW9uczsKCQltYXhfc2V0X2Fj
  2184. dGlvbihhY3RhcnJheSwgaSwgYWN0aW9ucyk7Cgl9CgltYXhfcnVuX3QgKnJ1biA9IG1heF9ydW5f
  2185. YXJyYXlfbm9uYmxvY2soZW5nYXJyYXksIGFjdGFycmF5KTsKCWZvciAoIGkgPSAwIDsgaSA8IGFj
  2186. dGFycmF5LT5zaXplIDsgaSsrICkgeyBtYXhfYWN0aW9uc19mcmVlKGFycl9hY3Rpb25zW2ldKTsg
  2187. fQoJbWF4X2FjdGFycmF5X2ZyZWUoYWN0YXJyYXkpOwoJZnJlZShhcnJfYWN0aW9ucyk7CglyZXR1
  2188. cm4gcnVuOwp9CgoKLyoqCiAqIFxicmllZiBDb252ZXJ0cyBhIHN0YXRpYy1pbnRlcmZhY2UgYWN0
  2189. aW9uIHN0cnVjdCBpbnRvIGEgZHluYW1pYy1pbnRlcmZhY2UgbWF4X2FjdGlvbnNfdCBzdHJ1Y3Qu
  2190. CiAqCiAqIE5vdGUgdGhhdCB0aGlzIGlzIGFuIGludGVybmFsIHV0aWxpdHkgZnVuY3Rpb24gdXNl
  2191. ZCBieSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIHN0YXRpYyBpbnRlcmZhY2UuCiAqCiAqIFxwYXJh
  2192. bSBbaW5dIG1heGZpbGUgVGhlIG1heGZpbGUgdG8gdXNlLgogKiBccGFyYW0gW2luXSBpbnRlcmZh
  2193. Y2VfYWN0aW9ucyBUaGUgaW50ZXJmYWNlLXNwZWNpZmljIGFjdGlvbnMgdG8gcnVuLgogKiBccmV0
  2194. dXJuIFRoZSBkeW5hbWljLWludGVyZmFjZSBhY3Rpb25zIHRvIHJ1biwgb3IgTlVMTCBpbiBjYXNl
  2195. IG9mIGVycm9yLgogKi8KbWF4X2FjdGlvbnNfdCogU3RyZWFtRk1BX2NvbnZlcnQobWF4X2ZpbGVf
  2196. dCAqbWF4ZmlsZSwgU3RyZWFtRk1BX2FjdGlvbnNfdCAqaW50ZXJmYWNlX2FjdGlvbnMpCnsKCXJl
  2197. dHVybiBTdHJlYW1GTUFfY29udmVydF9pbnRlcm5hbChtYXhmaWxlLCBpbnRlcmZhY2VfYWN0aW9u
  2198. cywgMCwgTlVMTCwgTlVMTCk7Cn0KCiN1bmRlZiBDSEVDS19FUlJPUlNfU1QKI3VuZGVmIENIRUNL
  2199. X05VTEwKCgo=
  2200. #endif /* SLIC_B64_DEFINITIONS */
  2201. #ifdef SLIC_EXTRA_FILES
  2202. PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHVz
  2203. ZXJmaWxlcyBmb3JtYXQtdmVyc2lvbj0iMjAxMjAyMDAiLz4=
  2204. #endif /* SLIC_EXTRA_FILES */
  2205. #ifdef PHOTON_NODE_ADD_DATA
  2206. #define PHOTON_NODE_ADD_DATA_PRESENT 1
  2207. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 22, "SquashFactor", 0.0)
  2208. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 23, "SquashFactor", 1.0)
  2209. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 0, "SquashFactor", 0.0)
  2210. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 1, "SquashFactor", 1.0)
  2211. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 2, "SquashFactor", 0.0)
  2212. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 3, "SquashFactor", 0.0)
  2213. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 4, "SquashFactor", 1.0)
  2214. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 5, "SquashFactor", 0.0)
  2215. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 18, "SquashFactor", 0.0)
  2216. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 25, "SquashFactor", 0.0)
  2217. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 27, "SquashFactor", 0.0)
  2218. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 28, "SquashFactor", 1.0)
  2219. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 6, "SquashFactor", 0.0)
  2220. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 7, "SquashFactor", 1.0)
  2221. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 8, "SquashFactor", 0.0)
  2222. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 9, "SquashFactor", 0.0)
  2223. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 10, "SquashFactor", 1.0)
  2224. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 11, "SquashFactor", 0.0)
  2225. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 19, "SquashFactor", 0.0)
  2226. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 30, "SquashFactor", 0.0)
  2227. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 32, "SquashFactor", 0.0)
  2228. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 33, "SquashFactor", 1.0)
  2229. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 12, "SquashFactor", 0.0)
  2230. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 13, "SquashFactor", 1.0)
  2231. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 14, "SquashFactor", 0.0)
  2232. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 15, "SquashFactor", 0.0)
  2233. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 16, "SquashFactor", 1.0)
  2234. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 17, "SquashFactor", 0.0)
  2235. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 20, "SquashFactor", 0.0)
  2236. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 35, "SquashFactor", 0.0)
  2237. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 40, "SquashFactor", 0.0)
  2238. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 50, "SquashFactor", 0.0)
  2239. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 37, "SquashFactor", 0.0)
  2240. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 38, "SquashFactor", 0.0)
  2241. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 39, "SquashFactor", 0.0)
  2242. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 41, "SquashFactor", 0.0)
  2243. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 49, "SquashFactor", 0.0)
  2244. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 43, "SquashFactor", 0.0)
  2245. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 44, "SquashFactor", 0.0)
  2246. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 46, "SquashFactor", 0.0)
  2247. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 48, "SquashFactor", 0.0)
  2248. PHOTON_NODE_ADD_DATA(StreamFMAKernel, 45, "SquashFactor", 0.0)
  2249. #endif
  2250. #ifdef MAXFILE_SIGNATURE
  2251. #define MAXFILE_SIGNATURE_PRESENT 1
  2252. MAXFILE_SIGNATURE("302d02150088772342d2d888822b583166fd04736983822f1b02143417323058ae7f98fb7b34570f80ed9ff6bfc31e")
  2253. #endif