1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377 |
- //=- AArch64SchedKryoDetails.td - QC Kryo Scheduling Defs ----*- tablegen -*-=//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // This file defines the uop and latency details for the machine model for the
- // Qualcomm Kryo subtarget.
- //
- //===----------------------------------------------------------------------===//
- def KryoWrite_3cyc_X_noRSV_138ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_X_noRSV_138ln],
- (instregex "(S|U)R?SRA(d|(v2i32|v4i16|v8i8)_shift)")>;
- def KryoWrite_3cyc_X_X_139ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_X_X_139ln],
- (instregex "(S|U)R?SRA(v2i64|v4i32|v8i16|v16i8)_shift")>;
- def KryoWrite_4cyc_XY_XY_noRSV_172ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 4; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_4cyc_XY_XY_noRSV_172ln],
- (instregex "(S|U)ABA(v8i8|v4i16|v2i32)")>;
- def KryoWrite_4cyc_XY_XY_XY_XY_178ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY, KryoUnitXY]> {
- let Latency = 4; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_4cyc_XY_XY_XY_XY_178ln],
- (instregex "(S|U)ABA(v16i8|v8i16|v4i32)")>;
- def KryoWrite_3cyc_XY_XY_XY_XY_177ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_XY_XY_177ln],
- (instregex "(S|U)ABALv.*")>;
- def KryoWrite_3cyc_XY_XY_166ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_166ln],
- (instregex "(S|U)(ABD|QSUB|RHADD)(v16i8|v8i16|v4i32|v2i64)")>;
- def KryoWrite_3cyc_XY_noRSV_159ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_159ln],
- (instregex "(S|U)(ABD|RHADD)(v8i8|v4i16|v2i32)")>;
- def KryoWrite_3cyc_XY_XY_165ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_165ln],
- (instregex "(S|U)ABDLv.*")>;
- def KryoWrite_3cyc_X_noRSV_154ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_X_noRSV_154ln],
- (instregex "(S|U)ADALP(v8i8|v4i16|v2i32)_v.*")>;
- def KryoWrite_3cyc_X_X_155ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_X_X_155ln],
- (instregex "(S|U)ADALP(v16i8|v8i16|v4i32)_v.*")>;
- def KryoWrite_2cyc_XY_XY_151ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_151ln],
- (instregex "(S|U)(ADD|SUB)Lv.*")>;
- def KryoWrite_2cyc_XY_noRSV_148ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_148ln],
- (instregex "((S|U)ADDLP|ABS)(v2i32|v4i16|v8i8)(_v.*)?")>;
- def KryoWrite_2cyc_XY_XY_150ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_150ln],
- (instregex "((S|U)ADDLP|ABS)(v2i64|v4i32|v8i16|v16i8)(_v.*)?")>;
- def KryoWrite_3cyc_XY_XY_XY_noRSV_179ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_XY_noRSV_179ln],
- (instrs SADDLVv4i32v, UADDLVv4i32v)>;
- def KryoWrite_5cyc_XY_XY_XY_noRSV_180ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY]> {
- let Latency = 5; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_5cyc_XY_XY_XY_noRSV_180ln],
- (instrs SADDLVv8i16v, UADDLVv8i16v)>;
- def KryoWrite_6cyc_XY_XY_X_noRSV_181ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_6cyc_XY_XY_X_noRSV_181ln],
- (instrs SADDLVv16i8v, UADDLVv16i8v)>;
- def KryoWrite_3cyc_XY_noRSV_158ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_158ln],
- (instrs SADDLVv4i16v, UADDLVv4i16v, ADDVv4i16v)>;
- def KryoWrite_4cyc_X_noRSV_169ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_169ln],
- (instrs SADDLVv8i8v, UADDLVv8i8v, ADDVv8i8v)>;
- def KryoWrite_2cyc_XY_XY_XY_XY_176ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_XY_XY_176ln],
- (instregex "(S|U)(ADDW|SUBW)v.*")>;
- def KryoWrite_4cyc_X_noRSV_40ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_40ln],
- (instregex "(S|U)CVTFS(W|X)(D|S)ri")>;
- def KryoWrite_4cyc_X_noRSV_97ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_97ln],
- (instregex "(S|U)CVTFU(W|X)(D|S)ri")>;
- def KryoWrite_4cyc_X_noRSV_110ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_110ln],
- (instregex "(S|U)CVTF(v1i32|v2i32|v1i64|v2f32|d|s)(_shift)?")>;
- def KryoWrite_4cyc_X_X_114ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_114ln],
- (instregex "(S|U)CVTF(v2i64|v4i32|v2f64|v4f32)(_shift)?")>;
- def KryoWrite_1cyc_XA_Y_98ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XA_Y_98ln],
- (instregex "(S|U)DIV(_Int)?(W|X)r")>;
- def KryoWrite_2cyc_XY_XY_152ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_152ln],
- (instregex "(S|U)H(ADD|SUB)(v16i8|v8i16|v4i32)")>;
- def KryoWrite_2cyc_XY_noRSV_149ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_149ln],
- (instregex "((S|U)H(ADD|SUB)|ADDP)(v8i8|v4i16|v2i32)")>;
- def KryoWrite_4cyc_X_70ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_4cyc_X_70ln],
- (instregex "(S|U)(MADDL|MSUBL)rrr")>;
- def KryoWrite_4cyc_X_X_191ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_191ln],
- (instregex "(S|U|SQD)(MLAL|MLSL|MULL)v.*")>;
- def KryoWrite_1cyc_XY_195ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_195ln],
- (instregex "(S|U)MOVv.*")>;
- def KryoWrite_5cyc_X_71ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_5cyc_X_71ln],
- (instrs SMULHrr, UMULHrr)>;
- def KryoWrite_3cyc_XY_noRSV_186ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_186ln],
- (instregex "^(S|U)QADD(v8i8|v4i16|v2i32)")>;
- def KryoWrite_3cyc_XY_XY_187ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_187ln],
- (instregex "^(S|U)QADD(v16i8|v8i16|v4i32|v2i64)")>;
- def KryoWrite_3cyc_XY_noRSV_69ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_69ln],
- (instregex "(S|U|SU|US)QADD(v1i8|v1i16|v2i16|v1i32|v1i64)")>;
- def KryoWrite_3cyc_XY_noRSV_248ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_248ln],
- (instregex "(S|U)QSHLU?(d|s|h|b|(v8i8|v4i16|v2i32)_shift)$")>;
- def KryoWrite_3cyc_XY_XY_250ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_250ln],
- (instregex "(S|U)(QSHLU?|RSHR)(v16i8|v8i16|v4i32|v2i64)_shift$")>;
- def KryoWrite_3cyc_XY_noRSV_246ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_246ln],
- (instregex "(S|U)(QSHL|RSHL|QRSHL)(v1i8|v1i16|v1i32|v1i64|v8i8|v4i16|v2i32)$")>;
- def KryoWrite_3cyc_XY_XY_251ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_251ln],
- (instregex "(S|U)(QSHL|RSHL|QRSHL)(v16i8|v8i16|v4i32|v2i64)$")>;
- def KryoWrite_6cyc_XY_X_238ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_6cyc_XY_X_238ln],
- (instregex "((S|U)QR?SHRN|SQR?SHRUN)(v16i8|v8i16|v4i32)_shift$")>;
- def KryoWrite_3cyc_XY_noRSV_249ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_249ln],
- (instregex "((S|U)QR?SHRN|SQR?SHRUN)(s|h|b)?")>;
- def KryoWrite_6cyc_XY_X_noRSV_252ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_6cyc_XY_X_noRSV_252ln],
- (instregex "((S|U)QR?SHRN|SQR?SHRUN)(v8i8|v4i16|v2i32)_shift?")>;
- def KryoWrite_3cyc_XY_noRSV_161ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_161ln],
- (instregex "(S|U)QSUB(v8i8|v4i16|v2i32|v1i64|v1i32|v1i16|v1i8)")>;
- def KryoWrite_3cyc_XY_noRSV_163ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_163ln],
- (instregex "(S|U)QXTU?N(v16i8|v8i16|v4i32|v8i8|v4i16|v2i32)")>;
- def KryoWrite_3cyc_XY_noRSV_162ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_162ln],
- (instregex "(S|U)QXTU?N(v1i8|v1i16|v1i32)")>;
- def KryoWrite_3cyc_XY_noRSV_247ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_247ln],
- (instregex "(S|U)RSHR(d|(v8i8|v4i16|v2i32)_shift)$")>;
- def KryoWrite_2cyc_XY_noRSV_239ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_239ln],
- (instregex "(S|U)SHL(d|v8i8|v4i16|v2i32|v1i64)$")>;
- def KryoWrite_2cyc_XY_XY_243ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_243ln],
- (instregex "(S|U)SHL(v16i8|v8i16|v4i32|v2i64)$")>;
- def KryoWrite_2cyc_XY_XY_241ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_241ln],
- (instregex "(S|U)?SHLL(v16i8|v8i16|v4i32|v8i8|v4i16|v2i32)(_shift)?$")>;
- def KryoWrite_2cyc_XY_noRSV_240ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_240ln],
- (instregex "((S|U)SHR|SHL)(d|(v8i8|v4i16|v2i32)_shift)$")>;
- def KryoWrite_2cyc_XY_XY_242ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_242ln],
- (instregex "((S|U)SHR|SHL)(v16i8|v8i16|v4i32|v2i64)_shift$")>;
- def KryoWrite_2cyc_XY_XY_183ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_183ln],
- (instregex "(S|U)(MAX|MIN)P?(v16i8|v8i16|v4i32)")>;
- def KryoWrite_2cyc_XY_noRSV_182ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_182ln],
- (instregex "(S|U)(MAX|MIN)P?(v8i8|v4i16|v2i32)")>;
- def KryoWrite_3cyc_XY_noRSV_184ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_184ln],
- (instregex "(S|U)(MAX|MIN)V(v4i16v|v8i8v|v4i32)")>;
- def KryoWrite_4cyc_X_noRSV_185ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_185ln],
- (instregex "(S|U)(MAX|MIN)V(v16i8v|v8i16v)")>;
- def KryoWrite_2cyc_XY_noRSV_67ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_67ln],
- (instrs ABSv1i64)>;
- def KryoWrite_1cyc_XY_63ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_63ln, ReadI, ReadI],
- (instregex "ADC.*")>;
- def KryoWrite_1cyc_XY_63_1ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_63_1ln],
- (instregex "ADR.*")>;
- def KryoWrite_1cyc_XY_62ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_62ln, ReadI],
- (instregex "ADDS?(W|X)ri")>;
- def KryoWrite_2cyc_XY_XY_64ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_64ln, ReadI, ReadI],
- (instregex "ADDS?(W|X)r(r|s|x)(64)?")>;
- def KryoWrite_1cyc_XY_noRSV_65ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_65ln],
- (instrs ADDv1i64)>;
- def KryoWrite_1cyc_XY_noRSV_144ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_144ln],
- (instregex "(ADD|SUB)(v8i8|v4i16|v2i32|v1i64)")>;
- def KryoWrite_1cyc_XY_XY_146ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_XY_146ln],
- (instregex "(ADD|SUB)(v16i8|v8i16|v4i32|v2i64)")>;
- def KryoWrite_4cyc_XY_X_noRSV_171ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_4cyc_XY_X_noRSV_171ln],
- (instregex "(ADD|SUB)HNv.*")>;
- def KryoWrite_1cyc_XY_noRSV_66ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_66ln],
- (instrs ADDPv2i64p)>;
- def KryoWrite_2cyc_XY_XY_153ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_153ln],
- (instregex "ADDP(v16i8|v8i16|v4i32|v2i64)")>;
- def KryoWrite_3cyc_XY_XY_noRSV_170ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_noRSV_170ln],
- (instrs ADDVv4i32v)>;
- def KryoWrite_4cyc_XY_XY_noRSV_173ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 4; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_4cyc_XY_XY_noRSV_173ln],
- (instrs ADDVv8i16v)>;
- def KryoWrite_5cyc_XY_X_noRSV_174ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_5cyc_XY_X_noRSV_174ln],
- (instrs ADDVv16i8v)>;
- def KryoWrite_3cyc_XY_XY_X_X_27ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_X_X_27ln],
- (instrs AESDrr, AESErr)>;
- def KryoWrite_2cyc_X_X_22ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_X_X_22ln],
- (instrs AESIMCrr, AESMCrr)>;
- def KryoWrite_1cyc_XY_noRSV_76ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_76ln],
- (instregex "((AND|ORN|EOR|EON)S?(Wr[rsi]|v8i8|v4i16|v2i32)|(ORR|BIC)S?(Wr[rs]|v8i8|v4i16|v2i32))")>;
- def KryoWrite_1cyc_XY_XY_79ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_XY_79ln],
- (instregex "((AND|ORN|EOR|EON)S?(Xr[rsi]|v16i8|v8i16|v4i32)|(ORR|BIC)S?(Xr[rs]|v16i8|v8i16|v4i32))")>;
- def KryoWrite_1cyc_X_72ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_X_72ln],
- (instregex "(S|U)?BFM.*")>;
- def KryoWrite_1cyc_XY_noRSV_77ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_77ln],
- (instregex "(BIC|ORR)S?Wri")>;
- def KryoWrite_1cyc_XY_XY_78ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_XY_78ln],
- (instregex "(BIC|ORR)S?Xri")>;
- def KryoWrite_1cyc_X_noRSV_74ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_noRSV_74ln],
- (instrs BIFv8i8, BITv8i8, BSLv8i8, BSPv8i8)>;
- def KryoWrite_1cyc_X_X_75ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_75ln],
- (instrs BIFv16i8, BITv16i8, BSLv16i8, BSPv16i8)>;
- def KryoWrite_0cyc_noRSV_11ln :
- SchedWriteRes<[]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_noRSV_11ln],
- (instrs BRK, DCPS1, DCPS2, DCPS3, HLT, HVC, ISB, HINT, SMC, SVC)>;
- def KryoWrite_0cyc_XY_16ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_XY_16ln, ReadI],
- (instregex "(CCMN|CCMP)(W|X)i")>;
- def KryoWrite_0cyc_XY_16_1ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_XY_16_1ln, ReadI, ReadI],
- (instregex "(CCMN|CCMP)(W|X)r")>;
- def KryoWrite_2cyc_XY_3ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_2cyc_XY_3ln, ReadI],
- (instregex "(CLS|CLZ)(W|X)r")>;
- def KryoWrite_2cyc_XY_noRSV_7ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_7ln],
- (instregex "(CLS|CLZ|CNT)(v4i32|v8i16|v16i8)")>;
- def KryoWrite_2cyc_XY_XY_8ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_8ln],
- (instregex "(CLS|CLZ|CNT)(v2i32|v4i16|v8i8)")>;
- def KryoWrite_2cyc_XY_noRSV_80ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_80ln],
- (instregex "CM(EQ|GE|HS|GT|HI|TST)(v8i8|v4i16|v2i32|v1i64)$")>;
- def KryoWrite_2cyc_XY_XY_83ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_83ln],
- (instregex "CM(EQ|GE|HS|GT|HI|TST)(v16i8|v8i16|v4i32|v2i64)$")>;
- def KryoWrite_2cyc_XY_noRSV_81ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_81ln],
- (instregex "CM(EQ|LE|GE|GT|LT)(v8i8|v4i16|v2i32|v1i64)rz$")>;
- def KryoWrite_2cyc_XY_XY_82ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_82ln],
- (instregex "CM(EQ|LE|GE|GT|LT)(v16i8|v8i16|v4i32|v2i64)rz$")>;
- def KryoWrite_3cyc_XY_4ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_XY_4ln, ReadI, ReadISReg],
- (instregex "CRC32.*")>;
- def KryoWrite_1cyc_XY_20ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_20ln, ReadI, ReadI],
- (instregex "CSEL(W|X)r")>;
- def KryoWrite_1cyc_X_17ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_X_17ln, ReadI, ReadI],
- (instregex "(CSINC|CSNEG)(W|X)r")>;
- def KryoWrite_1cyc_XY_18ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_18ln, ReadI, ReadI],
- (instregex "(CSINV)(W|X)r")>;
- def KryoWrite_3cyc_LS_X_13ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_X_13ln],
- (instrs DRPS)>;
- def KryoWrite_0cyc_LS_10ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_LS_10ln],
- (instrs DSB, DMB, CLREX)>;
- def KryoWrite_1cyc_X_noRSV_196ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_noRSV_196ln],
- (instregex "DUP(v8i8|v4i16|v2i32)(gpr|lane)")>;
- def KryoWrite_1cyc_X_X_197ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_197ln],
- (instregex "DUP(v16i8|v8i16|v4i32|v2i64)(gpr|lane)")>;
- def KryoWrite_3cyc_LS_LS_X_15ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_X_15ln],
- (instrs ERET)>;
- def KryoWrite_1cyc_X_noRSV_207ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_noRSV_207ln],
- (instrs EXTv8i8)>;
- def KryoWrite_1cyc_X_X_212ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_212ln],
- (instrs EXTv16i8)>;
- def KryoWrite_2cyc_XY_X_136ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitX]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_X_136ln],
- (instrs EXTRWrri, EXTRXrri)>;
- def KryoWrite_2cyc_XY_noRSV_35ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_35ln],
- (instregex "F(MAX|MIN)(NM)?P?(D|S)rr")>;
- def KryoWrite_2cyc_XY_XY_106ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_106ln],
- (instregex "(F(MAX|MIN)(NM)?P?|FAC(GE|GT)|FCM(EQ|GE|GT))(v2i64p|v2f64|v4f32)")>;
- def KryoWrite_2cyc_XY_noRSV_104ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_104ln],
- (instregex "(F(MAX|MIN)(NM)?P?|FAC(GE|GT)|FCM(EQ|GE|GT))(v2f32|v2i32p)")>;
- def KryoWrite_3cyc_XY_noRSV_107ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_107ln],
- (instregex "F(MAX|MIN)(NM)?Vv4i32v")>;
- def KryoWrite_3cyc_XY_noRSV_101ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_101ln],
- (instregex "FABD(32|64|v2f32)")>;
- def KryoWrite_3cyc_XY_XY_103ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_103ln],
- (instregex "(FABD|FADD|FSUB|FADDP)(v4f32|v2f64)")>;
- def KryoWrite_1cyc_XY_noRSV_48ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_48ln],
- (instregex "F(ABS|NEG)(D|S)r")>;
- def KryoWrite_1cyc_XY_noRSV_124ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_124ln],
- (instregex "F(ABS|NEG)v2f32")>;
- def KryoWrite_1cyc_XY_XY_125ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_XY_125ln],
- (instregex "F(ABS|NEG)(v2f64|v4f32)")>;
- def KryoWrite_2cyc_XY_noRSV_33ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_33ln],
- (instregex "(FAC(GE|GT)|FCM(EQ|GE|GT))(32|64)")>;
- def KryoWrite_3cyc_XY_noRSV_30ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_30ln],
- (instregex "(FADD|FSUB)(D|S)rr")>;
- def KryoWrite_3cyc_XY_noRSV_100ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_100ln],
- (instregex "(FADD|FSUB|FADDP)v2f32")>;
- def KryoWrite_3cyc_XY_noRSV_29ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_29ln],
- (instregex "FADDP(v2i32p|v2i64p)")>;
- def KryoWrite_0cyc_XY_31ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_XY_31ln],
- (instregex "FCCMPE?(D|S)rr")>;
- def KryoWrite_2cyc_XY_noRSV_34ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_34ln],
- (instregex "FCM(EQ|LE|GE|GT|LT)(v1i32|v1i64)rz")>;
- def KryoWrite_2cyc_XY_XY_36ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_36ln],
- (instregex "FCM(EQ|LE|GE|GT|LT)(v2i64|v4i32)rz")>;
- def KryoWrite_2cyc_XY_noRSV_105ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_105ln],
- (instregex "FCM(EQ|LE|GE|GT|LT)v2i32rz")>;
- def KryoWrite_0cyc_XY_32ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_XY_32ln],
- (instregex "FCMPE?(D|S)r(r|i)")>;
- def KryoWrite_1cyc_XY_noRSV_49ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_49ln],
- (instrs FCSELDrrr, FCSELSrrr)>;
- def KryoWrite_4cyc_X_noRSV_41ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_41ln],
- (instrs FCVTDHr, FCVTDSr, FCVTHDr, FCVTHSr, FCVTSDr, FCVTSHr)>;
- def KryoWrite_4cyc_X_38ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_4cyc_X_38ln],
- (instregex "FCVT(((A|N|M|P)(S|U)(S|U)|Z(S|U)_Int(S|U))(W|X)(D|S)ri?|Z(S|U)(d|s))$")>;
- def KryoWrite_4cyc_X_noRSV_113ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_113ln],
- (instregex "FCVT((A|N|M|P)(S|U)|Z(S|U)_Int)(v1i32|v1i64|v2f32)$")>;
- def KryoWrite_4cyc_X_X_117ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_117ln],
- (instregex "FCVT((A|N|M|P)(S|U)|Z(S|U)_Int)(v4f32|v2f64)$")>;
- def KryoWrite_5cyc_X_X_XY_noRSV_119ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitXY]> {
- let Latency = 5; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_5cyc_X_X_XY_noRSV_119ln],
- (instregex "FCVTX?N(v2f32|v4f32|v2i32|v4i16|v4i32|v8i16)$")>;
- def KryoWrite_4cyc_X_X_116ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_116ln],
- (instregex "FCVTL(v2i32|v4i16|v4i32|v8i16)$")>;
- def KryoWrite_4cyc_X_noRSV_112ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_112ln],
- (instrs FCVTXNv1i64)>;
- def KryoWrite_4cyc_X_37ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_4cyc_X_37ln],
- (instregex "FCVTZ(S|U)(S|U)(W|X)(D|S)ri?$")>;
- def KryoWrite_4cyc_X_noRSV_111ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_111ln],
- (instregex "FCVTZ(S|U)(v2f32|v1i32|v1i64|v2i32(_shift)?)$")>;
- def KryoWrite_4cyc_X_X_115ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_115ln],
- (instregex "FCVTZ(S|U)(v2f64|v4f32|(v2i64|v4i32)(_shift)?)$")>;
- def KryoWrite_10cyc_XA_Y_noRSV_43ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
- let Latency = 10; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_10cyc_XA_Y_noRSV_43ln],
- (instrs FDIVSrr)>;
- def KryoWrite_14cyc_XA_Y_noRSV_43ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
- let Latency = 14; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_14cyc_XA_Y_noRSV_43ln],
- (instrs FDIVDrr)>;
- def KryoWrite_10cyc_XA_Y_noRSV_121ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
- let Latency = 10; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_10cyc_XA_Y_noRSV_121ln],
- (instrs FDIVv2f32)>;
- def KryoWrite_14cyc_XA_Y_XA_Y_123ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> {
- let Latency = 14; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_14cyc_XA_Y_XA_Y_123ln],
- (instrs FDIVv2f64, FDIVv4f32)>;
- def KryoWrite_5cyc_X_noRSV_55ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_noRSV_55ln],
- (instregex "FN?M(ADD|SUB)Srrr")>;
- def KryoWrite_6cyc_X_noRSV_57ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_6cyc_X_noRSV_57ln],
- (instregex "FN?M(ADD|SUB)Drrr")>;
- def KryoWrite_5cyc_X_noRSV_51ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_noRSV_51ln],
- (instrs FMLAv2f32, FMLSv2f32, FMLAv1i32_indexed, FMLSv1i32_indexed)>;
- def KryoWrite_5cyc_X_X_56ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_X_56ln],
- (instrs FMLAv4f32, FMLSv4f32)>;
- def KryoWrite_6cyc_X_X_61ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_6cyc_X_X_61ln],
- (instrs FMLAv2f64, FMLSv2f64)>;
- def KryoWrite_5cyc_X_noRSV_128ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_noRSV_128ln],
- (instrs FMLAv2i32_indexed, FMLSv2i32_indexed)>;
- def KryoWrite_5cyc_X_X_131ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_X_131ln],
- (instrs FMLAv4i32_indexed, FMLSv4i32_indexed)>;
- def KryoWrite_6cyc_X_X_134ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_6cyc_X_X_134ln],
- (instrs FMLAv2i64_indexed, FMLSv2i64_indexed)>;
- def KryoWrite_6cyc_X_noRSV_60ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_6cyc_X_noRSV_60ln],
- (instrs FMLAv1i64_indexed, FMLSv1i64_indexed, FMULv1i64_indexed, FMULXv1i64_indexed)>;
- def KryoWrite_1cyc_XY_45ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_45ln],
- (instregex "FMOV(XDHigh|DXHigh|DX)r")>;
- def KryoWrite_1cyc_XY_noRSV_47ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_47ln],
- (instregex "FMOV(Di|Dr|Si|Sr|SWr|WSr|XDr|v.*_ns)")>;
- def KryoWrite_5cyc_X_noRSV_53ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_noRSV_53ln],
- (instrs FMULv1i32_indexed, FMULXv1i32_indexed)>;
- def KryoWrite_5cyc_X_noRSV_127ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_noRSV_127ln],
- (instrs FMULv2f32, FMULXv2f32, FMULv2i32_indexed, FMULXv2i32_indexed)>;
- def KryoWrite_5cyc_X_X_130ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_X_130ln],
- (instrs FMULv4f32, FMULXv4f32, FMULv4i32_indexed, FMULXv4i32_indexed)>;
- def KryoWrite_6cyc_X_X_133ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_6cyc_X_X_133ln],
- (instrs FMULv2f64, FMULXv2f64, FMULv2i64_indexed, FMULXv2i64_indexed)>;
- def KryoWrite_5cyc_X_noRSV_54ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_noRSV_54ln],
- (instrs FMULSrr, FNMULSrr, FMULX32)>;
- def KryoWrite_6cyc_X_noRSV_59ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_6cyc_X_noRSV_59ln],
- (instrs FMULDrr, FNMULDrr, FMULX64)>;
- def KryoWrite_3cyc_XY_noRSV_28ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_28ln],
- (instrs FRECPEv1i32, FRECPEv1i64, FRSQRTEv1i32, FRSQRTEv1i64 )>;
- def KryoWrite_3cyc_XY_noRSV_99ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_99ln],
- (instrs FRECPEv2f32, FRSQRTEv2f32)>;
- def KryoWrite_3cyc_XY_XY_102ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_102ln],
- (instrs FRECPEv2f64, FRECPEv4f32, FRSQRTEv2f64, FRSQRTEv4f32)>;
- def KryoWrite_5cyc_X_noRSV_52ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_noRSV_52ln],
- (instrs FRECPS32, FRSQRTS32)>;
- def KryoWrite_6cyc_X_noRSV_58ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_6cyc_X_noRSV_58ln],
- (instrs FRECPS64, FRSQRTS64)>;
- def KryoWrite_5cyc_X_noRSV_126ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_noRSV_126ln],
- (instrs FRECPSv2f32, FRSQRTSv2f32)>;
- def KryoWrite_5cyc_X_X_129ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_X_129ln],
- (instrs FRECPSv4f32, FRSQRTSv4f32)>;
- def KryoWrite_6cyc_X_X_132ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_6cyc_X_X_132ln],
- (instrs FRECPSv2f64, FRSQRTSv2f64)>;
- def KryoWrite_3cyc_XY_noRSV_50ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_50ln],
- (instrs FRECPXv1i32, FRECPXv1i64)>;
- def KryoWrite_2cyc_XY_noRSV_39ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_39ln],
- (instregex "FRINT(A|I|M|N|P|X|Z)(S|D)r")>;
- def KryoWrite_2cyc_XY_noRSV_108ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_108ln],
- (instregex "FRINT(A|I|M|N|P|X|Z)v2f32")>;
- def KryoWrite_2cyc_XY_XY_109ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_109ln],
- (instregex "FRINT(A|I|M|N|P|X|Z)(v2f64|v4f32)")>;
- def KryoWrite_12cyc_XA_Y_noRSV_42ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
- let Latency = 12; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_12cyc_XA_Y_noRSV_42ln],
- (instrs FSQRTSr)>;
- def KryoWrite_21cyc_XA_Y_noRSV_42ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
- let Latency = 21; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_21cyc_XA_Y_noRSV_42ln],
- (instrs FSQRTDr)>;
- def KryoWrite_12cyc_XA_Y_noRSV_120ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
- let Latency = 12; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_12cyc_XA_Y_noRSV_120ln],
- (instrs FSQRTv2f32)>;
- def KryoWrite_21cyc_XA_Y_XA_Y_122ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> {
- let Latency = 21; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_21cyc_XA_Y_XA_Y_122ln],
- (instrs FSQRTv4f32)>;
- def KryoWrite_36cyc_XA_Y_XA_Y_122ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> {
- let Latency = 36; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_36cyc_XA_Y_XA_Y_122ln],
- (instrs FSQRTv2f64)>;
- def KryoWrite_1cyc_X_201ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_X_201ln],
- (instregex "INSv.*")>;
- def KryoWrite_3cyc_LS_255ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_255ln],
- (instregex "LD1(One(v16b|v8h|v4s|v2d)|i64)$")>;
- def KryoWrite_4cyc_LS_X_270ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_LS_X_270ln],
- (instregex "LD1(i8|i16|i32)$")>;
- def KryoWrite_3cyc_LS_noRSV_285ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_noRSV_285ln],
- (instregex "LD1One(v8b|v4h|v2s|v1d)$")>;
- def KryoWrite_3cyc_LS_XY_289ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_289ln, WriteAdr],
- (instregex "LD1(One(v16b|v8h|v4s|v2d)|i64)_POST$")>;
- def KryoWrite_4cyc_LS_XY_X_298ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_4cyc_LS_XY_X_298ln, WriteAdr],
- (instregex "LD1(i8|i16|i32)_POST$")>;
- def KryoWrite_3cyc_LS_LS_LS_308ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_LS_308ln],
- (instregex "LD1Three(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_3cyc_LS_XY_noRSV_317ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_317ln, WriteAdr],
- (instregex "LD1One(v8b|v4h|v2s|v1d)_POST$")>;
- def KryoWrite_3cyc_LS_LS_LS_LS_328ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_328ln, WriteAdr],
- (instregex "LD1Four(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_3cyc_LS_XY_LS_LS_332ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_332ln, WriteAdr],
- (instregex "LD1Three(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_348ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 5;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_348ln],
- (instregex "LD1Three(v8b|v4h|v2s|v1d)$")>;
- def KryoWrite_3cyc_LS_XY_LS_LS_LS_351ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 5;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_351ln],
- (instregex "LD1Four(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_358ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_358ln],
- (instregex "LD1Four(v8b|v4h|v2s|v1d)$")>;
- def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_360ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_360ln, WriteAdr],
- (instregex "LD1Three(v8b|v4h|v2s|v1d)_POST$")>;
- def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_368ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 7;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_368ln, WriteAdr],
- (instregex "LD1Four(v8b|v4h|v2s|v1d)_POST$")>;
- def KryoWrite_3cyc_LS_LS_281ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_281ln],
- (instregex "LD(1|2)Two(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_3cyc_LS_noRSV_noRSV_311ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_311ln],
- (instregex "LD(1|2)Two(v8b|v4h|v2s|v1d)$")>;
- def KryoWrite_3cyc_LS_XY_LS_313ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_313ln, WriteAdr],
- (instregex "LD(1|2)Two(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_3cyc_LS_XY_noRSV_noRSV_334ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_334ln, WriteAdr],
- (instregex "LD(1|2)Two(v8b|v4h|v2s|v1d)_POST$")>;
- def KryoWrite_3cyc_LS_256ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_256ln],
- (instregex "LD1R(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_3cyc_LS_noRSV_286ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_noRSV_286ln],
- (instregex "LD1R(v8b|v4h|v2s|v1d)$")>;
- def KryoWrite_3cyc_LS_XY_290ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_290ln, WriteAdr],
- (instregex "LD1R(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_3cyc_LS_XY_noRSV_318ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_318ln, WriteAdr],
- (instregex "LD1R(v8b|v4h|v2s|v1d)_POST$")>;
- def KryoWrite_3cyc_LS_257ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_257ln],
- (instregex "LD2i64$")>;
- def KryoWrite_3cyc_LS_XY_291ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_291ln, WriteAdr],
- (instregex "LD2i64_POST$")>;
- def KryoWrite_4cyc_LS_X_X_296ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_4cyc_LS_X_X_296ln],
- (instregex "LD2(i8|i16|i32)$")>;
- def KryoWrite_4cyc_LS_XY_X_X_321ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_4cyc_LS_XY_X_X_321ln, WriteAdr],
- (instregex "LD2(i8|i16|i32)_POST$")>;
- def KryoWrite_3cyc_LS_LS_282ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_282ln],
- (instregex "LD2R(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_3cyc_LS_noRSV_noRSV_312ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_312ln],
- (instregex "LD2R(v8b|v4h|v2s|v1d)$")>;
- def KryoWrite_3cyc_LS_XY_LS_314ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_314ln, WriteAdr],
- (instregex "LD2R(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_3cyc_LS_XY_noRSV_noRSV_335ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_335ln, WriteAdr],
- (instregex "LD2R(v8b|v4h|v2s|v1d)_POST$")>;
- def KryoWrite_3cyc_LS_LS_283ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_283ln],
- (instregex "LD3i64$")>;
- def KryoWrite_3cyc_LS_LS_LS_309ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_LS_309ln],
- (instregex "LD3Threev2d$")>;
- def KryoWrite_3cyc_LS_XY_LS_315ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_315ln, WriteAdr],
- (instregex "LD3i64_POST$")>;
- def KryoWrite_4cyc_LS_X_X_X_320ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_4cyc_LS_X_X_X_320ln],
- (instregex "LD3(i8|i16|i32)$")>;
- def KryoWrite_3cyc_LS_XY_LS_LS_331ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_331ln, WriteAdr],
- (instregex "LD3Threev2d_POST$")>;
- def KryoWrite_4cyc_LS_XY_X_X_X_338ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 5;
- }
- def : InstRW<[KryoWrite_4cyc_LS_XY_X_X_X_338ln, WriteAdr],
- (instregex "LD3(i8|i16|i32)_POST$")>;
- def KryoWrite_4cyc_LS_LS_X_X_X_noRSV_noRSV_noRSV_373ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 8;
- }
- def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_noRSV_noRSV_noRSV_373ln],
- (instregex "LD3Three(v8b|v4h|v2s)$")>;
- def KryoWrite_4cyc_LS_XY_LS_X_X_X_noRSV_noRSV_noRSV_380ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX,
- KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 9;
- }
- def : InstRW<[KryoWrite_4cyc_LS_XY_LS_X_X_X_noRSV_noRSV_noRSV_380ln, WriteAdr],
- (instregex "LD3Three(v8b|v4h|v2s)_POST$")>;
- def KryoWrite_4cyc_LS_LS_X_X_X_LS_LS_X_X_X_381ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 10;
- }
- def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_LS_LS_X_X_X_381ln],
- (instregex "LD3Three(v16b|v8h|v4s)$")>;
- def KryoWrite_4cyc_LS_LS_X_X_X_LS_XY_LS_X_X_X_383ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX,
- KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 11;
- }
- def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_LS_XY_LS_X_X_X_383ln, WriteAdr],
- (instregex "LD3Three(v16b|v8h|v4s)_POST$")>;
- def KryoWrite_3cyc_LS_LS_LS_310ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_LS_310ln],
- (instregex "LD3R(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_3cyc_LS_XY_LS_LS_333ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_333ln, WriteAdr],
- (instregex "LD3R(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_349ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 5;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_349ln],
- (instregex "LD3R(v8b|v4h|v2s|v1d)$")>;
- def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_361ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_361ln, WriteAdr],
- (instregex "LD3R(v8b|v4h|v2s|v1d)_POST$")>;
- def KryoWrite_3cyc_LS_LS_284ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_284ln],
- (instregex "LD4i64$")>;
- def KryoWrite_3cyc_LS_XY_LS_316ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_316ln, WriteAdr],
- (instregex "LD4i64_POST$")>;
- def KryoWrite_3cyc_LS_LS_LS_LS_329ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_329ln],
- (instregex "LD4Four(v2d)$")>;
- def KryoWrite_4cyc_LS_X_X_X_X_337ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 5;
- }
- def : InstRW<[KryoWrite_4cyc_LS_X_X_X_X_337ln],
- (instregex "LD4(i8|i16|i32)$")>;
- def KryoWrite_3cyc_LS_XY_LS_LS_LS_350ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 5;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_350ln, WriteAdr],
- (instregex "LD4Four(v2d)_POST$")>;
- def KryoWrite_4cyc_LS_XY_X_X_X_X_355ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_4cyc_LS_XY_X_X_X_X_355ln, WriteAdr],
- (instregex "LD4(i8|i16|i32)_POST$")>;
- def KryoWrite_4cyc_LS_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_382ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 10;
- }
- def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_382ln],
- (instregex "LD4Four(v8b|v4h|v2s)$")>;
- def KryoWrite_4cyc_LS_XY_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_384ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 11;
- }
- def : InstRW<[KryoWrite_4cyc_LS_XY_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_384ln, WriteAdr],
- (instregex "LD4Four(v8b|v4h|v2s)_POST$")>;
- def KryoWrite_4cyc_LS_LS_X_X_X_X_LS_LS_X_X_X_X_386ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 12;
- }
- def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_LS_LS_X_X_X_X_386ln],
- (instregex "LD4Four(v16b|v8h|v4s)$")>;
- def KryoWrite_4cyc_LS_LS_X_X_X_X_LS_XY_LS_X_X_X_X_389ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX,
- KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 13;
- }
- def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_LS_XY_LS_X_X_X_X_389ln, WriteAdr],
- (instregex "LD4Four(v16b|v8h|v4s)_POST$")>;
- def KryoWrite_3cyc_LS_LS_LS_LS_330ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_330ln],
- (instregex "LD4R(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_3cyc_LS_XY_LS_LS_LS_352ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 5;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_352ln, WriteAdr],
- (instregex "LD4R(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_359ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_359ln],
- (instregex "LD4R(v8b|v4h|v2s|v1d)$")>;
- def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_369ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 7;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_369ln, WriteAdr],
- (instregex "LD4R(v8b|v4h|v2s|v1d)_POST$")>;
- def KryoWrite_3cyc_LS_LS_400ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_400ln],
- (instregex "LDAX?R(B|H|W|X)")>;
- def : InstRW<[KryoWrite_3cyc_LS_LS_400ln, WriteLDHi],
- (instregex "LDAXP(W|X)")>;
- def KryoWrite_3cyc_LS_LS_401ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_401ln, WriteLDHi],
- (instrs LDNPQi)>;
- def KryoWrite_3cyc_LS_noRSV_noRSV_408ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_408ln, WriteLDHi],
- (instrs LDNPDi, LDNPSi)>;
- def KryoWrite_3cyc_LS_394ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_394ln, WriteLDHi],
- (instrs LDNPWi, LDNPXi)>;
- def KryoWrite_3cyc_LS_LS_402ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_402ln, WriteLDHi],
- (instrs LDPQi)>;
- def KryoWrite_3cyc_LS_noRSV_noRSV_409ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_409ln, WriteLDHi],
- (instrs LDPDi, LDPSi)>;
- def KryoWrite_3cyc_LS_XY_LS_410ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_LS_410ln, WriteLDHi, WriteAdr],
- (instregex "LDPQ(post|pre)")>;
- def KryoWrite_3cyc_LS_XY_noRSV_noRSV_411ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_411ln, WriteLDHi, WriteAdr],
- (instregex "LDP(D|S)(post|pre)")>;
- def KryoWrite_3cyc_LS_393ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_393ln, WriteLDHi],
- (instrs LDPWi, LDPXi)>;
- def KryoWrite_3cyc_LS_XY_403ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_403ln, WriteLDHi, WriteAdr],
- (instregex "LDP(W|X)(post|pre)")>;
- def KryoWrite_4cyc_LS_395ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 4; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_4cyc_LS_395ln, WriteLDHi],
- (instrs LDPSWi)>;
- def KryoWrite_4cyc_LS_XY_405ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_LS_XY_405ln, WriteLDHi, WriteAdr],
- (instrs LDPSWpost, LDPSWpre)>;
- def KryoWrite_3cyc_LS_264ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_264ln],
- (instrs LDRQui, LDRQl)>;
- def KryoWrite_4cyc_X_LS_271ln :
- SchedWriteRes<[KryoUnitX, KryoUnitLS]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_LS_271ln],
- (instrs LDRQroW, LDRQroX)>;
- def KryoWrite_3cyc_LS_noRSV_287ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_noRSV_287ln],
- (instregex "LDR((D|S)l|(D|S|H|B)ui)")>;
- def KryoWrite_3cyc_LS_XY_293ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_293ln, WriteAdr],
- (instrs LDRQpost, LDRQpre)>;
- def KryoWrite_4cyc_X_LS_noRSV_297ln :
- SchedWriteRes<[KryoUnitX, KryoUnitLS]> {
- let Latency = 4; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_4cyc_X_LS_noRSV_297ln],
- (instregex "LDR(D|S|H|B)ro(W|X)")>;
- def KryoWrite_3cyc_LS_XY_noRSV_319ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_319ln, WriteAdr],
- (instregex "LDR(D|S|H|B)(post|pre)")>;
- def KryoWrite_3cyc_LS_261ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_261ln],
- (instregex "LDR(BB|HH|W|X)ui")>;
- def KryoWrite_3cyc_LS_XY_292ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_XY_292ln, WriteAdr],
- (instregex "LDR(BB|HH|W|X)(post|pre)")>;
- def KryoWrite_4cyc_X_LS_272ln :
- SchedWriteRes<[KryoUnitX, KryoUnitLS]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_LS_272ln],
- (instregex "(LDR(BB|HH|W|X)ro(W|X)|PRFMro(W|X))")>;
- def KryoWrite_3cyc_LS_262ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_262ln],
- (instrs LDRWl, LDRXl)>;
- def KryoWrite_4cyc_LS_268ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 4; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_4cyc_LS_268ln],
- (instregex "LDRS(BW|BX|HW|HX|W)ui")>;
- def KryoWrite_5cyc_X_LS_273ln :
- SchedWriteRes<[KryoUnitX, KryoUnitLS]> {
- let Latency = 5; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_5cyc_X_LS_273ln],
- (instregex "LDRS(BW|BX|HW|HX|W)ro(W|X)")>;
- def KryoWrite_4cyc_LS_XY_294ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_LS_XY_294ln, WriteAdr],
- (instregex "LDRS(BW|BX|HW|HX|W)(post|pre)")>;
- def KryoWrite_4cyc_LS_269ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 4; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_4cyc_LS_269ln],
- (instrs LDRSWl)>;
- def KryoWrite_3cyc_LS_260ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_260ln],
- (instregex "LDTR(B|H|W|X)i")>;
- def KryoWrite_4cyc_LS_267ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 4; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_4cyc_LS_267ln],
- (instregex "LDTRS(BW|BX|HW|HX|W)i")>;
- def KryoWrite_3cyc_LS_263ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_263ln],
- (instrs LDURQi)>;
- def KryoWrite_3cyc_LS_noRSV_288ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_noRSV_288ln],
- (instregex "LDUR(D|S|H|B)i")>;
- def KryoWrite_3cyc_LS_259ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_259ln],
- (instregex "LDUR(BB|HH|W|X)i")>;
- def KryoWrite_4cyc_LS_266ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 4; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_4cyc_LS_266ln],
- (instregex "LDURS(B|H)?(W|X)i")>;
- def KryoWrite_3cyc_LS_258ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_258ln, WriteLDHi],
- (instregex "LDXP(W|X)")>;
- def KryoWrite_3cyc_LS_258_1ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 3; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_3cyc_LS_258_1ln],
- (instregex "LDXR(B|H|W|X)")>;
- def KryoWrite_2cyc_XY_XY_137ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_137ln],
- (instrs LSLVWr, LSLVXr)>;
- def KryoWrite_1cyc_XY_135ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_135ln],
- (instregex "(LS|AS|RO)RV(W|X)r")>;
- def KryoWrite_4cyc_X_84ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_4cyc_X_84ln],
- (instrs MADDWrrr, MSUBWrrr)>;
- def KryoWrite_5cyc_X_85ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_5cyc_X_85ln],
- (instrs MADDXrrr, MSUBXrrr)>;
- def KryoWrite_4cyc_X_noRSV_188ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_188ln],
- (instregex "(MLA|MLS|MUL)(v8i8|v4i16|v2i32)(_indexed)?")>;
- def KryoWrite_4cyc_X_X_192ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_192ln],
- (instregex "(MLA|MLS|MUL|SQR?DMULH)(v16i8|v8i16|v4i32)(_indexed)?")>;
- def KryoWrite_1cyc_XY_noRSV_198ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_198ln],
- (instregex "(MOVI|MVNI)(D|v8b_ns|v2i32|v4i16|v2s_msl)")>;
- def KryoWrite_1cyc_XY_XY_199ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_XY_199ln],
- (instregex "(MOVI|MVNI)(v2d_ns|v16b_ns|v4i32|v8i16|v4s_msl)")>;
- def KryoWrite_1cyc_X_89ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_X_89ln],
- (instrs MOVKWi, MOVKXi)>;
- def KryoWrite_1cyc_XY_91ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_91ln],
- (instrs MOVNWi, MOVNXi)>;
- def KryoWrite_1cyc_XY_90ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_90ln],
- (instrs MOVZWi, MOVZXi)>;
- def KryoWrite_2cyc_XY_93ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_2cyc_XY_93ln],
- (instrs MRS)>;
- def KryoWrite_0cyc_X_87ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_X_87ln],
- (instrs MSRpstateImm4)>;
- def : InstRW<[KryoWrite_0cyc_X_87ln],
- (instrs MSRpstateImm1)>;
- def KryoWrite_0cyc_XY_88ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_XY_88ln],
- (instrs MSR)>;
- def KryoWrite_1cyc_XY_noRSV_143ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_143ln],
- (instregex "NEG(v8i8|v4i16|v2i32|v1i64)")>;
- def KryoWrite_1cyc_XY_XY_145ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_XY_145ln],
- (instregex "NEG(v16i8|v8i16|v4i32|v2i64)")>;
- def KryoWrite_1cyc_XY_noRSV_193ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_193ln],
- (instrs NOTv8i8)>;
- def KryoWrite_1cyc_XY_XY_194ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_XY_194ln],
- (instrs NOTv16i8)>;
- def KryoWrite_2cyc_XY_noRSV_234ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_234ln],
- (instrs PMULv8i8)>;
- def KryoWrite_2cyc_XY_XY_236ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_236ln],
- (instrs PMULv16i8)>;
- def KryoWrite_2cyc_XY_XY_235ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_235ln],
- (instrs PMULLv8i8, PMULLv16i8)>;
- def KryoWrite_3cyc_XY_XY_237ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_237ln],
- (instrs PMULLv1i64, PMULLv2i64)>;
- def KryoWrite_0cyc_LS_254ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_LS_254ln],
- (instrs PRFMl, PRFMui)>;
- def KryoWrite_0cyc_LS_253ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_LS_253ln],
- (instrs PRFUMi)>;
- def KryoWrite_6cyc_XY_X_noRSV_175ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitX]> {
- let Latency = 6; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_6cyc_XY_X_noRSV_175ln],
- (instregex "R(ADD|SUB)HNv.*")>;
- def KryoWrite_2cyc_XY_204ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_2cyc_XY_204ln],
- (instrs RBITWr, RBITXr)>;
- def KryoWrite_2cyc_XY_noRSV_218ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_noRSV_218ln],
- (instrs RBITv8i8)>;
- def KryoWrite_2cyc_XY_XY_219ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_219ln],
- (instrs RBITv16i8)>;
- def KryoWrite_1cyc_X_202ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_X_202ln],
- (instregex "REV(16|32)?(W|X)r")>;
- def KryoWrite_1cyc_XY_noRSV_214ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_214ln],
- (instregex "REV(16|32|64)(v8i8|v4i16|v2i32)")>;
- def KryoWrite_1cyc_XY_XY_216ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_XY_216ln],
- (instregex "REV(16|32|64)(v16i8|v8i16|v4i32)")>;
- def KryoWrite_3cyc_X_noRSV_244ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_X_noRSV_244ln],
- (instregex "S(L|R)I(d|(v8i8|v4i16|v2i32)_shift)")>;
- def KryoWrite_3cyc_X_X_245ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_X_X_245ln],
- (instregex "S(L|R)I(v16i8|v8i16|v4i32|v2i64)_shift")>;
- def KryoWrite_1cyc_XY_2ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_2ln, ReadI, ReadI],
- (instregex "SBCS?(W|X)r")>;
- def KryoWrite_2cyc_XA_XA_XA_24ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitXA, KryoUnitXA]> {
- let Latency = 2; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_2cyc_XA_XA_XA_24ln],
- (instrs SHA1Crrr, SHA1Mrrr, SHA1Prrr)>;
- def KryoWrite_1cyc_XY_noRSV_21ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_21ln],
- (instrs SHA1Hrr)>;
- def KryoWrite_2cyc_X_X_23ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_X_X_23ln],
- (instrs SHA1SU0rrr, SHA1SU1rr, SHA256SU0rr)>;
- def KryoWrite_4cyc_XA_XA_XA_25ln :
- SchedWriteRes<[KryoUnitXA, KryoUnitXA, KryoUnitXA]> {
- let Latency = 4; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_4cyc_XA_XA_XA_25ln],
- (instrs SHA256Hrrr, SHA256H2rrr)>;
- def KryoWrite_3cyc_XY_XY_X_X_26ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_X_X_26ln],
- (instrs SHA256SU1rrr)>;
- def KryoWrite_4cyc_X_noRSV_189ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_189ln],
- (instregex "SQR?DMULH(v8i8|v4i16|v1i32|v2i32|v1i16)(_indexed)?")>;
- def KryoWrite_3cyc_XY_noRSV_68ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_68ln],
- (instregex "SQ(ABS|NEG)(v1i8|v1i16|v1i32|v1i64)")>;
- def KryoWrite_3cyc_XY_noRSV_157ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_157ln],
- (instregex "SQ(ABS|NEG)(v8i8|v4i16|v2i32)")>;
- def KryoWrite_3cyc_XY_XY_164ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_164ln],
- (instregex "SQ(ABS|NEG)(v16i8|v8i16|v4i32|v2i64)")>;
- def KryoWrite_4cyc_X_noRSV_190ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_4cyc_X_noRSV_190ln],
- (instregex "SQD(MLAL|MLSL|MULL)(i16|i32)")>;
- def KryoWrite_0cyc_LS_Y_274ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_274ln],
- (instregex "ST1(One(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64)|Two(v8b|v4h|v2s|v1d))$")>;
- def KryoWrite_1cyc_LS_Y_X_301ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 3;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_301ln],
- (instregex "ST1(One(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64)|Two(v8b|v4h|v2s|v1d))_POST$")>;
- def KryoWrite_1cyc_LS_Y_XY_305ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 3;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_305ln],
- (instregex "ST1(One(v16b|v8h|v4s|v2d)|Two(v8b|v4h|v2s|v1d))_POST$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_323ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 4;
- }
- def : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_323ln],
- (instregex "ST1(Two(v16b|v8h|v4s|v2d)|(Three|Four)(v8b|v4h|v2s|v1d))_POST$")>;
- def KryoWrite_1cyc_LS_Y_XY_LS_Y_345ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 5;
- }
- def : InstRW<[KryoWrite_1cyc_LS_Y_XY_LS_Y_345ln],
- (instregex "ST1(Two(v16b|v8h|v4s|v2d)|(Three|Four)(v8b|v4h|v2s|v1d))$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_356ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS,
- KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_356ln],
- (instregex "ST1Three(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_366ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY,
- KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 7;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_366ln],
- (instregex "ST1Three(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_371ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS,
- KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 8;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_371ln],
- (instregex "ST1Four(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_377ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitXY,
- KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 9;
- }
- def : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_377ln],
- (instregex "ST1Four(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_0cyc_LS_Y_275ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_275ln],
- (instregex "ST2(Two(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64))$")>;
- def KryoWrite_1cyc_LS_Y_XY_306ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 3;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_306ln],
- (instregex "ST2(Two(v8b|v4h|v2s|v1d)|(i8|i16|i32|i64))_POST$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_322ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_322ln],
- (instregex "ST2Two(v16b|v8h|v4s|v2d)$")>;
- def KryoWrite_1cyc_LS_Y_XY_LS_Y_344ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 5;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_344ln],
- (instregex "ST2Two(v16b|v8h|v4s|v2d)_POST$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_324ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_324ln],
- (instregex "ST3(Threev1d|(i8|i16|i32|i64))$")>;
- def KryoWrite_1cyc_LS_Y_XY_LS_Y_346ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 5;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_346ln],
- (instregex "ST3(Threev1d|(i8|i16|i32|i64))_POST$")>;
- def KryoWrite_1cyc_X_X_LS_Y_LS_Y_353ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS,
- KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_LS_Y_353ln],
- (instregex "ST3Three(v8b|v4h|v2s)$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_357ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS,
- KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_357ln],
- (instregex "ST3Threev2d$")>;
- def KryoWrite_1cyc_X_X_LS_Y_XY_LS_Y_363ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY,
- KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 7;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_XY_LS_Y_363ln],
- (instregex "ST3Three(v8b|v4h|v2s)_POST$")>;
- def KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_367ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY,
- KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 7;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_367ln],
- (instregex "ST3Threev2d_POST$")>;
- def KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_LS_Y_385ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS,
- KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY,
- KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 12;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_LS_Y_385ln],
- (instregex "ST3Three(v16b|v8h|v4s)$")>;
- def KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_XY_LS_Y_388ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS,
- KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY,
- KryoUnitXY, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 13;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_XY_LS_Y_388ln],
- (instregex "ST3Three(v16b|v8h|v4s)_POST$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_325ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_325ln],
- (instregex "ST4(Fourv1d|(i8|i16|i32|i64))$")>;
- def KryoWrite_1cyc_LS_Y_XY_LS_Y_347ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 5;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_347ln],
- (instregex "ST4(Fourv1d|(i8|i16|i32|i64))_POST$")>;
- def KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_370ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX,
- KryoUnitX, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 8;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_370ln],
- (instregex "ST4Four(v8b|v4h|v2s)$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_372ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS,
- KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 8;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_372ln],
- (instregex "ST4Fourv2d$")>;
- def KryoWrite_1cyc_X_X_LS_Y_XY_X_X_LS_Y_375ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY,
- KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 9;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_XY_X_X_LS_Y_375ln],
- (instregex "ST4Four(v8b|v4h|v2s)_POST$")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_379ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitXY,
- KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 9;
- }
- def : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_379ln],
- (instregex "ST4Fourv2d_POST$")>;
- def KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_390ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX,
- KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX,
- KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS,
- KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 16;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_390ln],
- (instregex "ST4Four(v16b|v8h|v4s)$")>;
- def KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_XY_X_X_LS_Y_392ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX,
- KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX,
- KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitX, KryoUnitX,
- KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 17;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_XY_X_X_LS_Y_392ln],
- (instregex "ST4Four(v16b|v8h|v4s)_POST$")>;
- def KryoWrite_0cyc_LS_LS_Y_299ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_0cyc_LS_LS_Y_299ln],
- (instregex "STLR(B|H|W|X)")>;
- def KryoWrite_3cyc_LS_LS_Y_307ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitY]> {
- let Latency = 3; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_3cyc_LS_LS_Y_307ln],
- (instregex "STLX(P(W|X)|R(B|H|W|X))")>;
- def KryoWrite_0cyc_LS_Y_276ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_276ln],
- (instrs STNPDi, STNPSi)>;
- def KryoWrite_0cyc_LS_Y_LS_Y_326ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_326ln],
- (instrs STNPQi)>;
- def KryoWrite_0cyc_LS_Y_280ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_280ln],
- (instrs STNPWi, STNPXi)>;
- def KryoWrite_0cyc_LS_Y_277ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_277ln],
- (instregex "STP(D|S)i")>;
- def KryoWrite_1cyc_LS_Y_X_303ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 3;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_303ln],
- (instregex "STP(D|S)(post|pre)")>;
- def KryoWrite_0cyc_LS_Y_LS_Y_327ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_327ln],
- (instrs STPQi)>;
- def KryoWrite_1cyc_LS_Y_X_LS_Y_343ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 5;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_LS_Y_343ln],
- (instrs STPQpost, STPQpre)>;
- def KryoWrite_0cyc_LS_Y_279ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_279ln],
- (instregex "STP(W|X)i")>;
- def KryoWrite_1cyc_LS_X_Y_300ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 3;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_X_Y_300ln],
- (instregex "STP(W|X)(post|pre)")>;
- def KryoWrite_0cyc_LS_Y_278ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_278ln],
- (instregex "STR(Q|D|S|H|B)ui")>;
- def KryoWrite_1cyc_X_LS_Y_295ln :
- SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_1cyc_X_LS_Y_295ln],
- (instregex "STR(D|S|H|B)ro(W|X)")>;
- def KryoWrite_1cyc_LS_Y_X_304ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 3;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_304ln],
- (instregex "STR(Q|D|S|H|B)(post|pre)")>;
- def KryoWrite_2cyc_X_LS_Y_XY_LS_Y_354ln :
- SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS,
- KryoUnitY]> {
- let Latency = 2; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_2cyc_X_LS_Y_XY_LS_Y_354ln],
- (instregex "STRQro(W|X)")>;
- def KryoWrite_0cyc_LS_Y_399ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_399ln],
- (instregex "STR(BB|HH|W|X)ui")>;
- def KryoWrite_1cyc_X_LS_Y_406ln :
- SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_1cyc_X_LS_Y_406ln],
- (instregex "STR(BB|HH|W|X)ro(W|X)")>;
- def KryoWrite_1cyc_LS_X_Y_407ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitY]> {
- let Latency = 1; let NumMicroOps = 3;
- }
- def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_X_Y_407ln],
- (instregex "STR(BB|HH|W|X)(post|pre)")>;
- def KryoWrite_0cyc_LS_Y_398ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_398ln],
- (instregex "STTR(B|H|W|X)i")>;
- def KryoWrite_0cyc_LS_Y_396ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_396ln],
- (instregex "STUR(Q|D|S|H|B)i")>;
- def KryoWrite_0cyc_LS_Y_397ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 0; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_0cyc_LS_Y_397ln],
- (instregex "STUR(BB|HH|W|X)i")>;
- def KryoWrite_3cyc_LS_Y_404ln :
- SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_LS_Y_404ln],
- (instregex "STX(P(W|X)|R(B|H|W|X))")>;
- def KryoWrite_3cyc_XY_noRSV_160ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_160ln],
- (instregex "^(SU|US)QADD(v8i8|v4i16|v2i32)")>;
- def KryoWrite_3cyc_XY_XY_167ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_167ln],
- (instregex "^(SU|US)QADD(v16i8|v8i16|v4i32|v2i64)")>;
- def KryoWrite_1cyc_XY_1ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_1cyc_XY_1ln, ReadI],
- (instregex "SUBS?(W|X)ri")>;
- def KryoWrite_2cyc_XY_XY_5ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_5ln, ReadI, ReadIEReg],
- (instregex "SUBS?(W|X)rx")>;
- def KryoWrite_2cyc_XY_XY_5_1ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 2; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_2cyc_XY_XY_5_1ln, ReadI, ReadISReg],
- (instregex "SUBS?(W|X)rs")>;
- def KryoWrite_1cyc_XY_noRSV_6ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_6ln, ReadI, ReadI],
- (instregex "SUBS?(W|X)rr")>;
- def KryoWrite_0cyc_LS_9ln :
- SchedWriteRes<[KryoUnitLS]> {
- let Latency = 0; let NumMicroOps = 1;
- }
- def : InstRW<[KryoWrite_0cyc_LS_9ln],
- (instregex "SYSL?xt")>;
- def KryoWrite_1cyc_X_noRSV_205ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_noRSV_205ln],
- (instrs TBLv8i8One)>;
- def KryoWrite_1cyc_X_X_208ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_208ln],
- (instrs TBLv16i8One)>;
- def KryoWrite_2cyc_X_X_X_noRSV_222ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 2; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_2cyc_X_X_X_noRSV_222ln],
- (instrs TBLv8i8Two)>;
- def KryoWrite_2cyc_X_X_X_X_X_X_224ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX]> {
- let Latency = 2; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_2cyc_X_X_X_X_X_X_224ln],
- (instrs TBLv16i8Two)>;
- def KryoWrite_3cyc_X_X_X_X_X_noRSV_225ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 6;
- }
- def : InstRW<[KryoWrite_3cyc_X_X_X_X_X_noRSV_225ln],
- (instrs TBLv8i8Three)>;
- def KryoWrite_3cyc_X_X_X_X_X_X_X_noRSV_228ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 8;
- }
- def : InstRW<[KryoWrite_3cyc_X_X_X_X_X_X_X_noRSV_228ln],
- (instrs TBLv8i8Four)>;
- def KryoWrite_4cyc_X_X_X_X_X_X_X_X_XY_X_X_230ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitXY, KryoUnitX,
- KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 11;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_XY_X_X_230ln],
- (instrs TBLv16i8Three)>;
- def KryoWrite_4cyc_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_232ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 15;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_232ln],
- (instrs TBLv16i8Four)>;
- def KryoWrite_2cyc_X_X_noRSV_220ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 2; let NumMicroOps = 3;
- }
- def : InstRW<[KryoWrite_2cyc_X_X_noRSV_220ln],
- (instrs TBXv8i8One)>;
- def KryoWrite_2cyc_X_X_X_X_221ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 2; let NumMicroOps = 4;
- }
- def : InstRW<[KryoWrite_2cyc_X_X_X_X_221ln],
- (instrs TBXv16i8One)>;
- def KryoWrite_3cyc_X_X_X_X_noRSV_223ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 5;
- }
- def : InstRW<[KryoWrite_3cyc_X_X_X_X_noRSV_223ln],
- (instrs TBXv8i8Two)>;
- def KryoWrite_4cyc_X_X_X_X_X_X_noRSV_226ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 7;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_noRSV_226ln],
- (instrs TBXv8i8Three)>;
- def KryoWrite_3cyc_X_X_X_X_X_X_X_X_227ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 3; let NumMicroOps = 8;
- }
- def : InstRW<[KryoWrite_3cyc_X_X_X_X_X_X_X_X_227ln],
- (instrs TBXv16i8Two)>;
- def KryoWrite_4cyc_X_X_X_X_X_X_X_X_noRSV_229ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 4; let NumMicroOps = 9;
- }
- def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_noRSV_229ln],
- (instrs TBXv8i8Four)>;
- def KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_XY_X_X_X_231ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitXY,
- KryoUnitX, KryoUnitX, KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 13;
- }
- def : InstRW<[KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_XY_X_X_X_231ln],
- (instrs TBXv16i8Three)>;
- def KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_X_233ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX,
- KryoUnitX, KryoUnitX]> {
- let Latency = 5; let NumMicroOps = 17;
- }
- def : InstRW<[KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_X_233ln],
- (instrs TBXv16i8Four)>;
- def KryoWrite_1cyc_XY_XY_217ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_XY_217ln],
- (instregex "((TRN1|TRN2|ZIP1|UZP1|UZP2)v2i64|ZIP2(v2i64|v4i32|v8i16|v16i8))")>;
- def KryoWrite_1cyc_X_X_211ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_211ln],
- (instregex "(TRN1|TRN2)(v4i32|v8i16|v16i8)")>;
- def KryoWrite_1cyc_X_XY_213ln :
- SchedWriteRes<[KryoUnitX, KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_XY_213ln],
- (instregex "(TRN1|TRN2)(v2i32|v4i16|v8i8)")>;
- def KryoWrite_3cyc_XY_noRSV_156ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_noRSV_156ln],
- (instrs URECPEv2i32, URSQRTEv2i32)>;
- def KryoWrite_3cyc_XY_XY_168ln :
- SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
- let Latency = 3; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_3cyc_XY_XY_168ln],
- (instrs URECPEv4i32, URSQRTEv4i32)>;
- def KryoWrite_1cyc_X_X_210ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_210ln],
- (instregex "(UZP1|UZP2)(v4i32|v8i16|v16i8)")>;
- def KryoWrite_1cyc_X_noRSV_206ln :
- SchedWriteRes<[KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_noRSV_206ln],
- (instregex "(UZP1|UZP2|ZIP1|ZIP2)(v2i32|v4i16|v8i8)")>;
- def KryoWrite_1cyc_XY_noRSV_215ln :
- SchedWriteRes<[KryoUnitXY]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_XY_noRSV_215ln],
- (instregex "XTNv.*")>;
- def KryoWrite_1cyc_X_X_209ln :
- SchedWriteRes<[KryoUnitX, KryoUnitX]> {
- let Latency = 1; let NumMicroOps = 2;
- }
- def : InstRW<[KryoWrite_1cyc_X_X_209ln],
- (instregex "ZIP1(v4i32|v8i16|v16i8)")>;
|