disasm.h 147 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125
  1. /* Universal Disassembler Function Library
  2. * https://gitlab.com/bztsrc/udisasm
  3. *
  4. * ----- GENERATED FILE, DO NOT EDIT! -----
  5. *
  6. * Copyright (C) 2017 bzt (bztsrc@gitlab)
  7. *
  8. * Permission is hereby granted, free of charge, to any person
  9. * obtaining a copy of this software and associated documentation
  10. * files (the "Software"), to deal in the Software without
  11. * restriction, including without limitation the rights to use, copy,
  12. * modify, merge, publish, distribute, sublicense, and/or sell copies
  13. * of the Software, and to permit persons to whom the Software is
  14. * furnished to do so, subject to the following conditions:
  15. *
  16. * The above copyright notice and this permission notice shall be
  17. * included in all copies or substantial portions of the Software.
  18. *
  19. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  20. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  21. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  22. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  23. * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  24. * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  25. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  26. * DEALINGS IN THE SOFTWARE.
  27. *
  28. * @brief Disassembler source generated from aarch64.txt
  29. */
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33. #define disasm_arch "aarch64"
  34. enum { disasm_arg_NONE,disasm_arg_ofs,disasm_arg_ofe, disasm_arg_Xt, disasm_arg_labelij1, disasm_arg_RtS, disasm_arg_RnS, disasm_arg_i, disasm_arg_j12_opt, disasm_arg_Rn, disasm_arg_ib, disasm_arg_Rt, disasm_arg_j16_opt, disasm_arg_j, disasm_arg_Rm, disasm_arg_c, disasm_arg_labeli4, disasm_arg_i_opt, disasm_arg_pstate, disasm_arg_sh, disasm_arg_a0, disasm_arg_a1, disasm_arg_a2, disasm_arg_dc0, disasm_arg_dc1, disasm_arg_ZVA, disasm_arg_dc2, disasm_arg_ic, disasm_arg_Xt_opt, disasm_arg_tl0, disasm_arg_tl1, disasm_arg_tl2, disasm_arg_sysreg, disasm_arg_Cn, disasm_arg_Cm, disasm_arg_Xn, disasm_arg_b, disasm_arg_VtT, disasm_arg_Vt2T, disasm_arg_Vt3T, disasm_arg_Vt4T, disasm_arg_offs, disasm_arg_XnS, disasm_arg_offe, disasm_arg_Qi, disasm_arg_Xm, disasm_arg_Qi3, disasm_arg_Qi2, disasm_arg_Qi1, disasm_arg_VtB, disasm_arg_VtH, disasm_arg_VtS, disasm_arg_VtD, disasm_arg_i1, disasm_arg_i2, disasm_arg_i4, disasm_arg_i8, disasm_arg_Vt3B, disasm_arg_Vt3H, disasm_arg_Vt3S, disasm_arg_Vt3D, disasm_arg_i3, disasm_arg_i6, disasm_arg_i12, disasm_arg_i24, disasm_arg_Vt2B, disasm_arg_Vt2H, disasm_arg_Vt2S, disasm_arg_Vt2D, disasm_arg_i16, disasm_arg_Vt4B, disasm_arg_Vt4H, disasm_arg_Vt4S, disasm_arg_Vt4D, disasm_arg_i32, disasm_arg_z, disasm_arg_z3, disasm_arg_z2, disasm_arg_z4, disasm_arg_Rd, disasm_arg_Rd1, disasm_arg_Rt1, disasm_arg_Wd, disasm_arg_Wt, disasm_arg_FPt, disasm_arg_prf_op, disasm_arg_is4_opt, disasm_arg_FPm, disasm_arg_iz4_opt, disasm_arg_im4_opt, disasm_arg_nRt, disasm_arg_FPst, disasm_arg_j_opt, disasm_arg_Rom, disasm_arg_amountj, disasm_arg_amountz, disasm_arg_amountjs, disasm_arg_amountj2, disasm_arg_amountj3, disasm_arg_shiftj_opt, disasm_arg_Rsom, disasm_arg_exts, disasm_arg_Wn, disasm_arg_Wm, disasm_arg_Xd, disasm_arg_Vt16b, disasm_arg_Vn16b, disasm_arg_Qt, disasm_arg_Sn, disasm_arg_Vm4s, disasm_arg_Vt4s, disasm_arg_Vn4s, disasm_arg_Qn, disasm_arg_St, disasm_arg_FPjt, disasm_arg_Vnj, disasm_arg_FPidx, disasm_arg_Vtjq, disasm_arg_Ht, disasm_arg_Hn, disasm_arg_Hm, disasm_arg_FPn, disasm_arg_VtH1, disasm_arg_VnH1, disasm_arg_VmH1, disasm_arg_Vtzq, disasm_arg_Vnzq, disasm_arg_Vmzq, disasm_arg_simd0, disasm_arg_FPz2t, disasm_arg_FPz2n, disasm_arg_FPz2m, disasm_arg_VnT, disasm_arg_VmT, disasm_arg_FPz3t, disasm_arg_FPz3n, disasm_arg_FPz4n, disasm_arg_VnT3, disasm_arg_Vn2d, disasm_arg_Vn2h, disasm_arg_Vnz, disasm_arg_FPz4t, disasm_arg_Vtz, disasm_arg_FPz3m, disasm_arg_Dt, disasm_arg_Dn, disasm_arg_shrshift, disasm_arg_Vtj2, disasm_arg_Vnj2, disasm_arg_shlshift, disasm_arg_FPnj, disasm_arg_VnTa, disasm_arg_FPjt2, disasm_arg_FPjn2, disasm_arg_Vtz3, disasm_arg_VmTs, disasm_arg_VmHs, disasm_arg_VmTs2, disasm_arg_Vn116b, disasm_arg_Vn216b, disasm_arg_Vn316b, disasm_arg_Vn416b, disasm_arg_Vtj, disasm_arg_R2n, disasm_arg_FPidxk, disasm_arg_Vtzq2, disasm_arg_VnT2, disasm_arg_Vnz3, disasm_arg_Vnzq2, disasm_arg_shift8, disasm_arg_VtT3, disasm_arg_VmT3, disasm_arg_VtT4, disasm_arg_imm8, disasm_arg_amountk_opt, disasm_arg_amountk2_opt, disasm_arg_imm64, disasm_arg_Vt2d, disasm_arg_F16, disasm_arg_F32, disasm_arg_F64, disasm_arg_VmTs4b, disasm_arg_Vm2d, disasm_arg_Vm16b, disasm_arg_Vd16b, disasm_arg_Vd4s, disasm_arg_FPz5t, disasm_arg_fbits, disasm_arg_FPz5n, disasm_arg_Vn1d, disasm_arg_Vt1d, disasm_arg_FPk5t, disasm_arg_FPz5m, disasm_arg_jz, disasm_arg_FPz5d };
  35. /*** private functions ***/
  36. char *disasm_str(char*s,int n) {if(!s)return "?";while(n){s++;if(!*s){s++;n--;}}return *s?s:"?";}
  37. char *disasm_sysreg(uint8_t p,uint8_t k,uint8_t n,uint8_t m,uint8_t j) {char *t=NULL;switch(p){case 2: switch(k) {case 0: switch(n) {case 0: switch(m) {case 0: t="?\0?\0OSDTRRX_EL1\0"; break;case 2: t="MDCCINT_EL1\0?\0MDSCR_EL1\0"; break;case 3: t="?\0?\0OSDTRTX_EL1\0"; break;case 6: t="?\0?\0OSECCR_EL1\0"; break;default: { n=j; j=m; switch(n) {case 4: t="DBGBVR0_EL1\0DBGBVR1_EL1\0DBGBVR2_EL1\0DBGBVR3_EL1\0DBGBVR4_EL1\0DBGBVR5_EL1\0DBGBVR6_EL1\0DBGBVR7_EL1\0"; break;case 5: t="DBGBCR0_EL1\0DBGBCR1_EL1\0DBGBCR2_EL1\0DBGBCR3_EL1\0DBGBCR4_EL1\0DBGBCR5_EL1\0DBGBCR6_EL1\0DBGBCR7_EL1\0"; break;case 6: t="DBGWVR0_EL1\0DBGWVR1_EL1\0DBGWVR2_EL1\0DBGWVR3_EL1\0DBGWVR4_EL1\0DBGWVR5_EL1\0DBGWVR6_EL1\0DBGWVR7_EL1\0"; break;case 7: t="DBGWCR0_EL1\0DBGWCR1_EL1\0DBGWCR2_EL1\0DBGWCR3_EL1\0DBGWCR4_EL1\0DBGWCR5_EL1\0DBGWCR6_EL1\0DBGWCR7_EL1\0"; break;} break; }} break;case 1: if(m==0) t="MDRAR_EL1\0?\0?\0?\0OSLAR_EL1\0"; else if(j==4) { j=m; t="OSLSR_EL1\0?\0OSDLR_EL1\0DBGPRCR_EL1\0"; }break;case 7: if(j==6) { j=m; t="?\0?\0?\0?\0?\0?\0?\0?\0DBGCLAIMSET_EL1\0DBGCLAIMCLR_EL1\0?\0?\0?\0?\0DBGAUTHSTATUS_EL1\0"; }break;} break;case 3: if(n==0&&j==0) { j=m; t="?\0MDCCSR_EL0\0?\0?\0DBGDTR_EL0\0DBGDTRRX_EL0\0"; } break;case 4: if(n==0&&m==7) t="DBGVCR32_EL2\0"; break;} break;case 3: switch(k) {case 0: switch(n) {case 0: if(m==0) t="MIDR_EL1\0?\0?\0?\0?\0MPIDR_EL1\0REVIDR_EL1\0?\0ID_PFR0_EL1\0ID_PFR1_EL1\0ID_DFR0_EL1\0ID_AFR0_EL1\0ID_MMFR0_EL1\0ID_MMFR1_EL1\0ID_MMFR2_EL1\0ID_MMFR3_EL1\0ID_ISAR0_EL1\0ID_ISAR1_EL1\0ID_ISAR2_EL1\0ID_ISAR2_EL1\0ID_ISAR3_EL1\0ID_ISAR4_EL1\0ID_ISAR5_EL1\0ID_MMFR4_EL1\0?\0MVFR0_EL1\0MVFR1_EL1\0MVFR2_EL1\0?\0?\0?\0?\0?\0ID_AA64PFR0_EL1\0ID_AA64PFR1_EL1\0?\0?\0ID_AA64ZFR0_EL1\0?\0?\0?\0ID_AA64DFR0_EL1\0ID_AA64DFR1_EL1\0?\0?\0ID_AA64AFR0_EL1\0ID_AA64AFR1_EL1\0?\0?\0ID_AA64ISAR0_EL1\0ID_AA64ISAR1_EL1\0?\0?\0?\0?\0?\0?\0ID_AA64MMFR0_EL1\0ID_AA64MMFR1_EL1\0ID_AA64MMFR2_EL1\0"; break;case 1: switch(m) {case 0: t="SCTLR_EL1\0ACTLR_EL1\0CPACR_EL1\0"; break;case 2: t="ZCR_EL1\0"; break;} break;case 2: if(m==0) t="TTBR0_EL1\0TTBR1_EL1\0TCR_EL1\0"; break;case 4: switch(m) {case 0: t="SPSR_EL1\0ELR_EL1\0"; break;case 1: t="SP_EL0\0"; break;case 2: t="SPSel\0?\0CurrentEL\0PAN\0UAO\0"; break;case 6: t="ICC_PMR_EL1\0"; break;} break;case 5: switch(m) {case 1: t="AFSR0_EL1\0AFSR1_EL1\0"; break;case 2: t="ESR_EL1"; break;case 3: t="ERRIDR_EL1\0ERRSELR_EL1\0"; break;case 4: t="ERXFR_EL1\0ERXCTLR_EL1\0ERXSTATUS_EL1\0ERXADDR_EL1\0"; break;case 5: t="ERXMISC0_EL1\0ERXMISC1_EL1\0"; break;} break;case 6: if(m==0) t="FAR_EL1\0"; break;case 7: if(m==4) t="PAR_EL1\0"; break;case 9: switch(m) {case 9: t="PMSCR_EL1\0?\0PMSICR_EL1\0PMSIRR_EL1\0PMSFCR_EL1\0PMSEVFR_EL1\0PMSLATFR_EL1\0PMSIDR_EL1\0PMSIDR_EL1\0"; break;case 10: t="PMBLIMITR_EL1\0PMBPTR_EL1\0?\0PMBSR_EL1\0?\0?\0?\0PMBIDR_EL1\0"; break;case 14: t="?\0PMINTENSET_EL1\0PMINTENCLR_EL1\0"; break;} break;case 10: if(m==4) t="LORSA_EL1\0LOREA_EL1\0LORN_EL1\0LORC_EL1\0?\0?\0?\0LORID_EL1\0"; else if(m!=4&&j==0) { j=m; t="?\0?\0MAIR_EL1\0AMAIR_EL1\0"; }break;case 12: switch(m) {case 0: t="VBAR_EL1\0RVBAR_EL1\0RMR_EL1\0"; break;case 1: t="ISR_EL1\0DISR_EL1\0"; break;case 8: t="ICC_IAR0_EL1\0ICC_EOIR0_EL1\0ICC_HPPIR0_EL1\0ICC_BPR0_EL1\0ICC_AP0R0_EL1\0ICC_AP0R1_EL1\0ICC_AP0R2_EL1\0ICC_AP0R3_EL1\0"; break;case 9: t="ICC_AP1R0_EL1\0ICC_AP1R1_EL1\0ICC_AP1R2_EL1\0ICC_AP1R3_EL1\0"; break;case 11: t="?\0ICC_DIR_EL1\0?\0ICC_RPR_EL1\0?\0ICC_SGI1R_EL1\0ICC_ASGI1R_EL1\0ICC_SGI0R_EL1\0"; break;case 12: t="ICC_IAR1_EL1\0ICC_EOIR1_EL1\0ICC_HPPIR1_EL1\0ICC_BPR1_EL1\0ICC_CTLR_EL1\0ICC_SRE_EL1\0ICC_IGRPEN0_EL1\0ICC_IGRPEN1_EL1\0"; break;} break;case 13: if(m==0) t="?\0CONTEXTIDR_EL1\0?\0?\0TPIDR_EL1\0"; break;case 14: if(m==1) t="CNTKCTL_EL1\0"; break;} break;case 1: if(n==0&&m==0) t="CCSIDR_EL1\0CLIDR_EL1\0?\0?\0?\0?\0?\0AIDR_EL1\0"; break;case 2: if(n==0&&m==0) t="CSSELR_EL1\0"; break;case 3: switch(n) {case 0: if(m==0) t="?\0CTR_EL0\0?\0?\0?\0?\0?\0DCZID_EL0\0"; break;case 4: switch(m) {case 2: t="NZCV\0DAIF\0"; break;case 4: t="FPCR\0FPSR\0"; break;case 5: t="DSPSR_EL0\0DLR_EL0\0"; break;} break;case 9: switch(m) {case 12: t="PMCR_EL0\0PMCNTENSET_EL0\0PMCNTENCLR_EL0\0PMOVSCLR_EL0\0PMSWINC_EL0\0PMSELR_EL0\0PMCEID0_EL0\0PMCEID1_EL0\0"; break;case 13: t="PMCCNTR_EL0\0PMXEVTYPER_EL0\0PMXEVCNTR_EL0\0"; break;case 14: t="PMUSERENR_EL0\0?\0?\0PMOVSSET_EL0\0"; break;} break;
  38. case 13: if(m==0) t="?\0?\0TPIDR_EL0\0TPIDRRO_EL0\0"; break;case 14: switch(m) {case 0: t="CNTFRQ_EL0\0CNTPCT_EL0\0CNTVCT_EL0\0"; break;case 2: t="CNTP_TVAL_EL0\0CNTP_CTL_EL0\0CNTP_CVAL_EL0\0"; break;case 3: t="CNTV_TVAL_EL0\0CNTV_CTL_EL0\0CNTV_CVAL_EL0\0"; break;} break;} break;case 4: switch(n) {case 0: if(m==0) t="VPIDR_EL2\0?\0?\0?\0?\0VMPIDR_EL2\0"; break;case 1: switch(m) {case 0: t="SCTLR_EL2\0ACTLR_EL2\0"; break;case 1: t="HCR_EL2\0MDCR_EL2\0CPTR_EL2\0HSTR_EL2\0?\0?\0?\0HACR_EL2\0"; break;case 2: t="ZCR_EL2\0"; break;} break;case 2: switch(m) {case 0: t="TTBR0_EL2\0?\0TCR_EL2\0"; break;case 1: t="VTTBR0_EL2\0?\0VTCR_EL2\0"; break;} break;case 3: if(m==0) t="DACR32_EL2\0"; break;case 4: switch(m) {case 0: t="SPSR_EL2\0ELR_EL2\0"; break;case 1: t="SP_EL1\0"; break;case 3: t="SPSR_irq\0SPSR_abt\0SPSR_und\0SPSR_fiq\0"; break;} break;case 5: switch(m) {case 0: t="?\0IFSR32_EL2\0"; break;case 1: t="AFSR0_EL2\0AFSR1_EL2\0"; break;case 2: t="ESR_EL2\0?\0?\0VSESR_EL2\0"; break;case 3: t="FPEXC32_EL2\0"; break;} break;case 6: if(m==0) t="FAR_EL2\0?\0?\0?\0HPFAR_EL2\0"; break;case 9: if(m==9) t="PMSCR_EL2\0"; break;case 10: switch(m) {case 2: t="MAIR_EL2\0"; break;case 3: t="AMAIR_EL2\0"; break;} break;case 12: switch(m) {case 0: t="VBAR_EL2\0RVBAR_EL2\0RMR_EL2\0"; break;case 1: t="?\0VDISR_EL2\0"; break;case 8: t="ICH_AP0R0_EL2\0ICH_AP0R1_EL2\0ICH_AP0R2_EL2\0ICH_AP0R3_EL2\0"; break;case 9: t="ICH_AP1R0_EL2\0ICH_AP1R1_EL2\0ICH_AP1R2_EL2\0ICH_AP1R3_EL2\0ICC_SRE_EL2\0"; break;case 11: t="ICH_HCR_EL2\0ICH_VTR_EL2\0ICH_MISR_EL2\0ICH_EISR_EL2\0?\0ICH_ELRSR_EL2\0?\0ICH_VMCR_EL2\0"; break;case 12: t="ICH_LR0_EL2\0ICH_LR1_EL2\0ICH_LR2_EL2\0ICH_LR3_EL2\0ICH_LR4_EL2\0ICH_LR5_EL2\0ICH_LR6_EL2\0ICH_LR7_EL2\0"; break;case 13: t="ICH_LR8_EL2\0ICH_LR9_EL2\0ICH_LR10_EL2\0ICH_LR11_EL2\0ICH_LR12_EL2\0ICH_LR13_EL2\0ICH_LR14_EL2\0ICH_LR15_EL2\0"; break;} break;case 13: if(m==0) t="?\0CONTEXTIDR_EL2\0TPIDR_EL2\0"; break;case 14: switch(m) {case 0: t="?\0?\0?\0CNTVOFF_EL2\0"; break;case 1: t="CNTHCTL_EL2\0"; break;case 2: t="CNTHP_TVAL_EL2\0CNTHP_CTL_EL2\0CNTHP_CVAL_EL2\0"; break;case 3: t="CNTHV_TVAL_EL2\0CNTHV_CTL_EL2\0CNTHV_CVAL_EL2\0"; break;} break;} break;case 5: if(n==4&&m==0) t="SPSR_EL12\0ELR_EL12\0"; break;case 6: if(n==4&&m==1) t="SP_EL2\0"; break;case 7: if(n==14&&m==2) t="CNTPS_TVAL_EL1\0CNTPS_CTL_EL1\0CNTPS_CVAL_EL1\0"; break;} break;}return t?disasm_str(t,j):NULL;}
  39. uint64_t disasm_dbm(int k, int j, int i) {int e=(k<<6)|(~j&0x3F),l=6;uint64_t m,r;while(l>=0 && !(e&(1<<l))){l--;}if(l<1)return -1;e=1<<l;l=e-1;j&=l;i&=l;if(j==l)return -1;m=~0ULL>>(64-(j+1));m=(m>>i)|(m<<(e-i));r=m;i=e;while(i<64){r|=(m<<i);i+=e;}return r;}
  40. /*** public API ***/
  41. uint64_t disasm(uint64_t addr, char *str)
  42. {
  43. uint32_t i=0;
  44. uint16_t op=0, om=0, j=0;
  45. uint8_t t=0, s=0, n=0, k=0, m=0, c=0, p=0, a=0, d=0, b=0, q=0, z=0, o=0;
  46. uint32_t ic32, ic32_20, ic32_15, ic32_16, ic32_5, ic32_8, ic32_22, ic32_13, ic32_14, ic32_9, ic32_10, ic32_21, ic32_4, ic32_12, ic32_24, ic32_11, ic32_18, ic32_27, ic32_28, ic32_29, ic32_25, ic32_26, ic32_23, ic32_30, ic32_19, ic32_31;
  47. uint64_t iaddr=addr;
  48. char *names=NULL,*olds=str;
  49. char *pstate="?\0?\0?\0uao\0pan\0spsel\0daifs\0daifc\0";
  50. char *conds="eq\0ne\0cs\0cc\0mi\0pl\0vs\0vc\0hi\0ls\0ge\0lt\0gt\0le\0al\0nv\0";
  51. char *share="?\0oshld\0oshst\0osh\0?\0nshld\0nshst\0nsh\0?\0ishld\0ishst\0ish\0?\0ld\0st\0sy\0";
  52. char *at_op0="s1e1r\0s1e1w\0s1e0r\0s1e0w\0";
  53. char *at_op1="s1e1rp\0s1e1wp\0";
  54. char *at_op2="s1e2r\0s1e2w\0?\0?\0s12e1r\0s12e1w\0s12e0r\0s12e0w\0s1e3r\0s1e3w\0";
  55. char *dc_op0="?\0ivac\0isw\0";
  56. char *dc_op1="csw\0cisw\0";
  57. char *dc_op2="cvac\0cvau\0civac\0";
  58. char *ic_op="ialluis\0iallu\0?\0ivau\0";
  59. char *tlbi_op0="vmalle1is\0vae1is\0aside1is\0vaae1is\0?\0vale1is\0?\0vaale1is\0vmalle1\0vae1\0aside1\0vaae1\0?\0vale1\0?\0vaale1\0alle2is\0vae2is\0?\0?\0alle1is\0vale2is\0vmalls12e1is\0alle2\0vae2\0?\0?\0alle1\0vale2\0vmalls12e1\0";
  60. char *tlbi_op1="ipas2e1is\0ipas2le1is\0ipas2e1\0ipas2el1\0";
  61. char *tlbi_op2="alle3is\0vae3is\0?\0vale3is\0alle3\0vae3\0?\0vale3\0";
  62. char *quantum="8b\016b\04h\08h\02s\04s\01d\02d\01q\02q\0";
  63. char *prf_typ="pld\0pli\0pst\0";
  64. char *prf_pol="keep\0strm\0";
  65. char *extend32="uxtb\0uxth\0lsl\0uxtx\0sxtb\0sxth\0sxtw\0sxtx\0";
  66. char *extend64="uxtb\0uxth\0uxtw\0lsl\0sxtb\0sxth\0sxtw\0sxtx\0";
  67. char *shift="lsl\0lsr\0asr\0ror\0";
  68. uint8_t args[9]={0,0,0,0,0,0,0,0,0};
  69. ic32=*((uint32_t*)addr);
  70. ic32_20=ic32>>20; ic32_15=ic32>>15; ic32_16=ic32>>16; ic32_5=ic32>>5; ic32_8=ic32>>8; ic32_22=ic32>>22; ic32_13=ic32>>13; ic32_14=ic32>>14; ic32_9=ic32>>9; ic32_10=ic32>>10; ic32_21=ic32>>21; ic32_4=ic32>>4; ic32_12=ic32>>12; ic32_24=ic32>>24; ic32_11=ic32>>11; ic32_18=ic32>>18; ic32_27=ic32>>27; ic32_28=ic32>>28; ic32_29=ic32>>29; ic32_25=ic32>>25; ic32_26=ic32>>26; ic32_23=ic32>>23; ic32_30=ic32>>30; ic32_19=ic32>>19; ic32_31=ic32>>31;
  71. //handle multiple NOPs at once
  72. if(ic32==0b11010101000000110010000000011111) {
  73. while(*((uint32_t*)addr)==ic32) { op++; addr+=4; }
  74. if(str!=NULL) str+=sprintf(str," %d x nop",op);
  75. *str=0;
  76. return addr;
  77. }
  78. //decode instruction
  79. if(((ic32_8)&0b111111110000000001111100)==0b000010000000000001111100) {
  80. names="stxrb\0stlxrb\0?\0?\0?\0?\0?\0?\0?\0?\0casb\0caslb\0?\0?\0casab\0casalb\0";
  81. op=((ic32_20)&0xe)|((ic32_15)&0x1); d=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  82. args[0]=disasm_arg_Wd; args[1]=disasm_arg_Wt; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  83. } else
  84. if(((ic32_8)&0b111111111011111111111100)==0b000011100010000101101000) {
  85. names="fcvtn\0";
  86. z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  87. q=0;
  88. args[0]=disasm_arg_Vtzq2; args[1]=disasm_arg_Vnz3;
  89. } else
  90. if(((ic32_8)&0b111111111011111111111100)==0b000011100010000111101000) {
  91. names="fcvtl\0";
  92. z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  93. q=0;
  94. args[0]=disasm_arg_Vtz3; args[1]=disasm_arg_Vnzq2;
  95. } else
  96. if(((ic32_8)&0b111111110011111111111100)==0b000011100010000100101000) {
  97. names="xtn\0";
  98. z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  99. q=0;
  100. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT2;
  101. } else
  102. if(((ic32_8)&0b111111110011111111111100)==0b000011100010000100111000) {
  103. names="shll\0";
  104. z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  105. q=0;
  106. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_shift8;
  107. } else
  108. if(((ic32_8)&0b111111110010000010011100)==0b000011100010000010010000) {
  109. names="sqdmlal\0sqdmlsl\0sqdmull\0";
  110. op=((ic32_13)&0x3); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  111. q=0;
  112. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  113. } else
  114. if(((ic32_8)&0b111111111100000010110100)==0b000011110100000000100000) {
  115. names="smlal\0smlsl\0";
  116. op=((ic32_14)&0x1); j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  117. z=1;q=0;
  118. args[0]=disasm_arg_Vtz3; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  119. } else
  120. if(((ic32_8)&0b111111111100000011110100)==0b000011110100000010100000) {
  121. names="smull\0";
  122. j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  123. z=1;q=0;
  124. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  125. } else
  126. if(((ic32_8)&0b111111111100000010110100)==0b000011111000000000100000) {
  127. names="smlal\0smlsl\0";
  128. op=((ic32_14)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  129. z=2;q=0;
  130. args[0]=disasm_arg_Vtz3; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  131. } else
  132. if(((ic32_8)&0b111111111100000011110100)==0b000011111000000010100000) {
  133. names="smull\0";
  134. j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  135. z=2;q=0;
  136. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  137. } else
  138. if(((ic32_8)&0b111111111111111111111100)==0b000111100110001001000000) {
  139. names="fcvt\0";
  140. n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  141. args[0]=disasm_arg_St; args[1]=disasm_arg_Dn;
  142. } else
  143. if(((ic32_8)&0b111111110011111001111100)==0b000111100010001001000000) {
  144. names="fcvt\0";
  145. z=((ic32_22)&0x3); k=((ic32_15)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  146. args[0]=disasm_arg_FPk5t; args[1]=disasm_arg_FPz5n;
  147. } else
  148. if(((ic32_8)&0b111111110011100001111100)==0b000111100010000001000000) {
  149. names="fmov\0fabs\0fneg\0fsqrt\0?\0?\0?\0?\0frintn\0frintp\0frintm\0frintz\0frinta\0?\0frintx\0frinti\0";
  150. op=((ic32_15)&0xf); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  151. args[0]=disasm_arg_FPz5t; args[1]=disasm_arg_FPz5n;
  152. } else
  153. if((ic32&0b11111111001000001111110000001111)==0b00011110001000000010000000000000) {
  154. names="fcmp\0fcmpe\0";
  155. op=((ic32_4)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f);
  156. args[0]=disasm_arg_FPz5n; args[1]=disasm_arg_FPz5m;
  157. } else
  158. if((ic32&0b11111111001000001111110000001111)==0b00011110001000000010000000001000) {
  159. names="fcmp\0fcmpe\0";
  160. op=((ic32_4)&0x1); z=((ic32_22)&0x3); n=((ic32_5)&0x1f);
  161. args[0]=disasm_arg_FPz5n; args[1]=disasm_arg_simd0;
  162. } else
  163. if((ic32&0b11111111001000000001111111100000)==0b00011110001000000001000000000000) {
  164. names="fmov\0";
  165. z=((ic32_22)&0x3); j=((ic32_13)&0xff); t=((ic32)&0x1f);
  166. args[0]=disasm_arg_FPz5t; args[1]=disasm_arg_jz;
  167. } else
  168. if(((ic32_8)&0b111111110010000000001100)==0b000111100010000000000100) {
  169. names="ffcmp\0ffcmpe\0";
  170. op=((ic32_4)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); c=((ic32_12)&0xf); n=((ic32_5)&0x1f); j=((ic32)&0xf);
  171. args[0]=disasm_arg_FPz5n; args[1]=disasm_arg_FPz5m; args[2]=disasm_arg_j; args[3]=disasm_arg_c;
  172. } else
  173. if(((ic32_8)&0b111111110010000000001100)==0b000111100010000000001000) {
  174. names="fmul\0fdiv\0fadd\0fsub\0fmax\0fmin\0fmaxnm\0fminmn\0fnmul\0";
  175. op=((ic32_12)&0xf); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  176. args[0]=disasm_arg_FPz5t; args[1]=disasm_arg_FPz5n; args[2]=disasm_arg_FPz5m;
  177. } else
  178. if(((ic32_8)&0b111111110010000000001100)==0b000111100010000000001100) {
  179. names="fcsel\0";
  180. z=((ic32_22)&0x3); m=((ic32_16)&0x1f); c=((ic32_12)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  181. args[0]=disasm_arg_FPz5t; args[1]=disasm_arg_FPz5n; args[2]=disasm_arg_FPz5m; args[3]=disasm_arg_c;
  182. } else
  183. if(((ic32_24)&0b11111111)==0b00011111) {
  184. names="fmadd\0fmsub\0fnmadd\0fnmsub\0";
  185. op=((ic32_20)&0x2)|((ic32_15)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); d=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  186. args[0]=disasm_arg_FPz5t; args[1]=disasm_arg_FPz5n; args[2]=disasm_arg_FPz5m; args[3]=disasm_arg_FPz5t; args[4]=disasm_arg_FPz5n; args[5]=disasm_arg_FPz5d;
  187. } else
  188. if(((ic32_8)&0b111111111111100011111100)==0b001011110000000011100100) {
  189. names="movi\0";
  190. j=((ic32_11)&0xe0)|((ic32_5)&0x1f); t=((ic32)&0x1f);
  191. args[0]=disasm_arg_Dt; args[1]=disasm_arg_imm64;
  192. } else
  193. if(((ic32_8)&0b111111110010000000001100)==0b001110000010000000000000) {
  194. names="ldaddb\0ldclrb\0ldeorb\0ldsetb\0ldsmaxb\0ldsminb\0ldumaxb\0lduminb\0swpb\0?\0?\0?\0?\0?\0?\0?\0ldaddlb\0ldclrlb\0ldeorlb\0ldsetlb\0ldsmaxlb\0ldsminlb\0ldumaxlb\0lduminlb\0swplb\0?\0?\0?\0?\0?\0?\0?\0ldaddab\0ldclrab\0ldeorab\0ldsetab\0ldsmaxab\0ldsminab\0ldumaxab\0lduminab\0swpab\0?\0?\0?\0?\0?\0?\0?\0ldaddalb\0ldclralb\0ldeoralb\0ldsetalb\0ldsmaxalb\0ldsminalb\0ldumaxalb\0lduminalb\0swpalb\0";
  195. op=((ic32_18)&0x30)|((ic32_12)&0xf); d=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  196. args[0]=disasm_arg_Wd; args[1]=disasm_arg_Wt; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  197. } else
  198. if(((ic32_8)&0b110111110011111110011100)==0b000011100010000100001000) {
  199. names="?\0xtn\0sqxtn\0?\0?\0sqxtun\0uqxtn\0fcvtxn\0";
  200. op=((ic32_27)&0x4)|((ic32_13)&0x3); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  201. q=0;
  202. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT3;
  203. } else
  204. if(((ic32_8)&0b110111110010000011011100)==0b000011100010000000010000) {
  205. names="saddw\0ssubw\0uaddw\0usubw\0";
  206. op=((ic32_28)&0x2)|((ic32_13)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  207. q=0;
  208. args[0]=disasm_arg_VtT3; args[1]=disasm_arg_VnT3; args[2]=disasm_arg_VmT;
  209. } else
  210. if(((ic32_8)&0b110111110010000011011100)==0b000011100010000001000000) {
  211. names="addhn\0subhn\0raddhn\0rsubhn\0";
  212. op=((ic32_28)&0x2)|((ic32_13)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  213. q=0;
  214. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT3; args[2]=disasm_arg_VmT3;
  215. } else
  216. if(((ic32_8)&0b110111110010000011111100)==0b000011100010000011100000) {
  217. names="pmull\0umull\0";
  218. op=((ic32_29)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  219. q=0;
  220. args[0]=disasm_arg_VtT4; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  221. } else
  222. if(((ic32_8)&0b110111110010000000001100)==0b000011100010000000000000) {
  223. names="saddl\0saddw\0ssubl\0ssubw\0addhn\0sabal\0subhn\0sabdl\0smlal\0sqdmlal\0smlsl\0sqdmlsl\0?\0sqdmull\0pmull\0?\0uaddl\0uaddw\0usubl\0usubw\0raddhn\0uabal\0rsubhn\0uabdl\0umlal\0?\0umlsl\0?\0?\0?\0umull\0";
  224. op=((ic32_25)&0x10)|((ic32_12)&0xf); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  225. q=0;
  226. args[0]=disasm_arg_VtT3; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  227. } else
  228. if(((ic32_8)&0b110111111100000000100100)==0b000011110100000000100000) {
  229. names="smlal\0sqdmlal\0smlsl\0sqdmlsl\0smull\0sqdmull\0?\0?\0umlal\0?\0umlsl\0?\0umull\0";
  230. op=((ic32_26)&0x8)|((ic32_13)&0x6)|((ic32_12)&0x1); j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  231. z=1;q=0;
  232. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  233. } else
  234. if(((ic32_8)&0b110111111000000011100100)==0b000011110000000010000100) {
  235. names="?\0rshrn\0sqshrn\0sqrshrn\0sqshrun\0sqrshrun\0uqshrn\0uqrshrn\0";
  236. op=((ic32_27)&0x4)|((ic32_11)&0x3); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  237. q=0;
  238. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_VnTa; args[2]=disasm_arg_shrshift;
  239. } else
  240. if(((ic32_8)&0b110111111000000011111100)==0b000011110000000010100100) {
  241. names="sshll\0usshll\0";
  242. op=((ic32_29)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  243. q=0;
  244. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_VnTa; args[2]=disasm_arg_shlshift;
  245. } else
  246. if(((ic32_8)&0b110111111100000000100100)==0b000011111000000000100000) {
  247. names="smlal\0sqdmlal\0smlsl\0sqdmlsl\0smull\0sqdmull\0?\0?\0umlal\0?\0umlsl\0?\0umull\0";
  248. op=((ic32_26)&0x8)|((ic32_13)&0x6)|((ic32_12)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  249. z=2;q=0;
  250. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  251. } else
  252. if(((ic32_8)&0b111111110000000001111100)==0b010010000000000001111100) {
  253. names="stxrh\0stlxrh\0?\0?\0?\0?\0?\0?\0?\0?\0cash\0caslh\0?\0?\0casah\0casalh\0";
  254. op=((ic32_20)&0xe)|((ic32_15)&0x1); d=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  255. args[0]=disasm_arg_Wd; args[1]=disasm_arg_Wt; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  256. } else
  257. if(((ic32_8)&0b111111111110000011111100)==0b010011100000000000011100) {
  258. names="ins\0";
  259. j=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  260. args[0]=disasm_arg_Vtj; args[1]=disasm_arg_offs; args[2]=disasm_arg_FPidx; args[3]=disasm_arg_offe; args[4]=disasm_arg_R2n;
  261. } else
  262. if(((ic32_8)&0b111111111111111111001100)==0b010011100010100001001000) {
  263. names="aese\0aesd\0aesmc\0aesimc\0";
  264. op=((ic32_12)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  265. args[0]=disasm_arg_Vt16b; args[1]=disasm_arg_Vn16b;
  266. } else
  267. if(((ic32_8)&0b111111111011111111111100)==0b010011100010000101101000) {
  268. names="fcvtn2\0";
  269. z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  270. q=1;
  271. args[0]=disasm_arg_Vtzq2; args[1]=disasm_arg_Vnz3;
  272. } else
  273. if(((ic32_8)&0b111111111011111111111100)==0b010011100010000111101000) {
  274. names="fcvtl2\0";
  275. z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  276. q=1;
  277. args[0]=disasm_arg_Vtz3; args[1]=disasm_arg_Vnzq2;
  278. } else
  279. if(((ic32_8)&0b111111110011111111111100)==0b010011100010000100101000) {
  280. names="xtn2\0";
  281. z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  282. q=1;
  283. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT2;
  284. } else
  285. if(((ic32_8)&0b111111110011111111111100)==0b010011100010000100111000) {
  286. names="shll2\0";
  287. z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  288. q=1;
  289. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_shift8;
  290. } else
  291. if(((ic32_8)&0b111111110010000010011100)==0b010011100010000010010000) {
  292. names="sqdmlal2\0sqdmlsl2\0sqdmull2\0";
  293. op=((ic32_13)&0x3); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  294. q=1;
  295. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  296. } else
  297. if(((ic32_8)&0b111111111100000010110100)==0b010011110100000000100000) {
  298. names="smlal2\0smlsl2\0";
  299. op=((ic32_14)&0x1); j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  300. z=1;q=1;
  301. args[0]=disasm_arg_Vtz3; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  302. } else
  303. if(((ic32_8)&0b111111111100000011110100)==0b010011110100000010100000) {
  304. names="smull2\0";
  305. j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  306. z=1;q=1;
  307. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  308. } else
  309. if(((ic32_8)&0b111111111100000010110100)==0b010011111000000000100000) {
  310. names="smlal2\0smlsl2\0";
  311. op=((ic32_14)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  312. z=2;q=1;
  313. args[0]=disasm_arg_Vtz3; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  314. } else
  315. if(((ic32_8)&0b111111111100000011110100)==0b010011111000000010100000) {
  316. names="smull2\0";
  317. j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  318. z=2;q=1;
  319. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  320. } else
  321. if((ic32&0b11111111000000000000000000010000)==0b01010100000000000000000000000000) {
  322. names="b.%s\0";
  323. i=((ic32_23)&1?(0xffffffff<<19):0)|((ic32_5)&0x7ffff); c=((ic32)&0xf);
  324. args[0]=disasm_arg_labeli4;
  325. } else
  326. if(((ic32_8)&0b111111111110000011111100)==0b010111100000000000000100) {
  327. names="dup\0";
  328. j=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  329. args[0]=disasm_arg_FPjt; args[1]=disasm_arg_Vnj; args[2]=disasm_arg_offs; args[3]=disasm_arg_FPidx; args[4]=disasm_arg_offe;
  330. } else
  331. if(((ic32_8)&0b111111111110000011111100)==0b010111100000000000110000) {
  332. names="sha1su0\0";
  333. m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  334. args[0]=disasm_arg_Vt4s; args[1]=disasm_arg_Vn4s; args[2]=disasm_arg_Vm4s;
  335. } else
  336. if(((ic32_8)&0b111111111110000011001100)==0b010111100000000000000000) {
  337. names="sha1c\0sha1p\0sha1m\0sha1su0\0";
  338. op=((ic32_12)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  339. args[0]=disasm_arg_Qt; args[1]=disasm_arg_Sn; args[2]=disasm_arg_Vm4s;
  340. } else
  341. if(((ic32_8)&0b111111111110000011101100)==0b010111100000000001000000) {
  342. names="sha256h\0sha256h2\0";
  343. op=((ic32_12)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  344. args[0]=disasm_arg_Qt; args[1]=disasm_arg_Qn; args[2]=disasm_arg_Vm4s;
  345. } else
  346. if(((ic32_8)&0b111111111110000011111100)==0b010111100000000001100000) {
  347. names="sha256su1\0";
  348. m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  349. args[0]=disasm_arg_Vt4s; args[1]=disasm_arg_Vn4s; args[2]=disasm_arg_Vm4s;
  350. } else
  351. if(((ic32_8)&0b111111111111111111111100)==0b010111100010100000001000) {
  352. names="sha1h\0";
  353. n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  354. args[0]=disasm_arg_St; args[1]=disasm_arg_Sn;
  355. } else
  356. if(((ic32_8)&0b111111111111111111111100)==0b010111100010100000011000) {
  357. names="sha1su1\0";
  358. n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  359. args[0]=disasm_arg_Vt4s; args[1]=disasm_arg_Vn4s;
  360. } else
  361. if(((ic32_8)&0b111111111111111111111100)==0b010111100010100000101000) {
  362. names="sha256su0\0";
  363. n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  364. args[0]=disasm_arg_Vt4s; args[1]=disasm_arg_Vn4s;
  365. } else
  366. if(((ic32_8)&0b111111111110000011111100)==0b010111100100000000011100) {
  367. names="fmulx\0";
  368. m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  369. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Hn; args[2]=disasm_arg_Hm;
  370. } else
  371. if(((ic32_8)&0b111111111110000011111100)==0b010111100100000000100100) {
  372. names="fcmeq\0";
  373. m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  374. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Hn; args[2]=disasm_arg_Hm;
  375. } else
  376. if(((ic32_8)&0b111111111010000011111100)==0b010111100010000011011100) {
  377. names="fmulx\0";
  378. z=((ic32_22)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  379. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn; args[2]=disasm_arg_FPm;
  380. } else
  381. if(((ic32_8)&0b111111111010000011111100)==0b010111100010000011100100) {
  382. names="fcmeq\0";
  383. z=((ic32_22)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  384. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn; args[2]=disasm_arg_FPm;
  385. } else
  386. if(((ic32_8)&0b111111110111111111001100)==0b010111100011000011001000) {
  387. names="fmaxnmp\0faddp\0?\0fmaxp\0fminnmp\0?\0?\0fminp\0";
  388. op=((ic32_21)&0x4)|((ic32_12)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  389. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Vn2h;
  390. } else
  391. if(((ic32_8)&0b111111110110000011111100)==0b010111100100000000111100) {
  392. names="frecps\0frsqrts\0";
  393. op=((ic32_23)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  394. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Hn; args[2]=disasm_arg_Hm;
  395. } else
  396. if(((ic32_8)&0b111111110011111111111100)==0b010111100011000110111000) {
  397. names="addp\0";
  398. z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  399. args[0]=disasm_arg_FPz3t; args[1]=disasm_arg_Vn2d;
  400. } else
  401. if(((ic32_8)&0b111111110010000011111100)==0b010111100010000011111100) {
  402. names="frecps\0frsqrts\0";
  403. op=((ic32_23)&0x1); z=((ic32_22)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  404. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn; args[2]=disasm_arg_FPm;
  405. } else
  406. if(((ic32_8)&0b111111110010000010011100)==0b010111100010000010010000) {
  407. names="sqdmlal\0sqdmlsl\0sqdmull\0";
  408. op=((ic32_13)&0x3); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  409. args[0]=disasm_arg_FPz4t; args[1]=disasm_arg_FPz2n; args[2]=disasm_arg_FPz2m;
  410. } else
  411. if(((ic32_8)&0b111111111100000011100100)==0b010111110100000011000000) {
  412. names="sqdmulh\0sqrdmulh\0";
  413. op=((ic32_12)&0x1); j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  414. z=1;
  415. args[0]=disasm_arg_FPz4t; args[1]=disasm_arg_FPz4n; args[2]=disasm_arg_VmTs;
  416. } else
  417. if(((ic32_8)&0b111111111100000000110100)==0b010111110100000000110000) {
  418. names="sqdmlal\0sqdmlsl\0sqdmull\0";
  419. op=((ic32_14)&0x3); j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  420. z=1;
  421. args[0]=disasm_arg_FPz4t; args[1]=disasm_arg_FPz3n; args[2]=disasm_arg_VmTs;
  422. } else
  423. if(((ic32_8)&0b111111111000000011011100)==0b010111110000000001010100) {
  424. names="shl\0sqshl\0";
  425. op=((ic32_13)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  426. args[0]=disasm_arg_Dt; args[1]=disasm_arg_Dn; args[2]=disasm_arg_shlshift;
  427. } else
  428. if(((ic32_8)&0b111111111100000011100100)==0b010111111000000011000000) {
  429. names="sqdmulh\0sqrdmulh\0";
  430. op=((ic32_12)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  431. z=2;
  432. args[0]=disasm_arg_FPz4t; args[1]=disasm_arg_FPz4n; args[2]=disasm_arg_VmTs;
  433. } else
  434. if(((ic32_8)&0b111111111100000000110100)==0b010111111000000000110000) {
  435. names="sqdmlal\0sqdmlsl\0sqdmull\0";
  436. op=((ic32_14)&0x3); j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  437. z=2;
  438. args[0]=disasm_arg_FPz4t; args[1]=disasm_arg_FPz3n; args[2]=disasm_arg_VmTs;
  439. } else
  440. if(((ic32_16)&0b1111111111000000)==0b0110100011000000) {
  441. names="ldpsw\0";
  442. i=((ic32_21)&1?(0xffffffff<<7):0)|((ic32_15)&0x7f); m=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  443. args[0]=disasm_arg_Xt; args[1]=disasm_arg_Xm; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe; args[5]=disasm_arg_im4_opt;
  444. } else
  445. if(((ic32_16)&0b1111111101000000)==0b0110100101000000) {
  446. names="ldpsw\0";
  447. p=((ic32_23)&0x1); i=((ic32_21)&1?(0xffffffff<<7):0)|((ic32_15)&0x7f); m=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  448. args[0]=disasm_arg_Xt; args[1]=disasm_arg_Xm; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_im4_opt; args[5]=disasm_arg_offe;
  449. } else
  450. if(((ic32_8)&0b111111111110000010000100)==0b011011100000000000000100) {
  451. names="ins\0";
  452. j=((ic32_16)&0x1f); k=((ic32_11)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  453. args[0]=disasm_arg_Vtj; args[1]=disasm_arg_offs; args[2]=disasm_arg_FPidx; args[3]=disasm_arg_offe; args[4]=disasm_arg_Vnj; args[5]=disasm_arg_offs; args[6]=disasm_arg_FPidxk; args[7]=disasm_arg_offe;
  454. } else
  455. if(((ic32_8)&0b111111110011111111001100)==0b011011100011000011001000) {
  456. names="fmaxnmv\0?\0?\0fmaxv\0fminnmv\0?\0?\0fminv\0";
  457. op=((ic32_21)&0x4)|((ic32_12)&0x3); z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  458. args[0]=disasm_arg_FPt; args[1]=disasm_arg_Vn4s;
  459. } else
  460. if(((ic32_8)&0b111111111111100011111100)==0b011011110000000011100100) {
  461. names="movi\0";
  462. j=((ic32_11)&0xe0)|((ic32_5)&0x1f); t=((ic32)&0x1f);
  463. args[0]=disasm_arg_Vt2d; args[1]=disasm_arg_imm64;
  464. } else
  465. if(((ic32_8)&0b111111111111100011111100)==0b011011110000000011110100) {
  466. names="fmov\0";
  467. j=((ic32_11)&0xe0)|((ic32_5)&0x1f); t=((ic32)&0x1f);
  468. args[0]=disasm_arg_Vt2d; args[1]=disasm_arg_F64;
  469. } else
  470. if(((ic32_8)&0b111111110010000000001100)==0b011110000010000000000000) {
  471. names="ldaddh\0ldclrh\0ldeorh\0ldseth\0ldsmaxh\0ldsminh\0ldumaxh\0lduminh\0swph\0?\0?\0?\0?\0?\0?\0?\0ldaddlh\0ldclrlh\0ldeorlh\0ldsetlh\0ldsmaxlh\0ldsminlh\0ldumaxlh\0lduminlh\0swplh\0?\0?\0?\0?\0?\0?\0?\0ldaddah\0ldclrah\0ldeorah\0ldsetah\0ldsmaxah\0ldsminah\0ldumaxah\0lduminah\0swpah\0?\0?\0?\0?\0?\0?\0?\0ldaddalh\0ldclralh\0ldeoralh\0ldsetalh\0ldsmaxalh\0ldsminalh\0ldumaxalh\0lduminalh\0swpalh\0";
  472. op=((ic32_18)&0x30)|((ic32_12)&0xf); d=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  473. args[0]=disasm_arg_Wd; args[1]=disasm_arg_Wt; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  474. } else
  475. if(((ic32_8)&0b111111111101111111111100)==0b011111100001000011001000) {
  476. names="fmaxnmp\0";
  477. z=((ic32_21)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  478. args[0]=disasm_arg_FPt; args[1]=disasm_arg_Vnz;
  479. } else
  480. if(((ic32_8)&0b111111111110000011110100)==0b011111100100000000100100) {
  481. names="fcmge\0facge\0";
  482. op=((ic32_11)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  483. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Hn; args[2]=disasm_arg_Hm;
  484. } else
  485. if(((ic32_8)&0b111111111010000011110100)==0b011111100010000011100100) {
  486. names="fcmge\0facge\0";
  487. op=((ic32_11)&0x1); z=((ic32_22)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  488. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn; args[2]=disasm_arg_FPm;
  489. } else
  490. if(((ic32_8)&0b111111111110000011111100)==0b011111101100000000010100) {
  491. names="fabd\0";
  492. m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  493. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Hn; args[2]=disasm_arg_Hm;
  494. } else
  495. if(((ic32_8)&0b111111111110000011110100)==0b011111101100000000100100) {
  496. names="fcmgt\0facgt\0";
  497. op=((ic32_11)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  498. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Hn; args[2]=disasm_arg_Hm;
  499. } else
  500. if(((ic32_8)&0b111111111010000011111100)==0b011111101010000011010100) {
  501. names="fabd\0";
  502. z=((ic32_22)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  503. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn; args[2]=disasm_arg_FPm;
  504. } else
  505. if(((ic32_8)&0b111111111010000011110100)==0b011111101010000011100100) {
  506. names="fcmgt\0facgt\0";
  507. op=((ic32_11)&0x1); z=((ic32_22)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  508. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn; args[2]=disasm_arg_FPm;
  509. } else
  510. if(((ic32_8)&0b111111110010000011110100)==0b011111100000000010000100) {
  511. names="sqrdmlah\0sqrdmlsh\0";
  512. op=((ic32_11)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  513. args[0]=disasm_arg_FPz2t; args[1]=disasm_arg_FPz2n; args[2]=disasm_arg_FPz2m;
  514. } else
  515. if(((ic32_8)&0b111111110011111111001100)==0b011111100011000011001000) {
  516. names="?\0faddp\0?\0fmaxp\0fminnmp\0?\0?\0fminp\0";
  517. op=((ic32_21)&0x4)|((ic32_12)&0x3); z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  518. args[0]=disasm_arg_FPt; args[1]=disasm_arg_Vnz;
  519. } else
  520. if(((ic32_8)&0b111111111100000011010100)==0b011111110100000011010000) {
  521. names="sqrdmlah\0sqrdmlsh\0";
  522. op=((ic32_13)&0x1); j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  523. z=1;
  524. args[0]=disasm_arg_FPz4t; args[1]=disasm_arg_FPz3n; args[2]=disasm_arg_VmTs;
  525. } else
  526. if(((ic32_8)&0b111111111000000011111100)==0b011111110000000001100100) {
  527. names="sqshlu\0";
  528. j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  529. args[0]=disasm_arg_Dt; args[1]=disasm_arg_Dn; args[2]=disasm_arg_shlshift;
  530. } else
  531. if(((ic32_8)&0b111111111000000011111100)==0b011111110000000001110100) {
  532. names="uqshl\0";
  533. j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  534. args[0]=disasm_arg_FPjt2; args[1]=disasm_arg_FPjn2; args[2]=disasm_arg_shlshift;
  535. } else
  536. if(((ic32_8)&0b111111111100000011010100)==0b011111111000000011010000) {
  537. names="sqrdmlah\0sqrdmlsh\0";
  538. op=((ic32_13)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  539. z=2;
  540. args[0]=disasm_arg_FPz4t; args[1]=disasm_arg_FPz3n; args[2]=disasm_arg_VmTs;
  541. } else
  542. if(((ic32_8)&0b110111110011111110011100)==0b010011100010000100001000) {
  543. names="?\0xtn2\0sqxtn2\0?\0?\0sqxtun2\0uqxtn2\0fcvtxn2\0";
  544. op=((ic32_27)&0x4)|((ic32_13)&0x3); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  545. q=1;
  546. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT3;
  547. } else
  548. if(((ic32_8)&0b110111110010000011011100)==0b010011100010000000010000) {
  549. names="saddw2\0ssubw2\0uaddw2\0usubw2\0";
  550. op=((ic32_28)&0x2)|((ic32_13)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  551. q=1;
  552. args[0]=disasm_arg_VtT3; args[1]=disasm_arg_VnT3; args[2]=disasm_arg_VmT;
  553. } else
  554. if(((ic32_8)&0b110111110010000011011100)==0b010011100010000001000000) {
  555. names="addhn2\0subhn2\0raddhn2\0rsubhn2\0";
  556. op=((ic32_28)&0x2)|((ic32_13)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  557. q=1;
  558. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT3; args[2]=disasm_arg_VmT3;
  559. } else
  560. if(((ic32_8)&0b110111110010000011111100)==0b010011100010000011100000) {
  561. names="pmull2\0umull2\0";
  562. op=((ic32_29)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  563. q=1;
  564. args[0]=disasm_arg_VtT4; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  565. } else
  566. if(((ic32_8)&0b110111110010000000001100)==0b010011100010000000000000) {
  567. names="saddl2\0saddw2\0ssubl2\0ssubw2\0addhn2\0sabal2\0subhn2\0sabdl2\0smlal2\0sqdmlal2\0smlsl2\0sqdmlsl2\0?\0sqdmull2\0pmull2\0?\0uaddl2\0uaddw2\0usubl2\0usubw2\0raddhn2\0uabal2\0rsubhn2\0uabdl2\0umlal2\0?\0umlsl2\0?\0?\0?\0umull2\0";
  568. op=((ic32_25)&0x10)|((ic32_12)&0xf); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  569. q=1;
  570. args[0]=disasm_arg_VtT3; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  571. } else
  572. if(((ic32_8)&0b110111111100000000100100)==0b010011110100000000100000) {
  573. names="smlal2\0sqdmlal2\0smlsl2\0sqdmlsl2\0smull2\0sqdmull2\0?\0?\0umlal2\0?\0umlsl2\0?\0umull2\0";
  574. op=((ic32_26)&0x8)|((ic32_13)&0x6)|((ic32_12)&0x1); j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  575. z=1;q=1;
  576. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  577. } else
  578. if(((ic32_8)&0b110111111000000011100100)==0b010011110000000010000100) {
  579. names="?\0rshrn2\0sqshrn2\0sqrshrn2\0sqshrun2\0sqrshrun2\0uqshrn2\0uqrshrn2\0";
  580. op=((ic32_27)&0x4)|((ic32_11)&0x3); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  581. q=1;
  582. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_VnTa; args[2]=disasm_arg_shrshift;
  583. } else
  584. if(((ic32_8)&0b110111111000000011111100)==0b010011110000000010100100) {
  585. names="sshll2\0usshll2\0";
  586. op=((ic32_29)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  587. q=1;
  588. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_VnTa; args[2]=disasm_arg_shlshift;
  589. } else
  590. if(((ic32_8)&0b110111111100000000100100)==0b010011111000000000100000) {
  591. names="smlal2\0sqdmlal2\0smlsl2\0sqdmlsl2\0smull2\0sqdmull2\0?\0?\0umlal2\0?\0umlsl2\0?\0umull2\0";
  592. op=((ic32_26)&0x8)|((ic32_13)&0x6)|((ic32_12)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  593. z=2;q=1;
  594. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  595. } else
  596. if(((ic32_8)&0b110111111111111111001100)==0b010111101111100011001000) {
  597. names="fcmgt\0fcmeq\0fcmlt\0?\0fcmge\0fcmle\0";
  598. op=((ic32_27)&0x4)|((ic32_12)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  599. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Hn; args[2]=disasm_arg_simd0;
  600. } else
  601. if(((ic32_8)&0b110111111011111111001100)==0b010111101010000011001000) {
  602. names="fcmgt\0fcmeq\0fcmlt\0?\0fcmge\0fcmle\0";
  603. op=((ic32_27)&0x4)|((ic32_12)&0x3); z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  604. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn; args[2]=disasm_arg_simd0;
  605. } else
  606. if(((ic32_8)&0b110111110111111110001100)==0b010111100111100110001000) {
  607. names="?\0?\0fcvtns\0fcvtms\0fcvtas\0scvtf\0?\0?\0?\0?\0fcvtps\0fcvtzs\0?\0frecpe\0?\0frecpx\0?\0?\0fcvtnu\0fcvtmu\0fcvtau\0ucvtf\0?\0?\0?\0?\0fcvtpu\0fcvtzu\0?\0frsqrte\0";
  608. op=((ic32_25)&0x10)|((ic32_20)&0x8)|((ic32_12)&0x7); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  609. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Hn;
  610. } else
  611. if(((ic32_8)&0b110111110011111111001100)==0b010111100010000010001000) {
  612. names="cmgt\0cmeq\0cmlt\0abs\0cmge\0cmle\0?\0neg\0";
  613. op=((ic32_27)&0x4)|((ic32_12)&0x3); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  614. args[0]=disasm_arg_FPz3t; args[1]=disasm_arg_FPz3n; args[2]=disasm_arg_simd0;
  615. } else
  616. if(((ic32_8)&0b110111110011111100111100)==0b010111100010000000111000) {
  617. names="suqadd\0sqabs\0abs\0?\0usqadd\0sqneg\0neg\0";
  618. op=((ic32_27)&0x4)|((ic32_14)&0x3); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  619. args[0]=disasm_arg_FPz3t; args[1]=disasm_arg_FPz3n;
  620. } else
  621. if(((ic32_8)&0b110111110011111110011100)==0b010111100010000100001000) {
  622. names="?\0?\0sqxtn\0?\0?\0sqxtun\0uqxtn\0fcvtxn\0";
  623. op=((ic32_27)&0x4)|((ic32_13)&0x3); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  624. args[0]=disasm_arg_FPz3t; args[1]=disasm_arg_FPz4n;
  625. } else
  626. if(((ic32_8)&0b110111110011111110001100)==0b010111100010000110001000) {
  627. names="?\0?\0fcvtns\0fcvtms\0fcvtas\0scvtf\0?\0?\0?\0?\0fcvtps\0fcvtzs\0?\0frecpe\0?\0frecpx\0?\0?\0fcvtnu\0fcvtmu\0fcvtau\0ucvtf\0?\0?\0?\0?\0fcvtpu\0fcvtzu\0?\0frsqrte\0";
  628. op=((ic32_25)&0x10)|((ic32_20)&0x8)|((ic32_12)&0x7); z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  629. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn;
  630. } else
  631. if(((ic32_8)&0b110111110010000000000100)==0b010111100010000000000100) {
  632. names="?\0sqadd\0?\0?\0?\0sqsub\0cmgt\0cmge\0sshl\0sqshl\0srshl\0sqrshl\0?\0?\0?\0?\0add\0cmtst\0?\0?\0?\0?\0sqdmulh\0?\0?\0?\0?\0?\0?\0?\0?\0?\0?\0uqadd\0?\0?\0?\0uqsub\0cmhi\0cmhs\0ushl\0uqshl\0urshl\0uqrshl\0?\0?\0?\0?\0sub\0cmeq\0?\0?\0?\0?\0sqrdmulh\0";
  633. op=((ic32_24)&0x20)|((ic32_11)&0x1f); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  634. args[0]=disasm_arg_FPz3t; args[1]=disasm_arg_FPz3n; args[2]=disasm_arg_FPz3m;
  635. } else
  636. if(((ic32_8)&0b110111111100000000110100)==0b010111110000000000010000) {
  637. names="fmla\0fmls\0fmul\0?\0?\0?\0fmulx\0";
  638. op=((ic32_27)&0x4)|((ic32_14)&0x3); j=((ic32_9)&0x4)|((ic32_20)&0x3); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  639. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Hn; args[2]=disasm_arg_VmHs;
  640. } else
  641. if(((ic32_8)&0b110111111000000010001100)==0b010111110000000000000100) {
  642. names="sshr\0ssra\0srshr\0srsra\0?\0shl\0?\0sqshl\0ushr\0usra\0urshr\0ursra\0sri\0sli\0sqshlu\0uqshl\0";
  643. op=((ic32_26)&0x8)|((ic32_12)&0x7); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  644. args[0]=disasm_arg_Dt; args[1]=disasm_arg_Dn; args[2]=disasm_arg_shrshift;
  645. } else
  646. if(((ic32_8)&0b110111111000000011100100)==0b010111110000000010000100) {
  647. names="?\0?\0sqshrn\0sqrshrn\0sqshrun\0sqrshrun\0uqshrn\0uqrshrn\0";
  648. op=((ic32_27)&0x4)|((ic32_11)&0x3); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  649. args[0]=disasm_arg_FPjt; args[1]=disasm_arg_FPnj; args[2]=disasm_arg_shrshift;
  650. } else
  651. if(((ic32_8)&0b110111111000000011111100)==0b010111110000000011100100) {
  652. names="scvtf\0ucvtf\0";
  653. op=((ic32_29)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  654. args[0]=disasm_arg_FPjt2; args[1]=disasm_arg_FPjn2; args[2]=disasm_arg_shrshift;
  655. } else
  656. if(((ic32_8)&0b110111111000000011111100)==0b010111110000000011111100) {
  657. names="fcvtzs\0fcvtzu\0";
  658. op=((ic32_29)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  659. args[0]=disasm_arg_FPjt; args[1]=disasm_arg_FPjn2; args[2]=disasm_arg_shrshift;
  660. } else
  661. if(((ic32_8)&0b110111111100000000110100)==0b010111111000000000010000) {
  662. names="fmla\0fmls\0fmul\0sqrdmulh\0?\0?\0fmulx\0sqrdmlah\0";
  663. op=((ic32_27)&0x4)|((ic32_14)&0x3); j=((ic32_10)&0x2)|((ic32_21)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  664. z=0;
  665. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn; args[2]=disasm_arg_VmTs2;
  666. } else
  667. if(((ic32_8)&0b110111111110000000110100)==0b010111111100000000010000) {
  668. names="fmla\0fmls\0fmul\0?\0?\0?\0fmulx\0";
  669. op=((ic32_27)&0x4)|((ic32_14)&0x3); j=((ic32_11)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  670. z=1;
  671. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPn; args[2]=disasm_arg_VmTs2;
  672. } else
  673. if(((ic32_8)&0b101111111010000001111100)==0b000010000010000001111100) {
  674. names="casp\0caspl\0caspa\0caspal\0";
  675. op=((ic32_21)&0x2)|((ic32_15)&0x1); s=((ic32_30)&0x1); d=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  676. args[0]=disasm_arg_Rd; args[1]=disasm_arg_Rd1; args[2]=disasm_arg_Rt; args[3]=disasm_arg_Rt1; args[4]=disasm_arg_offs; args[5]=disasm_arg_XnS; args[6]=disasm_arg_offe;
  677. } else
  678. if(((ic32_8)&0b101111110011111101111100)==0b000010000001111101111100) {
  679. names="?\0?\0ldxrb\0ldaxrb\0stllrb\0stlrb\0ldlarb\0ldarb\0?\0?\0ldxrh\0ldaxrh\0stllrh\0stlrh\0ldlarh\0ldarh\0";
  680. op=((ic32_27)&0x8)|((ic32_21)&0x6)|((ic32_15)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  681. args[0]=disasm_arg_Wt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  682. } else
  683. if(((ic32_8)&0b101111111011111111010000)==0b000011000000000000000000) {
  684. names="st4\0st1\0ld4\0ld1\0";
  685. op=((ic32_21)&0x2)|((ic32_13)&0x1); q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  686. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_Vt4T; args[4]=disasm_arg_offs; args[5]=disasm_arg_XnS; args[6]=disasm_arg_offe;
  687. } else
  688. if(((ic32_8)&0b101111111011111111110000)==0b000011000000000001110000) {
  689. names="st1\0ld1\0";
  690. op=((ic32_22)&0x1); q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  691. args[0]=disasm_arg_VtT; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  692. } else
  693. if(((ic32_8)&0b101111111011111111010000)==0b000011000000000001000000) {
  694. names="st3\0st1\0ld3\0ld1\0";
  695. op=((ic32_21)&0x2)|((ic32_13)&0x1); q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  696. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_offs; args[4]=disasm_arg_XnS; args[5]=disasm_arg_offe;
  697. } else
  698. if(((ic32_8)&0b101111111011111111010000)==0b000011000000000010000000) {
  699. names="st2\0st1\0ld2\0ld1\0";
  700. op=((ic32_21)&0x2)|((ic32_13)&0x1); q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  701. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  702. } else
  703. if(((ic32_8)&0b101111111011111111010000)==0b000011001001111100000000) {
  704. names="st4\0st1\0ld4\0ld1\0";
  705. op=((ic32_21)&0x2)|((ic32_13)&0x1); q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  706. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_Vt4T; args[4]=disasm_arg_offs; args[5]=disasm_arg_XnS; args[6]=disasm_arg_offe; args[7]=disasm_arg_Qi;
  707. } else
  708. if(((ic32_8)&0b101111111011111111110000)==0b000011001001111101110000) {
  709. names="st1\0ld1\0";
  710. op=((ic32_22)&0x1); q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  711. args[0]=disasm_arg_VtT; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Qi1;
  712. } else
  713. if(((ic32_8)&0b101111111011111111010000)==0b000011001001111101000000) {
  714. names="st3\0st1\0ld3\0ld1\0";
  715. op=((ic32_21)&0x2)|((ic32_13)&0x1); q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  716. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_offs; args[4]=disasm_arg_XnS; args[5]=disasm_arg_offe; args[6]=disasm_arg_Qi3;
  717. } else
  718. if(((ic32_8)&0b101111111011111111010000)==0b000011001001111110000000) {
  719. names="st2\0st1\0ld2\0ld1\0";
  720. op=((ic32_21)&0x2)|((ic32_13)&0x1); q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  721. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe; args[5]=disasm_arg_Qi2;
  722. } else
  723. if(((ic32_8)&0b101111111010000011010000)==0b000011001000000000000000) {
  724. names="st4\0st1\0ld4\0ld1\0";
  725. op=((ic32_21)&0x2)|((ic32_13)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  726. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_Vt4T; args[4]=disasm_arg_offs; args[5]=disasm_arg_XnS; args[6]=disasm_arg_offe; args[7]=disasm_arg_Xm;
  727. } else
  728. if(((ic32_8)&0b101111111010000011110000)==0b000011001000000001110000) {
  729. names="st1\0ld1\0";
  730. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  731. args[0]=disasm_arg_VtT; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  732. } else
  733. if(((ic32_8)&0b101111111010000011010000)==0b000011001000000001000000) {
  734. names="st3\0st1\0ld3\0ld1\0";
  735. op=((ic32_21)&0x2)|((ic32_13)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  736. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_offs; args[4]=disasm_arg_XnS; args[5]=disasm_arg_offe; args[6]=disasm_arg_Xm;
  737. } else
  738. if(((ic32_8)&0b101111111010000011010000)==0b000011001000000010000000) {
  739. names="st2\0st1\0ld2\0ld1\0";
  740. op=((ic32_21)&0x2)|((ic32_13)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  741. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe; args[5]=disasm_arg_Xm;
  742. } else
  743. if(((ic32_8)&0b101111111111111111110000)==0b000011010100000011000000) {
  744. names="ld1r\0";
  745. q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  746. args[0]=disasm_arg_VtT; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  747. } else
  748. if(((ic32_8)&0b101111111111111111110000)==0b000011010100000011100000) {
  749. names="ld3r\0";
  750. q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  751. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_offs; args[4]=disasm_arg_XnS; args[5]=disasm_arg_offe;
  752. } else
  753. if(((ic32_8)&0b101111111111111111110000)==0b000011010110000011000000) {
  754. names="ld2r\0";
  755. q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  756. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  757. } else
  758. if(((ic32_8)&0b101111111111111111110000)==0b000011010110000011100000) {
  759. names="ld4r\0";
  760. q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  761. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_Vt4T; args[4]=disasm_arg_offs; args[5]=disasm_arg_XnS; args[6]=disasm_arg_offe;
  762. } else
  763. if(((ic32_8)&0b101111111011111111100000)==0b000011010000000000000000) {
  764. names="st1\0ld1\0";
  765. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  766. args[0]=disasm_arg_VtB; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  767. } else
  768. if(((ic32_8)&0b101111111011111111100000)==0b000011010000000000100000) {
  769. names="st3\0ld3\0";
  770. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  771. args[0]=disasm_arg_Vt3B; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  772. } else
  773. if(((ic32_8)&0b101111111011111111100000)==0b000011010000000001000000) {
  774. names="st1\0ld1\0";
  775. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  776. args[0]=disasm_arg_VtH; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  777. } else
  778. if(((ic32_8)&0b101111111011111111100000)==0b000011010000000001100000) {
  779. names="st3\0ld3\0";
  780. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  781. args[0]=disasm_arg_Vt3H; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  782. } else
  783. if(((ic32_8)&0b101111111011111111111100)==0b000011010000000010000100) {
  784. names="st1\0ld1\0";
  785. op=((ic32_22)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  786. args[0]=disasm_arg_VtD; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  787. } else
  788. if(((ic32_8)&0b101111111011111111101100)==0b000011010000000010000000) {
  789. names="st1\0ld1\0";
  790. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  791. args[0]=disasm_arg_VtS; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  792. } else
  793. if(((ic32_8)&0b101111111011111111111100)==0b000011010000000010100100) {
  794. names="st3\0ld3\0";
  795. op=((ic32_22)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  796. args[0]=disasm_arg_Vt3D; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  797. } else
  798. if(((ic32_8)&0b101111111011111111101100)==0b000011010000000010100000) {
  799. names="st3\0ld3\0";
  800. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  801. args[0]=disasm_arg_Vt3S; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  802. } else
  803. if(((ic32_8)&0b101111111011111111100000)==0b000011010010000000000000) {
  804. names="st2\0ld2\0";
  805. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  806. args[0]=disasm_arg_Vt2B; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  807. } else
  808. if(((ic32_8)&0b101111111011111111100000)==0b000011010010000000100000) {
  809. names="st4\0ld4\0";
  810. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  811. args[0]=disasm_arg_Vt4B; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  812. } else
  813. if(((ic32_8)&0b101111111011111111100000)==0b000011010010000001000000) {
  814. names="st2\0ld2\0";
  815. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  816. args[0]=disasm_arg_Vt2H; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  817. } else
  818. if(((ic32_8)&0b101111111011111111100000)==0b000011010010000001100000) {
  819. names="st4\0ld4\0";
  820. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  821. args[0]=disasm_arg_Vt4H; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  822. } else
  823. if(((ic32_8)&0b101111111011111111111100)==0b000011010010000010000100) {
  824. names="st2\0ld2\0";
  825. op=((ic32_22)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  826. args[0]=disasm_arg_Vt2D; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  827. } else
  828. if(((ic32_8)&0b101111111011111111101100)==0b000011010010000010000000) {
  829. names="st2\0ld2\0";
  830. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  831. args[0]=disasm_arg_Vt2S; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  832. } else
  833. if(((ic32_8)&0b101111111011111111111100)==0b000011010010000010100100) {
  834. names="st4\0ld4\0";
  835. op=((ic32_22)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  836. args[0]=disasm_arg_Vt4D; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  837. } else
  838. if(((ic32_8)&0b101111111011111111101100)==0b000011010010000010100000) {
  839. names="st4\0ld4\0";
  840. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  841. args[0]=disasm_arg_Vt4S; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  842. } else
  843. if(((ic32_8)&0b101111111111111111110000)==0b000011011101111111000000) {
  844. names="ld1r\0";
  845. q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  846. args[0]=disasm_arg_VtT; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_z;
  847. } else
  848. if(((ic32_8)&0b101111111111111111110000)==0b000011011101111111100000) {
  849. names="ld3r\0";
  850. q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  851. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_offs; args[4]=disasm_arg_XnS; args[5]=disasm_arg_offe; args[6]=disasm_arg_z3;
  852. } else
  853. if(((ic32_8)&0b101111111110000011110000)==0b000011011100000011000000) {
  854. names="ld1r\0";
  855. q=((ic32_30)&0x1); m=((ic32_16)&0x1f); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  856. args[0]=disasm_arg_VtT; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  857. } else
  858. if(((ic32_8)&0b101111111110000011110000)==0b000011011100000011100000) {
  859. names="ld3r\0";
  860. q=((ic32_30)&0x1); m=((ic32_16)&0x1f); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  861. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_offs; args[4]=disasm_arg_XnS; args[5]=disasm_arg_offe; args[6]=disasm_arg_Xm;
  862. } else
  863. if(((ic32_8)&0b101111111111111111110000)==0b000011011111111111000000) {
  864. names="ld2r\0";
  865. q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  866. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe; args[5]=disasm_arg_z2;
  867. } else
  868. if(((ic32_8)&0b101111111111111111110000)==0b000011011111111111100000) {
  869. names="ld4r\0";
  870. q=((ic32_30)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  871. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_Vt4T; args[4]=disasm_arg_offs; args[5]=disasm_arg_XnS; args[6]=disasm_arg_offe; args[7]=disasm_arg_z4;
  872. } else
  873. if(((ic32_8)&0b101111111110000011110000)==0b000011011110000011000000) {
  874. names="ld2r\0";
  875. q=((ic32_30)&0x1); m=((ic32_16)&0x1f); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  876. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe; args[5]=disasm_arg_Xm;
  877. } else
  878. if(((ic32_8)&0b101111111110000011110000)==0b000011011110000011100000) {
  879. names="ld4r\0";
  880. q=((ic32_30)&0x1); m=((ic32_16)&0x1f); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  881. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vt2T; args[2]=disasm_arg_Vt3T; args[3]=disasm_arg_Vt4T; args[4]=disasm_arg_offs; args[5]=disasm_arg_XnS; args[6]=disasm_arg_offe; args[7]=disasm_arg_Xm;
  882. } else
  883. if(((ic32_8)&0b101111111011111111100000)==0b000011011001111100000000) {
  884. names="st1\0ld1\0";
  885. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  886. args[0]=disasm_arg_VtB; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i1;
  887. } else
  888. if(((ic32_8)&0b101111111011111111100000)==0b000011011001111100100000) {
  889. names="st3\0ld3\0";
  890. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  891. args[0]=disasm_arg_Vt3B; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i3;
  892. } else
  893. if(((ic32_8)&0b101111111011111111100000)==0b000011011001111101000000) {
  894. names="st1\0ld1\0";
  895. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  896. args[0]=disasm_arg_VtH; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i2;
  897. } else
  898. if(((ic32_8)&0b101111111011111111100000)==0b000011011001111101100000) {
  899. names="st3\0ld3\0";
  900. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  901. args[0]=disasm_arg_Vt3H; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i6;
  902. } else
  903. if(((ic32_8)&0b101111111011111111111100)==0b000011011001111110000100) {
  904. names="st1\0ld1\0";
  905. op=((ic32_22)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  906. args[0]=disasm_arg_VtD; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i8;
  907. } else
  908. if(((ic32_8)&0b101111111011111111101100)==0b000011011001111110000000) {
  909. names="st1\0ld1\0";
  910. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  911. args[0]=disasm_arg_VtS; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i4;
  912. } else
  913. if(((ic32_8)&0b101111111011111111111100)==0b000011011001111110100100) {
  914. names="st3\0ld3\0";
  915. op=((ic32_22)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  916. args[0]=disasm_arg_Vt3D; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i24;
  917. } else
  918. if(((ic32_8)&0b101111111011111111101100)==0b000011011001111110100000) {
  919. names="st3\0ld3\0";
  920. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  921. args[0]=disasm_arg_Vt3S; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i12;
  922. } else
  923. if(((ic32_8)&0b101111111010000011100000)==0b000011011000000000000000) {
  924. names="st1\0ld1\0";
  925. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  926. args[0]=disasm_arg_VtB; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  927. } else
  928. if(((ic32_8)&0b101111111010000011100000)==0b000011011000000000100000) {
  929. names="st3\0ld3\0";
  930. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  931. args[0]=disasm_arg_Vt3B; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  932. } else
  933. if(((ic32_8)&0b101111111010000011100000)==0b000011011000000001000000) {
  934. names="st1\0ld1\0";
  935. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  936. args[0]=disasm_arg_VtH; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  937. } else
  938. if(((ic32_8)&0b101111111010000011100000)==0b000011011000000001100000) {
  939. names="st3\0ld3\0";
  940. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  941. args[0]=disasm_arg_Vt3H; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  942. } else
  943. if(((ic32_8)&0b101111111010000011111100)==0b000011011000000010000100) {
  944. names="st1\0ld1\0";
  945. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  946. args[0]=disasm_arg_VtD; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  947. } else
  948. if(((ic32_8)&0b101111111010000011101100)==0b000011011000000010000000) {
  949. names="st1\0ld1\0";
  950. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  951. args[0]=disasm_arg_VtS; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  952. } else
  953. if(((ic32_8)&0b101111111010000011111100)==0b000011011000000010100100) {
  954. names="st3\0ld3\0";
  955. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  956. args[0]=disasm_arg_Vt3D; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  957. } else
  958. if(((ic32_8)&0b101111111010000011101100)==0b000011011000000010100000) {
  959. names="st3\0ld3\0";
  960. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  961. args[0]=disasm_arg_Vt3S; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  962. } else
  963. if(((ic32_8)&0b101111111011111111100000)==0b000011011011111100000000) {
  964. names="st2\0ld2\0";
  965. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  966. args[0]=disasm_arg_Vt2B; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i2;
  967. } else
  968. if(((ic32_8)&0b101111111011111111100000)==0b000011011011111100100000) {
  969. names="st4\0ld4\0";
  970. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  971. args[0]=disasm_arg_Vt4B; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i4;
  972. } else
  973. if(((ic32_8)&0b101111111011111111100000)==0b000011011011111101000000) {
  974. names="st2\0ld2\0";
  975. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  976. args[0]=disasm_arg_Vt2H; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i4;
  977. } else
  978. if(((ic32_8)&0b101111111011111111100000)==0b000011011011111101100000) {
  979. names="st4\0ld4\0";
  980. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  981. args[0]=disasm_arg_Vt4H; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i8;
  982. } else
  983. if(((ic32_8)&0b101111111011111111111100)==0b000011011011111110000100) {
  984. names="st2\0ld2\0";
  985. op=((ic32_22)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  986. args[0]=disasm_arg_Vt2D; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i16;
  987. } else
  988. if(((ic32_8)&0b101111111011111111101100)==0b000011011011111110000000) {
  989. names="st2\0ld2\0";
  990. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  991. args[0]=disasm_arg_Vt2S; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i8;
  992. } else
  993. if(((ic32_8)&0b101111111011111111111100)==0b000011011011111110100100) {
  994. names="st4\0ld4\0";
  995. op=((ic32_22)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  996. args[0]=disasm_arg_Vt4D; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i32;
  997. } else
  998. if(((ic32_8)&0b101111111011111111101100)==0b000011011011111110100000) {
  999. names="st4\0ld4\0";
  1000. op=((ic32_22)&0x1); q=((ic32_30)&0x1); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1001. args[0]=disasm_arg_Vt4S; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i16;
  1002. } else
  1003. if(((ic32_8)&0b101111111010000011100000)==0b000011011010000000000000) {
  1004. names="st2\0ld2\0";
  1005. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1006. args[0]=disasm_arg_Vt2B; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  1007. } else
  1008. if(((ic32_8)&0b101111111010000011100000)==0b000011011010000000100000) {
  1009. names="st4\0ld4\0";
  1010. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1011. args[0]=disasm_arg_Vt4B; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  1012. } else
  1013. if(((ic32_8)&0b101111111010000011100000)==0b000011011010000001000000) {
  1014. names="st2\0ld2\0";
  1015. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1016. args[0]=disasm_arg_Vt2H; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  1017. } else
  1018. if(((ic32_8)&0b101111111010000011100000)==0b000011011010000001100000) {
  1019. names="st4\0ld4\0";
  1020. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); z=((ic32_10)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1021. args[0]=disasm_arg_Vt4H; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  1022. } else
  1023. if(((ic32_8)&0b101111111010000011111100)==0b000011011010000010000100) {
  1024. names="st2\0ld2\0";
  1025. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1026. args[0]=disasm_arg_Vt2D; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  1027. } else
  1028. if(((ic32_8)&0b101111111010000011101100)==0b000011011010000010000000) {
  1029. names="st2\0ld2\0";
  1030. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1031. args[0]=disasm_arg_Vt2S; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  1032. } else
  1033. if(((ic32_8)&0b101111111010000011111100)==0b000011011010000010100100) {
  1034. names="st4\0ld4\0";
  1035. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1036. args[0]=disasm_arg_Vt4D; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  1037. } else
  1038. if(((ic32_8)&0b101111111010000011101100)==0b000011011010000010100000) {
  1039. names="st4\0ld4\0";
  1040. op=((ic32_22)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); s=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1041. args[0]=disasm_arg_Vt4S; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_Xm;
  1042. } else
  1043. if(((ic32_8)&0b101111111110000011111100)==0b000011100000000000000100) {
  1044. names="dup\0";
  1045. q=((ic32_30)&0x1); j=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1046. args[0]=disasm_arg_Vtjq; args[1]=disasm_arg_Vnj; args[2]=disasm_arg_offs; args[3]=disasm_arg_FPidx; args[4]=disasm_arg_offe;
  1047. } else
  1048. if(((ic32_8)&0b101111111110000011101100)==0b000011100000000000000000) {
  1049. names="tbl\0tbx\0";
  1050. op=((ic32_12)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1051. z=0;
  1052. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vn116b; args[2]=disasm_arg_VmT;
  1053. } else
  1054. if(((ic32_8)&0b101111111110000011101100)==0b000011100000000000100000) {
  1055. names="tbl\0tbx\0";
  1056. op=((ic32_12)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1057. z=0;
  1058. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vn216b; args[2]=disasm_arg_VmT;
  1059. } else
  1060. if(((ic32_8)&0b101111111110000011101100)==0b000011100000000000101100) {
  1061. names="smov\0umov\0";
  1062. op=((ic32_12)&0x1); s=((ic32_30)&0x1); j=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1063. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Vnj; args[2]=disasm_arg_offs; args[3]=disasm_arg_FPidx; args[4]=disasm_arg_offe;
  1064. } else
  1065. if(((ic32_8)&0b101111111110000011101100)==0b000011100000000001000000) {
  1066. names="tbl\0tbx\0";
  1067. op=((ic32_12)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1068. z=0;
  1069. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vn316b; args[2]=disasm_arg_VmT;
  1070. } else
  1071. if(((ic32_8)&0b101111111110000011101100)==0b000011100000000001100000) {
  1072. names="tbl\0tbx\0";
  1073. op=((ic32_12)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1074. z=0;
  1075. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vn416b; args[2]=disasm_arg_VmT;
  1076. } else
  1077. if(((ic32_8)&0b101111111110000011111100)==0b000011100100000000011100) {
  1078. names="fmulx\0";
  1079. q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1080. args[0]=disasm_arg_VtH1; args[1]=disasm_arg_VnH1; args[2]=disasm_arg_VmH1;
  1081. } else
  1082. if(((ic32_8)&0b101111111110000011111100)==0b000011100100000000100100) {
  1083. names="fcmeq\0";
  1084. q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1085. args[0]=disasm_arg_VtH1; args[1]=disasm_arg_VnH1; args[2]=disasm_arg_VmH1;
  1086. } else
  1087. if(((ic32_8)&0b101111111111111111101100)==0b000011100111100110001000) {
  1088. names="frintn\0frintm\0";
  1089. op=((ic32_12)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1090. z=1;
  1091. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT;
  1092. } else
  1093. if(((ic32_8)&0b101111111111111111111100)==0b000011100111100111111000) {
  1094. names="fabs\0";
  1095. q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1096. z=1;
  1097. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT;
  1098. } else
  1099. if(((ic32_8)&0b101111111010000011111100)==0b000011100010000000011100) {
  1100. names="fmulx\0";
  1101. q=((ic32_30)&0x1); z=((ic32_22)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1102. args[0]=disasm_arg_Vtzq; args[1]=disasm_arg_Vnzq; args[2]=disasm_arg_Vmzq;
  1103. } else
  1104. if(((ic32_8)&0b101111111111111111101100)==0b000011101111100110001000) {
  1105. names="frintp\0frintz\0";
  1106. op=((ic32_12)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1107. z=1;
  1108. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT;
  1109. } else
  1110. if(((ic32_8)&0b101111110111111111001100)==0b000011100011000011001000) {
  1111. names="fmaxnmv\0?\0?\0fmaxv\0fminnmv\0?\0?\0fminv\0";
  1112. op=((ic32_21)&0x4)|((ic32_12)&0x3); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1113. z=0;
  1114. args[0]=disasm_arg_Ht; args[1]=disasm_arg_Vnzq2;
  1115. } else
  1116. if(((ic32_8)&0b101111110110000011111100)==0b000011100100000000111100) {
  1117. names="frecps\0frsqrts\0";
  1118. op=((ic32_23)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1119. args[0]=disasm_arg_VtH1; args[1]=disasm_arg_VnH1; args[2]=disasm_arg_VmH1;
  1120. } else
  1121. if(((ic32_8)&0b101111110000000010000000)==0b000011100000000000000000) {
  1122. names="?\0?\0?\0?\0?\0?\0uzp1\0?\0?\0?\0trn1\0?\0?\0?\0zip1\0?\0?\0?\0?\0?\0?\0?\0uzp2\0?\0?\0?\0trn2\0?\0?\0?\0zip2\0?\0?\0shadd\0?\0sqadd\0?\0srhadd\0?\0?\0?\0?\0?\0sqsub\0?\0cmgt\0?\0cmge\0?\0sshl\0?\0sqshl\0?\0srshl\0?\0sqrshl\0?\0smax\0?\0smin\0?\0sabd\0?\0saba\0";
  1123. op=((ic32_16)&0x20)|((ic32_10)&0x1f); q=((ic32_30)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1124. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  1125. } else
  1126. if(((ic32_8)&0b101111111111100011111100)==0b000011110000000011100100) {
  1127. names="movi\0";
  1128. q=((ic32_30)&0x1); j=((ic32_11)&0xe0)|((ic32_5)&0x1f); t=((ic32)&0x1f);
  1129. z=0;
  1130. args[0]=disasm_arg_VtT; args[1]=disasm_arg_imm8;
  1131. } else
  1132. if(((ic32_8)&0b101111111111100011111100)==0b000011110000000011110100) {
  1133. names="fmov\0";
  1134. q=((ic32_30)&0x1); j=((ic32_11)&0xe0)|((ic32_5)&0x1f); t=((ic32)&0x1f);
  1135. z=2;
  1136. args[0]=disasm_arg_VtT; args[1]=disasm_arg_F32;
  1137. } else
  1138. if(((ic32_8)&0b101111111111100011111100)==0b000011110000000011111100) {
  1139. names="fmov\0";
  1140. q=((ic32_30)&0x1); j=((ic32_11)&0xe0)|((ic32_5)&0x1f); t=((ic32)&0x1f);
  1141. z=1;
  1142. args[0]=disasm_arg_VtT; args[1]=disasm_arg_F16;
  1143. } else
  1144. if(((ic32_8)&0b101111111100000010100100)==0b000011110100000010000000) {
  1145. names="mul\0?\0sqdmulh\0sqrdmulh\0";
  1146. op=((ic32_13)&0x2)|((ic32_12)&0x1); j=((ic32_9)&0x4)|((ic32_20)&0x3); q=((ic32_30)&0x1); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1147. z=1;
  1148. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  1149. } else
  1150. if(((ic32_8)&0b101111111000000011001100)==0b000011110000000000000100) {
  1151. names="sshr\0ssra\0srshr\0srsra\0";
  1152. op=((ic32_12)&0x3); q=((ic32_30)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1153. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_Vnj2; args[2]=disasm_arg_shrshift;
  1154. } else
  1155. if(((ic32_8)&0b101111111000000011111100)==0b000011110000000011100100) {
  1156. names="scvtf\0";
  1157. q=((ic32_30)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1158. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_Vnj2; args[2]=disasm_arg_shrshift;
  1159. } else
  1160. if(((ic32_8)&0b101111111000000011111100)==0b000011110000000011111100) {
  1161. names="fcvtzs\0";
  1162. q=((ic32_30)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1163. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_Vnj2; args[2]=disasm_arg_shrshift;
  1164. } else
  1165. if(((ic32_8)&0b101111111100000010100100)==0b000011111000000010000000) {
  1166. names="mul\0fmul\0sqdmulh\0sqrdmulh\0";
  1167. op=((ic32_13)&0x2)|((ic32_12)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1168. z=2;
  1169. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  1170. } else
  1171. if(((ic32_24)&0b10111111)==0b00011000) {
  1172. names="ldr\0";
  1173. s=((ic32_30)&0x1); i=((ic32_23)&1?(0xffffffff<<19):0)|((ic32_5)&0x7ffff); t=((ic32)&0x1f);
  1174. args[0]=disasm_arg_Rt; args[1]=disasm_arg_labeli4;
  1175. } else
  1176. if(((ic32_8)&0b101111111110000011111100)==0b000111100000000000001100) {
  1177. names="dup\0";
  1178. q=((ic32_30)&0x1); j=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1179. s=q;
  1180. args[0]=disasm_arg_Vtjq; args[1]=disasm_arg_Rn;
  1181. } else
  1182. if(((ic32_8)&0b101111111110000010000100)==0b001011100000000000000000) {
  1183. names="ext\0";
  1184. q=((ic32_30)&0x1); m=((ic32_16)&0x1f); i=((ic32_14)&1?(0xffffffff<<4):0)|((ic32_11)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1185. z=0;
  1186. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT; args[3]=disasm_arg_i;
  1187. } else
  1188. if(((ic32_8)&0b101111111110000011110100)==0b001011100100000000100100) {
  1189. names="fcmge\0facge\0";
  1190. op=((ic32_11)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1191. args[0]=disasm_arg_VtH1; args[1]=disasm_arg_VnH1; args[2]=disasm_arg_VmH1;
  1192. } else
  1193. if(((ic32_8)&0b101111111111111111111100)==0b001011100111100110011000) {
  1194. names="frintx\0";
  1195. q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1196. z=1;
  1197. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT;
  1198. } else
  1199. if(((ic32_8)&0b101111111011111111111100)==0b001011100010000001011000) {
  1200. names="not\0rbit\0";
  1201. op=((ic32_22)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1202. z=0;
  1203. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT;
  1204. } else
  1205. if(((ic32_8)&0b101111111110000011111100)==0b001011101100000000010100) {
  1206. names="fabd\0";
  1207. q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1208. args[0]=disasm_arg_VtH1; args[1]=disasm_arg_VnH1; args[2]=disasm_arg_VmH1;
  1209. } else
  1210. if(((ic32_8)&0b101111111110000011110100)==0b001011101100000000100100) {
  1211. names="fcmgt\0facgt\0";
  1212. op=((ic32_11)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1213. args[0]=disasm_arg_VtH1; args[1]=disasm_arg_VnH1; args[2]=disasm_arg_VmH1;
  1214. } else
  1215. if(((ic32_8)&0b101111111111111111111100)==0b001011101111100011111000) {
  1216. names="fneg\0";
  1217. q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1218. z=1;
  1219. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT;
  1220. } else
  1221. if(((ic32_8)&0b101111111111111111101100)==0b001011101111100110001000) {
  1222. names="frinta\0frinti\0";
  1223. op=((ic32_12)&0x1); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1224. z=1;
  1225. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT;
  1226. } else
  1227. if(((ic32_8)&0b101111111111111111111100)==0b001011101111100111111000) {
  1228. names="fsqrt\0";
  1229. q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1230. z=1;
  1231. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT;
  1232. } else
  1233. if(((ic32_8)&0b101111110010000000000100)==0b001011100010000000000100) {
  1234. names="uhadd\0uqadd\0urhadd\0?\0uhsub\0uqsub\0cmhi\0cmhs\0ushl\0uqshl\0urshl\0uqrshl\0umax\0umin\0uabd\0uaba\0sub\0cmeq\0mls\0pmul\0umaxp\0uminp\0cqrdmulh\0";
  1235. op=((ic32_11)&0x1f); q=((ic32_30)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1236. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  1237. } else
  1238. if(((ic32_8)&0b101111111100000011010100)==0b001011110100000011010000) {
  1239. names="sqrdmlah\0sqrdmlsh\0";
  1240. op=((ic32_13)&0x1); j=((ic32_9)&0x4)|((ic32_20)&0x3); q=((ic32_30)&0x1); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1241. z=1;
  1242. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  1243. } else
  1244. if(((ic32_8)&0b101111111000000011111100)==0b001011110000000011111100) {
  1245. names="fcvtzu\0";
  1246. q=((ic32_30)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1247. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_Vnj2; args[2]=disasm_arg_shrshift;
  1248. } else
  1249. if(((ic32_8)&0b101111111000000000001100)==0b001011110000000000000100) {
  1250. names="ushr\0usra\0urshr\0ursra\0sri\0sli\0sqshlu\0uqshl\0?\0?\0?\0?\0?\0?\0ucvtf\0";
  1251. op=((ic32_12)&0xf); q=((ic32_30)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1252. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_Vnj2; args[2]=disasm_arg_shrshift;
  1253. } else
  1254. if(((ic32_8)&0b101111111100000011010100)==0b001011111000000011010000) {
  1255. names="sqrdmlah\0sqrdmlsh\0";
  1256. op=((ic32_13)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1257. z=2;
  1258. args[0]=disasm_arg_Vtz; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  1259. } else
  1260. if(((ic32_8)&0b101111110000000010110100)==0b001011110000000000000000) {
  1261. names="mla\0mls\0";
  1262. op=((ic32_14)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); q=((ic32_30)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1263. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs;
  1264. } else
  1265. if(((ic32_8)&0b101111111010000000001100)==0b001110000000000000000100) {
  1266. names="strb\0ldrb\0strh\0ldrh\0";
  1267. op=((ic32_29)&0x2)|((ic32_22)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1268. args[0]=disasm_arg_Wt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i_opt;
  1269. } else
  1270. if(((ic32_8)&0b101111111010000000000100)==0b001110000000000000000100) {
  1271. names="strb\0ldrb\0strh\0ldrh\0";
  1272. op=((ic32_29)&0x2)|((ic32_22)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); p=((ic32_11)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1273. args[0]=disasm_arg_Wt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1274. } else
  1275. if(((ic32_8)&0b101111111010000000001100)==0b001110000010000000001000) {
  1276. names="strb\0ldrb\0strh\0ldrh\0";
  1277. op=((ic32_29)&0x2)|((ic32_22)&0x1); m=((ic32_16)&0x1f); o=((ic32_13)&0x7); j=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1278. args[0]=disasm_arg_Wt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_Rom; args[4]=disasm_arg_amountj; args[5]=disasm_arg_offe;
  1279. } else
  1280. if(((ic32_8)&0b101111111010000000001100)==0b001110001000000000000100) {
  1281. names="ldrsb\0ldrsh\0";
  1282. op=((ic32_30)&0x1); s=((ic32_22)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1283. args[0]=disasm_arg_nRt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i_opt;
  1284. } else
  1285. if(((ic32_8)&0b101111111010000000000100)==0b001110001000000000000000) {
  1286. names="ldursb\0?\0ldursh\0ldtrsh\0";
  1287. op=((ic32_29)&0x2)|((ic32_11)&0x1); s=((ic32_22)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1288. args[0]=disasm_arg_nRt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1289. } else
  1290. if(((ic32_8)&0b101111111010000000000100)==0b001110001000000000000100) {
  1291. names="ldrsb\0ldrsh\0";
  1292. op=((ic32_30)&0x1); s=((ic32_22)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); p=((ic32_11)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1293. args[0]=disasm_arg_nRt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1294. } else
  1295. if(((ic32_8)&0b101111111010000000001100)==0b001110001010000000001000) {
  1296. names="ldrsb\0ldrsh\0";
  1297. op=((ic32_30)&0x1); s=((ic32_22)&0x1); m=((ic32_16)&0x1f); o=((ic32_13)&0x7); j=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1298. args[0]=disasm_arg_nRt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_Rom; args[4]=disasm_arg_amountj; args[5]=disasm_arg_offe;
  1299. } else
  1300. if(((ic32_8)&0b101111110010000000000100)==0b001110000000000000000000) {
  1301. names="sturb\0sttrb\0ldurb\0ldtrb\0?\0ldtrsb\0?\0ldtrsb\0sturh\0sttrh\0ldurh\0ldtrh\0";
  1302. op=((ic32_27)&0x8)|((ic32_21)&0x6)|((ic32_11)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1303. args[0]=disasm_arg_Wt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1304. } else
  1305. if(((ic32_16)&0b1011111110000000)==0b0011100100000000) {
  1306. names="strb\0ldrb\0strh\0ldrh\0";
  1307. op=((ic32_29)&0x2)|((ic32_22)&0x1); j=((ic32_10)&0xfff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1308. args[0]=disasm_arg_Wt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_j_opt; args[4]=disasm_arg_offe;
  1309. } else
  1310. if(((ic32_16)&0b1011111110000000)==0b0011100110000000) {
  1311. names="ldrsb\0ldrsh\0";
  1312. op=((ic32_30)&0x1); s=((ic32_22)&0x1); j=((ic32_10)&0xfff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1313. args[0]=disasm_arg_nRt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_j_opt; args[4]=disasm_arg_offe;
  1314. } else
  1315. if(((ic32_8)&0b100111111111111111001100)==0b000011101111100011001000) {
  1316. names="fcmgt\0fcmeq\0fcmlt\0?\0fcmge\0fcmle\0?\0fneg\0";
  1317. op=((ic32_27)&0x4)|((ic32_12)&0x3); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1318. args[0]=disasm_arg_VtH1; args[1]=disasm_arg_VnH1; args[2]=disasm_arg_simd0;
  1319. } else
  1320. if(((ic32_8)&0b100111111011111111001100)==0b000011101010000011001000) {
  1321. names="fcmgt\0fcmeq\0fcmlt\0?\0fcmge\0fcmle\0?\0fneg\0";
  1322. op=((ic32_27)&0x4)|((ic32_12)&0x3); q=((ic32_30)&0x1); z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1323. args[0]=disasm_arg_Vtzq; args[1]=disasm_arg_Vnzq; args[2]=disasm_arg_simd0;
  1324. } else
  1325. if(((ic32_8)&0b100111110110000011000100)==0b000011100100000000000100) {
  1326. names="fmaxnm\0fmla\0fadd\0fmulx\0fcmeq\0?\0fmax\0frecps\0fminnm\0fmls\0fsub\0?\0?\0?\0fmin\0frsqrts\0fmaxnmp\0?\0faddp\0fmul\0fcmge\0facge\0fmaxp\0fdiv\0fminnmp\0?\0fabd\0?\0fcmgt\0facgt\0fminp\0";
  1327. op=((ic32_25)&0x10)|((ic32_20)&0x8)|((ic32_11)&0x7); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1328. z=1;
  1329. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  1330. } else
  1331. if(((ic32_8)&0b100111110111111110001100)==0b000011100111100110001000) {
  1332. names="frintn\0frintm\0fcvtns\0fcvtms\0fcvtas\0scvtf\0?\0fabs\0frintp\0frintz\0fcvtps\0fcvtzs\0?\0frecpe\0?\0frecpx\0?\0frintx\0fcvtnu\0fcvtmu\0fcvtau\0ucvtf\0?\0?\0frinta\0frinti\0fcvtpu\0fcvtzu\0?\0frsqrte\0?\0fsqrt\0";
  1333. op=((ic32_25)&0x10)|((ic32_20)&0x8)|((ic32_12)&0x7); q=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1334. args[0]=disasm_arg_VtH1; args[1]=disasm_arg_VnH1;
  1335. } else
  1336. if(((ic32_8)&0b100111110010000011111100)==0b000011100000000010010100) {
  1337. names="sdot\0udot\0";
  1338. op=((ic32_29)&0x1); q=((ic32_30)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1339. args[0]=disasm_arg_VtT; args[1]=disasm_arg_Vnzq; args[2]=disasm_arg_Vmzq;
  1340. } else
  1341. if(((ic32_8)&0b100111110011111110111100)==0b000011100010000000101000) {
  1342. names="saddlp\0sadalp\0uaddlp\0uadalp\0";
  1343. op=((ic32_28)&0x2)|((ic32_14)&0x1); q=((ic32_30)&0x1); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1344. args[0]=disasm_arg_Vtzq2; args[1]=disasm_arg_VnT;
  1345. } else
  1346. if(((ic32_8)&0b100111110011111111001100)==0b000011100010000010001000) {
  1347. names="cmgt\0cmeq\0cmlt\0abs\0cmge\0cmle\0?\0neg\0";
  1348. op=((ic32_27)&0x4)|((ic32_12)&0x3); q=((ic32_30)&0x1); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1349. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_simd0;
  1350. } else
  1351. if(((ic32_8)&0b100111110011111100001100)==0b000011100010000000001000) {
  1352. names="rev64\0rev16\0saddlp\0suqadd\0cls\0cnt\0sadalp\0sqabs\0cmgt\0cmeq\0cmlt\0abs\0?\0?\0?\0?\0rev32\0?\0uaddlp\0usqadd\0clz\0?\0uadalp\0sqneg\0cmge\0cmle\0?\0neg\0";
  1353. op=((ic32_25)&0x10)|((ic32_12)&0xf); q=((ic32_30)&0x1); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1354. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT;
  1355. } else
  1356. if(((ic32_8)&0b100111110011111010001100)==0b000011100010000010001000) {
  1357. names="?\0?\0?\0?\0?\0?\0?\0?\0frintn\0frintm\0fcvtns\0fcvtms\0fcvtas\0scvtf\0?\0fabs\0?\0?\0?\0?\0fcmgt\0fcmeq\0fcmlt\0?\0frintp\0frintz\0fcvtps\0fcvtzs\0urecpe\0frecpe\0?\0frecpx\0?\0?\0?\0?\0?\0?\0?\0?\0?\0frintx\0fcvtnu\0fcvtmu\0fcvtau\0ucvtf\0?\0?\0?\0?\0?\0?\0fcmge\0fcmle\0?\0fneg\0frinta\0frinti\0fcvtpu\0fcvtzu\0?\0frsqrte\0?\0fsqrt\0";
  1358. op=((ic32_24)&0x20)|((ic32_19)&0x10)|((ic32_13)&0x8)|((ic32_12)&0x7); q=((ic32_30)&0x1); z=((ic32_22)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1359. args[0]=disasm_arg_Vtzq; args[1]=disasm_arg_Vnzq;
  1360. } else
  1361. if(((ic32_8)&0b100111110011111111111100)==0b000011100011000000111000) {
  1362. names="saddlv\0uaddlv\0";
  1363. op=((ic32_29)&0x1); q=((ic32_30)&0x1); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1364. args[0]=disasm_arg_FPz4t; args[1]=disasm_arg_VnT;
  1365. } else
  1366. if(((ic32_8)&0b100111110011111011101100)==0b000011100011000010101000) {
  1367. names="smaxv\0?\0sminv\0addv\0umaxv\0?\0uminv\0";
  1368. op=((ic32_27)&0x4)|((ic32_15)&0x2)|((ic32_12)&0x1); q=((ic32_30)&0x1); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1369. args[0]=disasm_arg_FPz3t; args[1]=disasm_arg_VnT;
  1370. } else
  1371. if(((ic32_8)&0b100111110010000011111100)==0b000011100010000000011100) {
  1372. names="and\0bic\0orr\0orn\0eor\0bsl\0bit\0bif\0";
  1373. op=((ic32_27)&0x4)|((ic32_22)&0x3); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1374. z=0;
  1375. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  1376. } else
  1377. if(((ic32_8)&0b100111110010000011000100)==0b000011100010000011000100) {
  1378. names="fmaxnm\0fmla\0fadd\0?\0fcmeq\0?\0fmax\0frecps\0fminnm\0fmls\0fsub\0?\0?\0?\0fmin\0frsqrts\0fmaxnmp\0?\0faddp\0fmul\0fcmge\0facge\0fmaxp\0fdiv\0fminnmp\0?\0fabd\0?\0fcmgt\0facgt\0fminp\0";
  1379. op=((ic32_25)&0x10)|((ic32_20)&0x8)|((ic32_11)&0x7); q=((ic32_30)&0x1); z=((ic32_22)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1380. args[0]=disasm_arg_Vtzq; args[1]=disasm_arg_Vnzq; args[2]=disasm_arg_Vmzq;
  1381. } else
  1382. if(((ic32_8)&0b100111110000000011000100)==0b000011100000000010000100) {
  1383. names="?\0?\0sdot\0?\0?\0?\0?\0?\0add\0cmtst\0mla\0mul\0smaxp\0sminp\0sqdmulh\0addp\0sqrdmlah\0sqrdmlsh\0udot\0?\0?\0?\0?\0?\0sub\0cmeq\0mls\0pmul\0umaxp\0uminp\0cqrdmulh\0";
  1384. op=((ic32_25)&0x10)|((ic32_18)&0x8)|((ic32_11)&0x7); q=((ic32_30)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1385. args[0]=disasm_arg_VtT; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmT;
  1386. } else
  1387. if(((ic32_8)&0b100111111111100010001100)==0b000011110000000000000100) {
  1388. names="movi\0orr\0mvni\0bic\0";
  1389. op=((ic32_28)&0x2)|((ic32_12)&0x1); q=((ic32_30)&0x1); j=((ic32_11)&0xe0)|((ic32_5)&0x1f); k=((ic32_13)&0x3); t=((ic32)&0x1f);
  1390. z=2;
  1391. args[0]=disasm_arg_VtT; args[1]=disasm_arg_imm8; args[2]=disasm_arg_amountk_opt;
  1392. } else
  1393. if(((ic32_8)&0b100111111111100011001100)==0b000011110000000010000100) {
  1394. names="movi\0orr\0mvni\0bic\0";
  1395. op=((ic32_28)&0x2)|((ic32_12)&0x1); q=((ic32_30)&0x1); j=((ic32_11)&0xe0)|((ic32_5)&0x1f); k=((ic32_13)&0x1); t=((ic32)&0x1f);
  1396. z=1;
  1397. args[0]=disasm_arg_VtT; args[1]=disasm_arg_imm8; args[2]=disasm_arg_amountk_opt;
  1398. } else
  1399. if(((ic32_8)&0b100111111111100011101100)==0b000011110000000011000100) {
  1400. names="movi\0mvni\0";
  1401. op=((ic32_29)&0x1); q=((ic32_30)&0x1); j=((ic32_11)&0xe0)|((ic32_5)&0x1f); k=((ic32_12)&0x1); t=((ic32)&0x1f);
  1402. z=2;
  1403. args[0]=disasm_arg_VtT; args[1]=disasm_arg_imm8; args[2]=disasm_arg_amountk2_opt;
  1404. } else
  1405. if(((ic32_8)&0b100111111100000000110100)==0b000011110000000000010000) {
  1406. names="fmla\0fmls\0fmul\0?\0?\0?\0fmulx\0";
  1407. op=((ic32_27)&0x4)|((ic32_14)&0x3); j=((ic32_9)&0x4)|((ic32_20)&0x3); q=((ic32_30)&0x1); m=((ic32_16)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1408. args[0]=disasm_arg_VtH1; args[1]=disasm_arg_VnH1; args[2]=disasm_arg_VmHs;
  1409. } else
  1410. if(((ic32_8)&0b100111111000000011001100)==0b000011110000000001000100) {
  1411. names="?\0shl\0?\0sqshl\0sri\0sli\0sqshlu\0uqshl\0";
  1412. op=((ic32_27)&0x4)|((ic32_12)&0x3); q=((ic32_30)&0x1); j=((ic32_16)&0x7f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1413. args[0]=disasm_arg_Vtj2; args[1]=disasm_arg_Vnj2; args[2]=disasm_arg_shlshift;
  1414. } else
  1415. if(((ic32_8)&0b100111111100000011110100)==0b000011111000000011100000) {
  1416. names="sdot\0udot\0";
  1417. op=((ic32_29)&0x1); j=((ic32_10)&0x2)|((ic32_21)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1418. z=0;
  1419. args[0]=disasm_arg_Vtzq; args[1]=disasm_arg_VnT; args[2]=disasm_arg_VmTs4b;
  1420. } else
  1421. if(((ic32_8)&0b100111111100000000110100)==0b000011111000000000010000) {
  1422. names="fmla\0fmls\0fmul\0sqrdmulh\0?\0?\0fmulx\0sqrdmlah\0";
  1423. op=((ic32_27)&0x4)|((ic32_14)&0x3); j=((ic32_10)&0x2)|((ic32_21)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1424. z=0;
  1425. args[0]=disasm_arg_Vtzq; args[1]=disasm_arg_Vnzq; args[2]=disasm_arg_VmTs2;
  1426. } else
  1427. if(((ic32_8)&0b100111111110000000110100)==0b000011111100000000010000) {
  1428. names="fmla\0fmls\0fmul\0?\0?\0?\0fmulx\0";
  1429. op=((ic32_27)&0x4)|((ic32_14)&0x3); j=((ic32_11)&0x1); q=((ic32_30)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1430. z=1;
  1431. args[0]=disasm_arg_Vtzq; args[1]=disasm_arg_Vnzq; args[2]=disasm_arg_VmTs2;
  1432. } else
  1433. if(((ic32_8)&0b111111111110000001111100)==0b100010000000000001111100) {
  1434. names="stxr\0stlxr\0";
  1435. op=((ic32_15)&0x1); d=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1436. args[0]=disasm_arg_Wd; args[1]=disasm_arg_Wt; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  1437. } else
  1438. if(((ic32_24)&0b11111111)==0b10011000) {
  1439. names="ldrsw\0";
  1440. i=((ic32_23)&1?(0xffffffff<<19):0)|((ic32_5)&0x7ffff); t=((ic32)&0x1f);
  1441. args[0]=disasm_arg_Xt; args[1]=disasm_arg_labeli4;
  1442. } else
  1443. if(((ic32_8)&0b111111110110000001111100)==0b100110110010000001111100) {
  1444. names="smull\0smnegl\0umull\0umnegl\0";
  1445. op=((ic32_22)&0x2)|((ic32_15)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1446. args[0]=disasm_arg_Xt; args[1]=disasm_arg_Wn; args[2]=disasm_arg_Wm;
  1447. } else
  1448. if(((ic32_16)&0b1111111101100000)==0b1001101100100000) {
  1449. names="smaddl\0smsubl\0umaddl\0umsubl\0";
  1450. op=((ic32_22)&0x2)|((ic32_15)&0x1); m=((ic32_16)&0x1f); d=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1451. args[0]=disasm_arg_Xt; args[1]=disasm_arg_Wn; args[2]=disasm_arg_Wm; args[3]=disasm_arg_Xd;
  1452. } else
  1453. if(((ic32_8)&0b111111110110000011111100)==0b100110110100000001111100) {
  1454. names="smulh\0umulh\0";
  1455. op=((ic32_23)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1456. args[0]=disasm_arg_Xt; args[1]=disasm_arg_Xn; args[2]=disasm_arg_Xm;
  1457. } else
  1458. if(((ic32_8)&0b111111111110000000001100)==0b101110001000000000000100) {
  1459. names="ldrsw\0";
  1460. i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1461. args[0]=disasm_arg_Xt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i_opt;
  1462. } else
  1463. if(((ic32_8)&0b111111111110000000000100)==0b101110001000000000000100) {
  1464. names="ldrsw\0";
  1465. i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); p=((ic32_11)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1466. args[0]=disasm_arg_Xt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1467. } else
  1468. if(((ic32_8)&0b111111111110000000001100)==0b101110001010000000001000) {
  1469. names="ldrsw\0";
  1470. m=((ic32_16)&0x1f); o=((ic32_13)&0x7); j=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1471. args[0]=disasm_arg_Xt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_Rom; args[4]=disasm_arg_amountj2; args[5]=disasm_arg_offe;
  1472. } else
  1473. if(((ic32_16)&0b1111111111000000)==0b1011100110000000) {
  1474. names="ldrsw\0";
  1475. j=((ic32_10)&0xfff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1476. args[0]=disasm_arg_Xt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_j_opt; args[4]=disasm_arg_offe;
  1477. } else
  1478. if(((ic32_8)&0b111111111100000010000000)==0b110011100000000000000000) {
  1479. names="eor3\0bcax\0";
  1480. op=((ic32_21)&0x1); m=((ic32_16)&0x1f); d=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1481. args[0]=disasm_arg_Vt16b; args[1]=disasm_arg_Vn16b; args[2]=disasm_arg_Vm16b; args[3]=disasm_arg_Vd16b;
  1482. } else
  1483. if(((ic32_8)&0b111111111110000010000000)==0b110011100100000000000000) {
  1484. names="sm3ss1\0";
  1485. m=((ic32_16)&0x1f); d=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1486. args[0]=disasm_arg_Vt4s; args[1]=disasm_arg_Vn4s; args[2]=disasm_arg_Vm4s; args[3]=disasm_arg_Vd4s;
  1487. } else
  1488. if(((ic32_8)&0b111111111110000011000000)==0b110011100100000010000000) {
  1489. names="sm3tt1a\0sm3tt1b\0sm3tt2a\0sm3tt2b\0";
  1490. op=((ic32_10)&0x3); m=((ic32_16)&0x1f); j=((ic32_12)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1491. z=0;
  1492. args[0]=disasm_arg_Vt4s; args[1]=disasm_arg_Vn4s; args[2]=disasm_arg_VmTs;
  1493. } else
  1494. if(((ic32_8)&0b111111111110000011111000)==0b110011100110000010000000) {
  1495. names="sha512h\0sha512h2\0";
  1496. op=((ic32_10)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1497. args[0]=disasm_arg_Qt; args[1]=disasm_arg_Qn; args[2]=disasm_arg_Vm2d;
  1498. } else
  1499. if(((ic32_8)&0b111111111110000011111000)==0b110011100110000010001000) {
  1500. names="sha512su1\0rax1\0";
  1501. op=((ic32_10)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1502. args[0]=disasm_arg_Vt2d; args[1]=disasm_arg_Vn2d; args[2]=disasm_arg_Vm2d;
  1503. } else
  1504. if(((ic32_8)&0b111111111110000011110000)==0b110011100110000011000000) {
  1505. names="sm3partw1\0sm3partw2\0sm4ekey\0";
  1506. op=((ic32_10)&0x3); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1507. args[0]=disasm_arg_Vt4s; args[1]=disasm_arg_Vn4s; args[2]=disasm_arg_Vm4s;
  1508. } else
  1509. if(((ic32_8)&0b111111111111111111111100)==0b110011101100000010000000) {
  1510. names="sha512su0\0";
  1511. n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1512. args[0]=disasm_arg_Vt2d; args[1]=disasm_arg_Vn2d;
  1513. } else
  1514. if(((ic32_8)&0b111111111111111111111100)==0b110011101100000010000100) {
  1515. names="sm4e\0";
  1516. n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1517. args[0]=disasm_arg_Vt4s; args[1]=disasm_arg_Vn4s;
  1518. } else
  1519. if(((ic32_16)&0b1111111111000000)==0b1101010000000000) {
  1520. names="?\0svc\0hvc\0smc\0brk\0";
  1521. op=((ic32_19)&0x4)|((ic32)&0x3); i=((ic32_20)&1?(0xffffffff<<16):0)|((ic32_5)&0xffff);
  1522. args[0]=disasm_arg_i;
  1523. } else
  1524. if((ic32&0b11111111111000000000000000000011)==0b11010100010000000000000000000000) {
  1525. names="hlt\0";
  1526. } else
  1527. if(((ic32_16)&0b1111111111100000)==0b1101010010100000) {
  1528. names="?\0dcsp1\0dcps2\0dcps3\0";
  1529. op=((ic32)&0x3); i=((ic32_20)&1?(0xffffffff<<16):0)|((ic32_5)&0xffff);
  1530. args[0]=disasm_arg_i_opt;
  1531. } else
  1532. if((ic32&0b11111111111111111111110100011111)==0b11010101000000110010000000011111) {
  1533. names="nop\0yield\0wfe\0wfi\0sev\0sevl\0?\0?\0esb\0psc\0";
  1534. op=((ic32>>6)&0x8)|((ic32_5)&0x7);
  1535. } else
  1536. if((ic32&0b11111111111111111111000011111111)==0b11010101000000110011000001011111) {
  1537. names="clrex\0";
  1538. i=((ic32_11)&1?(0xffffffff<<4):0)|((ic32_8)&0xf);
  1539. args[0]=disasm_arg_i_opt;
  1540. } else
  1541. if((ic32&0b11111111111111111111000010011111)==0b11010101000000110011000010011111) {
  1542. names="dsb\0dmb\0?\0isb\0";
  1543. op=((ic32_5)&0x3); j=((ic32_8)&0xf);
  1544. args[0]=disasm_arg_sh;
  1545. } else
  1546. if((ic32&0b11111111111110001111000000011111)==0b11010101000000000100000000011111) {
  1547. names="msr\0";
  1548. i=((ic32_11)&1?(0xffffffff<<4):0)|((ic32_8)&0xf); p=((ic32_5)&0x7);
  1549. args[0]=disasm_arg_pstate; args[1]=disasm_arg_i;
  1550. } else
  1551. if((ic32&0b11111111111111111111111110000000)==0b11010101000010000111011000000000) {
  1552. names="dc\0";
  1553. d=((ic32_5)&0x3); t=((ic32)&0x1f);
  1554. args[0]=disasm_arg_dc0; args[1]=disasm_arg_Xt;
  1555. } else
  1556. if((ic32&0b11111111111111111111111110000000)==0b11010101000010000111100000000000) {
  1557. names="at\0";
  1558. a=((ic32_5)&0x3); t=((ic32)&0x1f);
  1559. args[0]=disasm_arg_a0; args[1]=disasm_arg_Xt;
  1560. } else
  1561. if(((ic32_8)&0b111111111111111111111111)==0b110101010000100001111001) {
  1562. names="at\0";
  1563. a=((ic32_5)&0x7); t=((ic32)&0x1f);
  1564. args[0]=disasm_arg_a1; args[1]=disasm_arg_Xt;
  1565. } else
  1566. if((ic32&0b11111111111111111111101111100000)==0b11010101000010000111101001000000) {
  1567. names="dc\0";
  1568. d=((ic32_10)&0x1); t=((ic32)&0x1f);
  1569. args[0]=disasm_arg_dc1; args[1]=disasm_arg_Xt;
  1570. } else
  1571. if((ic32&0b11111111111111111111111111100000)==0b11010101000010110111010000100000) {
  1572. names="dc\0";
  1573. t=((ic32)&0x1f);
  1574. args[0]=disasm_arg_ZVA; args[1]=disasm_arg_Xt;
  1575. } else
  1576. if((ic32&0b11111111111111111111101011100000)==0b11010101000010110111101000100000) {
  1577. names="dc\0";
  1578. d=((ic32_9)&0x2)|((ic32_8)&0x1); t=((ic32)&0x1f);
  1579. args[0]=disasm_arg_dc2; args[1]=disasm_arg_Xt;
  1580. } else
  1581. if((ic32&0b11111111111111001111101111000000)==0b11010101000010000111000100000000) {
  1582. names="ic\0";
  1583. c=((ic32_15)&0x2)|((ic32_10)&0x1); t=((ic32)&0x1f);
  1584. args[0]=disasm_arg_ic; args[1]=disasm_arg_Xt_opt;
  1585. } else
  1586. if((ic32&0b11111111111111111111101101100000)==0b11010101000011001000000000100000) {
  1587. names="tlbi\0";
  1588. n=((ic32_9)&0x2)|((ic32>>7)&0x1); t=((ic32)&0x1f);
  1589. args[0]=disasm_arg_tl1; args[1]=disasm_arg_Xt_opt;
  1590. } else
  1591. if((ic32&0b11111111111111111111101101000000)==0b11010101000011101000001100000000) {
  1592. names="tlbi\0";
  1593. n=((ic32_8)&0x4)|((ic32>>6)&0x2)|((ic32_5)&0x1); t=((ic32)&0x1f);
  1594. args[0]=disasm_arg_tl2; args[1]=disasm_arg_Xt_opt;
  1595. } else
  1596. if(((ic32_8)&0b111111111111110111111111)==0b110101010000110001111000) {
  1597. names="at\0";
  1598. a=((ic32_14)&0x8)|((ic32_5)&0x7); t=((ic32)&0x1f);
  1599. args[0]=disasm_arg_a2; args[1]=disasm_arg_Xt;
  1600. } else
  1601. if(((ic32_8)&0b111111111111101111111011)==0b110101010000100010000011) {
  1602. names="tlbi\0";
  1603. n=((ic32_14)&0x10)|((ic32>>7)&0x8)|((ic32_5)&0x7); t=((ic32)&0x1f);
  1604. args[0]=disasm_arg_tl0; args[1]=disasm_arg_Xt_opt;
  1605. } else
  1606. if(((ic32_16)&0b1111111111100000)==0b1101010100000000) {
  1607. names="msr\0";
  1608. p=((ic32_19)&0x3); k=((ic32_16)&0x7); n=((ic32_12)&0xf); m=((ic32_8)&0xf); j=((ic32_5)&0x7); t=((ic32)&0x1f);
  1609. args[0]=disasm_arg_sysreg; args[1]=disasm_arg_Xt;
  1610. } else
  1611. if(((ic32_16)&0b1111111111111000)==0b1101010100101000) {
  1612. names="sysl\0";
  1613. i=((ic32_18)&1?(0xffffffff<<3):0)|((ic32_16)&0x7); n=((ic32_12)&0xf); m=((ic32_8)&0xf); j=((ic32_5)&0x7); t=((ic32)&0x1f);
  1614. args[0]=disasm_arg_Xt; args[1]=disasm_arg_i; args[2]=disasm_arg_Cn; args[3]=disasm_arg_Cm; args[4]=disasm_arg_j;
  1615. } else
  1616. if(((ic32_16)&0b1111111111100000)==0b1101010100100000) {
  1617. names="mrs\0";
  1618. p=((ic32_19)&0x3); k=((ic32_16)&0x7); n=((ic32_12)&0xf); m=((ic32_8)&0xf); j=((ic32_5)&0x7); t=((ic32)&0x1f);
  1619. args[0]=disasm_arg_Xt; args[1]=disasm_arg_sysreg;
  1620. } else
  1621. if((ic32&0b11111111100111111111110000011111)==0b11010110000111110000000000000000) {
  1622. names="br\0blr\0ret\0";
  1623. op=((ic32_21)&0x3); n=((ic32_5)&0x1f);
  1624. args[0]=disasm_arg_Xn;
  1625. } else
  1626. if((ic32&0b11111111110111111111111111111111)==0b11010110100111110000001111100000) {
  1627. names="eret\0drps\0";
  1628. op=((ic32_21)&0x1);
  1629. } else
  1630. if(((ic32_24)&0b11111111)==0b11011000) {
  1631. names="prfm\0";
  1632. i=((ic32_23)&1?(0xffffffff<<19):0)|((ic32_5)&0x7ffff); t=((ic32)&0x1f);
  1633. args[0]=disasm_arg_prf_op; args[1]=disasm_arg_labeli4;
  1634. } else
  1635. if(((ic32_8)&0b111111111110000000001100)==0b111110001000000000000000) {
  1636. names="prfum\0";
  1637. i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1638. args[0]=disasm_arg_prf_op; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1639. } else
  1640. if(((ic32_8)&0b111111111110000000001100)==0b111110001010000000001000) {
  1641. names="prfm\0";
  1642. m=((ic32_16)&0x1f); o=((ic32_13)&0x7); j=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1643. args[0]=disasm_arg_prf_op; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_Rom; args[4]=disasm_arg_amountj3; args[5]=disasm_arg_offe;
  1644. } else
  1645. if(((ic32_16)&0b1111111111000000)==0b1111100110000000) {
  1646. names="prfm\0";
  1647. j=((ic32_10)&0xfff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1648. args[0]=disasm_arg_prf_op; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_j_opt; args[4]=disasm_arg_offe;
  1649. } else
  1650. if(((ic32_16)&0b1011111111100000)==0b1000100000100000) {
  1651. names="stxp\0stlxp\0";
  1652. op=((ic32_15)&0x1); s=((ic32_30)&0x1); d=((ic32_16)&0x1f); m=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1653. args[0]=disasm_arg_Wd; args[1]=disasm_arg_Rt; args[2]=disasm_arg_Rm; args[3]=disasm_arg_offs; args[4]=disasm_arg_XnS; args[5]=disasm_arg_offe;
  1654. } else
  1655. if(((ic32_16)&0b1011111111111111)==0b1000100001111111) {
  1656. names="ldxp\0ldaxp\0";
  1657. op=((ic32_15)&0x1); s=((ic32_30)&0x1); m=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1658. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rm; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  1659. } else
  1660. if(((ic32_8)&0b101111111010000001111100)==0b100010000010000001111100) {
  1661. names="cas\0casl\0casa\0casal\0";
  1662. op=((ic32_21)&0x2)|((ic32_15)&0x1); s=((ic32_30)&0x1); d=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1663. args[0]=disasm_arg_Rd; args[1]=disasm_arg_Rt; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  1664. } else
  1665. if(((ic32_8)&0b101111110011111101111100)==0b100010000001111101111100) {
  1666. names="?\0?\0ldxr\0ldaxr\0stllr\0stlr\0ldlar\0ldar\0";
  1667. op=((ic32_21)&0x6)|((ic32_15)&0x1); s=((ic32_30)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1668. args[0]=disasm_arg_Rt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe;
  1669. } else
  1670. if(((ic32_8)&0b101111111010000000001100)==0b101110000000000000000100) {
  1671. names="str\0ldr\0";
  1672. op=((ic32_22)&0x1); s=((ic32_30)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1673. args[0]=disasm_arg_Rt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i_opt;
  1674. } else
  1675. if(((ic32_8)&0b101111111010000000000100)==0b101110000000000000000000) {
  1676. names="stur\0sttr\0ldur\0ldtr\0";
  1677. op=((ic32_21)&0x2)|((ic32_11)&0x1); s=((ic32_30)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1678. args[0]=disasm_arg_Rt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1679. } else
  1680. if(((ic32_8)&0b101111111010000000000100)==0b101110000000000000000100) {
  1681. names="str\0ldr\0";
  1682. op=((ic32_22)&0x1); s=((ic32_30)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); p=((ic32_11)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1683. args[0]=disasm_arg_Rt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1684. } else
  1685. if(((ic32_8)&0b101111111010000000001100)==0b101110000010000000001000) {
  1686. names="str\0ldr\0";
  1687. op=((ic32_22)&0x1); s=((ic32_30)&0x1); m=((ic32_16)&0x1f); o=((ic32_13)&0x7); j=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1688. args[0]=disasm_arg_Rt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_Rom; args[4]=disasm_arg_amountjs; args[5]=disasm_arg_offe;
  1689. } else
  1690. if(((ic32_8)&0b101111110010000000001100)==0b101110000010000000000000) {
  1691. names="ldadd\0ldclr\0ldeor\0ldset\0ldsmax\0ldsmin\0ldumax\0ldumin\0swp\0?\0?\0?\0?\0?\0?\0?\0ldaddl\0ldclrl\0ldeorl\0ldsetl\0ldsmaxl\0ldsminl\0ldumaxl\0lduminl\0swpl\0?\0?\0?\0?\0?\0?\0?\0ldadda\0ldclra\0ldeora\0ldseta\0ldsmaxa\0ldsmina\0ldumaxa\0ldumina\0swpa\0?\0?\0?\0?\0?\0?\0?\0ldaddal\0ldclral\0ldeoral\0ldsetal\0ldsmaxal\0ldsminal\0ldumaxal\0lduminal\0swpal\0";
  1692. op=((ic32_18)&0x30)|((ic32_12)&0xf); s=((ic32_30)&0x1); d=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1693. args[0]=disasm_arg_Rd; args[1]=disasm_arg_Rt; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe;
  1694. } else
  1695. if(((ic32_16)&0b1011111110000000)==0b1011100100000000) {
  1696. names="str\0ldr\0";
  1697. op=((ic32_22)&0x1); s=((ic32_30)&0x1); j=((ic32_10)&0xfff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1698. args[0]=disasm_arg_Rt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_j_opt; args[4]=disasm_arg_offe;
  1699. } else
  1700. if(((ic32_16)&0b0111111110100000)==0b0001001110000000) {
  1701. names="extr\0";
  1702. s=((ic32_31)&0x1); m=((ic32_16)&0x1f); i=((ic32_15)&1?(0xffffffff<<6):0)|((ic32_10)&0x3f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1703. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn; args[2]=disasm_arg_Rm; args[3]=disasm_arg_i;
  1704. } else
  1705. if(((ic32_24)&0b01111100)==0b00010100) {
  1706. names="b\0bl\0";
  1707. op=((ic32_31)&0x1); i=((ic32_25)&1?(0xffffffff<<26):0)|((ic32)&0x3ffffff);
  1708. args[0]=disasm_arg_labeli4;
  1709. } else
  1710. if(((ic32_8)&0b011111111110000011111100)==0b000110100000000000000000) {
  1711. names="adc\0";
  1712. s=((ic32_31)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1713. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn; args[2]=disasm_arg_Rm;
  1714. } else
  1715. if(((ic32_8)&0b011111111110000010000000)==0b000110101100000000000000) {
  1716. names="?\0?\0udiv\0sdiv\0?\0?\0?\0?\0lslv\0lsrv\0asrv\0rorv\0?\0?\0?\0?\0crc32b\0crc32h\0crc32w\0crc32x\0crc32cb\0crc32ch\0crc32cw\0crc32cx\0";
  1717. op=((ic32_10)&0x1f); s=((ic32_31)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1718. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn; args[2]=disasm_arg_Rm;
  1719. } else
  1720. if(((ic32_8)&0b011111111110000001111100)==0b000110110000000001111100) {
  1721. names="mul\0mneg\0";
  1722. op=((ic32_15)&0x1); s=((ic32_31)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1723. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn; args[2]=disasm_arg_Rm;
  1724. } else
  1725. if(((ic32_16)&0b0111111111100000)==0b0001101100000000) {
  1726. names="madd\0msub\0";
  1727. op=((ic32_15)&0x1); s=((ic32_31)&0x1); m=((ic32_16)&0x1f); d=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1728. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn; args[2]=disasm_arg_Rm; args[3]=disasm_arg_Rd;
  1729. } else
  1730. if(((ic32_8)&0b011111111111111111111100)==0b000111101010111000000000) {
  1731. names="fmov\0";
  1732. s=((ic32_31)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1733. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Vn1d;
  1734. } else
  1735. if(((ic32_8)&0b011111111111111111111100)==0b000111101010111100000000) {
  1736. names="fmov\0";
  1737. s=((ic32_31)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1738. args[0]=disasm_arg_Vt1d; args[1]=disasm_arg_Rn;
  1739. } else
  1740. if(((ic32_16)&0b0111111100111110)==0b0001111000000010) {
  1741. names="scvtf\0ucvtf\0";
  1742. op=((ic32_16)&0x1); s=((ic32_31)&0x1); z=((ic32_22)&0x3); j=((ic32_10)&0x3f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1743. args[0]=disasm_arg_FPz5t; args[1]=disasm_arg_Rn; args[2]=disasm_arg_fbits;
  1744. } else
  1745. if(((ic32_16)&0b0111111100111110)==0b0001111000011000) {
  1746. names="fcvtzs\0fcvtzu\0";
  1747. op=((ic32_16)&0x1); s=((ic32_31)&0x1); z=((ic32_22)&0x3); j=((ic32_10)&0x3f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1748. args[0]=disasm_arg_Rt; args[1]=disasm_arg_FPz5n; args[2]=disasm_arg_fbits;
  1749. } else
  1750. if(((ic32_8)&0b011111110011101011111100)==0b000111100010001000000000) {
  1751. names="scvtf\0ucvtf\0fmov\0fmov\0";
  1752. op=((ic32>>17)&0x2)|((ic32_16)&0x1); s=((ic32_31)&0x1); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1753. args[0]=disasm_arg_FPz5t; args[1]=disasm_arg_Rn;
  1754. } else
  1755. if(((ic32_8)&0b011111110011000011111100)==0b000111100010000000000000) {
  1756. names="fcvtns\0fcvtnu\0scvtf\0ucvtf\0fcvtas\0fcvtau\0fmov\0fmov\0fcvtns\0fcvtnu\0";
  1757. op=((ic32_16)&0xf); s=((ic32_31)&0x1); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1758. args[0]=disasm_arg_Rt; args[1]=disasm_arg_FPz5n;
  1759. } else
  1760. if(((ic32_8)&0b011111110011111011111100)==0b000111100011000000000000) {
  1761. names="fcvtms\0fcvtmu\0";
  1762. op=((ic32_16)&0x1); s=((ic32_31)&0x1); z=((ic32_22)&0x3); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1763. args[0]=disasm_arg_Rt; args[1]=disasm_arg_FPz5n;
  1764. } else
  1765. if(((ic32_16)&0b0111111110000000)==0b0010100010000000) {
  1766. names="stp\0ldp\0";
  1767. op=((ic32_22)&0x1); s=((ic32_31)&0x1); i=((ic32_21)&1?(0xffffffff<<7):0)|((ic32_15)&0x7f); m=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1768. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rm; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe; args[5]=disasm_arg_is4_opt;
  1769. } else
  1770. if(((ic32_24)&0b01111110)==0b00101000) {
  1771. names="stnp\0ldnp\0stp\0ldp\0";
  1772. op=((ic32_23)&0x2)|((ic32_22)&0x1); s=((ic32_31)&0x1); p=((ic32_23)&0x1); i=((ic32_21)&1?(0xffffffff<<7):0)|((ic32_15)&0x7f); m=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1773. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rm; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_is4_opt; args[5]=disasm_arg_offe;
  1774. } else
  1775. if(((ic32_24)&0b01111110)==0b00110100) {
  1776. names="cbz\0cbnz\0";
  1777. op=((ic32_24)&0x1); s=((ic32_31)&0x1); i=((ic32_23)&1?(0xffffffff<<19):0)|((ic32_5)&0x7ffff); t=((ic32)&0x1f);
  1778. args[0]=disasm_arg_Rt; args[1]=disasm_arg_labeli4;
  1779. } else
  1780. if(((ic32_24)&0b01111110)==0b00110110) {
  1781. names="tbz\0tbnz\0";
  1782. op=((ic32_24)&0x1); b=((ic32_26)&0x20)|((ic32_19)&0x1f); i=((ic32_18)&1?(0xffffffff<<14):0)|((ic32_5)&0x3fff); t=((ic32)&0x1f);
  1783. args[0]=disasm_arg_Xt; args[1]=disasm_arg_b; args[2]=disasm_arg_labeli4;
  1784. } else
  1785. if(((ic32_8)&0b011111111110000000000100)==0b001110001000000000000000) {
  1786. names="?\0ldtrsb\0ldursw\0ldtrsw\0";
  1787. op=((ic32_30)&0x2)|((ic32_11)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1788. args[0]=disasm_arg_Xt; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1789. } else
  1790. if((ic32&0b01111111111000001111111111100000)==0b01011010000000000000001111100000) {
  1791. names="ngc\0";
  1792. s=((ic32_31)&0x1); m=((ic32_16)&0x1f); t=((ic32)&0x1f);
  1793. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rm;
  1794. } else
  1795. if(((ic32_8)&0b011111111111111111111000)==0b010110101100000000001000) {
  1796. names="rev\0";
  1797. s=((ic32_31)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1798. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn;
  1799. } else
  1800. if(((ic32_8)&0b011111111111111111101000)==0b010110101100000000000000) {
  1801. names="rbit\0rev16\0clz\0cls\0";
  1802. op=((ic32_11)&0x2)|((ic32_10)&0x1); s=((ic32_31)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1803. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn;
  1804. } else
  1805. if(((ic32_8)&0b001111111110000000001000)==0b000110101000000000000000) {
  1806. names="csel\0csinc\0csinv\0csneg\0";
  1807. op=((ic32_29)&0x2)|((ic32_10)&0x1); s=((ic32_31)&0x1); m=((ic32_16)&0x1f); c=((ic32_12)&0xf); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1808. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn; args[2]=disasm_arg_Rm; args[3]=disasm_arg_c;
  1809. } else
  1810. if(((ic32_24)&0b00111111)==0b00011100) {
  1811. names="ldr\0";
  1812. z=((ic32_30)&0x3); i=((ic32_23)&1?(0xffffffff<<19):0)|((ic32_5)&0x7ffff); t=((ic32)&0x1f);
  1813. args[0]=disasm_arg_FPt; args[1]=disasm_arg_labeli4;
  1814. } else
  1815. if((ic32&0b00111111111000000000000000011111)==0b00101011001000000000000000011111) {
  1816. names="cmn\0cmp\0";
  1817. op=((ic32_30)&0x1); s=((ic32_31)&0x1); m=((ic32_16)&0x1f); o=((ic32_13)&0x7); j=((ic32_10)&0x7); n=((ic32_5)&0x1f);
  1818. args[0]=disasm_arg_RnS; args[1]=disasm_arg_Rsom; args[2]=disasm_arg_exts;
  1819. } else
  1820. if(((ic32_16)&0b0011111110000000)==0b0010110010000000) {
  1821. names="stp\0ldp\0";
  1822. op=((ic32_22)&0x1); z=((ic32_30)&0x3); i=((ic32_21)&1?(0xffffffff<<7):0)|((ic32_15)&0x7f); m=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1823. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPm; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_offe; args[5]=disasm_arg_iz4_opt;
  1824. } else
  1825. if(((ic32_24)&0b00111110)==0b00101100) {
  1826. names="stnp\0ldnp\0stp\0ldp\0";
  1827. op=((ic32_23)&0x2)|((ic32_22)&0x1); z=((ic32_30)&0x3); p=((ic32_23)&0x1); i=((ic32_21)&1?(0xffffffff<<7):0)|((ic32_15)&0x7f); m=((ic32_10)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1828. args[0]=disasm_arg_FPt; args[1]=disasm_arg_FPm; args[2]=disasm_arg_offs; args[3]=disasm_arg_XnS; args[4]=disasm_arg_iz4_opt; args[5]=disasm_arg_offe;
  1829. } else
  1830. if((ic32&0b00111111111000000000110000010000)==0b00111010010000000000000000000000) {
  1831. names="ccmn\0ccmp\0";
  1832. op=((ic32_30)&0x1); s=((ic32_31)&0x1); m=((ic32_16)&0x1f); c=((ic32_12)&0xf); n=((ic32_5)&0x1f); j=((ic32)&0xf);
  1833. args[0]=disasm_arg_Rn; args[1]=disasm_arg_Rm; args[2]=disasm_arg_j; args[3]=disasm_arg_c;
  1834. } else
  1835. if((ic32&0b00111111111000000000110000010000)==0b00111010010000000000100000000000) {
  1836. names="ccmn\0ccmp\0";
  1837. op=((ic32_30)&0x1); s=((ic32_31)&0x1); b=((ic32_16)&0x1f); c=((ic32_12)&0xf); n=((ic32_5)&0x1f); j=((ic32)&0xf);
  1838. args[0]=disasm_arg_Rn; args[1]=disasm_arg_b; args[2]=disasm_arg_j; args[3]=disasm_arg_c;
  1839. } else
  1840. if(((ic32_8)&0b001111110010000000001100)==0b001111000000000000000000) {
  1841. names="stur\0ldur\0";
  1842. op=((ic32_22)&0x1); z=((ic32_30)&0x3); s=((ic32_23)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1843. args[0]=disasm_arg_FPst; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1844. } else
  1845. if(((ic32_8)&0b001111110010000000001100)==0b001111000000000000000100) {
  1846. names="str\0ldr\0";
  1847. op=((ic32_22)&0x1); z=((ic32_30)&0x3); s=((ic32_23)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1848. args[0]=disasm_arg_FPst; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_offe; args[4]=disasm_arg_i_opt;
  1849. } else
  1850. if(((ic32_8)&0b001111110010000000000100)==0b001111000000000000000100) {
  1851. names="str\0ldr\0";
  1852. op=((ic32_22)&0x1); z=((ic32_30)&0x3); s=((ic32_23)&0x1); i=((ic32_20)&1?(0xffffffff<<9):0)|((ic32_12)&0x1ff); p=((ic32_11)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1853. args[0]=disasm_arg_FPst; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_i_opt; args[4]=disasm_arg_offe;
  1854. } else
  1855. if(((ic32_8)&0b001111110010000000001100)==0b001111000010000000001000) {
  1856. names="str\0ldr\0";
  1857. op=((ic32_22)&0x1); z=((ic32_30)&0x3); s=((ic32_23)&0x1); m=((ic32_16)&0x1f); o=((ic32_13)&0x7); j=((ic32_12)&0x1); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1858. args[0]=disasm_arg_FPst; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_Rom; args[4]=disasm_arg_amountz; args[5]=disasm_arg_offe;
  1859. } else
  1860. if(((ic32_24)&0b00111111)==0b00111101) {
  1861. names="str\0ldr\0";
  1862. op=((ic32_22)&0x1); z=((ic32_30)&0x3); s=((ic32_23)&0x1); j=((ic32_10)&0xfff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1863. args[0]=disasm_arg_FPst; args[1]=disasm_arg_offs; args[2]=disasm_arg_XnS; args[3]=disasm_arg_j_opt; args[4]=disasm_arg_offe;
  1864. } else
  1865. if(((ic32_16)&0b0001111111100000)==0b0000101100100000) {
  1866. names="add\0adds\0sub\0subs\0";
  1867. op=((ic32_29)&0x3); s=((ic32_31)&0x1); m=((ic32_16)&0x1f); o=((ic32_13)&0x7); j=((ic32_10)&0x7); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1868. args[0]=disasm_arg_RtS; args[1]=disasm_arg_RnS; args[2]=disasm_arg_Rsom; args[3]=disasm_arg_exts;
  1869. } else
  1870. if(((ic32_24)&0b00011110)==0b00001010) {
  1871. names="and\0bic\0add\0?\0orr\0orn\0adds\0?\0eor\0eon\0sub\0?\0ands\0bics\0subs\0";
  1872. op=((ic32_27)&0xc)|((ic32_23)&0x2)|((ic32_21)&0x1); s=((ic32_31)&0x1); z=((ic32_22)&0x3); m=((ic32_16)&0x1f); j=((ic32_10)&0x3f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1873. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn; args[2]=disasm_arg_Rm; args[3]=disasm_arg_shiftj_opt;
  1874. } else
  1875. if(((ic32_24)&0b00011111)==0b00010000) {
  1876. names="adr\0adrp\0";
  1877. op=((ic32_31)&0x1); j=((ic32_29)&0x3); i=((ic32_23)&1?(0xffffffff<<19):0)|((ic32_5)&0x7ffff); t=((ic32)&0x1f);
  1878. args[0]=disasm_arg_Xt; args[1]=disasm_arg_labelij1;
  1879. } else
  1880. if(((ic32_24)&0b00011111)==0b00010001) {
  1881. names="add\0adds\0sub\0subs\0";
  1882. op=((ic32_29)&0x3); s=((ic32_31)&0x1); j=((ic32_22)&0x3); i=((ic32_21)&1?(0xffffffff<<12):0)|((ic32_10)&0xfff); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1883. args[0]=disasm_arg_RtS; args[1]=disasm_arg_RnS; args[2]=disasm_arg_i; args[3]=disasm_arg_j12_opt;
  1884. } else
  1885. if(((ic32_16)&0b0001111110000000)==0b0001001000000000) {
  1886. names="and\0orr\0eor\0ands\0";
  1887. op=((ic32_29)&0x3); s=((ic32_31)&0x1); k=((ic32_22)&0x1); i=((ic32_21)&1?(0xffffffff<<6):0)|((ic32_16)&0x3f); j=((ic32_10)&0x3f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1888. args[0]=disasm_arg_RtS; args[1]=disasm_arg_Rn; args[2]=disasm_arg_ib;
  1889. } else
  1890. if(((ic32_16)&0b0001111110000000)==0b0001001010000000) {
  1891. names="movn\0?\0movz\0movk\0";
  1892. op=((ic32_29)&0x3); s=((ic32_31)&0x1); j=((ic32_21)&0x3); i=((ic32_20)&1?(0xffffffff<<16):0)|((ic32_5)&0xffff); t=((ic32)&0x1f);
  1893. args[0]=disasm_arg_Rt; args[1]=disasm_arg_i; args[2]=disasm_arg_j16_opt;
  1894. } else
  1895. if(((ic32_16)&0b0001111110000000)==0b0001001100000000) {
  1896. names="sbfm\0bfm\0ubfm\0";
  1897. op=((ic32_29)&0x3); s=((ic32_31)&0x1); i=((ic32_21)&1?(0xffffffff<<6):0)|((ic32_16)&0x3f); j=((ic32_10)&0x3f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1898. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn; args[2]=disasm_arg_i; args[3]=disasm_arg_j;
  1899. } else
  1900. if(((ic32_8)&0b000111111110000011111100)==0b000110100000000000000000) {
  1901. names="adc\0adcs\0sbc\0sbcs\0";
  1902. op=((ic32_29)&0x3); s=((ic32_31)&0x1); m=((ic32_16)&0x1f); n=((ic32_5)&0x1f); t=((ic32)&0x1f);
  1903. args[0]=disasm_arg_Rt; args[1]=disasm_arg_Rn; args[2]=disasm_arg_Rm;
  1904. } else
  1905. names=NULL;
  1906. if(str!=NULL) {
  1907. str+=sprintf(str,disasm_str(names,op),disasm_str(conds,c));
  1908. if(str-olds<10)om=10-(str-olds);else om=1;for(op=0;op<om;op++) *str++=' ';
  1909. for(op=0;op<sizeof(args) && args[op]!=disasm_arg_NONE;op++) {
  1910. if(op&&args[op-1]!=disasm_arg_offs&&args[op]!=disasm_arg_offe) { *str++=','; *str++=' '; }
  1911. switch(args[op]) {
  1912. case disasm_arg_Xt: str+=sprintf(str,t==31?"xzr":"x%d", t); break;
  1913. case disasm_arg_labelij1: str+=sprintf(str,"0x%x", (int)iaddr+(i<<2)+j); break;
  1914. case disasm_arg_RtS: str+=sprintf(str,t==31?"%csp":"%c%d", (s?'x':'w'), t); break;
  1915. case disasm_arg_RnS: str+=sprintf(str,n==31?"%csp":"%c%d", (s?'x':'w'), n); break;
  1916. case disasm_arg_i: str+=sprintf(str,"#0x%x", i); break;
  1917. case disasm_arg_j12_opt: str+=sprintf(str,!j?"":"lsl #%d", j*12); break;
  1918. case disasm_arg_Rn: str+=sprintf(str,n==31?"%czr":"%c%d", (s?'x':'w'), n); break;
  1919. case disasm_arg_ib: str+=sprintf(str,"#0x%lx", disasm_dbm(k,j,i)); break;
  1920. case disasm_arg_Rt: str+=sprintf(str,t==31?"%czr":"%c%d", (s?'x':'w'), t); break;
  1921. case disasm_arg_j16_opt: str+=sprintf(str,!j?"":"lsl #%d", j*16); break;
  1922. case disasm_arg_j: str+=sprintf(str,"#0x%x", j); break;
  1923. case disasm_arg_Rm: str+=sprintf(str,m==31?"%czr":"%c%d", (s?'x':'w'), m); break;
  1924. case disasm_arg_c: str+=sprintf(str,"%s", disasm_str(conds,c)); break;
  1925. case disasm_arg_labeli4: str+=sprintf(str,"0x%x", (int)iaddr+(i<<2)); break;
  1926. case disasm_arg_i_opt: str+=sprintf(str,!i?"":"#0x%x", i); break;
  1927. case disasm_arg_pstate: str+=sprintf(str,"%s", disasm_str(pstate,p)); break;
  1928. case disasm_arg_sh: str+=sprintf(str,"%s", disasm_str(share,j)); break;
  1929. case disasm_arg_a0: str+=sprintf(str,"%s", disasm_str(at_op0,a)); break;
  1930. case disasm_arg_a1: str+=sprintf(str,"%s", disasm_str(at_op1,a)); break;
  1931. case disasm_arg_a2: str+=sprintf(str,"%s", disasm_str(at_op2,a)); break;
  1932. case disasm_arg_dc0: str+=sprintf(str,"%s", disasm_str(dc_op0,d)); break;
  1933. case disasm_arg_dc1: str+=sprintf(str,"%s", disasm_str(dc_op1,d)); break;
  1934. case disasm_arg_ZVA: str+=sprintf(str,"ZVA"); break;
  1935. case disasm_arg_dc2: str+=sprintf(str,"%s", disasm_str(dc_op2,d)); break;
  1936. case disasm_arg_ic: str+=sprintf(str,"%s", disasm_str(ic_op,c)); break;
  1937. case disasm_arg_Xt_opt: str+=sprintf(str,t==31?"":"x%d", t); break;
  1938. case disasm_arg_tl0: str+=sprintf(str,"%s", disasm_str(tlbi_op0,n)); break;
  1939. case disasm_arg_tl1: str+=sprintf(str,"%s", disasm_str(tlbi_op1,n)); break;
  1940. case disasm_arg_tl2: str+=sprintf(str,"%s", disasm_str(tlbi_op2,n)); break;
  1941. case disasm_arg_sysreg: str+=sprintf(str,disasm_sysreg(p,k,n,m,j)?disasm_sysreg(p,k,n,m,j):"S%d_%d_%d_%d_%d", p,k,n,m,j); break;
  1942. case disasm_arg_Cn: str+=sprintf(str,"C%d", n); break;
  1943. case disasm_arg_Cm: str+=sprintf(str,"C%d", m); break;
  1944. case disasm_arg_Xn: str+=sprintf(str,n==31?"xzr":"x%d", n); break;
  1945. case disasm_arg_b: str+=sprintf(str,"#0x%x", b); break;
  1946. case disasm_arg_VtT: str+=sprintf(str,"%s", "V%d.%s", t, disasm_str(quantum,(z<<1)|q)); break;
  1947. case disasm_arg_Vt2T: str+=sprintf(str,"%s", "V%d.%s", (t+1)&0x1f, disasm_str(quantum,(z<<1)|q)); break;
  1948. case disasm_arg_Vt3T: str+=sprintf(str,"%s", "V%d.%s", (t+2)&0x1f, disasm_str(quantum,(z<<1)|q)); break;
  1949. case disasm_arg_Vt4T: str+=sprintf(str,"%s", "V%d.%s", (t+3)&0x1f, disasm_str(quantum,(z<<1)|q)); break;
  1950. case disasm_arg_offs: str+=sprintf(str,"["); break;
  1951. case disasm_arg_XnS: str+=sprintf(str,n==31?"xsp":"x%d", n); break;
  1952. case disasm_arg_offe: str+=sprintf(str,"]%s", p?"!":""); break;
  1953. case disasm_arg_Qi: str+=sprintf(str,"#%d", q?64:32); break;
  1954. case disasm_arg_Xm: str+=sprintf(str,m==31?"xzr":"x%d", m); break;
  1955. case disasm_arg_Qi3: str+=sprintf(str,"#%d", q?48:24); break;
  1956. case disasm_arg_Qi2: str+=sprintf(str,"#%d", q?32:16); break;
  1957. case disasm_arg_Qi1: str+=sprintf(str,"#%d", q?16:8); break;
  1958. case disasm_arg_VtB: str+=sprintf(str,"V%d.b[%d]", t, (q<<3)|(s<<2)|z); break;
  1959. case disasm_arg_VtH: str+=sprintf(str,"V%d.h[%d]", t, (q<<3)|(s<<2)|z); break;
  1960. case disasm_arg_VtS: str+=sprintf(str,"V%d.s[%d]", t, (q<<1)|s); break;
  1961. case disasm_arg_VtD: str+=sprintf(str,"V%d.d[%d]", t, q); break;
  1962. case disasm_arg_i1: str+=sprintf(str,"1"); break;
  1963. case disasm_arg_i2: str+=sprintf(str,"2"); break;
  1964. case disasm_arg_i4: str+=sprintf(str,"4"); break;
  1965. case disasm_arg_i8: str+=sprintf(str,"8"); break;
  1966. case disasm_arg_Vt3B: str+=sprintf(str,"V%d.b V%d.b V%d.b[%d]", t, (t+1)&0x1f, (t+2)&0x1f, (q<<3)|(s<<2)|z); break;
  1967. case disasm_arg_Vt3H: str+=sprintf(str,"V%d.h V%d.h V%d.h[%d]", t, (t+1)&0x1f, (t+2)&0x1f, (q<<3)|(s<<2)|z); break;
  1968. case disasm_arg_Vt3S: str+=sprintf(str,"V%d.s V%d.s V%d.s[%d]", t, (t+1)&0x1f, (t+2)&0x1f, (q<<1)|s); break;
  1969. case disasm_arg_Vt3D: str+=sprintf(str,"V%d.d V%d.d V%d.d[%d]", t, (t+1)&0x1f, (t+2)&0x1f, q); break;
  1970. case disasm_arg_i3: str+=sprintf(str,"3"); break;
  1971. case disasm_arg_i6: str+=sprintf(str,"6"); break;
  1972. case disasm_arg_i12: str+=sprintf(str,"12"); break;
  1973. case disasm_arg_i24: str+=sprintf(str,"24"); break;
  1974. case disasm_arg_Vt2B: str+=sprintf(str,"V%d.b V%d.b[%d]", t, (t+1)&0x1f, (q<<3)|(s<<2)|z); break;
  1975. case disasm_arg_Vt2H: str+=sprintf(str,"V%d.h V%d.h[%d]", t, (t+1)&0x1f, (q<<3)|(s<<2)|z); break;
  1976. case disasm_arg_Vt2S: str+=sprintf(str,"V%d.s V%d.s[%d]", t, (t+1)&0x1f, (q<<1)|s); break;
  1977. case disasm_arg_Vt2D: str+=sprintf(str,"V%d.d V%d.d[%d]", t, (t+1)&0x1f, q); break;
  1978. case disasm_arg_i16: str+=sprintf(str,"16"); break;
  1979. case disasm_arg_Vt4B: str+=sprintf(str,"V%d.b V%d.b V%d.b V%d.b[%d]", t, (t+1)&0x1f, (t+2)&0x1f, (t+3)&0x1f, (q<<3)|(s<<2)|z); break;
  1980. case disasm_arg_Vt4H: str+=sprintf(str,"V%d.h V%d.h V%d.h V%d.h[%d]", t, (t+1)&0x1f, (t+2)&0x1f, (t+3)&0x1f, (q<<3)|(s<<2)|z); break;
  1981. case disasm_arg_Vt4S: str+=sprintf(str,"V%d.s V%d.s V%d.s V%d.s[%d]", t, (t+1)&0x1f, (t+2)&0x1f, (t+3)&0x1f, (q<<1)|s); break;
  1982. case disasm_arg_Vt4D: str+=sprintf(str,"V%d.d V%d.d V%d.d V%d.d[%d]", t, (t+1)&0x1f, (t+2)&0x1f, (t+3)&0x1f, q); break;
  1983. case disasm_arg_i32: str+=sprintf(str,"32"); break;
  1984. case disasm_arg_z: str+=sprintf(str,"#%d", 1<<z); break;
  1985. case disasm_arg_z3: str+=sprintf(str,"#%d", 3<<z); break;
  1986. case disasm_arg_z2: str+=sprintf(str,"#%d", 2<<z); break;
  1987. case disasm_arg_z4: str+=sprintf(str,"#%d", 4<<z); break;
  1988. case disasm_arg_Rd: str+=sprintf(str,d==31?"%czr":"%c%d", (s?'x':'w'), d); break;
  1989. case disasm_arg_Rd1: str+=sprintf(str,d+1==31?"%czr":"%c%d", (s?'x':'w'), (d+1)&0x1f); break;
  1990. case disasm_arg_Rt1: str+=sprintf(str,t+1==31?"%czr":"%c%d", (s?'x':'w'), (t+1)&0x1f); break;
  1991. case disasm_arg_Wd: str+=sprintf(str,d==31?"wzr":"w%d", d); break;
  1992. case disasm_arg_Wt: str+=sprintf(str,t==31?"wzr":"w%d", t); break;
  1993. case disasm_arg_FPt: str+=sprintf(str,"%c%d", z==2?'q':(z==1?'d':'s'), t); break;
  1994. case disasm_arg_prf_op: str+=sprintf(str,"%s", "%s L%d %s", disasm_str(prf_typ,(t>>3)&3), ((t>>1)&3)+1, disasm_str(prf_pol,t&1)); break;
  1995. case disasm_arg_is4_opt: str+=sprintf(str,!i?"":"#0x%x", i<<(2+s)); break;
  1996. case disasm_arg_FPm: str+=sprintf(str,"%c%d", z==2?'q':(z==1?'d':'s'), m); break;
  1997. case disasm_arg_iz4_opt: str+=sprintf(str,!i?"":"#0x%x", i<<(2+z)); break;
  1998. case disasm_arg_im4_opt: str+=sprintf(str,!i?"":"#0x%x", i<<2); break;
  1999. case disasm_arg_nRt: str+=sprintf(str,t==31?"%czr":"%c%d", (s?'w':'x'), t); break;
  2000. case disasm_arg_FPst: str+=sprintf(str,"%c%d", s==1?'q':(z==3?'d':(z==2?'s':(z==1?'h':'b'))), t); break;
  2001. case disasm_arg_j_opt: str+=sprintf(str,!j?"":"#0x%x", j); break;
  2002. case disasm_arg_Rom: str+=sprintf(str,m==31?"%czr":"%c%d", (o&1?'x':'w'), m); break;
  2003. case disasm_arg_amountj: str+=sprintf(str,"%s", "%s #%d", disasm_str(extend64,o), j); break;
  2004. case disasm_arg_amountz: str+=sprintf(str,"%s", "%s #%d", disasm_str(extend64,o), j?(s?4:z):0); break;
  2005. case disasm_arg_amountjs: str+=sprintf(str,"%s", "%s #%d", disasm_str(extend64,o), j?(s?3:2):0); break;
  2006. case disasm_arg_amountj2: str+=sprintf(str,"%s", "%s #%d", disasm_str(extend64,o), j?2:0); break;
  2007. case disasm_arg_amountj3: str+=sprintf(str,"%s", "%s #%d", disasm_str(extend64,o), j?3:0); break;
  2008. case disasm_arg_shiftj_opt: str+=sprintf(str,"%s", !j?"":"%s #%d", disasm_str(shift,z), j); break;
  2009. case disasm_arg_Rsom: str+=sprintf(str,m==31?"%czr":"%c%d", (s&&(o&3)==3?'x':'w'), m); break;
  2010. case disasm_arg_exts: str+=sprintf(str,"%s", "%s #%d", s?disasm_str(extend64,o):disasm_str(extend32,o), j); break;
  2011. case disasm_arg_Wn: str+=sprintf(str,n==31?"wzr":"w%d", n); break;
  2012. case disasm_arg_Wm: str+=sprintf(str,m==31?"wzr":"w%d", m); break;
  2013. case disasm_arg_Xd: str+=sprintf(str,d==31?"xzr":"x%d", d); break;
  2014. case disasm_arg_Vt16b: str+=sprintf(str,"V%d.16b", t); break;
  2015. case disasm_arg_Vn16b: str+=sprintf(str,"V%d.16b", n); break;
  2016. case disasm_arg_Qt: str+=sprintf(str,"q%d", t); break;
  2017. case disasm_arg_Sn: str+=sprintf(str,"s%d", n); break;
  2018. case disasm_arg_Vm4s: str+=sprintf(str,"V%d.4s", m); break;
  2019. case disasm_arg_Vt4s: str+=sprintf(str,"V%d.4s", t); break;
  2020. case disasm_arg_Vn4s: str+=sprintf(str,"V%d.4s", n); break;
  2021. case disasm_arg_Qn: str+=sprintf(str,"q%d", n); break;
  2022. case disasm_arg_St: str+=sprintf(str,"s%d", t); break;
  2023. case disasm_arg_FPjt: str+=sprintf(str,"%c%d", j&1?'b':((j&3)==2?'h':((j&7)==4?'s':'d')), t); break;
  2024. case disasm_arg_Vnj: str+=sprintf(str,"V%d.%c", n, j&1?'b':((j&3)==2?'h':((j&7)==4?'s':'d'))); break;
  2025. case disasm_arg_FPidx: str+=sprintf(str,"%d", j>>(j&1?1:((j&3)==2?2:((j&7)==4?3:4))), t); break;
  2026. case disasm_arg_Vtjq: str+=sprintf(str,"%s", "V%d.%s", t, disasm_str(quantum,(j&1?0:((j&3)==2?2:(j&7)==4?4:6))+q)); break;
  2027. case disasm_arg_Ht: str+=sprintf(str,"h%d", t); break;
  2028. case disasm_arg_Hn: str+=sprintf(str,"h%d", n); break;
  2029. case disasm_arg_Hm: str+=sprintf(str,"h%d", m); break;
  2030. case disasm_arg_FPn: str+=sprintf(str,"%c%d", z==2?'q':(z==1?'d':'s'), n); break;
  2031. case disasm_arg_VtH1: str+=sprintf(str,"V%d.%dh", t, q?8:4); break;
  2032. case disasm_arg_VnH1: str+=sprintf(str,"V%d.%dh", n, q?8:4); break;
  2033. case disasm_arg_VmH1: str+=sprintf(str,"V%d.%dh", m, q?8:4); break;
  2034. case disasm_arg_Vtzq: str+=sprintf(str,"%s", "V%d.%s", t, disasm_str(quantum,4+(z*2)+q)); break;
  2035. case disasm_arg_Vnzq: str+=sprintf(str,"%s", "V%d.%s", n, disasm_str(quantum,4+(z*2)+q)); break;
  2036. case disasm_arg_Vmzq: str+=sprintf(str,"%s", "V%d.%s", m, disasm_str(quantum,4+(z*2)+q)); break;
  2037. case disasm_arg_simd0: str+=sprintf(str,"#0.0"); break;
  2038. case disasm_arg_FPz2t: str+=sprintf(str,"%c%d", z==1?'h':'s', t); break;
  2039. case disasm_arg_FPz2n: str+=sprintf(str,"%c%d", z==1?'h':'s', n); break;
  2040. case disasm_arg_FPz2m: str+=sprintf(str,"%c%d", z==1?'h':'s', m); break;
  2041. case disasm_arg_VnT: str+=sprintf(str,"%s", "V%d.%s", n, disasm_str(quantum,(z<<1)|q)); break;
  2042. case disasm_arg_VmT: str+=sprintf(str,"%s", "V%d.%s", m, disasm_str(quantum,(z<<1)|q)); break;
  2043. case disasm_arg_FPz3t: str+=sprintf(str,"%c%d", z==3?'d':(z==2?'s':(z==1?'h':'b')), t); break;
  2044. case disasm_arg_FPz3n: str+=sprintf(str,"%c%d", z==3?'d':(z==2?'s':(z==1?'h':'b')), n); break;
  2045. case disasm_arg_FPz4n: str+=sprintf(str,"%c%d", z==2?'d':(z==1?'s':'h'), n); break;
  2046. case disasm_arg_VnT3: str+=sprintf(str,"%s", "V%d.%s", n, disasm_str(quantum,(z<<1)+3)); break;
  2047. case disasm_arg_Vn2d: str+=sprintf(str,"V%d.2d", n); break;
  2048. case disasm_arg_Vn2h: str+=sprintf(str,"V%d.2h", n); break;
  2049. case disasm_arg_Vnz: str+=sprintf(str,"V%d.2%c", n, z?'d':'s'); break;
  2050. case disasm_arg_FPz4t: str+=sprintf(str,"%c%d", z==2?'d':(z==1?'s':'h'), t); break;
  2051. case disasm_arg_Vtz: str+=sprintf(str,"%s", "V%d.%s", t, disasm_str(quantum,4+(z*2))); break;
  2052. case disasm_arg_FPz3m: str+=sprintf(str,"%c%d", z==3?'d':(z==2?'s':(z==1?'h':'b')), m); break;
  2053. case disasm_arg_Dt: str+=sprintf(str,"d%d", t); break;
  2054. case disasm_arg_Dn: str+=sprintf(str,"d%d", n); break;
  2055. case disasm_arg_shrshift: str+=sprintf(str,"#%d", ((j>>3)==1?16:((j>>4)==1?32:((j>>5)==1?64:128)))-j); break;
  2056. case disasm_arg_Vtj2: str+=sprintf(str,"%s", "V%d.%s", t, disasm_str(quantum,((j>>3)==1?0:((j>>4)==1?2:((j>>5)==1?4:6)))|q)); break;
  2057. case disasm_arg_Vnj2: str+=sprintf(str,"%s", "V%d.%s", n, disasm_str(quantum,((j>>3)==1?0:((j>>4)==1?2:((j>>5)==1?4:6)))|q)); break;
  2058. case disasm_arg_shlshift: str+=sprintf(str,"#%d", j-((j>>3)==1?8:((j>>4)==1?16:((j>>5)==1?32:64)))); break;
  2059. case disasm_arg_FPnj: str+=sprintf(str,"%c%d", (j>>3)==1?'h':((j>>4)==1?'s':'d'), n); break;
  2060. case disasm_arg_VnTa: str+=sprintf(str,"%s", "V%d.%s", n, disasm_str(quantum,((j>>3)==1?3:((j>>4)==1?4:7)))); break;
  2061. case disasm_arg_FPjt2: str+=sprintf(str,"%c%d", (j>>3)==1?'b':((j>>4)==1?'h':((j>>5)==1?'s':'d')), t); break;
  2062. case disasm_arg_FPjn2: str+=sprintf(str,"%c%d", (j>>3)==1?'b':((j>>4)==1?'h':((j>>5)==1?'s':'d')), n); break;
  2063. case disasm_arg_Vtz3: str+=sprintf(str,"%s", "V%d.%s", t, disasm_str(quantum,(z<<1)+6)); break;
  2064. case disasm_arg_VmTs: str+=sprintf(str,"V%d.%c[%d]", m, z==1?'h':'s', j); break;
  2065. case disasm_arg_VmHs: str+=sprintf(str,"V%d.h[%d]", m, j); break;
  2066. case disasm_arg_VmTs2: str+=sprintf(str,"V%d.%c[%d]", m, z==1?'d':'s', j); break;
  2067. case disasm_arg_Vn116b: str+=sprintf(str,"{ V%d.16b }", n); break;
  2068. case disasm_arg_Vn216b: str+=sprintf(str,"{ V%d.16b, V%d.16b }", n, (n+1)&0x1f); break;
  2069. case disasm_arg_Vn316b: str+=sprintf(str,"{ V%d.16b, V%d.16b, V%d.16b }", n, (n+1)&0x1f, (n+2)&0x1f); break;
  2070. case disasm_arg_Vn416b: str+=sprintf(str,"{ V%d.16b, V%d.16b, V%d.16b, V%d.16b }", n, (n+1)&0x1f, (n+2)&0x1f, (n+3)&0x1f); break;
  2071. case disasm_arg_Vtj: str+=sprintf(str,"V%d.%c", t, j&1?'b':((j&3)==2?'h':((j&7)==4?'s':'d'))); break;
  2072. case disasm_arg_R2n: str+=sprintf(str,n==31?"%czr":"%c%d", ((j&15)==8?'x':'w'), n); break;
  2073. case disasm_arg_FPidxk: str+=sprintf(str,"%d", k>>(k&1?1:((k&3)==2?2:((k&7)==4?3:4))), t); break;
  2074. case disasm_arg_Vtzq2: str+=sprintf(str,"%s", "V%d.%s", t, disasm_str(quantum,2+(z*2)+q)); break;
  2075. case disasm_arg_VnT2: str+=sprintf(str,"%s", "V%d.%s", n, disasm_str(quantum,z+3)); break;
  2076. case disasm_arg_Vnz3: str+=sprintf(str,"%s", "V%d.%s", n, disasm_str(quantum,(z<<1)+6)); break;
  2077. case disasm_arg_Vnzq2: str+=sprintf(str,"%s", "V%d.%s", n, disasm_str(quantum,2+(z*2)+q)); break;
  2078. case disasm_arg_shift8: str+=sprintf(str,"#%d", 1<<(z+3)); break;
  2079. case disasm_arg_VtT3: str+=sprintf(str,"%s", "V%d.%s", t, disasm_str(quantum,(z<<1)+3)); break;
  2080. case disasm_arg_VmT3: str+=sprintf(str,"%s", "V%d.%s", m, disasm_str(quantum,(z<<1)+3)); break;
  2081. case disasm_arg_VtT4: str+=sprintf(str,"%s", "V%d.%s", t, disasm_str(quantum,z?8:3)); break;
  2082. case disasm_arg_imm8: str+=sprintf(str,"#%x", j); break;
  2083. case disasm_arg_amountk_opt: str+=sprintf(str,!k?"":"lsl #%d", 1<<(k*3)); break;
  2084. case disasm_arg_amountk2_opt: str+=sprintf(str,!k?"":"msl #%d", 1<<(k*3)); break;
  2085. case disasm_arg_imm64: str+=sprintf(str,"#0x%02x%02x%02x%02x%02x%02x%02x%02x", j&128?255:0,j&64?255:0,j&32?255:0,j&16?255:0,j&8?255:0,j&4?255:0,j&2?255:0,j&1?255:0); break;
  2086. case disasm_arg_Vt2d: str+=sprintf(str,"V%d.2d", t); break;
  2087. case disasm_arg_F16: str+=sprintf(str,"#0x02x%02x", (j&128)|(j&64?0:64)|(j&64?32:0)|(j&64?16:0)|((j>>2)&0xF), (j&3)<<6); break;
  2088. case disasm_arg_F32: str+=sprintf(str,"#0x02x%02x0000", (j&128)|(j&64?0:64)|(j&64?32:0)|(j&64?16:0)|(j&64?8:0)|(j&64?4:0)|(j&64?2:0)|(j&32?1:0), (j&0x1f)<<3); break;
  2089. case disasm_arg_F64: str+=sprintf(str,"#0x02x%02x%06x", (j&128)|(j&64?0:64)|(j&64?32:0)|(j&64?16:0)|(j&64?8:0)|(j&64?4:0)|(j&64?2:0)|(j&64?1:0), (j&64?128:0)|(j&64?64:0)|(j&0x3f), 0); break;
  2090. case disasm_arg_VmTs4b: str+=sprintf(str,"V%d.4b[%d]", m, j); break;
  2091. case disasm_arg_Vm2d: str+=sprintf(str,"V%d.2d", m); break;
  2092. case disasm_arg_Vm16b: str+=sprintf(str,"V%d.16b", m); break;
  2093. case disasm_arg_Vd16b: str+=sprintf(str,"V%d.16b", d); break;
  2094. case disasm_arg_Vd4s: str+=sprintf(str,"V%d.4s", d); break;
  2095. case disasm_arg_FPz5t: str+=sprintf(str,"%c%d", z==1?'d':(z==0?'s':'h'), t); break;
  2096. case disasm_arg_fbits: str+=sprintf(str,"#%d", 64-j); break;
  2097. case disasm_arg_FPz5n: str+=sprintf(str,"%c%d", z==1?'d':(z==0?'s':'h'), n); break;
  2098. case disasm_arg_Vn1d: str+=sprintf(str,"V%d.1d[n]", n); break;
  2099. case disasm_arg_Vt1d: str+=sprintf(str,"V%d.1d[1]", t); break;
  2100. case disasm_arg_FPk5t: str+=sprintf(str,"%c%d", k==1?'d':(k==0?'s':'h'), t); break;
  2101. case disasm_arg_FPz5m: str+=sprintf(str,"%c%d", z==1?'d':(z==0?'s':'h'), m); break;
  2102. case disasm_arg_jz: str+=sprintf(str,z==3?"#0x02x%02x":(z==0?"#0x02x%02x0000":"#0x02x%02x%06x"), z==3?(j&128)|(j&64?0:64)|(j&64?32:0)|(j&64?16:0)|((j>>2)&0xF):(j&128)|(j&64?0:64)|(j&64?32:0)|(j&64?16:0)|(j&64?8:0)|(j&64?4:0)|(j&64?2:0)|(j&(z==0?32:64)?1:0),z==3?(j&3)<<6:(z==0?(j&0x1f)<<3:(j&64?128:0)|(j&64?64:0)|(j&0x3f)), 0); break;
  2103. case disasm_arg_FPz5d: str+=sprintf(str,"%c%d", z==1?'d':(z==0?'s':'h'), d); break;
  2104. default: break;
  2105. }
  2106. if(*(str-2)==',')str-=2;
  2107. }
  2108. *str=0;
  2109. }
  2110. return addr+4;
  2111. }
  2112. #ifdef __cplusplus
  2113. }
  2114. #endif