| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383 |
- #ifdef MAXCOMPILER_VERSION_INFO
- #define MAXCOMPILER_VERSION_INFO_PRESENT 1
- #define MAXFILE_MAXCOMPILER_VERSION_YEAR 2018
- #define MAXFILE_MAXCOMPILER_VERSION_NUM 3
- #define MAXFILE_MAXCOMPILER_VERSION_POINT 1
- #define MAXFILE_MAXCOMPILER_VERSION_PATCH ""
- #define MAXFILE_MAXCOMPILER_VERSION_REV "b189b8e"
- #define MAXFILE_MAXCOMPILER_VERSION_RELEASE_DATE "2019-01-09"
- #define MAXFILE_MAXCOMPILER_VERSION_RELEASE_MODE true
- #endif
- #ifdef MAXFILE_BUILD_INFO
- #define MAXFILE_BUILD_INFO_PRESENT 1
- #define MAXFILE_BUILD_NAME "StreamFMA"
- #define MAXFILE_BUILD_DIR "/mnt/beegfs/home/jusers/makni1/jumax/makni2/starpu.git/tests/./StreamFMA_MAX5C_DFE_SIM"
- #define MAXFILE_BUILD_DATE 20200128
- #define MAXFILE_BUILD_REV 1
- #endif
- #ifdef PARAM
- #define PARAM_PRESENT 1
- PARAM(DYNAMIC_CLOCKS_ENABLED, 0)
- PARAM(MemCtrlPro_TotalNumStreams0, 6)
- PARAM(MemCtrlPro_NumRdStreams0, 4)
- PARAM(MemCtrlPro_NumWrStreams0, 2)
- PARAM(MemCtrlPro_DDRType0, 4)
- PARAM(MemCtrlPro_BurstSizeInBytes0, 192)
- PARAM(MemCtrlPro_MainFIFODepth0, 512)
- PARAM(APP_ID, 0)
- PARAM(REV_ID, 0)
- PARAM(CHAIN_LENGTH, 160)
- PARAM(IS_SIMULATION, 1)
- PARAM(MEC_SUPPORTED, 1)
- PARAM(PCIE_SLAVE_STREAMING, 0)
- PARAM(PCIE_ALIGNMENT, 16)
- PARAM(NUM_IFPGA_LINKS, 0)
- #endif
- #ifdef STRING_PARAM
- #define STRING_PARAM_PRESENT 1
- STRING_PARAM(BOARD_MODEL, "MAX5_LIMA")
- #endif
- #ifdef INCLUDE_GENERATED_CPP_HEADERS
- #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_oDataT2.h"
- #endif
- #ifdef INCLUDE_GENERATED_CPP_HEADERS
- #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_oDataT1.h"
- #endif
- #ifdef INCLUDE_GENERATED_CPP_HEADERS
- #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_inBT2.h"
- #endif
- #ifdef INCLUDE_GENERATED_CPP_HEADERS
- #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_inAT3.h"
- #endif
- #ifdef INCLUDE_GENERATED_CPP_HEADERS
- #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_inBT3.h"
- #endif
- #ifdef INCLUDE_GENERATED_CPP_HEADERS
- #include "StateMachineManagerBlock_impl_addrgen_cmd_MemoryControllerPro0_inAT2.h"
- #endif
- #ifdef INCLUDE_GENERATED_CPP_HEADERS
- #include "StateMachineManagerBlock_impl_MemoryControllerPro0.h"
- #endif
- #ifdef INCLUDE_GENERATED_CPP_HEADERS
- #include "StreamFMAKernel.h"
- #endif
- #ifdef ENGINE_PARAMETERS
- #define ENGINE_PARAMETERS_PRESENT 1
- ENGINE_PARAMETERS(DFEModel, DFEMODEL, MAIA)
- ENGINE_PARAMETERS(maxFileName, STRING, "StreamFMA")
- ENGINE_PARAMETERS(target, ENUM, DFE_SIM)
- ENGINE_PARAMETERS(enableMPCX, BOOL, false)
- ENGINE_PARAMETERS(MPPRStartCT, INT, 1)
- ENGINE_PARAMETERS(MPPREndCT, INT, 1)
- ENGINE_PARAMETERS(MPPRThreads, INT, 1)
- ENGINE_PARAMETERS(MPPRRetryThreshold, INT, 0)
- #endif
- #ifdef MANAGER_NODE
- #define MANAGER_NODE_PRESENT 1
- MANAGER_NODE(StreamFMAKernel, Kernel)
- MANAGER_NODE(inAT1, PCIe_From_Host)
- MANAGER_NODE(inBT1, PCIe_From_Host)
- MANAGER_NODE(oDataT3, PCIe_To_Host)
- MANAGER_NODE(MemoryControllerPro0, ManagerStateMachine_MemoryControllerPro0)
- MANAGER_NODE(MemoryControllerPro0_IntSource, MemoryInterruptSource)
- MANAGER_NODE(MemoryControllerInterface_b, MemoryControllerInterface_b)
- MANAGER_NODE(MemoryControllerInterface_a, MemoryControllerInterface_a)
- MANAGER_NODE(MemoryControllerInterface_c, MemoryControllerInterface_c)
- MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_inAT2, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_inAT2)
- MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_inBT2, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_inBT2)
- MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_inAT3, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_inAT3)
- MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_inBT3, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_inBT3)
- MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_oDataT1, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_oDataT1)
- MANAGER_NODE(addrgen_cmd_MemoryControllerPro0_oDataT2, ManagerStateMachine_addrgen_cmd_MemoryControllerPro0_oDataT2)
- MANAGER_NODE(Stream_34_pipeline_4, Stream_34_pipeline)
- MANAGER_NODE(Stream_29_pipeline_4, Stream_29_pipeline)
- MANAGER_NODE(Stream_39_pipeline_4, Stream_39_pipeline)
- MANAGER_NODE(Stream_28_pipeline_4, Stream_28_pipeline)
- MANAGER_NODE(Stream_33_pipeline_4, Stream_33_pipeline)
- MANAGER_NODE(Stream_38_pipeline_4, Stream_38_pipeline)
- MANAGER_NODE(Stream_60, DualAspectReg)
- MANAGER_NODE(Stream_64, DualAspectReg)
- MANAGER_NODE(Stream_1, DualAspectMux)
- MANAGER_NODE(Stream_4, DualAspectMux)
- MANAGER_NODE(Stream_8, DualAspectMux)
- MANAGER_NODE(Stream_10, DualAspectMux)
- MANAGER_NODE(Stream_12, DualAspectMux)
- MANAGER_NODE(Stream_14, DualAspectMux)
- MANAGER_NODE(Stream_20, DualAspectReg)
- MANAGER_NODE(Stream_92, StreamPullPushAdapter)
- MANAGER_NODE(Stream_96, StreamPullPushAdapter)
- MANAGER_NODE(Stream_124, StreamPullPushAdapter)
- MANAGER_NODE(Stream_98, Fifo)
- MANAGER_NODE(Stream_102, Fifo)
- MANAGER_NODE(Stream_94, Fifo)
- MANAGER_NODE(Stream_80, Fifo)
- MANAGER_NODE(Stream_84, Fifo)
- MANAGER_NODE(Stream_90, Fifo)
- MANAGER_NODE(Stream_68, Fifo)
- MANAGER_NODE(Stream_72, Fifo)
- MANAGER_NODE(Stream_76, Fifo)
- MANAGER_NODE(Stream_42, Fifo)
- MANAGER_NODE(Stream_46, Fifo)
- MANAGER_NODE(Stream_50, Fifo)
- MANAGER_NODE(Stream_54, Fifo)
- MANAGER_NODE(Stream_58, Fifo)
- MANAGER_NODE(Stream_62, Fifo)
- MANAGER_NODE(Stream_100, Fifo)
- MANAGER_NODE(Stream_104, Fifo)
- MANAGER_NODE(Stream_108, Fifo)
- MANAGER_NODE(Stream_112, Fifo)
- MANAGER_NODE(Stream_116, Fifo)
- MANAGER_NODE(Stream_120, Fifo)
- MANAGER_NODE(Stream_88, Fifo)
- MANAGER_NODE(Stream_122, Fifo)
- #endif
- #ifdef MANAGER_NODE_IO
- #define MANAGER_NODE_IO_PRESENT 1
- MANAGER_NODE_IO(StreamFMAKernel, inAT1, IN, STREAM, 32, PULL)
- MANAGER_NODE_IO(StreamFMAKernel, inBT1, IN, STREAM, 32, PULL)
- MANAGER_NODE_IO(StreamFMAKernel, inAT2, IN, STREAM, 32, PULL)
- MANAGER_NODE_IO(StreamFMAKernel, inBT2, IN, STREAM, 32, PULL)
- MANAGER_NODE_IO(StreamFMAKernel, inAT3, IN, STREAM, 32, PULL)
- MANAGER_NODE_IO(StreamFMAKernel, inBT3, IN, STREAM, 32, PULL)
- MANAGER_NODE_IO(StreamFMAKernel, oDataT1, OUT, STREAM, 32, PUSH)
- MANAGER_NODE_IO(StreamFMAKernel, oDataT2, OUT, STREAM, 32, PUSH)
- MANAGER_NODE_IO(StreamFMAKernel, oDataT3, OUT, STREAM, 32, PUSH)
- MANAGER_NODE_IO(inAT1, inAT1, OUT, PCIE, 128, PUSH)
- MANAGER_NODE_IO(inBT1, inBT1, OUT, PCIE, 128, PUSH)
- MANAGER_NODE_IO(oDataT3, oDataT3, IN, PCIE, 128, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, read_stream_maxj_a, IN, MemoryControllerPro0_clk, 512, PULL)
- MANAGER_NODE_IO(MemoryControllerPro0, read_stream_maxj_b, IN, MemoryControllerPro0_clk, 512, PULL)
- MANAGER_NODE_IO(MemoryControllerPro0, read_stream_maxj_c, IN, MemoryControllerPro0_clk, 512, PULL)
- MANAGER_NODE_IO(MemoryControllerPro0, read_command_0, IN, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, read_command_1, IN, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, read_command_2, IN, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, read_command_3, IN, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, write_0, IN, STREAM, 1536, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, write_1, IN, STREAM, 1536, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, write_command_0, IN, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, write_command_1, IN, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, read_0, OUT, STREAM, 1536, PULL)
- MANAGER_NODE_IO(MemoryControllerPro0, read_1, OUT, STREAM, 1536, PULL)
- MANAGER_NODE_IO(MemoryControllerPro0, read_2, OUT, STREAM, 1536, PULL)
- MANAGER_NODE_IO(MemoryControllerPro0, read_3, OUT, STREAM, 1536, PULL)
- MANAGER_NODE_IO(MemoryControllerPro0, Tag_Out, OUT, MemoryControllerPro0_clk, 1, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, cmd_stream_maxj_a, OUT, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, cmd_stream_maxj_b, OUT, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0, cmd_stream_maxj_c, OUT, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(MemoryControllerPro0_IntSource, Tag_In, IN, MemoryControllerPro0_clk, 1, PUSH)
- MANAGER_NODE_IO(MemoryControllerInterface_b, cmd_stream_maxj, IN, DDR_CLK_b, 544, PULL)
- MANAGER_NODE_IO(MemoryControllerInterface_b, read_stream_maxj, OUT, DDR_CLK_b, 512, PUSH)
- MANAGER_NODE_IO(MemoryControllerInterface_a, cmd_stream_maxj, IN, DDR_CLK_a, 544, PULL)
- MANAGER_NODE_IO(MemoryControllerInterface_a, read_stream_maxj, OUT, DDR_CLK_a, 512, PUSH)
- MANAGER_NODE_IO(MemoryControllerInterface_c, cmd_stream_maxj, IN, DDR_CLK_c, 544, PULL)
- MANAGER_NODE_IO(MemoryControllerInterface_c, read_stream_maxj, OUT, DDR_CLK_c, 512, PUSH)
- MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_inAT2, cgen_out_0, OUT, STREAM, 64, PUSH)
- MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_inBT2, cgen_out_0, OUT, STREAM, 64, PUSH)
- MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_inAT3, cgen_out_0, OUT, STREAM, 64, PUSH)
- MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_inBT3, cgen_out_0, OUT, STREAM, 64, PUSH)
- MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_oDataT1, cgen_out_0, OUT, STREAM, 64, PUSH)
- MANAGER_NODE_IO(addrgen_cmd_MemoryControllerPro0_oDataT2, cgen_out_0, OUT, STREAM, 64, PUSH)
- MANAGER_NODE_IO(Stream_34_pipeline_4, input, IN, DDR_CLK_a, 512, PUSH)
- MANAGER_NODE_IO(Stream_34_pipeline_4, output, OUT, DDR_CLK_a, 512, PUSH)
- MANAGER_NODE_IO(Stream_29_pipeline_4, input, IN, DDR_CLK_b, 512, PUSH)
- MANAGER_NODE_IO(Stream_29_pipeline_4, output, OUT, DDR_CLK_b, 512, PUSH)
- MANAGER_NODE_IO(Stream_39_pipeline_4, input, IN, DDR_CLK_c, 512, PUSH)
- MANAGER_NODE_IO(Stream_39_pipeline_4, output, OUT, DDR_CLK_c, 512, PUSH)
- MANAGER_NODE_IO(Stream_28_pipeline_4, input, IN, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(Stream_28_pipeline_4, output, OUT, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(Stream_33_pipeline_4, input, IN, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(Stream_33_pipeline_4, output, OUT, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(Stream_38_pipeline_4, input, IN, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(Stream_38_pipeline_4, output, OUT, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(Stream_60, input, IN, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_60, output, OUT, STREAM, 1536, PULL)
- MANAGER_NODE_IO(Stream_64, input, IN, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_64, output, OUT, STREAM, 1536, PULL)
- MANAGER_NODE_IO(Stream_1, input, IN, PCIE, 128, PULL)
- MANAGER_NODE_IO(Stream_1, output, OUT, PCIE, 32, PUSH)
- MANAGER_NODE_IO(Stream_4, input, IN, PCIE, 128, PULL)
- MANAGER_NODE_IO(Stream_4, output, OUT, PCIE, 32, PUSH)
- MANAGER_NODE_IO(Stream_8, input, IN, STREAM, 1536, PULL)
- MANAGER_NODE_IO(Stream_8, output, OUT, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_10, input, IN, STREAM, 1536, PULL)
- MANAGER_NODE_IO(Stream_10, output, OUT, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_12, input, IN, STREAM, 1536, PULL)
- MANAGER_NODE_IO(Stream_12, output, OUT, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_14, input, IN, STREAM, 1536, PULL)
- MANAGER_NODE_IO(Stream_14, output, OUT, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_20, input, IN, PCIE, 32, PULL)
- MANAGER_NODE_IO(Stream_20, output, OUT, PCIE, 128, PULL)
- MANAGER_NODE_IO(Stream_92, input, IN, STREAM, 1536, PULL)
- MANAGER_NODE_IO(Stream_92, output, OUT, STREAM, 1536, PUSH)
- MANAGER_NODE_IO(Stream_96, input, IN, STREAM, 1536, PULL)
- MANAGER_NODE_IO(Stream_96, output, OUT, STREAM, 1536, PUSH)
- MANAGER_NODE_IO(Stream_124, input, IN, PCIE, 128, PULL)
- MANAGER_NODE_IO(Stream_124, output, OUT, PCIE, 128, PUSH)
- MANAGER_NODE_IO(Stream_98, input, IN, PCIE, 128, PUSH)
- MANAGER_NODE_IO(Stream_98, output, OUT, PCIE, 128, PULL)
- MANAGER_NODE_IO(Stream_102, input, IN, PCIE, 128, PUSH)
- MANAGER_NODE_IO(Stream_102, output, OUT, PCIE, 128, PULL)
- MANAGER_NODE_IO(Stream_94, input, IN, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_94, output, OUT, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_80, input, IN, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(Stream_80, output, OUT, DDR_CLK_b, 544, PULL)
- MANAGER_NODE_IO(Stream_84, input, IN, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(Stream_84, output, OUT, DDR_CLK_a, 544, PULL)
- MANAGER_NODE_IO(Stream_90, input, IN, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_90, output, OUT, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_68, input, IN, DDR_CLK_a, 512, PUSH)
- MANAGER_NODE_IO(Stream_68, output, OUT, MemoryControllerPro0_clk, 512, PULL)
- MANAGER_NODE_IO(Stream_72, input, IN, DDR_CLK_b, 512, PUSH)
- MANAGER_NODE_IO(Stream_72, output, OUT, MemoryControllerPro0_clk, 512, PULL)
- MANAGER_NODE_IO(Stream_76, input, IN, DDR_CLK_c, 512, PUSH)
- MANAGER_NODE_IO(Stream_76, output, OUT, MemoryControllerPro0_clk, 512, PULL)
- MANAGER_NODE_IO(Stream_42, input, IN, STREAM, 64, PUSH)
- MANAGER_NODE_IO(Stream_42, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(Stream_46, input, IN, STREAM, 64, PUSH)
- MANAGER_NODE_IO(Stream_46, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(Stream_50, input, IN, STREAM, 64, PUSH)
- MANAGER_NODE_IO(Stream_50, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(Stream_54, input, IN, STREAM, 64, PUSH)
- MANAGER_NODE_IO(Stream_54, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(Stream_58, input, IN, STREAM, 64, PUSH)
- MANAGER_NODE_IO(Stream_58, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(Stream_62, input, IN, STREAM, 64, PUSH)
- MANAGER_NODE_IO(Stream_62, output, OUT, MemoryControllerPro0_clk, 64, PUSH)
- MANAGER_NODE_IO(Stream_100, input, IN, PCIE, 32, PUSH)
- MANAGER_NODE_IO(Stream_100, output, OUT, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_104, input, IN, PCIE, 32, PUSH)
- MANAGER_NODE_IO(Stream_104, output, OUT, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_108, input, IN, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_108, output, OUT, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_112, input, IN, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_112, output, OUT, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_116, input, IN, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_116, output, OUT, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_120, input, IN, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_120, output, OUT, STREAM, 32, PULL)
- MANAGER_NODE_IO(Stream_88, input, IN, MemoryControllerPro0_clk, 544, PUSH)
- MANAGER_NODE_IO(Stream_88, output, OUT, DDR_CLK_c, 544, PULL)
- MANAGER_NODE_IO(Stream_122, input, IN, STREAM, 32, PUSH)
- MANAGER_NODE_IO(Stream_122, output, OUT, PCIE, 32, PULL)
- #endif
- #ifdef MANAGER_STREAM
- #define MANAGER_STREAM_PRESENT 1
- MANAGER_STREAM(inAT1, inAT1, Stream_98, input, 128)
- MANAGER_STREAM(inBT1, inBT1, Stream_102, input, 128)
- MANAGER_STREAM(StreamFMAKernel, oDataT1, Stream_90, input, 32)
- MANAGER_STREAM(StreamFMAKernel, oDataT2, Stream_94, input, 32)
- MANAGER_STREAM(StreamFMAKernel, oDataT3, Stream_122, input, 32)
- MANAGER_STREAM(MemoryControllerPro0, Tag_Out, MemoryControllerPro0_IntSource, Tag_In, 1)
- MANAGER_STREAM(MemoryControllerPro0, cmd_stream_maxj_b, Stream_28_pipeline_4, input, 544)
- MANAGER_STREAM(MemoryControllerInterface_b, read_stream_maxj, Stream_29_pipeline_4, input, 512)
- MANAGER_STREAM(MemoryControllerPro0, cmd_stream_maxj_a, Stream_33_pipeline_4, input, 544)
- MANAGER_STREAM(MemoryControllerInterface_a, read_stream_maxj, Stream_34_pipeline_4, input, 512)
- MANAGER_STREAM(MemoryControllerPro0, cmd_stream_maxj_c, Stream_38_pipeline_4, input, 544)
- MANAGER_STREAM(MemoryControllerInterface_c, read_stream_maxj, Stream_39_pipeline_4, input, 512)
- MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_inAT2, cgen_out_0, Stream_42, input, 64)
- MANAGER_STREAM(MemoryControllerPro0, read_0, Stream_8, input, 1536)
- MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_inBT2, cgen_out_0, Stream_46, input, 64)
- MANAGER_STREAM(MemoryControllerPro0, read_1, Stream_10, input, 1536)
- MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_inAT3, cgen_out_0, Stream_50, input, 64)
- MANAGER_STREAM(MemoryControllerPro0, read_2, Stream_12, input, 1536)
- MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_inBT3, cgen_out_0, Stream_54, input, 64)
- MANAGER_STREAM(MemoryControllerPro0, read_3, Stream_14, input, 1536)
- MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_oDataT1, cgen_out_0, Stream_58, input, 64)
- MANAGER_STREAM(addrgen_cmd_MemoryControllerPro0_oDataT2, cgen_out_0, Stream_62, input, 64)
- MANAGER_STREAM(Stream_34_pipeline_4, output, Stream_68, input, 512)
- MANAGER_STREAM(Stream_29_pipeline_4, output, Stream_72, input, 512)
- MANAGER_STREAM(Stream_39_pipeline_4, output, Stream_76, input, 512)
- MANAGER_STREAM(Stream_28_pipeline_4, output, Stream_80, input, 544)
- MANAGER_STREAM(Stream_33_pipeline_4, output, Stream_84, input, 544)
- MANAGER_STREAM(Stream_38_pipeline_4, output, Stream_88, input, 544)
- MANAGER_STREAM(Stream_60, output, Stream_92, input, 1536)
- MANAGER_STREAM(Stream_64, output, Stream_96, input, 1536)
- MANAGER_STREAM(Stream_1, output, Stream_100, input, 32)
- MANAGER_STREAM(Stream_4, output, Stream_104, input, 32)
- MANAGER_STREAM(Stream_8, output, Stream_108, input, 32)
- MANAGER_STREAM(Stream_10, output, Stream_112, input, 32)
- MANAGER_STREAM(Stream_12, output, Stream_116, input, 32)
- MANAGER_STREAM(Stream_14, output, Stream_120, input, 32)
- MANAGER_STREAM(Stream_20, output, Stream_124, input, 128)
- MANAGER_STREAM(Stream_92, output, MemoryControllerPro0, write_0, 1536)
- MANAGER_STREAM(Stream_96, output, MemoryControllerPro0, write_1, 1536)
- MANAGER_STREAM(Stream_124, output, oDataT3, oDataT3, 128)
- MANAGER_STREAM(Stream_98, output, Stream_1, input, 128)
- MANAGER_STREAM(Stream_102, output, Stream_4, input, 128)
- MANAGER_STREAM(Stream_94, output, Stream_64, input, 32)
- MANAGER_STREAM(Stream_80, output, MemoryControllerInterface_b, cmd_stream_maxj, 544)
- MANAGER_STREAM(Stream_84, output, MemoryControllerInterface_a, cmd_stream_maxj, 544)
- MANAGER_STREAM(Stream_90, output, Stream_60, input, 32)
- MANAGER_STREAM(Stream_68, output, MemoryControllerPro0, read_stream_maxj_a, 512)
- MANAGER_STREAM(Stream_72, output, MemoryControllerPro0, read_stream_maxj_b, 512)
- MANAGER_STREAM(Stream_76, output, MemoryControllerPro0, read_stream_maxj_c, 512)
- MANAGER_STREAM(Stream_42, output, MemoryControllerPro0, read_command_0, 64)
- MANAGER_STREAM(Stream_46, output, MemoryControllerPro0, read_command_1, 64)
- MANAGER_STREAM(Stream_50, output, MemoryControllerPro0, read_command_2, 64)
- MANAGER_STREAM(Stream_54, output, MemoryControllerPro0, read_command_3, 64)
- MANAGER_STREAM(Stream_58, output, MemoryControllerPro0, write_command_0, 64)
- MANAGER_STREAM(Stream_62, output, MemoryControllerPro0, write_command_1, 64)
- MANAGER_STREAM(Stream_100, output, StreamFMAKernel, inAT1, 32)
- MANAGER_STREAM(Stream_104, output, StreamFMAKernel, inBT1, 32)
- MANAGER_STREAM(Stream_108, output, StreamFMAKernel, inAT2, 32)
- MANAGER_STREAM(Stream_112, output, StreamFMAKernel, inBT2, 32)
- MANAGER_STREAM(Stream_116, output, StreamFMAKernel, inAT3, 32)
- MANAGER_STREAM(Stream_120, output, StreamFMAKernel, inBT3, 32)
- MANAGER_STREAM(Stream_88, output, MemoryControllerInterface_c, cmd_stream_maxj, 544)
- MANAGER_STREAM(Stream_122, output, Stream_20, input, 32)
- #endif
- #ifdef MANAGER_NODE_STACK_TRACE
- #define MANAGER_NODE_STACK_TRACE_PRESENT 1
- 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")
- 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")
- 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")
- 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")
- MANAGER_NODE_STACK_TRACE(MemoryControllerPro0, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(MemoryControllerPro0_IntSource, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(MemoryControllerInterface_b, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(MemoryControllerInterface_a, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(MemoryControllerInterface_c, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_inAT2, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_inBT2, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_inAT3, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_inBT3, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_oDataT1, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(addrgen_cmd_MemoryControllerPro0_oDataT2, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_34_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_29_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_39_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_28_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_33_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_38_pipeline_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_60, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_64, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_1, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_4, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_8, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_10, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_12, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_14, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_20, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_92, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_96, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_124, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_98, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_102, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_94, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_80, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_84, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_90, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_68, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_72, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_76, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_42, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_46, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_50, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_54, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_58, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_62, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_100, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_104, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_108, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_112, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_116, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_120, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_88, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- MANAGER_NODE_STACK_TRACE(Stream_122, "com.maxeler.platform.max5.manager.Max5ManagerBase.build(Unknown Source)\nperfmodels.StreamFMAManager.main(StreamFMAManager.maxj:61)\n")
- #endif
- #ifdef MANAGER_NODE_PROPERTY
- #define MANAGER_NODE_PROPERTY_PRESENT 1
- MANAGER_NODE_PROPERTY(StreamFMAKernel, control_pipelining_depth, 2)
- #endif
- #ifdef KERNEL_CORE
- #define KERNEL_CORE_PRESENT 1
- KERNEL_CORE(StreamFMAKernel)
- #endif
- #ifdef KERNEL_HOST_CONTROLLED
- #define KERNEL_HOST_CONTROLLED_PRESENT 1
- KERNEL_HOST_CONTROLLED(StreamFMAKernel, StreamFMAKernel)
- #endif
- #ifdef DEBUG_INPUT_BITS
- #define DEBUG_INPUT_BITS_PRESENT 1
- DEBUG_INPUT_BITS(StreamFMAKernel, inAT1, 0)
- DEBUG_INPUT_BITS(StreamFMAKernel, inBT1, 1)
- DEBUG_INPUT_BITS(StreamFMAKernel, inAT2, 2)
- DEBUG_INPUT_BITS(StreamFMAKernel, inBT2, 3)
- DEBUG_INPUT_BITS(StreamFMAKernel, inAT3, 4)
- DEBUG_INPUT_BITS(StreamFMAKernel, inBT3, 5)
- #endif
- #ifdef DEBUG_OUTPUT_BITS
- #define DEBUG_OUTPUT_BITS_PRESENT 1
- DEBUG_OUTPUT_BITS(StreamFMAKernel, oDataT1, 0)
- DEBUG_OUTPUT_BITS(StreamFMAKernel, oDataT2, 1)
- DEBUG_OUTPUT_BITS(StreamFMAKernel, oDataT3, 2)
- #endif
- #ifdef MANAGER_NODE_CPP_SIM_MODEL_CTOR
- #define MANAGER_NODE_CPP_SIM_MODEL_CTOR_PRESENT 1
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_oDataT2, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_oDataT2, "addrgen_cmd_MemoryControllerPro0_oDataT2")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(inAT1, PCIePushSourceSync16, "inAT1")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_oDataT1, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_oDataT1, "addrgen_cmd_MemoryControllerPro0_oDataT1")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_inBT2, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_inBT2, "addrgen_cmd_MemoryControllerPro0_inBT2")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(inBT1, PCIePushSourceSync16, "inBT1")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_inAT3, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_inAT3, "addrgen_cmd_MemoryControllerPro0_inAT3")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_inBT3, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_inBT3, "addrgen_cmd_MemoryControllerPro0_inBT3")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(addrgen_cmd_MemoryControllerPro0_inAT2, maxcompilersim::state_machine::ManagerBlockSM_addrgen_cmd_MemoryControllerPro0_inAT2, "addrgen_cmd_MemoryControllerPro0_inAT2")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_58, FifoPushToPushSync, "Stream_58", false, 512, 64)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_50, FifoPushToPushSync, "Stream_50", false, 512, 64)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_42, FifoPushToPushSync, "Stream_42", false, 512, 64)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_98, FifoPushToPullSync, "Stream_98", false, 512, 128)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_62, FifoPushToPushSync, "Stream_62", false, 512, 64)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_54, FifoPushToPushSync, "Stream_54", false, 512, 64)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_46, FifoPushToPushSync, "Stream_46", false, 512, 64)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_102, FifoPushToPullSync, "Stream_102", false, 512, 128)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_4, DualAspectMuxSync, "Stream_4", 32, 4)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_1, DualAspectMuxSync, "Stream_1", 32, 4)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_104, FifoPushToPullSync, "Stream_104", false, 512, 32)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_100, FifoPushToPullSync, "Stream_100", false, 512, 32)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_96, PullToPushAdapterSync, "Stream_96")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_28_pipeline_4, PipelineSync, "Stream_28_pipeline_4", 4, 544)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_80, FifoPushToPullSync, "Stream_80", false, 512, 544)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerInterface_b, LMemSim, "MemoryControllerInterface_b", ConfigFactory<LMemMax5LimaConfig>::getConfig(0, "_b", 3, 0))
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_29_pipeline_4, PipelineSync, "Stream_29_pipeline_4", 4, 512)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_72, FifoPushToPullSync, "Stream_72", false, 512, 512)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_84, FifoPushToPullSync, "Stream_84", false, 512, 544)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerInterface_a, LMemSim, "MemoryControllerInterface_a", ConfigFactory<LMemMax5LimaConfig>::getConfig(0, "_a", 3, 1))
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_34_pipeline_4, PipelineSync, "Stream_34_pipeline_4", 4, 512)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_68, FifoPushToPullSync, "Stream_68", false, 512, 512)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_90, FifoPushToPullSync, "Stream_90", false, 512, 32)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_60, DualAspectRegSync, "Stream_60", 32, 48)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_92, PullToPushAdapterSync, "Stream_92")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_8, DualAspectMuxSync, "Stream_8", 32, 48)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_108, FifoPushToPullSync, "Stream_108", false, 512, 32)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_112, FifoPushToPullSync, "Stream_112", false, 512, 32)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_124, PullToPushAdapterSync, "Stream_124")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(oDataT3, PCIePushSinkSync16, "oDataT3")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_10, DualAspectMuxSync, "Stream_10", 32, 48)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_39_pipeline_4, PipelineSync, "Stream_39_pipeline_4", 4, 512)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_76, FifoPushToPullSync, "Stream_76", false, 512, 512)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerPro0, maxcompilersim::state_machine::ManagerBlockSM_MemoryControllerPro0, "MemoryControllerPro0")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerPro0_IntSource, McpInterruptSource, "MemoryControllerPro0_IntSource")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_12, DualAspectMuxSync, "Stream_12", 32, 48)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_14, DualAspectMuxSync, "Stream_14", 32, 48)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_38_pipeline_4, PipelineSync, "Stream_38_pipeline_4", 4, 544)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_33_pipeline_4, PipelineSync, "Stream_33_pipeline_4", 4, 544)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_116, FifoPushToPullSync, "Stream_116", false, 512, 32)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_120, FifoPushToPullSync, "Stream_120", false, 512, 32)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_88, FifoPushToPullSync, "Stream_88", false, 512, 544)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(StreamFMAKernel, StreamFMAKernel, "StreamFMAKernel")
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(MemoryControllerInterface_c, LMemSim, "MemoryControllerInterface_c", ConfigFactory<LMemMax5LimaConfig>::getConfig(0, "_c", 3, 2))
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_122, FifoPushToPullSync, "Stream_122", false, 512, 32)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_94, FifoPushToPullSync, "Stream_94", false, 512, 32)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_20, DualAspectRegSync, "Stream_20", 32, 4)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(Stream_64, DualAspectRegSync, "Stream_64", 32, 48)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(CapabilityReg, CapRegs, "CapabilityReg", 0, 2, 1, 0, 0, 0, 0, 0, 160)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(ifpga, IFPGARegs)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(sfa, SFARegs)
- MANAGER_NODE_CPP_SIM_MODEL_CTOR(ChecksumMemory, ChecksumMem, "ChecksumMemory", "5677d622f2daecc91b0561585ae87653a418e3bb53c0a22186ca7832455db10b")
- #endif
- #ifdef MANAGER_NODE_CPP_SIM_MODEL_SETUP
- #define MANAGER_NODE_CPP_SIM_MODEL_SETUP_PRESENT 1
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_almost_empty, 6, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_done, 6, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_empty, 6, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_read, 6, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_read_pipe_dbg, 18, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_ctld_request, 6, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_done_out, 1, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_fill_level, 4, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_flush_level, 4, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_flush_start, 1, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_flush_start_level, 4, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_flushing, 1, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_full_level, 4, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_out_stall, 3, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_out_valid, 3, 0)
- MANAGER_NODE_CPP_SIM_MODEL_SETUP(StreamFMAKernel, addDebugRegister, reg_dbg_stall_vector, 3, 0)
- #endif
- #ifdef PCIE_STREAM
- #define PCIE_STREAM_PRESENT 1
- PCIE_STREAM(inAT1, STREAM_FROM_HOST, 0)
- PCIE_STREAM(inBT1, STREAM_FROM_HOST, 1)
- PCIE_STREAM(oDataT3, STREAM_TO_HOST, 0)
- #endif
- #ifdef REG
- #define REG_PRESENT 1
- REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Addr_En, 0x0, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_BlockSize_X, 0x1, 5, hwOffsetFix(33, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_CmdSize, 0x6, 1, hwOffsetFix(8, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Offset_0, 0x7, 4, hwOffsetFix(31, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Start_X_Addr, 0xb, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Wrap_X, 0xf, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Addr_En, 0x13, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_BlockSize_X, 0x14, 5, hwOffsetFix(33, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_CmdSize, 0x19, 1, hwOffsetFix(8, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Offset_0, 0x1a, 4, hwOffsetFix(31, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Start_X_Addr, 0x1e, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Wrap_X, 0x22, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Addr_En, 0x26, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_BlockSize_X, 0x27, 5, hwOffsetFix(33, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_CmdSize, 0x2c, 1, hwOffsetFix(8, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Offset_0, 0x2d, 4, hwOffsetFix(31, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Start_X_Addr, 0x31, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Wrap_X, 0x35, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Addr_En, 0x39, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_BlockSize_X, 0x3a, 5, hwOffsetFix(33, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_CmdSize, 0x3f, 1, hwOffsetFix(8, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Offset_0, 0x40, 4, hwOffsetFix(31, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Start_X_Addr, 0x44, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Wrap_X, 0x48, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Addr_En, 0x4c, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_BlockSize_X, 0x4d, 5, hwOffsetFix(33, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_CmdSize, 0x52, 1, hwOffsetFix(8, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Offset_0, 0x53, 4, hwOffsetFix(31, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Start_X_Addr, 0x57, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Wrap_X, 0x5b, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Addr_En, 0x5f, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_BlockSize_X, 0x60, 5, hwOffsetFix(33, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_CmdSize, 0x65, 1, hwOffsetFix(8, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Offset_0, 0x66, 4, hwOffsetFix(31, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Start_X_Addr, 0x6a, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Wrap_X, 0x6e, 4, hwOffsetFix(32, 0, UNSIGNED))
- REG(MemoryControllerPro0.Mcp_Int_Disable_OR, 0x72, 1, hwOffsetFix(6, 0, UNSIGNED))
- REG(MemoryControllerPro0.Mcp_Int_Enable_AND, 0x73, 1, hwOffsetFix(6, 0, UNSIGNED))
- REG(StreamFMAKernel.io_inAT1_force_disabled, 0x74, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(StreamFMAKernel.io_inBT1_force_disabled, 0x75, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(StreamFMAKernel.io_inAT2_force_disabled, 0x76, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(StreamFMAKernel.io_inBT2_force_disabled, 0x77, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(StreamFMAKernel.io_inAT3_force_disabled, 0x78, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(StreamFMAKernel.io_inBT3_force_disabled, 0x79, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(StreamFMAKernel.io_oDataT1_force_disabled, 0x7a, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(StreamFMAKernel.io_oDataT2_force_disabled, 0x7b, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(StreamFMAKernel.io_oDataT3_force_disabled, 0x7c, 1, hwOffsetFix(1, 0, UNSIGNED))
- REG(StreamFMAKernel.run_cycle_count, 0x7d, 6, hwOffsetFix(48, 0, UNSIGNED))
- REG(StreamFMAKernel.current_run_cycle_count, 0x83, 6, hwOffsetFix(48, 0, UNSIGNED))
- REG(StreamFMAKernel.dbg_ctld_almost_empty, 0x89, 1, hwBits(6))
- REG(StreamFMAKernel.dbg_ctld_done, 0x8a, 1, hwBits(6))
- REG(StreamFMAKernel.dbg_ctld_empty, 0x8b, 1, hwBits(6))
- REG(StreamFMAKernel.dbg_ctld_read, 0x8c, 1, hwBits(6))
- REG(StreamFMAKernel.dbg_ctld_read_pipe_dbg, 0x8d, 3, hwBits(18))
- REG(StreamFMAKernel.dbg_ctld_request, 0x90, 1, hwBits(6))
- REG(StreamFMAKernel.dbg_done_out, 0x91, 1, hwBits(1))
- REG(StreamFMAKernel.dbg_fill_level, 0x92, 1, hwBits(4))
- REG(StreamFMAKernel.dbg_flush_level, 0x93, 1, hwBits(4))
- REG(StreamFMAKernel.dbg_flush_start, 0x94, 1, hwBits(1))
- REG(StreamFMAKernel.dbg_flush_start_level, 0x95, 1, hwBits(4))
- REG(StreamFMAKernel.dbg_flushing, 0x96, 1, hwBits(1))
- REG(StreamFMAKernel.dbg_full_level, 0x97, 1, hwBits(4))
- REG(StreamFMAKernel.dbg_out_stall, 0x98, 1, hwBits(3))
- REG(StreamFMAKernel.dbg_out_valid, 0x99, 1, hwBits(3))
- REG(StreamFMAKernel.dbg_stall_vector, 0x9a, 1, hwBits(3))
- REG(ifpga.ifpga_ctrl, 0x9b, 1, hwBits(8))
- REG(SignalForwardingAdapter.SFA_FORWARD_EN, 0x9c, 4, hwBits(32))
- #endif
- #ifdef REG_V2
- #define REG_V2_PRESENT 1
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Addr_En, 0x0, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_BlockSize_X, 0x1, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_CmdSize, 0x6, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Offset_0, 0x7, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Start_X_Addr, 0xb, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT2.AGen_Wrap_X, 0xf, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Addr_En, 0x13, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_BlockSize_X, 0x14, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_CmdSize, 0x19, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Offset_0, 0x1a, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Start_X_Addr, 0x1e, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_oDataT1.AGen_Wrap_X, 0x22, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Addr_En, 0x26, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_BlockSize_X, 0x27, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_CmdSize, 0x2c, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Offset_0, 0x2d, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Start_X_Addr, 0x31, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT2.AGen_Wrap_X, 0x35, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Addr_En, 0x39, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_BlockSize_X, 0x3a, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_CmdSize, 0x3f, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Offset_0, 0x40, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Start_X_Addr, 0x44, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT3.AGen_Wrap_X, 0x48, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Addr_En, 0x4c, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_BlockSize_X, 0x4d, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_CmdSize, 0x52, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Offset_0, 0x53, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Start_X_Addr, 0x57, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inBT3.AGen_Wrap_X, 0x5b, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Addr_En, 0x5f, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_BlockSize_X, 0x60, 5, hwOffsetFix(33, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_CmdSize, 0x65, 1, hwOffsetFix(8, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Offset_0, 0x66, 4, hwOffsetFix(31, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Start_X_Addr, 0x6a, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(addrgen_cmd_MemoryControllerPro0_inAT2.AGen_Wrap_X, 0x6e, 4, hwOffsetFix(32, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(MemoryControllerPro0.Mcp_Int_Disable_OR, 0x72, 1, hwOffsetFix(6, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(MemoryControllerPro0.Mcp_Int_Enable_AND, 0x73, 1, hwOffsetFix(6, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(StreamFMAKernel.io_inAT1_force_disabled, 0x74, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
- REG_V2(StreamFMAKernel.io_inBT1_force_disabled, 0x75, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
- REG_V2(StreamFMAKernel.io_inAT2_force_disabled, 0x76, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
- REG_V2(StreamFMAKernel.io_inBT2_force_disabled, 0x77, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
- REG_V2(StreamFMAKernel.io_inAT3_force_disabled, 0x78, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
- REG_V2(StreamFMAKernel.io_inBT3_force_disabled, 0x79, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
- REG_V2(StreamFMAKernel.io_oDataT1_force_disabled, 0x7a, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
- REG_V2(StreamFMAKernel.io_oDataT2_force_disabled, 0x7b, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
- REG_V2(StreamFMAKernel.io_oDataT3_force_disabled, 0x7c, 1, hwOffsetFix(1, 0, UNSIGNED), HOST_WRITE_ONLY, true)
- REG_V2(StreamFMAKernel.run_cycle_count, 0x7d, 6, hwOffsetFix(48, 0, UNSIGNED), HOST_WRITE_ONLY, false)
- REG_V2(StreamFMAKernel.current_run_cycle_count, 0x83, 6, hwOffsetFix(48, 0, UNSIGNED), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_ctld_almost_empty, 0x89, 1, hwBits(6), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_ctld_done, 0x8a, 1, hwBits(6), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_ctld_empty, 0x8b, 1, hwBits(6), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_ctld_read, 0x8c, 1, hwBits(6), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_ctld_read_pipe_dbg, 0x8d, 3, hwBits(18), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_ctld_request, 0x90, 1, hwBits(6), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_done_out, 0x91, 1, hwBits(1), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_fill_level, 0x92, 1, hwBits(4), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_flush_level, 0x93, 1, hwBits(4), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_flush_start, 0x94, 1, hwBits(1), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_flush_start_level, 0x95, 1, hwBits(4), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_flushing, 0x96, 1, hwBits(1), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_full_level, 0x97, 1, hwBits(4), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_out_stall, 0x98, 1, hwBits(3), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_out_valid, 0x99, 1, hwBits(3), HOST_READ_ONLY, false)
- REG_V2(StreamFMAKernel.dbg_stall_vector, 0x9a, 1, hwBits(3), HOST_READ_ONLY, false)
- REG_V2(ifpga.ifpga_ctrl, 0x9b, 1, hwBits(8), HOST_READ_WRITE, false)
- REG_V2(SignalForwardingAdapter.SFA_FORWARD_EN, 0x9c, 4, hwBits(32), HOST_READ_WRITE, false)
- #endif
- #ifdef CHECKSUM
- #define CHECKSUM_PRESENT 1
- CHECKSUM("5677d622f2daecc91b0561585ae87653a418e3bb53c0a22186ca7832455db10b")
- #endif
- #ifdef MANAGER_MEMCTL
- #define MANAGER_MEMCTL_PRESENT 1
- MANAGER_MEMCTL(MemoryControllerPro0, MemoryControllerPro0.Mcp, 192, 0)
- #endif
- #ifdef MANAGER_MEMCTL_CONTROL_GROUP
- #define MANAGER_MEMCTL_CONTROL_GROUP_PRESENT 1
- MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_inAT2, addrgen_cmd_MemoryControllerPro0_inAT2.AGen, LINEAR_1D)
- MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_inBT2, addrgen_cmd_MemoryControllerPro0_inBT2.AGen, LINEAR_1D)
- MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_inAT3, addrgen_cmd_MemoryControllerPro0_inAT3.AGen, LINEAR_1D)
- MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_inBT3, addrgen_cmd_MemoryControllerPro0_inBT3.AGen, LINEAR_1D)
- MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_oDataT1, addrgen_cmd_MemoryControllerPro0_oDataT1.AGen, LINEAR_1D)
- MANAGER_MEMCTL_CONTROL_GROUP(MemoryControllerPro0, cmd_MemoryControllerPro0_oDataT2, addrgen_cmd_MemoryControllerPro0_oDataT2.AGen, LINEAR_1D)
- #endif
- #ifdef MANAGER_MEMCTL_DATA_STREAM
- #define MANAGER_MEMCTL_DATA_STREAM_PRESENT 1
- MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_inAT2, inAT2, 0, 0, READ)
- MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_inBT2, inBT2, 0, 1, READ)
- MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_inAT3, inAT3, 0, 2, READ)
- MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_inBT3, inBT3, 0, 3, READ)
- MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_oDataT1, oDataT1, 0, 4, WRITE)
- MANAGER_MEMCTL_DATA_STREAM(MemoryControllerPro0, cmd_MemoryControllerPro0_oDataT2, oDataT2, 0, 5, WRITE)
- #endif
- #ifdef CAPABILITY
- #define CAPABILITY_PRESENT 1
- CAPABILITY(LIMAREV, LIMAREVA)
- CAPABILITY(LIMARAM, DDR4_48GB)
- CAPABILITY(LIMAFPGA, xcVU9P_FLGB2104_2_E)
- #endif
- #ifdef DEFINE_DESIGN_NAME
- #define DESIGN_NAME StreamFMA
- #endif /* DEFINE_DESIGN_NAME */
- #ifndef SLIC_NO_DECLARATIONS
- /**\file */
- #ifndef SLIC_DECLARATIONS_StreamFMA_H
- #define SLIC_DECLARATIONS_StreamFMA_H
- #include "MaxSLiCInterface.h"
- #ifdef __cplusplus
- extern "C" {
- #endif /* __cplusplus */
- #define StreamFMA_DYNAMIC_CLOCKS_ENABLED (0)
- #define StreamFMA_PCIE_ALIGNMENT (16)
- /*----------------------------------------------------------------------------*/
- /*---------------------------- Interface default -----------------------------*/
- /*----------------------------------------------------------------------------*/
- /**
- * \brief Basic static function for the interface 'default'.
- *
- * \param [in] ticks_StreamFMAKernel The number of ticks for which kernel "StreamFMAKernel" will run.
- * \param [in] instream_inAT1 Stream "inAT1".
- * \param [in] instream_size_inAT1 The size of the stream instream_inAT1 in bytes.
- * \param [in] instream_inBT1 Stream "inBT1".
- * \param [in] instream_size_inBT1 The size of the stream instream_inBT1 in bytes.
- * \param [out] outstream_oDataT3 Stream "oDataT3".
- * \param [in] outstream_size_oDataT3 The size of the stream outstream_oDataT3 in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_inAT2 Linear LMem control for "inAT2" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_inAT2 Linear LMem control for "inAT2" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_inAT3 Linear LMem control for "inAT3" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_inAT3 Linear LMem control for "inAT3" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_inBT2 Linear LMem control for "inBT2" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_inBT2 Linear LMem control for "inBT2" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_inBT3 Linear LMem control for "inBT3" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_inBT3 Linear LMem control for "inBT3" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_oDataT1 Linear LMem control for "oDataT1" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_oDataT1 Linear LMem control for "oDataT1" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_oDataT2 Linear LMem control for "oDataT2" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_oDataT2 Linear LMem control for "oDataT2" stream: array size, in bytes.
- */
- void StreamFMA(
- uint64_t ticks_StreamFMAKernel,
- const void *instream_inAT1,
- size_t instream_size_inAT1,
- const void *instream_inBT1,
- size_t instream_size_inBT1,
- void *outstream_oDataT3,
- size_t outstream_size_oDataT3,
- size_t lmem_address_MemoryControllerPro0_inAT2,
- size_t lmem_arr_size_MemoryControllerPro0_inAT2,
- size_t lmem_address_MemoryControllerPro0_inAT3,
- size_t lmem_arr_size_MemoryControllerPro0_inAT3,
- size_t lmem_address_MemoryControllerPro0_inBT2,
- size_t lmem_arr_size_MemoryControllerPro0_inBT2,
- size_t lmem_address_MemoryControllerPro0_inBT3,
- size_t lmem_arr_size_MemoryControllerPro0_inBT3,
- size_t lmem_address_MemoryControllerPro0_oDataT1,
- size_t lmem_arr_size_MemoryControllerPro0_oDataT1,
- size_t lmem_address_MemoryControllerPro0_oDataT2,
- size_t lmem_arr_size_MemoryControllerPro0_oDataT2);
- /**
- * \brief Basic static non-blocking function for the interface 'default'.
- *
- * Schedule to run on an engine and return immediately.
- * The status of the run can be checked either by ::max_wait or ::max_nowait;
- * note that one of these *must* be called, so that associated memory can be released.
- *
- *
- * \param [in] ticks_StreamFMAKernel The number of ticks for which kernel "StreamFMAKernel" will run.
- * \param [in] instream_inAT1 Stream "inAT1".
- * \param [in] instream_size_inAT1 The size of the stream instream_inAT1 in bytes.
- * \param [in] instream_inBT1 Stream "inBT1".
- * \param [in] instream_size_inBT1 The size of the stream instream_inBT1 in bytes.
- * \param [out] outstream_oDataT3 Stream "oDataT3".
- * \param [in] outstream_size_oDataT3 The size of the stream outstream_oDataT3 in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_inAT2 Linear LMem control for "inAT2" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_inAT2 Linear LMem control for "inAT2" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_inAT3 Linear LMem control for "inAT3" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_inAT3 Linear LMem control for "inAT3" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_inBT2 Linear LMem control for "inBT2" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_inBT2 Linear LMem control for "inBT2" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_inBT3 Linear LMem control for "inBT3" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_inBT3 Linear LMem control for "inBT3" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_oDataT1 Linear LMem control for "oDataT1" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_oDataT1 Linear LMem control for "oDataT1" stream: array size, in bytes.
- * \param [in] lmem_address_MemoryControllerPro0_oDataT2 Linear LMem control for "oDataT2" stream: base address, in bytes.
- * \param [in] lmem_arr_size_MemoryControllerPro0_oDataT2 Linear LMem control for "oDataT2" stream: array size, in bytes.
- * \return A handle on the execution status, or NULL in case of error.
- */
- max_run_t *StreamFMA_nonblock(
- uint64_t ticks_StreamFMAKernel,
- const void *instream_inAT1,
- size_t instream_size_inAT1,
- const void *instream_inBT1,
- size_t instream_size_inBT1,
- void *outstream_oDataT3,
- size_t outstream_size_oDataT3,
- size_t lmem_address_MemoryControllerPro0_inAT2,
- size_t lmem_arr_size_MemoryControllerPro0_inAT2,
- size_t lmem_address_MemoryControllerPro0_inAT3,
- size_t lmem_arr_size_MemoryControllerPro0_inAT3,
- size_t lmem_address_MemoryControllerPro0_inBT2,
- size_t lmem_arr_size_MemoryControllerPro0_inBT2,
- size_t lmem_address_MemoryControllerPro0_inBT3,
- size_t lmem_arr_size_MemoryControllerPro0_inBT3,
- size_t lmem_address_MemoryControllerPro0_oDataT1,
- size_t lmem_arr_size_MemoryControllerPro0_oDataT1,
- size_t lmem_address_MemoryControllerPro0_oDataT2,
- size_t lmem_arr_size_MemoryControllerPro0_oDataT2);
- /**
- * \brief Advanced static interface, structure for the engine interface 'default'
- *
- */
- typedef struct {
- uint64_t ticks_StreamFMAKernel; /**< [in] The number of ticks for which kernel "StreamFMAKernel" will run. */
- const void *instream_inAT1; /**< [in] Stream "inAT1". */
- size_t instream_size_inAT1; /**< [in] The size of the stream instream_inAT1 in bytes. */
- const void *instream_inBT1; /**< [in] Stream "inBT1". */
- size_t instream_size_inBT1; /**< [in] The size of the stream instream_inBT1 in bytes. */
- void *outstream_oDataT3; /**< [out] Stream "oDataT3". */
- size_t outstream_size_oDataT3; /**< [in] The size of the stream outstream_oDataT3 in bytes. */
- size_t lmem_address_MemoryControllerPro0_inAT2; /**< [in] Linear LMem control for "inAT2" stream: base address, in bytes. */
- size_t lmem_arr_size_MemoryControllerPro0_inAT2; /**< [in] Linear LMem control for "inAT2" stream: array size, in bytes. */
- size_t lmem_address_MemoryControllerPro0_inAT3; /**< [in] Linear LMem control for "inAT3" stream: base address, in bytes. */
- size_t lmem_arr_size_MemoryControllerPro0_inAT3; /**< [in] Linear LMem control for "inAT3" stream: array size, in bytes. */
- size_t lmem_address_MemoryControllerPro0_inBT2; /**< [in] Linear LMem control for "inBT2" stream: base address, in bytes. */
- size_t lmem_arr_size_MemoryControllerPro0_inBT2; /**< [in] Linear LMem control for "inBT2" stream: array size, in bytes. */
- size_t lmem_address_MemoryControllerPro0_inBT3; /**< [in] Linear LMem control for "inBT3" stream: base address, in bytes. */
- size_t lmem_arr_size_MemoryControllerPro0_inBT3; /**< [in] Linear LMem control for "inBT3" stream: array size, in bytes. */
- size_t lmem_address_MemoryControllerPro0_oDataT1; /**< [in] Linear LMem control for "oDataT1" stream: base address, in bytes. */
- size_t lmem_arr_size_MemoryControllerPro0_oDataT1; /**< [in] Linear LMem control for "oDataT1" stream: array size, in bytes. */
- size_t lmem_address_MemoryControllerPro0_oDataT2; /**< [in] Linear LMem control for "oDataT2" stream: base address, in bytes. */
- size_t lmem_arr_size_MemoryControllerPro0_oDataT2; /**< [in] Linear LMem control for "oDataT2" stream: array size, in bytes. */
- } StreamFMA_actions_t;
- /**
- * \brief Advanced static function for the interface 'default'.
- *
- * \param [in] engine The engine on which the actions will be executed.
- * \param [in,out] interface_actions Actions to be executed.
- */
- void StreamFMA_run(
- max_engine_t *engine,
- StreamFMA_actions_t *interface_actions);
- /**
- * \brief Advanced static non-blocking function for the interface 'default'.
- *
- * Schedule the actions to run on the engine and return immediately.
- * The status of the run can be checked either by ::max_wait or ::max_nowait;
- * note that one of these *must* be called, so that associated memory can be released.
- *
- *
- * \param [in] engine The engine on which the actions will be executed.
- * \param [in] interface_actions Actions to be executed.
- * \return A handle on the execution status of the actions, or NULL in case of error.
- */
- max_run_t *StreamFMA_run_nonblock(
- max_engine_t *engine,
- StreamFMA_actions_t *interface_actions);
- /**
- * \brief Group run advanced static function for the interface 'default'.
- *
- * \param [in] group Group to use.
- * \param [in,out] interface_actions Actions to run.
- *
- * Run the actions on the first device available in the group.
- */
- void StreamFMA_run_group(max_group_t *group, StreamFMA_actions_t *interface_actions);
- /**
- * \brief Group run advanced static non-blocking function for the interface 'default'.
- *
- *
- * Schedule the actions to run on the first device available in the group and return immediately.
- * The status of the run must be checked with ::max_wait.
- * Note that use of ::max_nowait is prohibited with non-blocking running on groups:
- * see the ::max_run_group_nonblock documentation for more explanation.
- *
- * \param [in] group Group to use.
- * \param [in] interface_actions Actions to run.
- * \return A handle on the execution status of the actions, or NULL in case of error.
- */
- max_run_t *StreamFMA_run_group_nonblock(max_group_t *group, StreamFMA_actions_t *interface_actions);
- /**
- * \brief Array run advanced static function for the interface 'default'.
- *
- * \param [in] engarray The array of devices to use.
- * \param [in,out] interface_actions The array of actions to run.
- *
- * Run the array of actions on the array of engines. The length of interface_actions
- * must match the size of engarray.
- */
- void StreamFMA_run_array(max_engarray_t *engarray, StreamFMA_actions_t *interface_actions[]);
- /**
- * \brief Array run advanced static non-blocking function for the interface 'default'.
- *
- *
- * Schedule to run the array of actions on the array of engines, and return immediately.
- * The length of interface_actions must match the size of engarray.
- * The status of the run can be checked either by ::max_wait or ::max_nowait;
- * note that one of these *must* be called, so that associated memory can be released.
- *
- * \param [in] engarray The array of devices to use.
- * \param [in] interface_actions The array of actions to run.
- * \return A handle on the execution status of the actions, or NULL in case of error.
- */
- max_run_t *StreamFMA_run_array_nonblock(max_engarray_t *engarray, StreamFMA_actions_t *interface_actions[]);
- /**
- * \brief Converts a static-interface action struct into a dynamic-interface max_actions_t struct.
- *
- * Note that this is an internal utility function used by other functions in the static interface.
- *
- * \param [in] maxfile The maxfile to use.
- * \param [in] interface_actions The interface-specific actions to run.
- * \return The dynamic-interface actions to run, or NULL in case of error.
- */
- max_actions_t* StreamFMA_convert(max_file_t *maxfile, StreamFMA_actions_t *interface_actions);
- /**
- * \brief Initialise a maxfile.
- */
- max_file_t* StreamFMA_init(void);
- /* Error handling functions */
- int StreamFMA_has_errors(void);
- const char* StreamFMA_get_errors(void);
- void StreamFMA_clear_errors(void);
- /* Free statically allocated maxfile data */
- void StreamFMA_free(void);
- /* returns: -1 = error running command; 0 = no error reported */
- int StreamFMA_simulator_start(void);
- /* returns: -1 = error running command; 0 = no error reported */
- int StreamFMA_simulator_stop(void);
- #ifdef __cplusplus
- }
- #endif /* __cplusplus */
- #endif /* SLIC_DECLARATIONS_StreamFMA_H */
- #endif /* SLIC_NO_DECLARATIONS */
- #ifdef PHOTON_NODE_DATA
- #define PHOTON_NODE_DATA_PRESENT 1
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- 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")
- #endif
- #ifdef SLIC_USE_DEFINITIONS
- #include <stdio.h>
- #include <math.h>
- #include <pthread.h>
- #include <string.h>
- #include <unistd.h>
- #include <stdlib.h>
- static max_file_t *stored_maxfile = NULL;
- static max_engine_t *stored_engine = NULL;
- static char *stored_error = NULL;
- static int stored_has_error = 0;
- static pthread_once_t slic_bs_is_initialised = PTHREAD_ONCE_INIT;
- static void set_error(const char *error_str)
- {
- stored_has_error = 1;
- if(stored_error == NULL) {
- stored_error = strdup(error_str);
- } else {
- char *nerr = malloc(strlen(stored_error) + strlen(error_str) + 2);
- sprintf(nerr, "%s\n%s", stored_error, error_str);
- free(stored_error);
- stored_error = nerr;
- }
- }
- static void set_error_and_free(char *error_str){
- set_error(error_str);
- free(error_str);
- }
- int StreamFMA_has_errors(void)
- { return stored_has_error; }
- const char* StreamFMA_get_errors(void)
- { return stored_error; }
- void StreamFMA_clear_errors(void)
- {
- free(stored_error);
- stored_error = NULL;
- stored_has_error = 0;
- }
- static char StreamFMA_use_simulation[16];
- static void StreamFMA_def_use_simulation(void)
- {
- long pid = ((long) getpid()) % 100000;
- snprintf(StreamFMA_use_simulation, 16, "StreamFM_%05ld_", pid);
- }
- static const char *StreamFMA_check_use_simulation(void)
- {
- StreamFMA_def_use_simulation();
- const char *use_sim = max_config_get_string(MAX_CONFIG_USE_SIMULATION);
- if (use_sim == NULL) {
- use_sim = StreamFMA_use_simulation;
- max_config_set_string(MAX_CONFIG_USE_SIMULATION, use_sim);
- }
- return use_sim;
- }
- static int StreamFMA_simulation_launch = 0;
- int StreamFMA_simulator_start(void)
- {
- int retval = 0;
- const char *use_sim = StreamFMA_check_use_simulation();
- char buff[1024];
- snprintf(buff, 1024, "PATH=simutils:$PATH maxcompilersim -d 1 -n %s -c MAX5C -S simutils restart", use_sim);
- FILE *pipe_fp = popen(buff, "r");
- if (pipe_fp == NULL) {
- strncat(buff, " : failed to execute.", (1024 - strlen(buff)));
- set_error(buff);
- return -1;
- }
- while (fgets(buff, 1024, pipe_fp) != NULL) {
- /* Uncomment this to get simulator command output */
- /* fprintf(stderr, buff); */
- if (strstr(buff, "Error")) {
- set_error(buff);
- retval = -1;
- }
- }
- pclose(pipe_fp);
- return retval;
- }
- int StreamFMA_simulator_stop(void)
- {
- const char *use_sim = StreamFMA_check_use_simulation();
- char buff[1024];
- snprintf(buff, 1024, "PATH=simutils:$PATH maxcompilersim -d 1 -n %s -c MAX5C -S simutils stop", use_sim);
- FILE *pipe_fp = popen(buff, "r");
- if (pipe_fp == NULL) {
- strncat(buff, " : failed to execute.", (1024 - strlen(buff)));
- set_error(buff);
- return -1;
- }
- while (fgets(buff, 1024, pipe_fp) != NULL) {
- /* Uncomment this to get simulator command output */
- /* fprintf(stderr, buff); */
- ;
- }
- pclose(pipe_fp);
- return 0;
- }
- static void StreamFMA_static_init(void)
- {
- stored_maxfile = StreamFMA_init();
- if (stored_maxfile == NULL || !max_ok(stored_maxfile->errors)) {
- stored_maxfile = NULL;
- if(max_config_get_bool(MAX_CONFIG_STATIC_INTERFACE_ABORT_ON_ERROR)) abort();
- else { set_error("Unable to load maxfile"); return; }
- }
- if(!max_ok(max_global_errors())) {
- set_error_and_free(max_errors_trace(max_global_errors()));
- return;
- }
- if(!max_config_get_bool(MAX_CONFIG_STATIC_INTERFACE_ABORT_ON_ERROR))
- max_errors_mode(stored_maxfile->errors, 0);
- time_t timeout_previous = max_load_timeout(stored_maxfile, 30);
- const char *use_sim = StreamFMA_check_use_simulation();
- if (max_ping_daemon(stored_maxfile, use_sim) == 0) {
- int sim_stat = StreamFMA_simulator_start();
- if ((sim_stat == 0) && (max_ping_daemon(stored_maxfile, use_sim) == 1)) {
- StreamFMA_simulation_launch = 1;
- } else {
- set_error("Error: An error occurred while trying to start the simulation infrastructure automatically.");
- set_error("Error: Check that 'use_simulation=<simulator_name>' is set correctly in your SLiC configuration");
- set_error("Error: and that the associated simulated system daemon is running.");
- max_file_free(stored_maxfile);
- stored_maxfile = NULL;
- return;
- }
- }
- stored_engine = max_load(stored_maxfile, "*");
- if (!max_ok(stored_maxfile->errors)) {
- if(max_config_get_bool(MAX_CONFIG_STATIC_INTERFACE_ABORT_ON_ERROR)) {
- fprintf(stderr, "\nUnable to load engine: aborting now.\n\n");
- fflush(stderr);
- abort();
- } else {
- set_error_and_free(max_errors_trace(stored_maxfile->errors));
- max_file_free(stored_maxfile);
- stored_maxfile = NULL;
- return;
- }
- }
- max_load_timeout(stored_maxfile, timeout_previous);
- }
- void StreamFMA_free(void)
- {
- if (stored_engine != NULL) {
- max_unload(stored_engine);
- stored_engine = NULL;
- }
- if (stored_maxfile != NULL) {
- max_file_free(stored_maxfile);
- stored_maxfile = NULL;
- }
- if (stored_error != NULL) {
- free(stored_error);
- stored_error = NULL;
- }
- if (StreamFMA_simulation_launch == 1) {
- int sim_stat = StreamFMA_simulator_stop();
- if (sim_stat != 0 ) {
- fprintf(stderr, "Error stopping simulator.");
- }
- StreamFMA_simulation_launch = 0;
- }
- }
- static int StreamFMA_get_pcie_alignment(void)
- {
- #ifdef StreamFMA_PCIE_ALIGNMENT
- return ((StreamFMA_PCIE_ALIGNMENT < 1) ? 16 : StreamFMA_PCIE_ALIGNMENT);
- #else
- return 16;
- #endif
- }
- static int StreamFMA_check_aligned(const void *data)
- {
- uintptr_t pointer = (uintptr_t) data;
- int alignment = StreamFMA_get_pcie_alignment();
- return (pointer % alignment) ? 1 : 0;
- }
- static void *StreamFMA_malloc_aligned(const size_t size)
- {
- void *ptr;
- int alignment = StreamFMA_get_pcie_alignment();
- posix_memalign(&ptr, alignment, size);
- return ptr;
- }
- /*----------------------------------------------------------------------------*/
- /*---------------------------- Interface default -----------------------------*/
- /*----------------------------------------------------------------------------*/
- #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; }
- #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; }
-
- typedef struct StreamFMA_callback_stream {
- uint8_t *user_ptr;
- uint8_t *aligned_ptr;
- size_t size;
- int is_output;
- } StreamFMA_callback_stream_t;
- typedef struct StreamFMA_callback_data {
- StreamFMA_callback_stream_t stream[3];
- int count;
- int max_count;
- } StreamFMA_callback_data_t;
- static void StreamFMA_callback_internal(void *cb_data)
- {
- StreamFMA_callback_data_t *data = (StreamFMA_callback_data_t*) cb_data;
- for (int i = 0 ; i < data->count ; i++ ) {
- StreamFMA_callback_stream_t *s = &data->stream[i];
- if (s->is_output && (s->size > 0)) {
- memcpy(s->user_ptr, s->aligned_ptr, s->size);
- }
- free(s->aligned_ptr);
- }
- free(data);
- }
- static max_actions_t* StreamFMA_convert_internal(
- max_file_t *maxfile,
- StreamFMA_actions_t *interface_actions,
- int is_internal_call,
- void (**callback_func)(void*),
- void **callback_data)
- {
- max_actions_t *actions = max_actions_init(maxfile, NULL);
- if(actions == NULL) return NULL;
- #define CHECK_ERRORS if(!max_ok(actions->errors)) { set_error_and_free(max_errors_trace(actions->errors)); return NULL; }
- StreamFMA_callback_data_t *cb_data = NULL;
- int use_callback = (callback_func != NULL) && (callback_data != NULL);
- if (use_callback) {
- cb_data = malloc(sizeof(StreamFMA_callback_data_t));
- if (cb_data == NULL) {
- fprintf(stderr, "Unable to allocate memory for stream callback data in function StreamFMA_convert_internal\n");
- return NULL;
- }
- cb_data->max_count = 3;
- cb_data->count = 0;
- *callback_data = cb_data;
- *callback_func = &StreamFMA_callback_internal;
- }
- /* code for scalar StreamFMAKernel.run_cycle_count */
- uint64_t ticks_StreamFMAKernel = interface_actions->ticks_StreamFMAKernel;
- max_set_ticks(actions, "StreamFMAKernel", ticks_StreamFMAKernel);
- CHECK_ERRORS;
- /* end of code for scalar StreamFMAKernel.run_cycle_count*/
-
- /* code for stream inAT1 */
- size_t instream_size_inAT1 = interface_actions->instream_size_inAT1;
- if (instream_size_inAT1 > 0) {
- const void *stream_ptr = interface_actions->instream_inAT1;
- if (use_callback && (1 == StreamFMA_check_aligned(interface_actions->instream_inAT1))) {
- void *aligned_instream_inAT1 = malloc(instream_size_inAT1);
- if (aligned_instream_inAT1 == NULL) {
- max_report_error_slic(actions->errors, __FILE__, __LINE__, 526, "Failed to allocate aligned memory for stream 'inAT1'");
- CHECK_ERRORS;
- }
- (&cb_data->stream[cb_data->count])->user_ptr = (uint8_t*) interface_actions->instream_inAT1;
- (&cb_data->stream[cb_data->count])->aligned_ptr = (uint8_t*) aligned_instream_inAT1;
- (&cb_data->stream[cb_data->count])->size = instream_size_inAT1;
- (&cb_data->stream[cb_data->count])->is_output = 0;
- cb_data->count += 1;
- memcpy(aligned_instream_inAT1, interface_actions->instream_inAT1, instream_size_inAT1);
- stream_ptr = aligned_instream_inAT1;
- }
- max_queue_input(actions, "inAT1", stream_ptr, instream_size_inAT1);
- CHECK_ERRORS;
- }
- /* end of code for stream inAT1 */
-
- /* code for stream inBT1 */
- size_t instream_size_inBT1 = interface_actions->instream_size_inBT1;
- if (instream_size_inBT1 > 0) {
- const void *stream_ptr = interface_actions->instream_inBT1;
- if (use_callback && (1 == StreamFMA_check_aligned(interface_actions->instream_inBT1))) {
- void *aligned_instream_inBT1 = malloc(instream_size_inBT1);
- if (aligned_instream_inBT1 == NULL) {
- max_report_error_slic(actions->errors, __FILE__, __LINE__, 526, "Failed to allocate aligned memory for stream 'inBT1'");
- CHECK_ERRORS;
- }
- (&cb_data->stream[cb_data->count])->user_ptr = (uint8_t*) interface_actions->instream_inBT1;
- (&cb_data->stream[cb_data->count])->aligned_ptr = (uint8_t*) aligned_instream_inBT1;
- (&cb_data->stream[cb_data->count])->size = instream_size_inBT1;
- (&cb_data->stream[cb_data->count])->is_output = 0;
- cb_data->count += 1;
- memcpy(aligned_instream_inBT1, interface_actions->instream_inBT1, instream_size_inBT1);
- stream_ptr = aligned_instream_inBT1;
- }
- max_queue_input(actions, "inBT1", stream_ptr, instream_size_inBT1);
- CHECK_ERRORS;
- }
- /* end of code for stream inBT1 */
-
- /* code for stream oDataT3 */
- size_t outstream_size_oDataT3 = interface_actions->outstream_size_oDataT3;
- if (outstream_size_oDataT3 > 0) {
- void *stream_ptr = interface_actions->outstream_oDataT3;
- if (use_callback && (1 == StreamFMA_check_aligned(interface_actions->outstream_oDataT3))) {
- void *aligned_outstream_oDataT3 = malloc(outstream_size_oDataT3);
- if (aligned_outstream_oDataT3 == NULL) {
- max_report_error_slic(actions->errors, __FILE__, __LINE__, 526, "Failed to allocate aligned memory for stream 'oDataT3'");
- CHECK_ERRORS;
- }
- (&cb_data->stream[cb_data->count])->user_ptr = (uint8_t*) interface_actions->outstream_oDataT3;
- (&cb_data->stream[cb_data->count])->aligned_ptr = (uint8_t*) aligned_outstream_oDataT3;
- (&cb_data->stream[cb_data->count])->size = outstream_size_oDataT3;
- (&cb_data->stream[cb_data->count])->is_output = 1;
- cb_data->count += 1;
- stream_ptr = aligned_outstream_oDataT3;
- }
- max_queue_output(actions, "oDataT3", stream_ptr, outstream_size_oDataT3);
- CHECK_ERRORS;
- }
- /* end of code for stream oDataT3 */
-
- /* code for linear memory-stream "inAT2" in memory-controller "MemoryControllerPro0" */
- size_t lmem_address_MemoryControllerPro0_inAT2 = interface_actions->lmem_address_MemoryControllerPro0_inAT2;
- size_t lmem_arr_size_MemoryControllerPro0_inAT2 = interface_actions->lmem_arr_size_MemoryControllerPro0_inAT2;
- int lmem_burst_size_MemoryControllerPro0_inAT2 = max_get_burst_size(maxfile, "MemoryControllerPro0");
- if ( (lmem_address_MemoryControllerPro0_inAT2 % lmem_burst_size_MemoryControllerPro0_inAT2) != 0 ) {
- 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 );
- }
- if ( (lmem_arr_size_MemoryControllerPro0_inAT2 % lmem_burst_size_MemoryControllerPro0_inAT2) != 0 ) {
- 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 );
- }
- if (lmem_arr_size_MemoryControllerPro0_inAT2 > 0) {
- max_memctl_linear(actions, "MemoryControllerPro0", "inAT2", lmem_address_MemoryControllerPro0_inAT2, lmem_arr_size_MemoryControllerPro0_inAT2);
- } else {
- max_ignore_memctl(actions, "MemoryControllerPro0", "inAT2");
- }
- CHECK_ERRORS;
- /* end of code for linear memory-stream "inAT2" in memory-controller "MemoryControllerPro0" */
-
- /* code for linear memory-stream "inAT3" in memory-controller "MemoryControllerPro0" */
- size_t lmem_address_MemoryControllerPro0_inAT3 = interface_actions->lmem_address_MemoryControllerPro0_inAT3;
- size_t lmem_arr_size_MemoryControllerPro0_inAT3 = interface_actions->lmem_arr_size_MemoryControllerPro0_inAT3;
- int lmem_burst_size_MemoryControllerPro0_inAT3 = max_get_burst_size(maxfile, "MemoryControllerPro0");
- if ( (lmem_address_MemoryControllerPro0_inAT3 % lmem_burst_size_MemoryControllerPro0_inAT3) != 0 ) {
- 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 );
- }
- if ( (lmem_arr_size_MemoryControllerPro0_inAT3 % lmem_burst_size_MemoryControllerPro0_inAT3) != 0 ) {
- 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 );
- }
- if (lmem_arr_size_MemoryControllerPro0_inAT3 > 0) {
- max_memctl_linear(actions, "MemoryControllerPro0", "inAT3", lmem_address_MemoryControllerPro0_inAT3, lmem_arr_size_MemoryControllerPro0_inAT3);
- } else {
- max_ignore_memctl(actions, "MemoryControllerPro0", "inAT3");
- }
- CHECK_ERRORS;
- /* end of code for linear memory-stream "inAT3" in memory-controller "MemoryControllerPro0" */
-
- /* code for linear memory-stream "inBT2" in memory-controller "MemoryControllerPro0" */
- size_t lmem_address_MemoryControllerPro0_inBT2 = interface_actions->lmem_address_MemoryControllerPro0_inBT2;
- size_t lmem_arr_size_MemoryControllerPro0_inBT2 = interface_actions->lmem_arr_size_MemoryControllerPro0_inBT2;
- int lmem_burst_size_MemoryControllerPro0_inBT2 = max_get_burst_size(maxfile, "MemoryControllerPro0");
- if ( (lmem_address_MemoryControllerPro0_inBT2 % lmem_burst_size_MemoryControllerPro0_inBT2) != 0 ) {
- 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 );
- }
- if ( (lmem_arr_size_MemoryControllerPro0_inBT2 % lmem_burst_size_MemoryControllerPro0_inBT2) != 0 ) {
- 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 );
- }
- if (lmem_arr_size_MemoryControllerPro0_inBT2 > 0) {
- max_memctl_linear(actions, "MemoryControllerPro0", "inBT2", lmem_address_MemoryControllerPro0_inBT2, lmem_arr_size_MemoryControllerPro0_inBT2);
- } else {
- max_ignore_memctl(actions, "MemoryControllerPro0", "inBT2");
- }
- CHECK_ERRORS;
- /* end of code for linear memory-stream "inBT2" in memory-controller "MemoryControllerPro0" */
-
- /* code for linear memory-stream "inBT3" in memory-controller "MemoryControllerPro0" */
- size_t lmem_address_MemoryControllerPro0_inBT3 = interface_actions->lmem_address_MemoryControllerPro0_inBT3;
- size_t lmem_arr_size_MemoryControllerPro0_inBT3 = interface_actions->lmem_arr_size_MemoryControllerPro0_inBT3;
- int lmem_burst_size_MemoryControllerPro0_inBT3 = max_get_burst_size(maxfile, "MemoryControllerPro0");
- if ( (lmem_address_MemoryControllerPro0_inBT3 % lmem_burst_size_MemoryControllerPro0_inBT3) != 0 ) {
- 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 );
- }
- if ( (lmem_arr_size_MemoryControllerPro0_inBT3 % lmem_burst_size_MemoryControllerPro0_inBT3) != 0 ) {
- 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 );
- }
- if (lmem_arr_size_MemoryControllerPro0_inBT3 > 0) {
- max_memctl_linear(actions, "MemoryControllerPro0", "inBT3", lmem_address_MemoryControllerPro0_inBT3, lmem_arr_size_MemoryControllerPro0_inBT3);
- } else {
- max_ignore_memctl(actions, "MemoryControllerPro0", "inBT3");
- }
- CHECK_ERRORS;
- /* end of code for linear memory-stream "inBT3" in memory-controller "MemoryControllerPro0" */
-
- /* code for linear memory-stream "oDataT1" in memory-controller "MemoryControllerPro0" */
- size_t lmem_address_MemoryControllerPro0_oDataT1 = interface_actions->lmem_address_MemoryControllerPro0_oDataT1;
- size_t lmem_arr_size_MemoryControllerPro0_oDataT1 = interface_actions->lmem_arr_size_MemoryControllerPro0_oDataT1;
- int lmem_burst_size_MemoryControllerPro0_oDataT1 = max_get_burst_size(maxfile, "MemoryControllerPro0");
- if ( (lmem_address_MemoryControllerPro0_oDataT1 % lmem_burst_size_MemoryControllerPro0_oDataT1) != 0 ) {
- 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 );
- }
- if ( (lmem_arr_size_MemoryControllerPro0_oDataT1 % lmem_burst_size_MemoryControllerPro0_oDataT1) != 0 ) {
- 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 );
- }
- if (lmem_arr_size_MemoryControllerPro0_oDataT1 > 0) {
- max_memctl_linear(actions, "MemoryControllerPro0", "oDataT1", lmem_address_MemoryControllerPro0_oDataT1, lmem_arr_size_MemoryControllerPro0_oDataT1);
- } else {
- max_ignore_memctl(actions, "MemoryControllerPro0", "oDataT1");
- }
- CHECK_ERRORS;
- /* end of code for linear memory-stream "oDataT1" in memory-controller "MemoryControllerPro0" */
-
- /* code for linear memory-stream "oDataT2" in memory-controller "MemoryControllerPro0" */
- size_t lmem_address_MemoryControllerPro0_oDataT2 = interface_actions->lmem_address_MemoryControllerPro0_oDataT2;
- size_t lmem_arr_size_MemoryControllerPro0_oDataT2 = interface_actions->lmem_arr_size_MemoryControllerPro0_oDataT2;
- int lmem_burst_size_MemoryControllerPro0_oDataT2 = max_get_burst_size(maxfile, "MemoryControllerPro0");
- if ( (lmem_address_MemoryControllerPro0_oDataT2 % lmem_burst_size_MemoryControllerPro0_oDataT2) != 0 ) {
- 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 );
- }
- if ( (lmem_arr_size_MemoryControllerPro0_oDataT2 % lmem_burst_size_MemoryControllerPro0_oDataT2) != 0 ) {
- 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 );
- }
- if (lmem_arr_size_MemoryControllerPro0_oDataT2 > 0) {
- max_memctl_linear(actions, "MemoryControllerPro0", "oDataT2", lmem_address_MemoryControllerPro0_oDataT2, lmem_arr_size_MemoryControllerPro0_oDataT2);
- } else {
- max_ignore_memctl(actions, "MemoryControllerPro0", "oDataT2");
- }
- CHECK_ERRORS;
- /* end of code for linear memory-stream "oDataT2" in memory-controller "MemoryControllerPro0" */
-
- if (use_callback && cb_data->count == 0) {
- *callback_data = NULL;
- *callback_func = NULL;
- free(cb_data);
- }
- return actions;
- #undef CHECK_ERRORS
- }
- void StreamFMA(
- uint64_t ticks_StreamFMAKernel,
- const void *instream_inAT1,
- size_t instream_size_inAT1,
- const void *instream_inBT1,
- size_t instream_size_inBT1,
- void *outstream_oDataT3,
- size_t outstream_size_oDataT3,
- size_t lmem_address_MemoryControllerPro0_inAT2,
- size_t lmem_arr_size_MemoryControllerPro0_inAT2,
- size_t lmem_address_MemoryControllerPro0_inAT3,
- size_t lmem_arr_size_MemoryControllerPro0_inAT3,
- size_t lmem_address_MemoryControllerPro0_inBT2,
- size_t lmem_arr_size_MemoryControllerPro0_inBT2,
- size_t lmem_address_MemoryControllerPro0_inBT3,
- size_t lmem_arr_size_MemoryControllerPro0_inBT3,
- size_t lmem_address_MemoryControllerPro0_oDataT1,
- size_t lmem_arr_size_MemoryControllerPro0_oDataT1,
- size_t lmem_address_MemoryControllerPro0_oDataT2,
- size_t lmem_arr_size_MemoryControllerPro0_oDataT2)
- {
- (void) pthread_once(&slic_bs_is_initialised, StreamFMA_static_init);
- CHECK_NULL(stored_maxfile, "Maxfile was not loaded", );
- 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);
- CHECK_NULL(run, "Unable to run actions", );
- max_wait(run);
- }
- max_run_t *StreamFMA_nonblock(
- uint64_t ticks_StreamFMAKernel,
- const void *instream_inAT1,
- size_t instream_size_inAT1,
- const void *instream_inBT1,
- size_t instream_size_inBT1,
- void *outstream_oDataT3,
- size_t outstream_size_oDataT3,
- size_t lmem_address_MemoryControllerPro0_inAT2,
- size_t lmem_arr_size_MemoryControllerPro0_inAT2,
- size_t lmem_address_MemoryControllerPro0_inAT3,
- size_t lmem_arr_size_MemoryControllerPro0_inAT3,
- size_t lmem_address_MemoryControllerPro0_inBT2,
- size_t lmem_arr_size_MemoryControllerPro0_inBT2,
- size_t lmem_address_MemoryControllerPro0_inBT3,
- size_t lmem_arr_size_MemoryControllerPro0_inBT3,
- size_t lmem_address_MemoryControllerPro0_oDataT1,
- size_t lmem_arr_size_MemoryControllerPro0_oDataT1,
- size_t lmem_address_MemoryControllerPro0_oDataT2,
- size_t lmem_arr_size_MemoryControllerPro0_oDataT2)
- {
- StreamFMA_actions_t interface_actions;
- interface_actions.ticks_StreamFMAKernel = ticks_StreamFMAKernel;
- interface_actions.instream_inAT1 = instream_inAT1;
- interface_actions.instream_size_inAT1 = instream_size_inAT1;
- interface_actions.instream_inBT1 = instream_inBT1;
- interface_actions.instream_size_inBT1 = instream_size_inBT1;
- interface_actions.outstream_oDataT3 = outstream_oDataT3;
- interface_actions.outstream_size_oDataT3 = outstream_size_oDataT3;
- interface_actions.lmem_address_MemoryControllerPro0_inAT2 = lmem_address_MemoryControllerPro0_inAT2;
- interface_actions.lmem_arr_size_MemoryControllerPro0_inAT2 = lmem_arr_size_MemoryControllerPro0_inAT2;
- interface_actions.lmem_address_MemoryControllerPro0_inAT3 = lmem_address_MemoryControllerPro0_inAT3;
- interface_actions.lmem_arr_size_MemoryControllerPro0_inAT3 = lmem_arr_size_MemoryControllerPro0_inAT3;
- interface_actions.lmem_address_MemoryControllerPro0_inBT2 = lmem_address_MemoryControllerPro0_inBT2;
- interface_actions.lmem_arr_size_MemoryControllerPro0_inBT2 = lmem_arr_size_MemoryControllerPro0_inBT2;
- interface_actions.lmem_address_MemoryControllerPro0_inBT3 = lmem_address_MemoryControllerPro0_inBT3;
- interface_actions.lmem_arr_size_MemoryControllerPro0_inBT3 = lmem_arr_size_MemoryControllerPro0_inBT3;
- interface_actions.lmem_address_MemoryControllerPro0_oDataT1 = lmem_address_MemoryControllerPro0_oDataT1;
- interface_actions.lmem_arr_size_MemoryControllerPro0_oDataT1 = lmem_arr_size_MemoryControllerPro0_oDataT1;
- interface_actions.lmem_address_MemoryControllerPro0_oDataT2 = lmem_address_MemoryControllerPro0_oDataT2;
- interface_actions.lmem_arr_size_MemoryControllerPro0_oDataT2 = lmem_arr_size_MemoryControllerPro0_oDataT2;
- (void) pthread_once(&slic_bs_is_initialised, StreamFMA_static_init);
- CHECK_NULL(stored_maxfile, "Maxfile was not loaded", NULL);
- void (*cb_func)(void*) = NULL;
- void *cb_data = NULL;
- max_actions_t *actions = StreamFMA_convert_internal(stored_maxfile, &interface_actions, 1, &cb_func, &cb_data);
- CHECK_NULL(actions, "Unable to build actions", NULL);
- max_validate(actions);
- CHECK_ERRORS_ST(actions, NULL);
- CHECK_ERRORS_ST(stored_engine, NULL);
- max_run_t *run;
- if (cb_func == NULL) {
- run = max_run_nonblock(stored_engine, actions);
- } else {
- run = max_run_nonblock_with_cb(stored_engine, actions, cb_func, cb_data);
- }
- CHECK_NULL(run, "Unable to run actions", NULL);
- CHECK_ERRORS_ST(actions, NULL);
- max_actions_free(actions);
- return run;
- }
- void StreamFMA_run(
- max_engine_t *engine,
- StreamFMA_actions_t *interface_actions)
- {
- max_run_t *run = StreamFMA_run_nonblock(engine, interface_actions);
- CHECK_NULL(run, "Unable to run actions", );
- max_wait(run);
- }
- max_run_t *StreamFMA_run_nonblock(
- max_engine_t *engine,
- StreamFMA_actions_t *interface_actions)
- {
- max_file_t *maxfile = max_engine_get_max_file(engine);
- void (*cb_func)(void*) = NULL;
- void *cb_data = NULL;
- max_actions_t *actions = StreamFMA_convert_internal(maxfile, interface_actions, 1, &cb_func, &cb_data);
- CHECK_NULL(actions, "Unable to build actions", NULL);
- max_validate(actions);
- CHECK_ERRORS_ST(actions, NULL);
- max_run_t *run;
- if (cb_func == NULL) {
- run = max_run_nonblock(engine, actions);
- } else {
- run = max_run_nonblock_with_cb(engine, actions, cb_func, cb_data);
- }
- CHECK_NULL(run, "Unable to run actions", NULL);
- max_actions_free(actions);
- return run;
- }
- /**
- * \brief Group run advanced static function for the interface 'default'.
- *
- * \param [in] group Group to use.
- * \param [in,out] interface_actions Actions to run.
- *
- * Run the actions on the first device available in the group.
- */
- void StreamFMA_run_group(max_group_t *group, StreamFMA_actions_t *interface_actions)
- {
- max_run_t *run = StreamFMA_run_group_nonblock(group, interface_actions);
- CHECK_NULL(run, "Unable to run actions", );
- max_wait(run);
- }
- /**
- * \brief Group run advanced static non-blocking function for the interface 'default'.
- *
- *
- * Schedule the actions to run on the first device available in the group and return immediately.
- * The status of the run must be checked with ::max_wait.
- * Note that use of ::max_nowait is prohibited with non-blocking running on groups:
- * see the ::max_run_group_nonblock documentation for more explanation.
- *
- * \param [in] group Group to use.
- * \param [in] interface_actions Actions to run.
- * \return A handle on the execution status of the actions, or NULL in case of error.
- */
- max_run_t *StreamFMA_run_group_nonblock(max_group_t *group, StreamFMA_actions_t *interface_actions)
- {
- max_file_t *maxfile = max_group_get_max_file(group);
- max_actions_t *actions = StreamFMA_convert_internal(maxfile, interface_actions, 1, NULL, NULL);
- if(actions == NULL) return NULL;
- if(!max_ok(actions->errors)) return NULL;
- max_validate(actions);
- max_run_t *run = max_run_group_nonblock(group, actions);
- max_actions_free(actions);
- return run;
- }
- /**
- * \brief Array run advanced static function for the interface 'default'.
- *
- * \param [in] engarray The array of devices to use.
- * \param [in,out] interface_actions The array of actions to run.
- *
- * Run the array of actions on the array of engines. The length of interface_actions
- * must match the size of engarray.
- */
- void StreamFMA_run_array(max_engarray_t *engarray, StreamFMA_actions_t *interface_actions[])
- {
- max_run_t *run = StreamFMA_run_array_nonblock(engarray, interface_actions);
- CHECK_NULL(run, "Unable to run actions", );
- max_wait(run);
- }
- /**
- * \brief Array run advanced static non-blocking function for the interface 'default'.
- *
- *
- * Schedule to run the array of actions on the array of engines, and return immediately.
- * The length of interface_actions must match the size of engarray.
- * The status of the run can be checked either by ::max_wait or ::max_nowait;
- * note that one of these *must* be called, so that associated memory can be released.
- *
- * \param [in] engarray The array of devices to use.
- * \param [in] interface_actions The array of actions to run.
- * \return A handle on the execution status of the actions, or NULL in case of error.
- */
- max_run_t *StreamFMA_run_array_nonblock(max_engarray_t *engarray, StreamFMA_actions_t *interface_actions[])
- {
- max_file_t *maxfile = max_engarray_get_max_file(engarray, 0);
- int i;
- max_actarray_t *actarray = max_actarray_init(maxfile, engarray->size);
- if (actarray == NULL) return NULL;
- max_actions_t **arr_actions = malloc(engarray->size * sizeof(max_actions_t*));
- for ( i = 0 ; i < actarray->size; i++ ) {
- max_actions_t *actions = StreamFMA_convert_internal(maxfile, interface_actions[i], 1, NULL, NULL);
- if (actions == NULL) return NULL;
- arr_actions[i] = actions;
- max_set_action(actarray, i, actions);
- }
- max_run_t *run = max_run_array_nonblock(engarray, actarray);
- for ( i = 0 ; i < actarray->size ; i++ ) { max_actions_free(arr_actions[i]); }
- max_actarray_free(actarray);
- free(arr_actions);
- return run;
- }
- /**
- * \brief Converts a static-interface action struct into a dynamic-interface max_actions_t struct.
- *
- * Note that this is an internal utility function used by other functions in the static interface.
- *
- * \param [in] maxfile The maxfile to use.
- * \param [in] interface_actions The interface-specific actions to run.
- * \return The dynamic-interface actions to run, or NULL in case of error.
- */
- max_actions_t* StreamFMA_convert(max_file_t *maxfile, StreamFMA_actions_t *interface_actions)
- {
- return StreamFMA_convert_internal(maxfile, interface_actions, 0, NULL, NULL);
- }
- #undef CHECK_ERRORS_ST
- #undef CHECK_NULL
- #endif /* SLIC_USE_DEFINITIONS */
- #ifdef SLIC_DYNAMIC_CODE
- SLIC_MODE_START(default)
- SLIC_MODE_END(default)
- #endif /* SLIC_DYNAMIC_CODE */
- #ifdef SKIN_META_DATA
- PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PG1h
- eGZpbGUgZm9ybWF0LXZlcnNpb249IjIwMTIwMjAwIiBoZWFkZXI9IlN0cmVhbUZNQS5oIiBuYW1l
- PSJTdHJlYW1GTUEiPjxjb25zdGFudCBuYW1lPSJEWU5BTUlDX0NMT0NLU19FTkFCTEVEIiB0eXBl
- PSJsb25nIiB2YWx1ZT0iMCIvPjxjb25zdGFudCBuYW1lPSJQQ0lFX0FMSUdOTUVOVCIgdHlwZT0i
- bG9uZyIgdmFsdWU9IjE2Ii8+PGVuZ2luZW1vZGUgbmFtZT0iZGVmYXVsdCI+PGZ1bmN0aW9uIG5h
- bWU9IlN0cmVhbUZNQSIgcmV0dXJuLXZhbHVlPSJ2b2lkIj48c2NhbGFyIGRlc2M9IlRoZSBudW1i
- ZXIgb2YgdGlja3MgZm9yIHdoaWNoIGtlcm5lbCAmcXVvdDtTdHJlYW1GTUFLZXJuZWwmcXVvdDsg
- d2lsbCBydW4uIiBkaXJlY3Rpb249IklucHV0IiBuYW1lPSJ0aWNrc19TdHJlYW1GTUFLZXJuZWwi
- IHR5cGU9InVpbnQ2NF90Ii8+PGFycmF5IGRlc2M9IlN0cmVhbSAmcXVvdDtpbkFUMSZxdW90Oy4i
- IGRpcmVjdGlvbj0iSW5wdXQiIG5hbWU9Imluc3RyZWFtX2luQVQxIiBzaXplPSJpbnN0cmVhbV9z
- aXplX2luQVQxIiB0cmFuc3Bvc2U9ImZhbHNlIiB0eXBlPSJ2b2lkIi8+PHNjYWxhciBkZXNjPSJU
- aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGluc3RyZWFtX2luQVQxIGluIGJ5dGVzLiIgZGlyZWN0aW9u
- PSJJbnB1dCIgbmFtZT0iaW5zdHJlYW1fc2l6ZV9pbkFUMSIgdHlwZT0idWludDY0X3QiLz48YXJy
- YXkgZGVzYz0iU3RyZWFtICZxdW90O2luQlQxJnF1b3Q7LiIgZGlyZWN0aW9uPSJJbnB1dCIgbmFt
- ZT0iaW5zdHJlYW1faW5CVDEiIHNpemU9Imluc3RyZWFtX3NpemVfaW5CVDEiIHRyYW5zcG9zZT0i
- ZmFsc2UiIHR5cGU9InZvaWQiLz48c2NhbGFyIGRlc2M9IlRoZSBzaXplIG9mIHRoZSBzdHJlYW0g
- aW5zdHJlYW1faW5CVDEgaW4gYnl0ZXMuIiBkaXJlY3Rpb249IklucHV0IiBuYW1lPSJpbnN0cmVh
- bV9zaXplX2luQlQxIiB0eXBlPSJ1aW50NjRfdCIvPjxhcnJheSBkZXNjPSJTdHJlYW0gJnF1b3Q7
- b0RhdGFUMyZxdW90Oy4iIGRpcmVjdGlvbj0iT3V0cHV0IiBuYW1lPSJvdXRzdHJlYW1fb0RhdGFU
- MyIgc2l6ZT0ib3V0c3RyZWFtX3NpemVfb0RhdGFUMyIgdHJhbnNwb3NlPSJmYWxzZSIgdHlwZT0i
- dm9pZCIvPjxzY2FsYXIgZGVzYz0iVGhlIHNpemUgb2YgdGhlIHN0cmVhbSBvdXRzdHJlYW1fb0Rh
- dGFUMyBpbiBieXRlcy4iIGRpcmVjdGlvbj0iSW5wdXQiIG5hbWU9Im91dHN0cmVhbV9zaXplX29E
- YXRhVDMiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9s
- IGZvciAmcXVvdDtpbkFUMiZxdW90OyBzdHJlYW06IGJhc2UgYWRkcmVzcywgaW4gYnl0ZXMuIiBk
- aXJlY3Rpb249IklucHV0IiBuYW1lPSJsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBf
- aW5BVDIiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9s
- IGZvciAmcXVvdDtpbkFUMiZxdW90OyBzdHJlYW06IGFycmF5IHNpemUsIGluIGJ5dGVzLiIgZGly
- ZWN0aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9p
- bkFUMiIgdHlwZT0idWludDY0X3QiLz48c2NhbGFyIGRlc2M9IkxpbmVhciBMTWVtIGNvbnRyb2wg
- Zm9yICZxdW90O2luQVQzJnF1b3Q7IHN0cmVhbTogYmFzZSBhZGRyZXNzLCBpbiBieXRlcy4iIGRp
- cmVjdGlvbj0iSW5wdXQiIG5hbWU9ImxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9p
- bkFUMyIgdHlwZT0idWludDY0X3QiLz48c2NhbGFyIGRlc2M9IkxpbmVhciBMTWVtIGNvbnRyb2wg
- Zm9yICZxdW90O2luQVQzJnF1b3Q7IHN0cmVhbTogYXJyYXkgc2l6ZSwgaW4gYnl0ZXMuIiBkaXJl
- Y3Rpb249IklucHV0IiBuYW1lPSJsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2lu
- QVQzIiB0eXBlPSJ1aW50NjRfdCIvPjxzY2FsYXIgZGVzYz0iTGluZWFyIExNZW0gY29udHJvbCBm
- b3IgJnF1b3Q7aW5CVDImcXVvdDsgc3RyZWFtOiBiYXNlIGFkZHJlc3MsIGluIGJ5dGVzLiIgZGly
- ZWN0aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2lu
- QlQyIiB0eXBlPSJ1aW50NjRfdCIvPjxzY2FsYXIgZGVzYz0iTGluZWFyIExNZW0gY29udHJvbCBm
- b3IgJnF1b3Q7aW5CVDImcXVvdDsgc3RyZWFtOiBhcnJheSBzaXplLCBpbiBieXRlcy4iIGRpcmVj
- dGlvbj0iSW5wdXQiIG5hbWU9ImxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5C
- VDIiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9sIGZv
- ciAmcXVvdDtpbkJUMyZxdW90OyBzdHJlYW06IGJhc2UgYWRkcmVzcywgaW4gYnl0ZXMuIiBkaXJl
- Y3Rpb249IklucHV0IiBuYW1lPSJsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5C
- VDMiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9sIGZv
- ciAmcXVvdDtpbkJUMyZxdW90OyBzdHJlYW06IGFycmF5IHNpemUsIGluIGJ5dGVzLiIgZGlyZWN0
- aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJU
- MyIgdHlwZT0idWludDY0X3QiLz48c2NhbGFyIGRlc2M9IkxpbmVhciBMTWVtIGNvbnRyb2wgZm9y
- ICZxdW90O29EYXRhVDEmcXVvdDsgc3RyZWFtOiBiYXNlIGFkZHJlc3MsIGluIGJ5dGVzLiIgZGly
- ZWN0aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29E
- YXRhVDEiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250cm9s
- IGZvciAmcXVvdDtvRGF0YVQxJnF1b3Q7IHN0cmVhbTogYXJyYXkgc2l6ZSwgaW4gYnl0ZXMuIiBk
- aXJlY3Rpb249IklucHV0IiBuYW1lPSJsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8w
- X29EYXRhVDEiIHR5cGU9InVpbnQ2NF90Ii8+PHNjYWxhciBkZXNjPSJMaW5lYXIgTE1lbSBjb250
- cm9sIGZvciAmcXVvdDtvRGF0YVQyJnF1b3Q7IHN0cmVhbTogYmFzZSBhZGRyZXNzLCBpbiBieXRl
- cy4iIGRpcmVjdGlvbj0iSW5wdXQiIG5hbWU9ImxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVy
- UHJvMF9vRGF0YVQyIiB0eXBlPSJ1aW50NjRfdCIvPjxzY2FsYXIgZGVzYz0iTGluZWFyIExNZW0g
- Y29udHJvbCBmb3IgJnF1b3Q7b0RhdGFUMiZxdW90OyBzdHJlYW06IGFycmF5IHNpemUsIGluIGJ5
- dGVzLiIgZGlyZWN0aW9uPSJJbnB1dCIgbmFtZT0ibG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9s
- bGVyUHJvMF9vRGF0YVQyIiB0eXBlPSJ1aW50NjRfdCIvPjwvZnVuY3Rpb24+PC9lbmdpbmVtb2Rl
- PjwvbWF4ZmlsZT4=
- #endif /* SKIN_META_DATA */
- #ifdef SLIC_B64_DEFINITIONS
- I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxwdGhyZWFkLmg+
- CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8c3RkbGli
- Lmg+CnN0YXRpYyBtYXhfZmlsZV90ICpzdG9yZWRfbWF4ZmlsZSA9IE5VTEw7CnN0YXRpYyBtYXhf
- ZW5naW5lX3QgKnN0b3JlZF9lbmdpbmUgPSBOVUxMOwpzdGF0aWMgY2hhciAqc3RvcmVkX2Vycm9y
- ID0gTlVMTDsKc3RhdGljIGludCBzdG9yZWRfaGFzX2Vycm9yID0gMDsKc3RhdGljIHB0aHJlYWRf
- b25jZV90IHNsaWNfYnNfaXNfaW5pdGlhbGlzZWQgPSBQVEhSRUFEX09OQ0VfSU5JVDsKCnN0YXRp
- YyB2b2lkIHNldF9lcnJvcihjb25zdCBjaGFyICplcnJvcl9zdHIpCnsKCXN0b3JlZF9oYXNfZXJy
- b3IgPSAxOyAKCWlmKHN0b3JlZF9lcnJvciA9PSBOVUxMKSB7CgkJc3RvcmVkX2Vycm9yID0gc3Ry
- ZHVwKGVycm9yX3N0cik7Cgl9IGVsc2UgewoJCWNoYXIgKm5lcnIgPSBtYWxsb2Moc3RybGVuKHN0
- b3JlZF9lcnJvcikgKyBzdHJsZW4oZXJyb3Jfc3RyKSArIDIpOwoJCXNwcmludGYobmVyciwgIiVz
- XG4lcyIsIHN0b3JlZF9lcnJvciwgZXJyb3Jfc3RyKTsKCQlmcmVlKHN0b3JlZF9lcnJvcik7CgkJ
- c3RvcmVkX2Vycm9yID0gbmVycjsKCX0KfQpzdGF0aWMgdm9pZCBzZXRfZXJyb3JfYW5kX2ZyZWUo
- Y2hhciAqZXJyb3Jfc3RyKXsKCXNldF9lcnJvcihlcnJvcl9zdHIpOwoJZnJlZShlcnJvcl9zdHIp
- Owp9CmludCBTdHJlYW1GTUFfaGFzX2Vycm9ycyh2b2lkKQp7CXJldHVybiBzdG9yZWRfaGFzX2Vy
- cm9yOyB9CmNvbnN0IGNoYXIqIFN0cmVhbUZNQV9nZXRfZXJyb3JzKHZvaWQpCnsJcmV0dXJuIHN0
- b3JlZF9lcnJvcjsgfQp2b2lkIFN0cmVhbUZNQV9jbGVhcl9lcnJvcnModm9pZCkKewoJZnJlZShz
- dG9yZWRfZXJyb3IpOwoJc3RvcmVkX2Vycm9yID0gTlVMTDsKCXN0b3JlZF9oYXNfZXJyb3IgPSAw
- Owp9CgpzdGF0aWMgY2hhciBTdHJlYW1GTUFfdXNlX3NpbXVsYXRpb25bMTZdOwpzdGF0aWMgdm9p
- ZCBTdHJlYW1GTUFfZGVmX3VzZV9zaW11bGF0aW9uKHZvaWQpCnsKCWxvbmcgcGlkID0gKChsb25n
- KSBnZXRwaWQoKSkgJSAxMDAwMDA7CglzbnByaW50ZihTdHJlYW1GTUFfdXNlX3NpbXVsYXRpb24s
- IDE2LCAiU3RyZWFtRk1fJTA1bGRfIiwgcGlkKTsKfQpzdGF0aWMgY29uc3QgY2hhciAqU3RyZWFt
- Rk1BX2NoZWNrX3VzZV9zaW11bGF0aW9uKHZvaWQpCnsKCVN0cmVhbUZNQV9kZWZfdXNlX3NpbXVs
- YXRpb24oKTsKCWNvbnN0IGNoYXIgKnVzZV9zaW0gPSBtYXhfY29uZmlnX2dldF9zdHJpbmcoTUFY
- X0NPTkZJR19VU0VfU0lNVUxBVElPTik7CglpZiAodXNlX3NpbSA9PSBOVUxMKSB7CgkJdXNlX3Np
- bSA9IFN0cmVhbUZNQV91c2Vfc2ltdWxhdGlvbjsKCQltYXhfY29uZmlnX3NldF9zdHJpbmcoTUFY
- X0NPTkZJR19VU0VfU0lNVUxBVElPTiwgdXNlX3NpbSk7Cgl9CglyZXR1cm4gdXNlX3NpbTsKfQoK
- c3RhdGljIGludCBTdHJlYW1GTUFfc2ltdWxhdGlvbl9sYXVuY2ggPSAwOwppbnQgU3RyZWFtRk1B
- X3NpbXVsYXRvcl9zdGFydCh2b2lkKQp7CglpbnQgcmV0dmFsID0gMDsKCWNvbnN0IGNoYXIgKnVz
- ZV9zaW0gPSBTdHJlYW1GTUFfY2hlY2tfdXNlX3NpbXVsYXRpb24oKTsKCWNoYXIgYnVmZlsxMDI0
- XTsKCXNucHJpbnRmKGJ1ZmYsIDEwMjQsICJQQVRIPXNpbXV0aWxzOiRQQVRIIG1heGNvbXBpbGVy
- c2ltIC1kIDEgLW4gJXMgLWMgTUFYNUMgLVMgc2ltdXRpbHMgcmVzdGFydCIsIHVzZV9zaW0pOwoJ
- RklMRSAqcGlwZV9mcCA9IHBvcGVuKGJ1ZmYsICJyIik7CglpZiAocGlwZV9mcCA9PSBOVUxMKSB7
- CgkJc3RybmNhdChidWZmLCAiIDogZmFpbGVkIHRvIGV4ZWN1dGUuIiwgKDEwMjQgLSBzdHJsZW4o
- YnVmZikpKTsKCQlzZXRfZXJyb3IoYnVmZik7CgkJcmV0dXJuIC0xOwoJfQoJd2hpbGUgKGZnZXRz
- KGJ1ZmYsIDEwMjQsIHBpcGVfZnApICE9IE5VTEwpIHsKCQkvKiBVbmNvbW1lbnQgdGhpcyB0byBn
- ZXQgc2ltdWxhdG9yIGNvbW1hbmQgb3V0cHV0ICovCgkJLyogZnByaW50ZihzdGRlcnIsIGJ1ZmYp
- OyAqLwoJCWlmIChzdHJzdHIoYnVmZiwgIkVycm9yIikpIHsKCQkJc2V0X2Vycm9yKGJ1ZmYpOwoJ
- CQlyZXR2YWwgPSAtMTsKCQl9Cgl9CglwY2xvc2UocGlwZV9mcCk7CglyZXR1cm4gcmV0dmFsOwp9
- CgppbnQgU3RyZWFtRk1BX3NpbXVsYXRvcl9zdG9wKHZvaWQpCnsKCWNvbnN0IGNoYXIgKnVzZV9z
- aW0gPSBTdHJlYW1GTUFfY2hlY2tfdXNlX3NpbXVsYXRpb24oKTsKCWNoYXIgYnVmZlsxMDI0XTsK
- CXNucHJpbnRmKGJ1ZmYsIDEwMjQsICJQQVRIPXNpbXV0aWxzOiRQQVRIIG1heGNvbXBpbGVyc2lt
- IC1kIDEgLW4gJXMgLWMgTUFYNUMgLVMgc2ltdXRpbHMgc3RvcCIsIHVzZV9zaW0pOwoJRklMRSAq
- cGlwZV9mcCA9IHBvcGVuKGJ1ZmYsICJyIik7CglpZiAocGlwZV9mcCA9PSBOVUxMKSB7CgkJc3Ry
- bmNhdChidWZmLCAiIDogZmFpbGVkIHRvIGV4ZWN1dGUuIiwgKDEwMjQgLSBzdHJsZW4oYnVmZikp
- KTsKCQlzZXRfZXJyb3IoYnVmZik7CgkJcmV0dXJuIC0xOwoJfQoJd2hpbGUgKGZnZXRzKGJ1ZmYs
- IDEwMjQsIHBpcGVfZnApICE9IE5VTEwpIHsKCQkvKiBVbmNvbW1lbnQgdGhpcyB0byBnZXQgc2lt
- dWxhdG9yIGNvbW1hbmQgb3V0cHV0ICovCgkJLyogZnByaW50ZihzdGRlcnIsIGJ1ZmYpOyAqLwoJ
- CTsKCX0KCXBjbG9zZShwaXBlX2ZwKTsKCXJldHVybiAwOwp9CgpzdGF0aWMgdm9pZCBTdHJlYW1G
- TUFfc3RhdGljX2luaXQodm9pZCkgCnsKCXN0b3JlZF9tYXhmaWxlID0gU3RyZWFtRk1BX2luaXQo
- KTsKCWlmIChzdG9yZWRfbWF4ZmlsZSA9PSBOVUxMIHx8ICFtYXhfb2soc3RvcmVkX21heGZpbGUt
- PmVycm9ycykpIHsKCQlzdG9yZWRfbWF4ZmlsZSA9IE5VTEw7CgkJaWYobWF4X2NvbmZpZ19nZXRf
- Ym9vbChNQVhfQ09ORklHX1NUQVRJQ19JTlRFUkZBQ0VfQUJPUlRfT05fRVJST1IpKSBhYm9ydCgp
- OwoJCWVsc2UgeyBzZXRfZXJyb3IoIlVuYWJsZSB0byBsb2FkIG1heGZpbGUiKTsgcmV0dXJuOyB9
- Cgl9CglpZighbWF4X29rKG1heF9nbG9iYWxfZXJyb3JzKCkpKSB7CgkJc2V0X2Vycm9yX2FuZF9m
- cmVlKG1heF9lcnJvcnNfdHJhY2UobWF4X2dsb2JhbF9lcnJvcnMoKSkpOwoJCXJldHVybjsKCX0K
- CWlmKCFtYXhfY29uZmlnX2dldF9ib29sKE1BWF9DT05GSUdfU1RBVElDX0lOVEVSRkFDRV9BQk9S
- VF9PTl9FUlJPUikpCgkJbWF4X2Vycm9yc19tb2RlKHN0b3JlZF9tYXhmaWxlLT5lcnJvcnMsIDAp
- OwoJdGltZV90IHRpbWVvdXRfcHJldmlvdXMgPSBtYXhfbG9hZF90aW1lb3V0KHN0b3JlZF9tYXhm
- aWxlLCAzMCk7Cgljb25zdCBjaGFyICp1c2Vfc2ltID0gU3RyZWFtRk1BX2NoZWNrX3VzZV9zaW11
- bGF0aW9uKCk7CglpZiAobWF4X3BpbmdfZGFlbW9uKHN0b3JlZF9tYXhmaWxlLCB1c2Vfc2ltKSA9
- PSAwKSB7CgkJaW50IHNpbV9zdGF0ID0gU3RyZWFtRk1BX3NpbXVsYXRvcl9zdGFydCgpOwoJCWlm
- ICgoc2ltX3N0YXQgPT0gMCkgJiYgKG1heF9waW5nX2RhZW1vbihzdG9yZWRfbWF4ZmlsZSwgdXNl
- X3NpbSkgPT0gMSkpIHsKCQkJU3RyZWFtRk1BX3NpbXVsYXRpb25fbGF1bmNoID0gMTsKCQl9IGVs
- c2UgewoJCQlzZXRfZXJyb3IoIkVycm9yOiBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcg
- dG8gc3RhcnQgdGhlIHNpbXVsYXRpb24gaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGljYWxseS4iKTsK
- CQkJc2V0X2Vycm9yKCJFcnJvcjogQ2hlY2sgdGhhdCAndXNlX3NpbXVsYXRpb249PHNpbXVsYXRv
- cl9uYW1lPicgaXMgc2V0IGNvcnJlY3RseSBpbiB5b3VyIFNMaUMgY29uZmlndXJhdGlvbiIpOwoJ
- CQlzZXRfZXJyb3IoIkVycm9yOiBhbmQgdGhhdCB0aGUgYXNzb2NpYXRlZCBzaW11bGF0ZWQgc3lz
- dGVtIGRhZW1vbiBpcyBydW5uaW5nLiIpOwoJCQltYXhfZmlsZV9mcmVlKHN0b3JlZF9tYXhmaWxl
- KTsKCQkJc3RvcmVkX21heGZpbGUgPSBOVUxMOwoJCQlyZXR1cm47CgkJfQoJfQoJc3RvcmVkX2Vu
- Z2luZSA9IG1heF9sb2FkKHN0b3JlZF9tYXhmaWxlLCAiKiIpOwoJaWYgKCFtYXhfb2soc3RvcmVk
- X21heGZpbGUtPmVycm9ycykpIHsKCQlpZihtYXhfY29uZmlnX2dldF9ib29sKE1BWF9DT05GSUdf
- U1RBVElDX0lOVEVSRkFDRV9BQk9SVF9PTl9FUlJPUikpIHsKCQkJZnByaW50ZihzdGRlcnIsICJc
- blVuYWJsZSB0byBsb2FkIGVuZ2luZTogYWJvcnRpbmcgbm93LlxuXG4iKTsKCQkJZmZsdXNoKHN0
- ZGVycik7CgkJCWFib3J0KCk7CgkJfSBlbHNlIHsKCQkJc2V0X2Vycm9yX2FuZF9mcmVlKG1heF9l
- cnJvcnNfdHJhY2Uoc3RvcmVkX21heGZpbGUtPmVycm9ycykpOwoJCQltYXhfZmlsZV9mcmVlKHN0
- b3JlZF9tYXhmaWxlKTsKCQkJc3RvcmVkX21heGZpbGUgPSBOVUxMOwoJCQlyZXR1cm47CgkJfSAK
- CX0gCgltYXhfbG9hZF90aW1lb3V0KHN0b3JlZF9tYXhmaWxlLCB0aW1lb3V0X3ByZXZpb3VzKTsK
- fQp2b2lkIFN0cmVhbUZNQV9mcmVlKHZvaWQpCnsKCWlmIChzdG9yZWRfZW5naW5lICE9IE5VTEwp
- IHsKCQltYXhfdW5sb2FkKHN0b3JlZF9lbmdpbmUpOwoJCXN0b3JlZF9lbmdpbmUgPSBOVUxMOwoJ
- fQoJaWYgKHN0b3JlZF9tYXhmaWxlICE9IE5VTEwpIHsKCQltYXhfZmlsZV9mcmVlKHN0b3JlZF9t
- YXhmaWxlKTsKCQlzdG9yZWRfbWF4ZmlsZSA9IE5VTEw7Cgl9CglpZiAoc3RvcmVkX2Vycm9yICE9
- IE5VTEwpIHsKCQlmcmVlKHN0b3JlZF9lcnJvcik7CgkJc3RvcmVkX2Vycm9yID0gTlVMTDsKCX0K
- CWlmIChTdHJlYW1GTUFfc2ltdWxhdGlvbl9sYXVuY2ggPT0gMSkgewoJCWludCBzaW1fc3RhdCA9
- IFN0cmVhbUZNQV9zaW11bGF0b3Jfc3RvcCgpOwoJCWlmIChzaW1fc3RhdCAhPSAwICkgewoJCQlm
- cHJpbnRmKHN0ZGVyciwgIkVycm9yIHN0b3BwaW5nIHNpbXVsYXRvci4iKTsKCQl9CgkJU3RyZWFt
- Rk1BX3NpbXVsYXRpb25fbGF1bmNoID0gMDsKCX0KfQoKc3RhdGljIGludCBTdHJlYW1GTUFfZ2V0
- X3BjaWVfYWxpZ25tZW50KHZvaWQpCnsKI2lmZGVmIFN0cmVhbUZNQV9QQ0lFX0FMSUdOTUVOVAoJ
- cmV0dXJuICgoU3RyZWFtRk1BX1BDSUVfQUxJR05NRU5UIDwgMSkgPyAxNiA6IFN0cmVhbUZNQV9Q
- Q0lFX0FMSUdOTUVOVCk7CiNlbHNlCglyZXR1cm4gMTY7CiNlbmRpZgp9CgpzdGF0aWMgaW50IFN0
- cmVhbUZNQV9jaGVja19hbGlnbmVkKGNvbnN0IHZvaWQgKmRhdGEpCnsKCXVpbnRwdHJfdCBwb2lu
- dGVyID0gKHVpbnRwdHJfdCkgZGF0YTsKCWludCBhbGlnbm1lbnQgPSBTdHJlYW1GTUFfZ2V0X3Bj
- aWVfYWxpZ25tZW50KCk7CglyZXR1cm4gKHBvaW50ZXIgJSBhbGlnbm1lbnQpID8gMSA6IDA7Cn0K
- CnN0YXRpYyB2b2lkICpTdHJlYW1GTUFfbWFsbG9jX2FsaWduZWQoY29uc3Qgc2l6ZV90IHNpemUp
- CnsKCXZvaWQgKnB0cjsKCWludCBhbGlnbm1lbnQgPSBTdHJlYW1GTUFfZ2V0X3BjaWVfYWxpZ25t
- ZW50KCk7Cglwb3NpeF9tZW1hbGlnbigmcHRyLCBhbGlnbm1lbnQsIHNpemUpOwoJcmV0dXJuIHB0
- cjsKfQoKCgovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
- LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
- LS0tLS0gSW50ZXJmYWNlIGRlZmF1bHQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwov
- Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
- LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKCgojZGVmaW5lIENIRUNLX0VSUk9SU19TVChTVCwgUkVU
- KSBpZighbWF4X29rKFNULT5lcnJvcnMpKSB7IGlmKG1heF9jb25maWdfZ2V0X2Jvb2woTUFYX0NP
- TkZJR19TVEFUSUNfSU5URVJGQUNFX0FCT1JUX09OX0VSUk9SKSkgeyBmcHJpbnRmKHN0ZGVyciwg
- IiVzXG4iLCBtYXhfZXJyb3JzX3RyYWNlKFNULT5lcnJvcnMpKTsgYWJvcnQoKTsgfSBzZXRfZXJy
- b3JfYW5kX2ZyZWUobWF4X2Vycm9yc190cmFjZShTVC0+ZXJyb3JzKSk7IHJldHVybiBSRVQ7IH0g
- CiNkZWZpbmUgQ0hFQ0tfTlVMTChWQUxVRSwgTUVTU0FHRSwgUkVUKSBpZihWQUxVRSA9PSBOVUxM
- KSB7IGlmIChtYXhfY29uZmlnX2dldF9ib29sKE1BWF9DT05GSUdfU1RBVElDX0lOVEVSRkFDRV9B
- Qk9SVF9PTl9FUlJPUikpIHsgZnByaW50ZihzdGRlcnIsICIlc1xuJXNcbiIsIChzdG9yZWRfZXJy
- b3IgPT0gTlVMTCkgPyAiIiA6IHN0b3JlZF9lcnJvciwgTUVTU0FHRSk7IGFib3J0KCk7IH0gc2V0
- X2Vycm9yKE1FU1NBR0UpOyByZXR1cm4gUkVUOyB9CgogCnR5cGVkZWYgc3RydWN0IFN0cmVhbUZN
- QV9jYWxsYmFja19zdHJlYW0gewoJdWludDhfdCAqdXNlcl9wdHI7Cgl1aW50OF90ICphbGlnbmVk
- X3B0cjsKCXNpemVfdCAgIHNpemU7CglpbnQgICAgICBpc19vdXRwdXQ7Cn0gU3RyZWFtRk1BX2Nh
- bGxiYWNrX3N0cmVhbV90OwoKdHlwZWRlZiBzdHJ1Y3QgU3RyZWFtRk1BX2NhbGxiYWNrX2RhdGEg
- ewoJU3RyZWFtRk1BX2NhbGxiYWNrX3N0cmVhbV90IHN0cmVhbVszXTsgCglpbnQgY291bnQ7Cglp
- bnQgbWF4X2NvdW50Owp9IFN0cmVhbUZNQV9jYWxsYmFja19kYXRhX3Q7CgpzdGF0aWMgdm9pZCBT
- dHJlYW1GTUFfY2FsbGJhY2tfaW50ZXJuYWwodm9pZCAqY2JfZGF0YSkKewoJU3RyZWFtRk1BX2Nh
- bGxiYWNrX2RhdGFfdCAqZGF0YSA9IChTdHJlYW1GTUFfY2FsbGJhY2tfZGF0YV90KikgY2JfZGF0
- YTsKCWZvciAoaW50IGkgPSAwIDsgaSA8IGRhdGEtPmNvdW50IDsgaSsrICkgewoJCVN0cmVhbUZN
- QV9jYWxsYmFja19zdHJlYW1fdCAqcyA9ICZkYXRhLT5zdHJlYW1baV07CgkJaWYgKHMtPmlzX291
- dHB1dCAmJiAocy0+c2l6ZSA+IDApKSB7CgkJCW1lbWNweShzLT51c2VyX3B0ciwgcy0+YWxpZ25l
- ZF9wdHIsIHMtPnNpemUpOwoJCX0KCQlmcmVlKHMtPmFsaWduZWRfcHRyKTsKCX0KCWZyZWUoZGF0
- YSk7Cn0KCnN0YXRpYyBtYXhfYWN0aW9uc190KiBTdHJlYW1GTUFfY29udmVydF9pbnRlcm5hbCgK
- CW1heF9maWxlX3QgKm1heGZpbGUsCglTdHJlYW1GTUFfYWN0aW9uc190ICppbnRlcmZhY2VfYWN0
- aW9ucywKCWludCAgaXNfaW50ZXJuYWxfY2FsbCwKCXZvaWQgKCoqY2FsbGJhY2tfZnVuYykodm9p
- ZCopLAoJdm9pZCAqKmNhbGxiYWNrX2RhdGEpCnsKCW1heF9hY3Rpb25zX3QgKmFjdGlvbnMgPSBt
- YXhfYWN0aW9uc19pbml0KG1heGZpbGUsIE5VTEwpOwoJaWYoYWN0aW9ucyA9PSBOVUxMKSByZXR1
- cm4gTlVMTDsKCiNkZWZpbmUgQ0hFQ0tfRVJST1JTIGlmKCFtYXhfb2soYWN0aW9ucy0+ZXJyb3Jz
- KSkgeyBzZXRfZXJyb3JfYW5kX2ZyZWUobWF4X2Vycm9yc190cmFjZShhY3Rpb25zLT5lcnJvcnMp
- KTsgcmV0dXJuIE5VTEw7IH0gCgoJU3RyZWFtRk1BX2NhbGxiYWNrX2RhdGFfdCAqY2JfZGF0YSA9
- IE5VTEw7CglpbnQgdXNlX2NhbGxiYWNrID0gKGNhbGxiYWNrX2Z1bmMgIT0gTlVMTCkgJiYgKGNh
- bGxiYWNrX2RhdGEgIT0gTlVMTCk7CglpZiAodXNlX2NhbGxiYWNrKSB7CgkJY2JfZGF0YSA9IG1h
- bGxvYyhzaXplb2YoU3RyZWFtRk1BX2NhbGxiYWNrX2RhdGFfdCkpOwoJCWlmIChjYl9kYXRhID09
- IE5VTEwpIHsKCQkJZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZv
- ciBzdHJlYW0gY2FsbGJhY2sgZGF0YSBpbiBmdW5jdGlvbiBTdHJlYW1GTUFfY29udmVydF9pbnRl
- cm5hbFxuIik7CgkJCXJldHVybiBOVUxMOwoJCX0KCQljYl9kYXRhLT5tYXhfY291bnQgPSAzOwoJ
- CWNiX2RhdGEtPmNvdW50ICAgICA9IDA7CgkJKmNhbGxiYWNrX2RhdGEgICAgID0gY2JfZGF0YTsK
- CQkqY2FsbGJhY2tfZnVuYyAgICAgPSAmU3RyZWFtRk1BX2NhbGxiYWNrX2ludGVybmFsOwoJfQoK
- CS8qIGNvZGUgZm9yIHNjYWxhciBTdHJlYW1GTUFLZXJuZWwucnVuX2N5Y2xlX2NvdW50ICovCgl1
- aW50NjRfdCB0aWNrc19TdHJlYW1GTUFLZXJuZWwgPSBpbnRlcmZhY2VfYWN0aW9ucy0+dGlja3Nf
- U3RyZWFtRk1BS2VybmVsOwoJbWF4X3NldF90aWNrcyhhY3Rpb25zLCAiU3RyZWFtRk1BS2VybmVs
- IiwgdGlja3NfU3RyZWFtRk1BS2VybmVsKTsKCUNIRUNLX0VSUk9SUzsKCS8qIGVuZCBvZiBjb2Rl
- IGZvciBzY2FsYXIgU3RyZWFtRk1BS2VybmVsLnJ1bl9jeWNsZV9jb3VudCovCgkKCS8qIGNvZGUg
- Zm9yIHN0cmVhbSBpbkFUMSAqLwoJc2l6ZV90IGluc3RyZWFtX3NpemVfaW5BVDEgPSBpbnRlcmZh
- Y2VfYWN0aW9ucy0+aW5zdHJlYW1fc2l6ZV9pbkFUMTsKCWlmIChpbnN0cmVhbV9zaXplX2luQVQx
- ID4gMCkgewoJCWNvbnN0IHZvaWQgKnN0cmVhbV9wdHIgPSBpbnRlcmZhY2VfYWN0aW9ucy0+aW5z
- dHJlYW1faW5BVDE7CgkJaWYgKHVzZV9jYWxsYmFjayAmJiAoMSA9PSBTdHJlYW1GTUFfY2hlY2tf
- YWxpZ25lZChpbnRlcmZhY2VfYWN0aW9ucy0+aW5zdHJlYW1faW5BVDEpKSkgewoJCQl2b2lkICph
- bGlnbmVkX2luc3RyZWFtX2luQVQxID0gbWFsbG9jKGluc3RyZWFtX3NpemVfaW5BVDEpOwoJCQlp
- ZiAoYWxpZ25lZF9pbnN0cmVhbV9pbkFUMSA9PSBOVUxMKSB7CgkJCQltYXhfcmVwb3J0X2Vycm9y
- X3NsaWMoYWN0aW9ucy0+ZXJyb3JzLCBfX0ZJTEVfXywgX19MSU5FX18sIDUyNiwgIkZhaWxlZCB0
- byBhbGxvY2F0ZSBhbGlnbmVkIG1lbW9yeSBmb3Igc3RyZWFtICdpbkFUMSciKTsKCQkJCUNIRUNL
- X0VSUk9SUzsKCQkJfQoJCQkoJmNiX2RhdGEtPnN0cmVhbVtjYl9kYXRhLT5jb3VudF0pLT51c2Vy
- X3B0ciAgICA9ICh1aW50OF90KikgaW50ZXJmYWNlX2FjdGlvbnMtPmluc3RyZWFtX2luQVQxOwoJ
- CQkoJmNiX2RhdGEtPnN0cmVhbVtjYl9kYXRhLT5jb3VudF0pLT5hbGlnbmVkX3B0ciA9ICh1aW50
- OF90KikgYWxpZ25lZF9pbnN0cmVhbV9pbkFUMTsKCQkJKCZjYl9kYXRhLT5zdHJlYW1bY2JfZGF0
- YS0+Y291bnRdKS0+c2l6ZSAgICAgICAgPSBpbnN0cmVhbV9zaXplX2luQVQxOwoJCQkoJmNiX2Rh
- dGEtPnN0cmVhbVtjYl9kYXRhLT5jb3VudF0pLT5pc19vdXRwdXQgICA9IDA7CgkJCWNiX2RhdGEt
- PmNvdW50ICs9IDE7CgkJCW1lbWNweShhbGlnbmVkX2luc3RyZWFtX2luQVQxLCBpbnRlcmZhY2Vf
- YWN0aW9ucy0+aW5zdHJlYW1faW5BVDEsIGluc3RyZWFtX3NpemVfaW5BVDEpOwoJCQlzdHJlYW1f
- cHRyID0gYWxpZ25lZF9pbnN0cmVhbV9pbkFUMTsKCQl9CgkJbWF4X3F1ZXVlX2lucHV0KGFjdGlv
- bnMsICJpbkFUMSIsIHN0cmVhbV9wdHIsIGluc3RyZWFtX3NpemVfaW5BVDEpOwoJCUNIRUNLX0VS
- Uk9SUzsKCX0KCS8qIGVuZCBvZiBjb2RlIGZvciBzdHJlYW0gaW5BVDEgKi8KCQoJLyogY29kZSBm
- b3Igc3RyZWFtIGluQlQxICovCglzaXplX3QgaW5zdHJlYW1fc2l6ZV9pbkJUMSA9IGludGVyZmFj
- ZV9hY3Rpb25zLT5pbnN0cmVhbV9zaXplX2luQlQxOwoJaWYgKGluc3RyZWFtX3NpemVfaW5CVDEg
- PiAwKSB7CgkJY29uc3Qgdm9pZCAqc3RyZWFtX3B0ciA9IGludGVyZmFjZV9hY3Rpb25zLT5pbnN0
- cmVhbV9pbkJUMTsKCQlpZiAodXNlX2NhbGxiYWNrICYmICgxID09IFN0cmVhbUZNQV9jaGVja19h
- bGlnbmVkKGludGVyZmFjZV9hY3Rpb25zLT5pbnN0cmVhbV9pbkJUMSkpKSB7CgkJCXZvaWQgKmFs
- aWduZWRfaW5zdHJlYW1faW5CVDEgPSBtYWxsb2MoaW5zdHJlYW1fc2l6ZV9pbkJUMSk7CgkJCWlm
- IChhbGlnbmVkX2luc3RyZWFtX2luQlQxID09IE5VTEwpIHsKCQkJCW1heF9yZXBvcnRfZXJyb3Jf
- c2xpYyhhY3Rpb25zLT5lcnJvcnMsIF9fRklMRV9fLCBfX0xJTkVfXywgNTI2LCAiRmFpbGVkIHRv
- IGFsbG9jYXRlIGFsaWduZWQgbWVtb3J5IGZvciBzdHJlYW0gJ2luQlQxJyIpOwoJCQkJQ0hFQ0tf
- RVJST1JTOwoJCQl9CgkJCSgmY2JfZGF0YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50XSktPnVzZXJf
- cHRyICAgID0gKHVpbnQ4X3QqKSBpbnRlcmZhY2VfYWN0aW9ucy0+aW5zdHJlYW1faW5CVDE7CgkJ
- CSgmY2JfZGF0YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50XSktPmFsaWduZWRfcHRyID0gKHVpbnQ4
- X3QqKSBhbGlnbmVkX2luc3RyZWFtX2luQlQxOwoJCQkoJmNiX2RhdGEtPnN0cmVhbVtjYl9kYXRh
- LT5jb3VudF0pLT5zaXplICAgICAgICA9IGluc3RyZWFtX3NpemVfaW5CVDE7CgkJCSgmY2JfZGF0
- YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50XSktPmlzX291dHB1dCAgID0gMDsKCQkJY2JfZGF0YS0+
- Y291bnQgKz0gMTsKCQkJbWVtY3B5KGFsaWduZWRfaW5zdHJlYW1faW5CVDEsIGludGVyZmFjZV9h
- Y3Rpb25zLT5pbnN0cmVhbV9pbkJUMSwgaW5zdHJlYW1fc2l6ZV9pbkJUMSk7CgkJCXN0cmVhbV9w
- dHIgPSBhbGlnbmVkX2luc3RyZWFtX2luQlQxOwoJCX0KCQltYXhfcXVldWVfaW5wdXQoYWN0aW9u
- cywgImluQlQxIiwgc3RyZWFtX3B0ciwgaW5zdHJlYW1fc2l6ZV9pbkJUMSk7CgkJQ0hFQ0tfRVJS
- T1JTOwoJfQoJLyogZW5kIG9mIGNvZGUgZm9yIHN0cmVhbSBpbkJUMSAqLwoJCgkvKiBjb2RlIGZv
- ciBzdHJlYW0gb0RhdGFUMyAqLwoJc2l6ZV90IG91dHN0cmVhbV9zaXplX29EYXRhVDMgPSBpbnRl
- cmZhY2VfYWN0aW9ucy0+b3V0c3RyZWFtX3NpemVfb0RhdGFUMzsKCWlmIChvdXRzdHJlYW1fc2l6
- ZV9vRGF0YVQzID4gMCkgewoJCXZvaWQgKnN0cmVhbV9wdHIgPSBpbnRlcmZhY2VfYWN0aW9ucy0+
- b3V0c3RyZWFtX29EYXRhVDM7CgkJaWYgKHVzZV9jYWxsYmFjayAmJiAoMSA9PSBTdHJlYW1GTUFf
- Y2hlY2tfYWxpZ25lZChpbnRlcmZhY2VfYWN0aW9ucy0+b3V0c3RyZWFtX29EYXRhVDMpKSkgewoJ
- CQl2b2lkICphbGlnbmVkX291dHN0cmVhbV9vRGF0YVQzID0gbWFsbG9jKG91dHN0cmVhbV9zaXpl
- X29EYXRhVDMpOwoJCQlpZiAoYWxpZ25lZF9vdXRzdHJlYW1fb0RhdGFUMyA9PSBOVUxMKSB7CgkJ
- CQltYXhfcmVwb3J0X2Vycm9yX3NsaWMoYWN0aW9ucy0+ZXJyb3JzLCBfX0ZJTEVfXywgX19MSU5F
- X18sIDUyNiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBhbGlnbmVkIG1lbW9yeSBmb3Igc3RyZWFtICdv
- RGF0YVQzJyIpOwoJCQkJQ0hFQ0tfRVJST1JTOwoJCQl9CgkJCSgmY2JfZGF0YS0+c3RyZWFtW2Ni
- X2RhdGEtPmNvdW50XSktPnVzZXJfcHRyICAgID0gKHVpbnQ4X3QqKSBpbnRlcmZhY2VfYWN0aW9u
- cy0+b3V0c3RyZWFtX29EYXRhVDM7CgkJCSgmY2JfZGF0YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50
- XSktPmFsaWduZWRfcHRyID0gKHVpbnQ4X3QqKSBhbGlnbmVkX291dHN0cmVhbV9vRGF0YVQzOwoJ
- CQkoJmNiX2RhdGEtPnN0cmVhbVtjYl9kYXRhLT5jb3VudF0pLT5zaXplICAgICAgICA9IG91dHN0
- cmVhbV9zaXplX29EYXRhVDM7CgkJCSgmY2JfZGF0YS0+c3RyZWFtW2NiX2RhdGEtPmNvdW50XSkt
- PmlzX291dHB1dCAgID0gMTsKCQkJY2JfZGF0YS0+Y291bnQgKz0gMTsKCQkJc3RyZWFtX3B0ciA9
- IGFsaWduZWRfb3V0c3RyZWFtX29EYXRhVDM7CgkJfQoJCW1heF9xdWV1ZV9vdXRwdXQoYWN0aW9u
- cywgIm9EYXRhVDMiLCBzdHJlYW1fcHRyLCBvdXRzdHJlYW1fc2l6ZV9vRGF0YVQzKTsKCQlDSEVD
- S19FUlJPUlM7Cgl9CgkvKiBlbmQgb2YgY29kZSBmb3Igc3RyZWFtIG9EYXRhVDMgKi8KCQoJLyog
- Y29kZSBmb3IgbGluZWFyIG1lbW9yeS1zdHJlYW0gImluQVQyIiBpbiBtZW1vcnktY29udHJvbGxl
- ciAiTWVtb3J5Q29udHJvbGxlclBybzAiICovCglzaXplX3QgbG1lbV9hZGRyZXNzX01lbW9yeUNv
- bnRyb2xsZXJQcm8wX2luQVQyID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1fYWRkcmVzc19NZW1v
- cnlDb250cm9sbGVyUHJvMF9pbkFUMjsKCXNpemVfdCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRy
- b2xsZXJQcm8wX2luQVQyID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1fYXJyX3NpemVfTWVtb3J5
- Q29udHJvbGxlclBybzBfaW5BVDI7CglpbnQgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xs
- ZXJQcm8wX2luQVQyID0gbWF4X2dldF9idXJzdF9zaXplKG1heGZpbGUsICJNZW1vcnlDb250cm9s
- bGVyUHJvMCIpOwoJaWYgKCAobG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQy
- ICUgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyKSAhPSAwICkgewoJ
- CWZwcmludGYoc3Rkb3V0LCAiXG5TTGlDIEVycm9yOiAlczolZCA6IExNZW0gaW5BVDIgcGFyYW1l
- dGVyICdsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDInIGlzIHNldCB0byAl
- emQgYnl0ZXM7IGl0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAlZCBieXRlc1xuIiwgX19GSUxFX18s
- IF9fTElORV9fLCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDIsIGxtZW1f
- YnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMiApOwoJfQoJaWYgKCAobG1lbV9h
- cnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMiAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1v
- cnlDb250cm9sbGVyUHJvMF9pbkFUMikgIT0gMCApIHsKCQlmcHJpbnRmKHN0ZG91dCwgIlxuU0xp
- QyBFcnJvcjogJXM6JWQgOiBMTWVtIGluQVQyIHBhcmFtZXRlciAnbG1lbV9hcnJfc2l6ZV9NZW1v
- cnlDb250cm9sbGVyUHJvMF9pbkFUMicgaXMgc2V0IHRvICV6ZCBieXRlczsgaXQgbXVzdCBiZSBh
- IG11bHRpcGxlIG9mICVkIGJ5dGVzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIGxtZW1fYXJyX3Np
- emVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDIsIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250
- cm9sbGVyUHJvMF9pbkFUMiApOwoJfQoJaWYgKGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxl
- clBybzBfaW5BVDIgPiAwKSB7CgkJbWF4X21lbWN0bF9saW5lYXIoYWN0aW9ucywgIk1lbW9yeUNv
- bnRyb2xsZXJQcm8wIiwgImluQVQyIiwgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8w
- X2luQVQyLCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyKTsKCX0gZWxz
- ZSB7CgkJbWF4X2lnbm9yZV9tZW1jdGwoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiwg
- ImluQVQyIik7Cgl9CglDSEVDS19FUlJPUlM7CgkvKiBlbmQgb2YgY29kZSBmb3IgbGluZWFyIG1l
- bW9yeS1zdHJlYW0gImluQVQyIiBpbiBtZW1vcnktY29udHJvbGxlciAiTWVtb3J5Q29udHJvbGxl
- clBybzAiICovCgkKCS8qIGNvZGUgZm9yIGxpbmVhciBtZW1vcnktc3RyZWFtICJpbkFUMyIgaW4g
- bWVtb3J5LWNvbnRyb2xsZXIgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiAqLwoJc2l6ZV90IGxtZW1f
- YWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMyA9IGludGVyZmFjZV9hY3Rpb25zLT5s
- bWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDM7CglzaXplX3QgbG1lbV9hcnJf
- c2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMyA9IGludGVyZmFjZV9hY3Rpb25zLT5sbWVt
- X2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzOwoJaW50IGxtZW1fYnVyc3Rfc2l6
- ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMyA9IG1heF9nZXRfYnVyc3Rfc2l6ZShtYXhmaWxl
- LCAiTWVtb3J5Q29udHJvbGxlclBybzAiKTsKCWlmICggKGxtZW1fYWRkcmVzc19NZW1vcnlDb250
- cm9sbGVyUHJvMF9pbkFUMyAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9p
- bkFUMykgIT0gMCApIHsKCQlmcHJpbnRmKHN0ZG91dCwgIlxuU0xpQyBFcnJvcjogJXM6JWQgOiBM
- TWVtIGluQVQzIHBhcmFtZXRlciAnbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2lu
- QVQzJyBpcyBzZXQgdG8gJXpkIGJ5dGVzOyBpdCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJWQgYnl0
- ZXNcbiIsIF9fRklMRV9fLCBfX0xJTkVfXywgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQ
- cm8wX2luQVQzLCBsbWVtX2J1cnN0X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMgKTsK
- CX0KCWlmICggKGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMgJSBsbWVt
- X2J1cnN0X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMpICE9IDAgKSB7CgkJZnByaW50
- ZihzdGRvdXQsICJcblNMaUMgRXJyb3I6ICVzOiVkIDogTE1lbSBpbkFUMyBwYXJhbWV0ZXIgJ2xt
- ZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMnIGlzIHNldCB0byAlemQgYnl0
- ZXM7IGl0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAlZCBieXRlc1xuIiwgX19GSUxFX18sIF9fTElO
- RV9fLCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzLCBsbWVtX2J1cnN0
- X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMgKTsKCX0KCWlmIChsbWVtX2Fycl9zaXpl
- X01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzID4gMCkgewoJCW1heF9tZW1jdGxfbGluZWFyKGFj
- dGlvbnMsICJNZW1vcnlDb250cm9sbGVyUHJvMCIsICJpbkFUMyIsIGxtZW1fYWRkcmVzc19NZW1v
- cnlDb250cm9sbGVyUHJvMF9pbkFUMywgbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
- MF9pbkFUMyk7Cgl9IGVsc2UgewoJCW1heF9pZ25vcmVfbWVtY3RsKGFjdGlvbnMsICJNZW1vcnlD
- b250cm9sbGVyUHJvMCIsICJpbkFUMyIpOwoJfQoJQ0hFQ0tfRVJST1JTOwoJLyogZW5kIG9mIGNv
- ZGUgZm9yIGxpbmVhciBtZW1vcnktc3RyZWFtICJpbkFUMyIgaW4gbWVtb3J5LWNvbnRyb2xsZXIg
- Ik1lbW9yeUNvbnRyb2xsZXJQcm8wIiAqLwoJCgkvKiBjb2RlIGZvciBsaW5lYXIgbWVtb3J5LXN0
- cmVhbSAiaW5CVDIiIGluIG1lbW9yeS1jb250cm9sbGVyICJNZW1vcnlDb250cm9sbGVyUHJvMCIg
- Ki8KCXNpemVfdCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIgPSBpbnRl
- cmZhY2VfYWN0aW9ucy0+bG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyOwoJ
- c2l6ZV90IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIgPSBpbnRlcmZh
- Y2VfYWN0aW9ucy0+bG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMjsKCWlu
- dCBsbWVtX2J1cnN0X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIgPSBtYXhfZ2V0X2J1
- cnN0X3NpemUobWF4ZmlsZSwgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIik7CglpZiAoIChsbWVtX2Fk
- ZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIgJSBsbWVtX2J1cnN0X3NpemVfTWVtb3J5
- Q29udHJvbGxlclBybzBfaW5CVDIpICE9IDAgKSB7CgkJZnByaW50ZihzdGRvdXQsICJcblNMaUMg
- RXJyb3I6ICVzOiVkIDogTE1lbSBpbkJUMiBwYXJhbWV0ZXIgJ2xtZW1fYWRkcmVzc19NZW1vcnlD
- b250cm9sbGVyUHJvMF9pbkJUMicgaXMgc2V0IHRvICV6ZCBieXRlczsgaXQgbXVzdCBiZSBhIG11
- bHRpcGxlIG9mICVkIGJ5dGVzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIGxtZW1fYWRkcmVzc19N
- ZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMiwgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xs
- ZXJQcm8wX2luQlQyICk7Cgl9CglpZiAoIChsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQ
- cm8wX2luQlQyICUgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyKSAh
- PSAwICkgewoJCWZwcmludGYoc3Rkb3V0LCAiXG5TTGlDIEVycm9yOiAlczolZCA6IExNZW0gaW5C
- VDIgcGFyYW1ldGVyICdsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyJyBp
- cyBzZXQgdG8gJXpkIGJ5dGVzOyBpdCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJWQgYnl0ZXNcbiIs
- IF9fRklMRV9fLCBfX0xJTkVfXywgbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9p
- bkJUMiwgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyICk7Cgl9Cglp
- ZiAobG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMiA+IDApIHsKCQltYXhf
- bWVtY3RsX2xpbmVhcihhY3Rpb25zLCAiTWVtb3J5Q29udHJvbGxlclBybzAiLCAiaW5CVDIiLCBs
- bWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDIsIGxtZW1fYXJyX3NpemVfTWVt
- b3J5Q29udHJvbGxlclBybzBfaW5CVDIpOwoJfSBlbHNlIHsKCQltYXhfaWdub3JlX21lbWN0bChh
- Y3Rpb25zLCAiTWVtb3J5Q29udHJvbGxlclBybzAiLCAiaW5CVDIiKTsKCX0KCUNIRUNLX0VSUk9S
- UzsKCS8qIGVuZCBvZiBjb2RlIGZvciBsaW5lYXIgbWVtb3J5LXN0cmVhbSAiaW5CVDIiIGluIG1l
- bW9yeS1jb250cm9sbGVyICJNZW1vcnlDb250cm9sbGVyUHJvMCIgKi8KCQoJLyogY29kZSBmb3Ig
- bGluZWFyIG1lbW9yeS1zdHJlYW0gImluQlQzIiBpbiBtZW1vcnktY29udHJvbGxlciAiTWVtb3J5
- Q29udHJvbGxlclBybzAiICovCglzaXplX3QgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQ
- cm8wX2luQlQzID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9s
- bGVyUHJvMF9pbkJUMzsKCXNpemVfdCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8w
- X2luQlQzID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxl
- clBybzBfaW5CVDM7CglpbnQgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2lu
- QlQzID0gbWF4X2dldF9idXJzdF9zaXplKG1heGZpbGUsICJNZW1vcnlDb250cm9sbGVyUHJvMCIp
- OwoJaWYgKCAobG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzICUgbG1lbV9i
- dXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzKSAhPSAwICkgewoJCWZwcmludGYo
- c3Rkb3V0LCAiXG5TTGlDIEVycm9yOiAlczolZCA6IExNZW0gaW5CVDMgcGFyYW1ldGVyICdsbWVt
- X2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDMnIGlzIHNldCB0byAlemQgYnl0ZXM7
- IGl0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAlZCBieXRlc1xuIiwgX19GSUxFX18sIF9fTElORV9f
- LCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDMsIGxtZW1fYnVyc3Rfc2l6
- ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMyApOwoJfQoJaWYgKCAobG1lbV9hcnJfc2l6ZV9N
- ZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMyAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9s
- bGVyUHJvMF9pbkJUMykgIT0gMCApIHsKCQlmcHJpbnRmKHN0ZG91dCwgIlxuU0xpQyBFcnJvcjog
- JXM6JWQgOiBMTWVtIGluQlQzIHBhcmFtZXRlciAnbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9s
- bGVyUHJvMF9pbkJUMycgaXMgc2V0IHRvICV6ZCBieXRlczsgaXQgbXVzdCBiZSBhIG11bHRpcGxl
- IG9mICVkIGJ5dGVzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIGxtZW1fYXJyX3NpemVfTWVtb3J5
- Q29udHJvbGxlclBybzBfaW5CVDMsIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
- MF9pbkJUMyApOwoJfQoJaWYgKGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5C
- VDMgPiAwKSB7CgkJbWF4X21lbWN0bF9saW5lYXIoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQ
- cm8wIiwgImluQlQzIiwgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLCBs
- bWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzKTsKCX0gZWxzZSB7CgkJbWF4
- X2lnbm9yZV9tZW1jdGwoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiwgImluQlQzIik7
- Cgl9CglDSEVDS19FUlJPUlM7CgkvKiBlbmQgb2YgY29kZSBmb3IgbGluZWFyIG1lbW9yeS1zdHJl
- YW0gImluQlQzIiBpbiBtZW1vcnktY29udHJvbGxlciAiTWVtb3J5Q29udHJvbGxlclBybzAiICov
- CgkKCS8qIGNvZGUgZm9yIGxpbmVhciBtZW1vcnktc3RyZWFtICJvRGF0YVQxIiBpbiBtZW1vcnkt
- Y29udHJvbGxlciAiTWVtb3J5Q29udHJvbGxlclBybzAiICovCglzaXplX3QgbG1lbV9hZGRyZXNz
- X01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDEgPSBpbnRlcmZhY2VfYWN0aW9ucy0+bG1lbV9h
- ZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDE7CglzaXplX3QgbG1lbV9hcnJfc2l6
- ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQxID0gaW50ZXJmYWNlX2FjdGlvbnMtPmxtZW1f
- YXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMTsKCWludCBsbWVtX2J1cnN0X3Np
- emVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMSA9IG1heF9nZXRfYnVyc3Rfc2l6ZShtYXhm
- aWxlLCAiTWVtb3J5Q29udHJvbGxlclBybzAiKTsKCWlmICggKGxtZW1fYWRkcmVzc19NZW1vcnlD
- b250cm9sbGVyUHJvMF9vRGF0YVQxICUgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQ
- cm8wX29EYXRhVDEpICE9IDAgKSB7CgkJZnByaW50ZihzdGRvdXQsICJcblNMaUMgRXJyb3I6ICVz
- OiVkIDogTE1lbSBvRGF0YVQxIHBhcmFtZXRlciAnbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xs
- ZXJQcm8wX29EYXRhVDEnIGlzIHNldCB0byAlemQgYnl0ZXM7IGl0IG11c3QgYmUgYSBtdWx0aXBs
- ZSBvZiAlZCBieXRlc1xuIiwgX19GSUxFX18sIF9fTElORV9fLCBsbWVtX2FkZHJlc3NfTWVtb3J5
- Q29udHJvbGxlclBybzBfb0RhdGFUMSwgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQ
- cm8wX29EYXRhVDEgKTsKCX0KCWlmICggKGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBy
- bzBfb0RhdGFUMSAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQx
- KSAhPSAwICkgewoJCWZwcmludGYoc3Rkb3V0LCAiXG5TTGlDIEVycm9yOiAlczolZCA6IExNZW0g
- b0RhdGFUMSBwYXJhbWV0ZXIgJ2xtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0Rh
- dGFUMScgaXMgc2V0IHRvICV6ZCBieXRlczsgaXQgbXVzdCBiZSBhIG11bHRpcGxlIG9mICVkIGJ5
- dGVzXG4iLCBfX0ZJTEVfXywgX19MSU5FX18sIGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxl
- clBybzBfb0RhdGFUMSwgbG1lbV9idXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRh
- VDEgKTsKCX0KCWlmIChsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDEg
- PiAwKSB7CgkJbWF4X21lbWN0bF9saW5lYXIoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQcm8w
- IiwgIm9EYXRhVDEiLCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMSwg
- bG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQxKTsKCX0gZWxzZSB7CgkJ
- bWF4X2lnbm9yZV9tZW1jdGwoYWN0aW9ucywgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiwgIm9EYXRh
- VDEiKTsKCX0KCUNIRUNLX0VSUk9SUzsKCS8qIGVuZCBvZiBjb2RlIGZvciBsaW5lYXIgbWVtb3J5
- LXN0cmVhbSAib0RhdGFUMSIgaW4gbWVtb3J5LWNvbnRyb2xsZXIgIk1lbW9yeUNvbnRyb2xsZXJQ
- cm8wIiAqLwoJCgkvKiBjb2RlIGZvciBsaW5lYXIgbWVtb3J5LXN0cmVhbSAib0RhdGFUMiIgaW4g
- bWVtb3J5LWNvbnRyb2xsZXIgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIiAqLwoJc2l6ZV90IGxtZW1f
- YWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyID0gaW50ZXJmYWNlX2FjdGlvbnMt
- PmxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyOwoJc2l6ZV90IGxtZW1f
- YXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiA9IGludGVyZmFjZV9hY3Rpb25z
- LT5sbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDI7CglpbnQgbG1lbV9i
- dXJzdF9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDIgPSBtYXhfZ2V0X2J1cnN0X3Np
- emUobWF4ZmlsZSwgIk1lbW9yeUNvbnRyb2xsZXJQcm8wIik7CglpZiAoIChsbWVtX2FkZHJlc3Nf
- TWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiAlIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250
- cm9sbGVyUHJvMF9vRGF0YVQyKSAhPSAwICkgewoJCWZwcmludGYoc3Rkb3V0LCAiXG5TTGlDIEVy
- cm9yOiAlczolZCA6IExNZW0gb0RhdGFUMiBwYXJhbWV0ZXIgJ2xtZW1fYWRkcmVzc19NZW1vcnlD
- b250cm9sbGVyUHJvMF9vRGF0YVQyJyBpcyBzZXQgdG8gJXpkIGJ5dGVzOyBpdCBtdXN0IGJlIGEg
- bXVsdGlwbGUgb2YgJWQgYnl0ZXNcbiIsIF9fRklMRV9fLCBfX0xJTkVfXywgbG1lbV9hZGRyZXNz
- X01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDIsIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250
- cm9sbGVyUHJvMF9vRGF0YVQyICk7Cgl9CglpZiAoIChsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRy
- b2xsZXJQcm8wX29EYXRhVDIgJSBsbWVtX2J1cnN0X3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBf
- b0RhdGFUMikgIT0gMCApIHsKCQlmcHJpbnRmKHN0ZG91dCwgIlxuU0xpQyBFcnJvcjogJXM6JWQg
- OiBMTWVtIG9EYXRhVDIgcGFyYW1ldGVyICdsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQ
- cm8wX29EYXRhVDInIGlzIHNldCB0byAlemQgYnl0ZXM7IGl0IG11c3QgYmUgYSBtdWx0aXBsZSBv
- ZiAlZCBieXRlc1xuIiwgX19GSUxFX18sIF9fTElORV9fLCBsbWVtX2Fycl9zaXplX01lbW9yeUNv
- bnRyb2xsZXJQcm8wX29EYXRhVDIsIGxtZW1fYnVyc3Rfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
- MF9vRGF0YVQyICk7Cgl9CglpZiAobG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9v
- RGF0YVQyID4gMCkgewoJCW1heF9tZW1jdGxfbGluZWFyKGFjdGlvbnMsICJNZW1vcnlDb250cm9s
- bGVyUHJvMCIsICJvRGF0YVQyIiwgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29E
- YXRhVDIsIGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMik7Cgl9IGVs
- c2UgewoJCW1heF9pZ25vcmVfbWVtY3RsKGFjdGlvbnMsICJNZW1vcnlDb250cm9sbGVyUHJvMCIs
- ICJvRGF0YVQyIik7Cgl9CglDSEVDS19FUlJPUlM7CgkvKiBlbmQgb2YgY29kZSBmb3IgbGluZWFy
- IG1lbW9yeS1zdHJlYW0gIm9EYXRhVDIiIGluIG1lbW9yeS1jb250cm9sbGVyICJNZW1vcnlDb250
- cm9sbGVyUHJvMCIgKi8KCQoJaWYgKHVzZV9jYWxsYmFjayAmJiBjYl9kYXRhLT5jb3VudCA9PSAw
- KSB7CgkJKmNhbGxiYWNrX2RhdGEgPSBOVUxMOwoJCSpjYWxsYmFja19mdW5jID0gTlVMTDsKCQlm
- cmVlKGNiX2RhdGEpOwoJfQoJcmV0dXJuIGFjdGlvbnM7CiN1bmRlZiBDSEVDS19FUlJPUlMKfQoK
- dm9pZCBTdHJlYW1GTUEoCgl1aW50NjRfdCB0aWNrc19TdHJlYW1GTUFLZXJuZWwsCgljb25zdCB2
- b2lkICppbnN0cmVhbV9pbkFUMSwKCXNpemVfdCBpbnN0cmVhbV9zaXplX2luQVQxLAoJY29uc3Qg
- dm9pZCAqaW5zdHJlYW1faW5CVDEsCglzaXplX3QgaW5zdHJlYW1fc2l6ZV9pbkJUMSwKCXZvaWQg
- Km91dHN0cmVhbV9vRGF0YVQzLAoJc2l6ZV90IG91dHN0cmVhbV9zaXplX29EYXRhVDMsCglzaXpl
- X3QgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyLAoJc2l6ZV90IGxtZW1f
- YXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDIsCglzaXplX3QgbG1lbV9hZGRyZXNz
- X01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzLAoJc2l6ZV90IGxtZW1fYXJyX3NpemVfTWVtb3J5
- Q29udHJvbGxlclBybzBfaW5BVDMsCglzaXplX3QgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xs
- ZXJQcm8wX2luQlQyLAoJc2l6ZV90IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBf
- aW5CVDIsCglzaXplX3QgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLAoJ
- c2l6ZV90IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDMsCglzaXplX3Qg
- bG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDEsCglzaXplX3QgbG1lbV9h
- cnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQxLAoJc2l6ZV90IGxtZW1fYWRkcmVz
- c19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyLAoJc2l6ZV90IGxtZW1fYXJyX3NpemVfTWVt
- b3J5Q29udHJvbGxlclBybzBfb0RhdGFUMikKewoJKHZvaWQpIHB0aHJlYWRfb25jZSgmc2xpY19i
- c19pc19pbml0aWFsaXNlZCwgU3RyZWFtRk1BX3N0YXRpY19pbml0KTsKCUNIRUNLX05VTEwoc3Rv
- cmVkX21heGZpbGUsICJNYXhmaWxlIHdhcyBub3QgbG9hZGVkIiwgKTsKCW1heF9ydW5fdCAqcnVu
- ID0gU3RyZWFtRk1BX25vbmJsb2NrKHRpY2tzX1N0cmVhbUZNQUtlcm5lbCwgaW5zdHJlYW1faW5B
- VDEsIGluc3RyZWFtX3NpemVfaW5BVDEsIGluc3RyZWFtX2luQlQxLCBpbnN0cmVhbV9zaXplX2lu
- QlQxLCBvdXRzdHJlYW1fb0RhdGFUMywgb3V0c3RyZWFtX3NpemVfb0RhdGFUMywgbG1lbV9hZGRy
- ZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyLCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRy
- b2xsZXJQcm8wX2luQVQyLCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMs
- IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDMsIGxtZW1fYWRkcmVzc19N
- ZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMiwgbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVy
- UHJvMF9pbkJUMiwgbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLCBsbWVt
- X2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLCBsbWVtX2FkZHJlc3NfTWVtb3J5
- Q29udHJvbGxlclBybzBfb0RhdGFUMSwgbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
- MF9vRGF0YVQxLCBsbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiwgbG1l
- bV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyKTsKCUNIRUNLX05VTEwocnVu
- LCAiVW5hYmxlIHRvIHJ1biBhY3Rpb25zIiwgKTsKCW1heF93YWl0KHJ1bik7Cn0KCm1heF9ydW5f
- dCAqU3RyZWFtRk1BX25vbmJsb2NrKAoJdWludDY0X3QgdGlja3NfU3RyZWFtRk1BS2VybmVsLAoJ
- Y29uc3Qgdm9pZCAqaW5zdHJlYW1faW5BVDEsCglzaXplX3QgaW5zdHJlYW1fc2l6ZV9pbkFUMSwK
- CWNvbnN0IHZvaWQgKmluc3RyZWFtX2luQlQxLAoJc2l6ZV90IGluc3RyZWFtX3NpemVfaW5CVDEs
- Cgl2b2lkICpvdXRzdHJlYW1fb0RhdGFUMywKCXNpemVfdCBvdXRzdHJlYW1fc2l6ZV9vRGF0YVQz
- LAoJc2l6ZV90IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMiwKCXNpemVf
- dCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyLAoJc2l6ZV90IGxtZW1f
- YWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9pbkFUMywKCXNpemVfdCBsbWVtX2Fycl9zaXpl
- X01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzLAoJc2l6ZV90IGxtZW1fYWRkcmVzc19NZW1vcnlD
- b250cm9sbGVyUHJvMF9pbkJUMiwKCXNpemVfdCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xs
- ZXJQcm8wX2luQlQyLAoJc2l6ZV90IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9p
- bkJUMywKCXNpemVfdCBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQzLAoJ
- c2l6ZV90IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQxLAoJc2l6ZV90
- IGxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMSwKCXNpemVfdCBsbWVt
- X2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiwKCXNpemVfdCBsbWVtX2Fycl9z
- aXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDIpCnsKCVN0cmVhbUZNQV9hY3Rpb25zX3Qg
- aW50ZXJmYWNlX2FjdGlvbnM7CglpbnRlcmZhY2VfYWN0aW9ucy50aWNrc19TdHJlYW1GTUFLZXJu
- ZWwgPSB0aWNrc19TdHJlYW1GTUFLZXJuZWw7CglpbnRlcmZhY2VfYWN0aW9ucy5pbnN0cmVhbV9p
- bkFUMSA9IGluc3RyZWFtX2luQVQxOwoJaW50ZXJmYWNlX2FjdGlvbnMuaW5zdHJlYW1fc2l6ZV9p
- bkFUMSA9IGluc3RyZWFtX3NpemVfaW5BVDE7CglpbnRlcmZhY2VfYWN0aW9ucy5pbnN0cmVhbV9p
- bkJUMSA9IGluc3RyZWFtX2luQlQxOwoJaW50ZXJmYWNlX2FjdGlvbnMuaW5zdHJlYW1fc2l6ZV9p
- bkJUMSA9IGluc3RyZWFtX3NpemVfaW5CVDE7CglpbnRlcmZhY2VfYWN0aW9ucy5vdXRzdHJlYW1f
- b0RhdGFUMyA9IG91dHN0cmVhbV9vRGF0YVQzOwoJaW50ZXJmYWNlX2FjdGlvbnMub3V0c3RyZWFt
- X3NpemVfb0RhdGFUMyA9IG91dHN0cmVhbV9zaXplX29EYXRhVDM7CglpbnRlcmZhY2VfYWN0aW9u
- cy5sbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDIgPSBsbWVtX2FkZHJlc3Nf
- TWVtb3J5Q29udHJvbGxlclBybzBfaW5BVDI7CglpbnRlcmZhY2VfYWN0aW9ucy5sbWVtX2Fycl9z
- aXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQyID0gbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250
- cm9sbGVyUHJvMF9pbkFUMjsKCWludGVyZmFjZV9hY3Rpb25zLmxtZW1fYWRkcmVzc19NZW1vcnlD
- b250cm9sbGVyUHJvMF9pbkFUMyA9IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9p
- bkFUMzsKCWludGVyZmFjZV9hY3Rpb25zLmxtZW1fYXJyX3NpemVfTWVtb3J5Q29udHJvbGxlclBy
- bzBfaW5BVDMgPSBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQVQzOwoJaW50
- ZXJmYWNlX2FjdGlvbnMubG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyID0g
- bG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX2luQlQyOwoJaW50ZXJmYWNlX2FjdGlv
- bnMubG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9pbkJUMiA9IGxtZW1fYXJyX3Np
- emVfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDI7CglpbnRlcmZhY2VfYWN0aW9ucy5sbWVtX2Fk
- ZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfaW5CVDMgPSBsbWVtX2FkZHJlc3NfTWVtb3J5Q29u
- dHJvbGxlclBybzBfaW5CVDM7CglpbnRlcmZhY2VfYWN0aW9ucy5sbWVtX2Fycl9zaXplX01lbW9y
- eUNvbnRyb2xsZXJQcm8wX2luQlQzID0gbG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJv
- MF9pbkJUMzsKCWludGVyZmFjZV9hY3Rpb25zLmxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVy
- UHJvMF9vRGF0YVQxID0gbG1lbV9hZGRyZXNzX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDE7
- CglpbnRlcmZhY2VfYWN0aW9ucy5sbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29E
- YXRhVDEgPSBsbWVtX2Fycl9zaXplX01lbW9yeUNvbnRyb2xsZXJQcm8wX29EYXRhVDE7CglpbnRl
- cmZhY2VfYWN0aW9ucy5sbWVtX2FkZHJlc3NfTWVtb3J5Q29udHJvbGxlclBybzBfb0RhdGFUMiA9
- IGxtZW1fYWRkcmVzc19NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyOwoJaW50ZXJmYWNlX2Fj
- dGlvbnMubG1lbV9hcnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyID0gbG1lbV9h
- cnJfc2l6ZV9NZW1vcnlDb250cm9sbGVyUHJvMF9vRGF0YVQyOwoJKHZvaWQpIHB0aHJlYWRfb25j
- ZSgmc2xpY19ic19pc19pbml0aWFsaXNlZCwgU3RyZWFtRk1BX3N0YXRpY19pbml0KTsKCUNIRUNL
- X05VTEwoc3RvcmVkX21heGZpbGUsICJNYXhmaWxlIHdhcyBub3QgbG9hZGVkIiwgTlVMTCk7Cgl2
- b2lkICgqY2JfZnVuYykodm9pZCopID0gTlVMTDsKCXZvaWQgICpjYl9kYXRhICAgICAgICAgPSBO
- VUxMOwoJbWF4X2FjdGlvbnNfdCAqYWN0aW9ucyA9IFN0cmVhbUZNQV9jb252ZXJ0X2ludGVybmFs
- KHN0b3JlZF9tYXhmaWxlLCAmaW50ZXJmYWNlX2FjdGlvbnMsIDEsICZjYl9mdW5jLCAmY2JfZGF0
- YSk7CglDSEVDS19OVUxMKGFjdGlvbnMsICJVbmFibGUgdG8gYnVpbGQgYWN0aW9ucyIsIE5VTEwp
- OwoJbWF4X3ZhbGlkYXRlKGFjdGlvbnMpOwoJQ0hFQ0tfRVJST1JTX1NUKGFjdGlvbnMsIE5VTEwp
- OwoJQ0hFQ0tfRVJST1JTX1NUKHN0b3JlZF9lbmdpbmUsIE5VTEwpOwoJbWF4X3J1bl90ICpydW47
- CglpZiAoY2JfZnVuYyA9PSBOVUxMKSB7CgkJcnVuID0gbWF4X3J1bl9ub25ibG9jayhzdG9yZWRf
- ZW5naW5lLCBhY3Rpb25zKTsKCX0gZWxzZSB7CgkJcnVuID0gbWF4X3J1bl9ub25ibG9ja193aXRo
- X2NiKHN0b3JlZF9lbmdpbmUsIGFjdGlvbnMsIGNiX2Z1bmMsIGNiX2RhdGEpOwoJfQoJQ0hFQ0tf
- TlVMTChydW4sICJVbmFibGUgdG8gcnVuIGFjdGlvbnMiLCBOVUxMKTsKCUNIRUNLX0VSUk9SU19T
- VChhY3Rpb25zLCBOVUxMKTsKCW1heF9hY3Rpb25zX2ZyZWUoYWN0aW9ucyk7CglyZXR1cm4gcnVu
- Owp9Cgp2b2lkIFN0cmVhbUZNQV9ydW4oCgltYXhfZW5naW5lX3QgKmVuZ2luZSwKCVN0cmVhbUZN
- QV9hY3Rpb25zX3QgKmludGVyZmFjZV9hY3Rpb25zKQp7CgltYXhfcnVuX3QgKnJ1biA9IFN0cmVh
- bUZNQV9ydW5fbm9uYmxvY2soZW5naW5lLCBpbnRlcmZhY2VfYWN0aW9ucyk7CglDSEVDS19OVUxM
- KHJ1biwgIlVuYWJsZSB0byBydW4gYWN0aW9ucyIsICk7CgltYXhfd2FpdChydW4pOwp9CgptYXhf
- cnVuX3QgKlN0cmVhbUZNQV9ydW5fbm9uYmxvY2soCgltYXhfZW5naW5lX3QgKmVuZ2luZSwKCVN0
- cmVhbUZNQV9hY3Rpb25zX3QgKmludGVyZmFjZV9hY3Rpb25zKQp7CgltYXhfZmlsZV90ICptYXhm
- aWxlID0gbWF4X2VuZ2luZV9nZXRfbWF4X2ZpbGUoZW5naW5lKTsgCgl2b2lkICgqY2JfZnVuYyko
- dm9pZCopID0gTlVMTDsKCXZvaWQgICpjYl9kYXRhICAgICAgICAgPSBOVUxMOwoJbWF4X2FjdGlv
- bnNfdCAqYWN0aW9ucyA9IFN0cmVhbUZNQV9jb252ZXJ0X2ludGVybmFsKG1heGZpbGUsIGludGVy
- ZmFjZV9hY3Rpb25zLCAxLCAmY2JfZnVuYywgJmNiX2RhdGEpOwoJQ0hFQ0tfTlVMTChhY3Rpb25z
- LCAiVW5hYmxlIHRvIGJ1aWxkIGFjdGlvbnMiLCBOVUxMKTsKCW1heF92YWxpZGF0ZShhY3Rpb25z
- KTsKCUNIRUNLX0VSUk9SU19TVChhY3Rpb25zLCBOVUxMKTsKCW1heF9ydW5fdCAqcnVuOwoJaWYg
- KGNiX2Z1bmMgPT0gTlVMTCkgewoJCXJ1biA9IG1heF9ydW5fbm9uYmxvY2soZW5naW5lLCBhY3Rp
- b25zKTsKCX0gZWxzZSB7CgkJcnVuID0gbWF4X3J1bl9ub25ibG9ja193aXRoX2NiKGVuZ2luZSwg
- YWN0aW9ucywgY2JfZnVuYywgY2JfZGF0YSk7Cgl9CglDSEVDS19OVUxMKHJ1biwgIlVuYWJsZSB0
- byBydW4gYWN0aW9ucyIsIE5VTEwpOwoJbWF4X2FjdGlvbnNfZnJlZShhY3Rpb25zKTsKCXJldHVy
- biBydW47Cn0KCgovKioKICogXGJyaWVmIEdyb3VwIHJ1biBhZHZhbmNlZCBzdGF0aWMgZnVuY3Rp
- b24gZm9yIHRoZSBpbnRlcmZhY2UgJ2RlZmF1bHQnLgogKiAKICogXHBhcmFtIFtpbl0gZ3JvdXAg
- R3JvdXAgdG8gdXNlLgogKiBccGFyYW0gW2luLG91dF0gaW50ZXJmYWNlX2FjdGlvbnMgQWN0aW9u
- cyB0byBydW4uCiAqCiAqIFJ1biB0aGUgYWN0aW9ucyBvbiB0aGUgZmlyc3QgZGV2aWNlIGF2YWls
- YWJsZSBpbiB0aGUgZ3JvdXAuCiAqLwp2b2lkIFN0cmVhbUZNQV9ydW5fZ3JvdXAobWF4X2dyb3Vw
- X3QgKmdyb3VwLCBTdHJlYW1GTUFfYWN0aW9uc190ICppbnRlcmZhY2VfYWN0aW9ucykKewoJbWF4
- X3J1bl90ICpydW4gPSBTdHJlYW1GTUFfcnVuX2dyb3VwX25vbmJsb2NrKGdyb3VwLCBpbnRlcmZh
- Y2VfYWN0aW9ucyk7CglDSEVDS19OVUxMKHJ1biwgIlVuYWJsZSB0byBydW4gYWN0aW9ucyIsICk7
- CgltYXhfd2FpdChydW4pOwp9CgoKLyoqCiAqIFxicmllZiBHcm91cCBydW4gYWR2YW5jZWQgc3Rh
- dGljIG5vbi1ibG9ja2luZyBmdW5jdGlvbiBmb3IgdGhlIGludGVyZmFjZSAnZGVmYXVsdCcuCiAq
- IAogKgogKiBTY2hlZHVsZSB0aGUgYWN0aW9ucyB0byBydW4gb24gdGhlIGZpcnN0IGRldmljZSBh
- dmFpbGFibGUgaW4gdGhlIGdyb3VwIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkuCiAqIFRoZSBzdGF0
- dXMgb2YgdGhlIHJ1biBtdXN0IGJlIGNoZWNrZWQgd2l0aCA6Om1heF93YWl0LiAKICogTm90ZSB0
- aGF0IHVzZSBvZiA6Om1heF9ub3dhaXQgaXMgcHJvaGliaXRlZCB3aXRoIG5vbi1ibG9ja2luZyBy
- dW5uaW5nIG9uIGdyb3VwczoKICogc2VlIHRoZSA6Om1heF9ydW5fZ3JvdXBfbm9uYmxvY2sgZG9j
- dW1lbnRhdGlvbiBmb3IgbW9yZSBleHBsYW5hdGlvbi4KICoKICogXHBhcmFtIFtpbl0gZ3JvdXAg
- R3JvdXAgdG8gdXNlLgogKiBccGFyYW0gW2luXSBpbnRlcmZhY2VfYWN0aW9ucyBBY3Rpb25zIHRv
- IHJ1bi4KICogXHJldHVybiBBIGhhbmRsZSBvbiB0aGUgZXhlY3V0aW9uIHN0YXR1cyBvZiB0aGUg
- YWN0aW9ucywgb3IgTlVMTCBpbiBjYXNlIG9mIGVycm9yLgogKi8KbWF4X3J1bl90ICpTdHJlYW1G
- TUFfcnVuX2dyb3VwX25vbmJsb2NrKG1heF9ncm91cF90ICpncm91cCwgU3RyZWFtRk1BX2FjdGlv
- bnNfdCAqaW50ZXJmYWNlX2FjdGlvbnMpCnsKCW1heF9maWxlX3QgKm1heGZpbGUgPSBtYXhfZ3Jv
- dXBfZ2V0X21heF9maWxlKGdyb3VwKTsKCW1heF9hY3Rpb25zX3QgKmFjdGlvbnMgPSBTdHJlYW1G
- TUFfY29udmVydF9pbnRlcm5hbChtYXhmaWxlLCBpbnRlcmZhY2VfYWN0aW9ucywgMSwgTlVMTCwg
- TlVMTCk7CglpZihhY3Rpb25zID09IE5VTEwpIHJldHVybiBOVUxMOwoJaWYoIW1heF9vayhhY3Rp
- b25zLT5lcnJvcnMpKSByZXR1cm4gTlVMTDsKCW1heF92YWxpZGF0ZShhY3Rpb25zKTsKCW1heF9y
- dW5fdCAqcnVuID0gbWF4X3J1bl9ncm91cF9ub25ibG9jayhncm91cCwgYWN0aW9ucyk7CgltYXhf
- YWN0aW9uc19mcmVlKGFjdGlvbnMpOwoJcmV0dXJuIHJ1bjsKfQoKCi8qKgogKiBcYnJpZWYgQXJy
- YXkgcnVuIGFkdmFuY2VkIHN0YXRpYyBmdW5jdGlvbiBmb3IgdGhlIGludGVyZmFjZSAnZGVmYXVs
- dCcuCiAqIAogKiBccGFyYW0gW2luXSBlbmdhcnJheSBUaGUgYXJyYXkgb2YgZGV2aWNlcyB0byB1
- c2UuCiAqIFxwYXJhbSBbaW4sb3V0XSBpbnRlcmZhY2VfYWN0aW9ucyBUaGUgYXJyYXkgb2YgYWN0
- aW9ucyB0byBydW4uCiAqCiAqIFJ1biB0aGUgYXJyYXkgb2YgYWN0aW9ucyBvbiB0aGUgYXJyYXkg
- b2YgZW5naW5lcy4gIFRoZSBsZW5ndGggb2YgaW50ZXJmYWNlX2FjdGlvbnMKICogbXVzdCBtYXRj
- aCB0aGUgc2l6ZSBvZiBlbmdhcnJheS4KICovCnZvaWQgU3RyZWFtRk1BX3J1bl9hcnJheShtYXhf
- ZW5nYXJyYXlfdCAqZW5nYXJyYXksIFN0cmVhbUZNQV9hY3Rpb25zX3QgKmludGVyZmFjZV9hY3Rp
- b25zW10pCnsKCW1heF9ydW5fdCAqcnVuID0gU3RyZWFtRk1BX3J1bl9hcnJheV9ub25ibG9jayhl
- bmdhcnJheSwgaW50ZXJmYWNlX2FjdGlvbnMpOwoJQ0hFQ0tfTlVMTChydW4sICJVbmFibGUgdG8g
- cnVuIGFjdGlvbnMiLCApOwoJbWF4X3dhaXQocnVuKTsKfQoKCi8qKgogKiBcYnJpZWYgQXJyYXkg
- cnVuIGFkdmFuY2VkIHN0YXRpYyBub24tYmxvY2tpbmcgZnVuY3Rpb24gZm9yIHRoZSBpbnRlcmZh
- Y2UgJ2RlZmF1bHQnLgogKiAKICoKICogU2NoZWR1bGUgdG8gcnVuIHRoZSBhcnJheSBvZiBhY3Rp
- b25zIG9uIHRoZSBhcnJheSBvZiBlbmdpbmVzLCBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5LgogKiBU
- aGUgbGVuZ3RoIG9mIGludGVyZmFjZV9hY3Rpb25zIG11c3QgbWF0Y2ggdGhlIHNpemUgb2YgZW5n
- YXJyYXkuCiAqIFRoZSBzdGF0dXMgb2YgdGhlIHJ1biBjYW4gYmUgY2hlY2tlZCBlaXRoZXIgYnkg
- OjptYXhfd2FpdCBvciA6Om1heF9ub3dhaXQ7CiAqIG5vdGUgdGhhdCBvbmUgb2YgdGhlc2UgKm11
- c3QqIGJlIGNhbGxlZCwgc28gdGhhdCBhc3NvY2lhdGVkIG1lbW9yeSBjYW4gYmUgcmVsZWFzZWQu
- CiAqCiAqIFxwYXJhbSBbaW5dIGVuZ2FycmF5IFRoZSBhcnJheSBvZiBkZXZpY2VzIHRvIHVzZS4K
- ICogXHBhcmFtIFtpbl0gaW50ZXJmYWNlX2FjdGlvbnMgVGhlIGFycmF5IG9mIGFjdGlvbnMgdG8g
- cnVuLgogKiBccmV0dXJuIEEgaGFuZGxlIG9uIHRoZSBleGVjdXRpb24gc3RhdHVzIG9mIHRoZSBh
- Y3Rpb25zLCBvciBOVUxMIGluIGNhc2Ugb2YgZXJyb3IuCiAqLwptYXhfcnVuX3QgKlN0cmVhbUZN
- QV9ydW5fYXJyYXlfbm9uYmxvY2sobWF4X2VuZ2FycmF5X3QgKmVuZ2FycmF5LCBTdHJlYW1GTUFf
- YWN0aW9uc190ICppbnRlcmZhY2VfYWN0aW9uc1tdKQp7CgltYXhfZmlsZV90ICptYXhmaWxlID0g
- bWF4X2VuZ2FycmF5X2dldF9tYXhfZmlsZShlbmdhcnJheSwgMCk7CglpbnQgaTsKCW1heF9hY3Rh
- cnJheV90ICphY3RhcnJheSA9IG1heF9hY3RhcnJheV9pbml0KG1heGZpbGUsIGVuZ2FycmF5LT5z
- aXplKTsKCWlmIChhY3RhcnJheSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKCW1heF9hY3Rpb25zX3Qg
- KiphcnJfYWN0aW9ucyA9IG1hbGxvYyhlbmdhcnJheS0+c2l6ZSAqIHNpemVvZihtYXhfYWN0aW9u
- c190KikpOwoJZm9yICggaSA9IDAgOyBpIDwgYWN0YXJyYXktPnNpemU7IGkrKyApIHsKCQltYXhf
- YWN0aW9uc190ICphY3Rpb25zID0gU3RyZWFtRk1BX2NvbnZlcnRfaW50ZXJuYWwobWF4ZmlsZSwg
- aW50ZXJmYWNlX2FjdGlvbnNbaV0sIDEsIE5VTEwsIE5VTEwpOwoJCWlmIChhY3Rpb25zID09IE5V
- TEwpIHJldHVybiBOVUxMOwoJCWFycl9hY3Rpb25zW2ldID0gYWN0aW9uczsKCQltYXhfc2V0X2Fj
- dGlvbihhY3RhcnJheSwgaSwgYWN0aW9ucyk7Cgl9CgltYXhfcnVuX3QgKnJ1biA9IG1heF9ydW5f
- YXJyYXlfbm9uYmxvY2soZW5nYXJyYXksIGFjdGFycmF5KTsKCWZvciAoIGkgPSAwIDsgaSA8IGFj
- dGFycmF5LT5zaXplIDsgaSsrICkgeyBtYXhfYWN0aW9uc19mcmVlKGFycl9hY3Rpb25zW2ldKTsg
- fQoJbWF4X2FjdGFycmF5X2ZyZWUoYWN0YXJyYXkpOwoJZnJlZShhcnJfYWN0aW9ucyk7CglyZXR1
- cm4gcnVuOwp9CgoKLyoqCiAqIFxicmllZiBDb252ZXJ0cyBhIHN0YXRpYy1pbnRlcmZhY2UgYWN0
- aW9uIHN0cnVjdCBpbnRvIGEgZHluYW1pYy1pbnRlcmZhY2UgbWF4X2FjdGlvbnNfdCBzdHJ1Y3Qu
- CiAqCiAqIE5vdGUgdGhhdCB0aGlzIGlzIGFuIGludGVybmFsIHV0aWxpdHkgZnVuY3Rpb24gdXNl
- ZCBieSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIHN0YXRpYyBpbnRlcmZhY2UuCiAqCiAqIFxwYXJh
- bSBbaW5dIG1heGZpbGUgVGhlIG1heGZpbGUgdG8gdXNlLgogKiBccGFyYW0gW2luXSBpbnRlcmZh
- Y2VfYWN0aW9ucyBUaGUgaW50ZXJmYWNlLXNwZWNpZmljIGFjdGlvbnMgdG8gcnVuLgogKiBccmV0
- dXJuIFRoZSBkeW5hbWljLWludGVyZmFjZSBhY3Rpb25zIHRvIHJ1biwgb3IgTlVMTCBpbiBjYXNl
- IG9mIGVycm9yLgogKi8KbWF4X2FjdGlvbnNfdCogU3RyZWFtRk1BX2NvbnZlcnQobWF4X2ZpbGVf
- dCAqbWF4ZmlsZSwgU3RyZWFtRk1BX2FjdGlvbnNfdCAqaW50ZXJmYWNlX2FjdGlvbnMpCnsKCXJl
- dHVybiBTdHJlYW1GTUFfY29udmVydF9pbnRlcm5hbChtYXhmaWxlLCBpbnRlcmZhY2VfYWN0aW9u
- cywgMCwgTlVMTCwgTlVMTCk7Cn0KCiN1bmRlZiBDSEVDS19FUlJPUlNfU1QKI3VuZGVmIENIRUNL
- X05VTEwKCgo=
- #endif /* SLIC_B64_DEFINITIONS */
- #ifdef SLIC_EXTRA_FILES
- PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHVz
- ZXJmaWxlcyBmb3JtYXQtdmVyc2lvbj0iMjAxMjAyMDAiLz4=
- #endif /* SLIC_EXTRA_FILES */
- #ifdef PHOTON_NODE_ADD_DATA
- #define PHOTON_NODE_ADD_DATA_PRESENT 1
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 22, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 23, "SquashFactor", 1.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 0, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 1, "SquashFactor", 1.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 2, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 3, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 4, "SquashFactor", 1.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 5, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 18, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 25, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 27, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 28, "SquashFactor", 1.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 6, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 7, "SquashFactor", 1.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 8, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 9, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 10, "SquashFactor", 1.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 11, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 19, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 30, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 32, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 33, "SquashFactor", 1.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 12, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 13, "SquashFactor", 1.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 14, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 15, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 16, "SquashFactor", 1.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 17, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 20, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 35, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 40, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 50, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 37, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 38, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 39, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 41, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 49, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 43, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 44, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 46, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 48, "SquashFactor", 0.0)
- PHOTON_NODE_ADD_DATA(StreamFMAKernel, 45, "SquashFactor", 0.0)
- #endif
- #ifdef MAXFILE_SIGNATURE
- #define MAXFILE_SIGNATURE_PRESENT 1
- MAXFILE_SIGNATURE("302d02150088772342d2d888822b583166fd04736983822f1b02143417323058ae7f98fb7b34570f80ed9ff6bfc31e")
- #endif
|