12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087 |
- //===--- P10InstrResources.td - P10 Scheduling Definitions -*- 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
- //
- //===----------------------------------------------------------------------===//
- // Automatically generated file, do not edit!
- //
- // This file defines the itinerary class data for the POWER10 processor.
- //
- //===----------------------------------------------------------------------===//
- // 22 Cycles Binary Floating Point operations, 2 input operands
- def : InstRW<[P10W_BF_22C, P10W_DISP_ANY, P10BF_Read, P10BF_Read],
- (instrs
- FDIVS,
- XSDIVSP
- )>;
- // 2-way crack instructions
- // 22 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_BF_22C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- FDIVS_rec
- )>;
- // 24 Cycles Binary Floating Point operations, 2 input operands
- def : InstRW<[P10W_BF_24C, P10W_DISP_ANY, P10BF_Read, P10BF_Read],
- (instrs
- XVDIVSP
- )>;
- // 26 Cycles Binary Floating Point operations, 1 input operands
- def : InstRW<[P10W_BF_26C, P10W_DISP_ANY, P10BF_Read],
- (instrs
- FSQRTS,
- XSSQRTSP
- )>;
- // 2-way crack instructions
- // 26 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_BF_26C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- FSQRTS_rec
- )>;
- // 27 Cycles Binary Floating Point operations, 1 input operands
- def : InstRW<[P10W_BF_27C, P10W_DISP_ANY, P10BF_Read],
- (instrs
- XVSQRTSP
- )>;
- // 27 Cycles Binary Floating Point operations, 2 input operands
- def : InstRW<[P10W_BF_27C, P10W_DISP_ANY, P10BF_Read, P10BF_Read],
- (instrs
- FDIV,
- XSDIVDP,
- XVDIVDP
- )>;
- // 2-way crack instructions
- // 27 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_BF_27C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- FDIV_rec
- )>;
- // 36 Cycles Binary Floating Point operations, 1 input operands
- def : InstRW<[P10W_BF_36C, P10W_DISP_ANY, P10BF_Read],
- (instrs
- FSQRT,
- XSSQRTDP,
- XVSQRTDP
- )>;
- // 2-way crack instructions
- // 36 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_BF_36C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- FSQRT_rec
- )>;
- // 7 Cycles Binary Floating Point operations, 1 input operands
- def : InstRW<[P10W_BF_7C, P10W_DISP_ANY, P10BF_Read],
- (instrs
- FCFID,
- FCFIDS,
- FCFIDU,
- FCFIDUS,
- FCTID,
- FCTIDU,
- FCTIDUZ,
- FCTIDZ,
- FCTIW,
- FCTIWU,
- FCTIWUZ,
- FCTIWZ,
- FRE,
- FRES,
- FRIMD, FRIMS,
- FRIND, FRINS,
- FRIPD, FRIPS,
- FRIZD, FRIZS,
- FRSP,
- FRSQRTE,
- FRSQRTES,
- VCFSX, VCFSX_0,
- VCFUX, VCFUX_0,
- VCTSXS, VCTSXS_0,
- VCTUXS, VCTUXS_0,
- VLOGEFP,
- VREFP,
- VRFIM,
- VRFIN,
- VRFIP,
- VRFIZ,
- VRSQRTEFP,
- XSCVDPHP,
- XSCVDPSP,
- XSCVDPSPN,
- XSCVDPSXDS, XSCVDPSXDSs,
- XSCVDPSXWS, XSCVDPSXWSs,
- XSCVDPUXDS, XSCVDPUXDSs,
- XSCVDPUXWS, XSCVDPUXWSs,
- XSCVSPDP,
- XSCVSXDDP,
- XSCVSXDSP,
- XSCVUXDDP,
- XSCVUXDSP,
- XSRDPI,
- XSRDPIC,
- XSRDPIM,
- XSRDPIP,
- XSRDPIZ,
- XSREDP,
- XSRESP,
- XSRSP,
- XSRSQRTEDP,
- XSRSQRTESP,
- XVCVDPSP,
- XVCVDPSXDS,
- XVCVDPSXWS,
- XVCVDPUXDS,
- XVCVDPUXWS,
- XVCVSPBF16,
- XVCVSPDP,
- XVCVSPHP,
- XVCVSPSXDS,
- XVCVSPSXWS,
- XVCVSPUXDS,
- XVCVSPUXWS,
- XVCVSXDDP,
- XVCVSXDSP,
- XVCVSXWDP,
- XVCVSXWSP,
- XVCVUXDDP,
- XVCVUXDSP,
- XVCVUXWDP,
- XVCVUXWSP,
- XVRDPI,
- XVRDPIC,
- XVRDPIM,
- XVRDPIP,
- XVRDPIZ,
- XVREDP,
- XVRESP,
- XVRSPI,
- XVRSPIC,
- XVRSPIM,
- XVRSPIP,
- XVRSPIZ,
- XVRSQRTEDP,
- XVRSQRTESP
- )>;
- // 7 Cycles Binary Floating Point operations, 2 input operands
- def : InstRW<[P10W_BF_7C, P10W_DISP_ANY, P10BF_Read, P10BF_Read],
- (instrs
- FADD,
- FADDS,
- FMUL,
- FMULS,
- FSUB,
- FSUBS,
- VADDFP,
- VSUBFP,
- XSADDDP,
- XSADDSP,
- XSMULDP,
- XSMULSP,
- XSSUBDP,
- XSSUBSP,
- XVADDDP,
- XVADDSP,
- XVMULDP,
- XVMULSP,
- XVSUBDP,
- XVSUBSP
- )>;
- // 7 Cycles Binary Floating Point operations, 3 input operands
- def : InstRW<[P10W_BF_7C, P10W_DISP_ANY, P10BF_Read, P10BF_Read, P10BF_Read],
- (instrs
- FMADD,
- FMADDS,
- FMSUB,
- FMSUBS,
- FNMADD,
- FNMADDS,
- FNMSUB,
- FNMSUBS,
- FSELD, FSELS,
- VMADDFP,
- VNMSUBFP,
- XSMADDADP,
- XSMADDASP,
- XSMADDMDP,
- XSMADDMSP,
- XSMSUBADP,
- XSMSUBASP,
- XSMSUBMDP,
- XSMSUBMSP,
- XSNMADDADP,
- XSNMADDASP,
- XSNMADDMDP,
- XSNMADDMSP,
- XSNMSUBADP,
- XSNMSUBASP,
- XSNMSUBMDP,
- XSNMSUBMSP,
- XVMADDADP,
- XVMADDASP,
- XVMADDMDP,
- XVMADDMSP,
- XVMSUBADP,
- XVMSUBASP,
- XVMSUBMDP,
- XVMSUBMSP,
- XVNMADDADP,
- XVNMADDASP,
- XVNMADDMDP,
- XVNMADDMSP,
- XVNMSUBADP,
- XVNMSUBASP,
- XVNMSUBMDP,
- XVNMSUBMSP
- )>;
- // 2-way crack instructions
- // 7 Cycles Binary Floating Point operations, and 7 Cycles Binary Floating Point operations, 1 input operands
- def : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_BF_7C, P10W_DISP_ANY, P10BF_Read],
- (instrs
- VEXPTEFP
- )>;
- // 2-way crack instructions
- // 7 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- FADD_rec,
- FADDS_rec,
- FMUL_rec,
- FMULS_rec,
- FSUB_rec,
- FSUBS_rec
- )>;
- // 2-way crack instructions
- // 7 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- FCFID_rec,
- FCFIDS_rec,
- FCFIDU_rec,
- FCFIDUS_rec,
- FCTID_rec,
- FCTIDU_rec,
- FCTIDUZ_rec,
- FCTIDZ_rec,
- FCTIW_rec,
- FCTIWU_rec,
- FCTIWUZ_rec,
- FCTIWZ_rec,
- FRE_rec,
- FRES_rec,
- FRIMD_rec, FRIMS_rec,
- FRIND_rec, FRINS_rec,
- FRIPD_rec, FRIPS_rec,
- FRIZD_rec, FRIZS_rec,
- FRSP_rec,
- FRSQRTE_rec,
- FRSQRTES_rec
- )>;
- // 2-way crack instructions
- // 7 Cycles Binary Floating Point operations, and 3 Cycles ALU operations, 3 input operands
- def : InstRW<[P10W_BF_7C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- FMADD_rec,
- FMADDS_rec,
- FMSUB_rec,
- FMSUBS_rec,
- FNMADD_rec,
- FNMADDS_rec,
- FNMSUB_rec,
- FNMSUBS_rec,
- FSELD_rec, FSELS_rec
- )>;
- // 2 Cycles Branch operations, 0 input operands
- def : InstRW<[P10W_BR_2C, P10W_DISP_ANY],
- (instrs
- BCLR, BCLRn, BDNZLR, BDNZLR8, BDNZLRm, BDNZLRp, BDZLR, BDZLR8, BDZLRm, BDZLRp, gBCLR,
- BCLRL, BCLRLn, BDNZLRL, BDNZLRLm, BDNZLRLp, BDZLRL, BDZLRLm, BDZLRLp, gBCLRL,
- BL, BL8, BL8_NOP, BL8_NOP_RM, BL8_NOP_TLS, BL8_NOTOC, BL8_NOTOC_RM, BL8_NOTOC_TLS, BL8_RM, BL8_TLS, BL8_TLS_, BLR, BLR8, BLRL, BL_NOP, BL_NOP_RM, BL_RM, BL_TLS
- )>;
- // 2 Cycles Branch operations, 1 input operands
- def : InstRW<[P10W_BR_2C, P10W_DISP_ANY, P10BR_Read],
- (instrs
- B, BCC, BCCA, BCCCTR, BCCCTR8, BCCCTRL, BCCCTRL8, BCCL, BCCLA, BCCLR, BCCLRL, CTRL_DEP, TAILB, TAILB8,
- BA, TAILBA, TAILBA8,
- BC, BCTR, BCTR8, BCTRL, BCTRL8, BCTRL8_LDinto_toc, BCTRL8_LDinto_toc_RM, BCTRL8_RM, BCTRL_LWZinto_toc, BCTRL_LWZinto_toc_RM, BCTRL_RM, BCn, BDNZ, BDNZ8, BDNZm, BDNZp, BDZ, BDZ8, BDZm, BDZp, TAILBCTR, TAILBCTR8, gBC, gBCat,
- BCL, BCLalways, BCLn, BDNZL, BDNZLm, BDNZLp, BDZL, BDZLm, BDZLp, gBCL, gBCLat,
- BLA, BLA8, BLA8_NOP, BLA8_NOP_RM, BLA8_RM, BLA_RM
- )>;
- // 2 Cycles Branch operations, 3 input operands
- def : InstRW<[P10W_BR_2C, P10W_DISP_ANY, P10BR_Read, P10BR_Read, P10BR_Read],
- (instrs
- BCCTR, BCCTR8, BCCTR8n, BCCTRn, gBCCTR,
- BCCTRL, BCCTRL8, BCCTRL8n, BCCTRLn, gBCCTRL
- )>;
- // 2 Cycles Branch operations, 4 input operands
- def : InstRW<[P10W_BR_2C, P10W_DISP_ANY, P10BR_Read, P10BR_Read, P10BR_Read, P10BR_Read],
- (instrs
- BDNZA, BDNZAm, BDNZAp, BDZA, BDZAm, BDZAp, gBCA, gBCAat,
- BDNZLA, BDNZLAm, BDNZLAp, BDZLA, BDZLAm, BDZLAp, gBCLA, gBCLAat
- )>;
- // 7 Cycles Crypto operations, 1 input operands
- def : InstRW<[P10W_CY_7C, P10W_DISP_ANY, P10CY_Read],
- (instrs
- VSBOX
- )>;
- // 7 Cycles Crypto operations, 2 input operands
- def : InstRW<[P10W_CY_7C, P10W_DISP_ANY, P10CY_Read, P10CY_Read],
- (instrs
- CFUGED,
- CNTLZDM,
- CNTTZDM,
- PDEPD,
- PEXTD,
- VCFUGED,
- VCIPHER,
- VCIPHERLAST,
- VCLZDM,
- VCTZDM,
- VGNB,
- VNCIPHER,
- VNCIPHERLAST,
- VPDEPD,
- VPEXTD,
- VPMSUMB,
- VPMSUMD,
- VPMSUMH,
- VPMSUMW
- )>;
- // 13 Cycles Decimal Floating Point operations, 1 input operands
- def : InstRW<[P10W_DF_13C, P10W_DISP_ANY, P10DF_Read],
- (instrs
- XSCVDPQP,
- XSCVQPDP,
- XSCVQPDPO,
- XSCVQPSDZ,
- XSCVQPSQZ,
- XSCVQPSWZ,
- XSCVQPUDZ,
- XSCVQPUQZ,
- XSCVQPUWZ,
- XSCVSDQP,
- XSCVSQQP,
- XSCVUDQP,
- XSCVUQQP
- )>;
- // 13 Cycles Decimal Floating Point operations, 2 input operands
- def : InstRW<[P10W_DF_13C, P10W_DISP_ANY, P10DF_Read, P10DF_Read],
- (instrs
- XSADDQP,
- XSADDQPO,
- XSSUBQP,
- XSSUBQPO
- )>;
- // 13 Cycles Decimal Floating Point operations, 3 input operands
- def : InstRW<[P10W_DF_13C, P10W_DISP_ANY, P10DF_Read, P10DF_Read, P10DF_Read],
- (instrs
- BCDSR_rec,
- XSRQPI,
- XSRQPIX,
- XSRQPXP
- )>;
- // 2-way crack instructions
- // 13 Cycles Decimal Floating Point operations, and 3 Cycles Store operations, 2 input operands
- def : InstRW<[P10W_DF_13C, P10W_DISP_EVEN, P10W_ST_3C, P10W_DISP_ANY],
- (instrs
- HASHST, HASHST8,
- HASHSTP, HASHSTP8
- )>;
- // 24 Cycles Decimal Floating Point operations, 1 input operands
- def : InstRW<[P10W_DF_24C, P10W_DISP_ANY, P10DF_Read],
- (instrs
- BCDCTSQ_rec
- )>;
- // 25 Cycles Decimal Floating Point operations, 2 input operands
- def : InstRW<[P10W_DF_25C, P10W_DISP_ANY, P10DF_Read, P10DF_Read],
- (instrs
- XSMULQP,
- XSMULQPO
- )>;
- // 25 Cycles Decimal Floating Point operations, 3 input operands
- def : InstRW<[P10W_DF_25C, P10W_DISP_ANY, P10DF_Read, P10DF_Read, P10DF_Read],
- (instrs
- XSMADDQP,
- XSMADDQPO,
- XSMSUBQP,
- XSMSUBQPO,
- XSNMADDQP,
- XSNMADDQPO,
- XSNMSUBQP,
- XSNMSUBQPO
- )>;
- // 38 Cycles Decimal Floating Point operations, 2 input operands
- def : InstRW<[P10W_DF_38C, P10W_DISP_ANY, P10DF_Read, P10DF_Read],
- (instrs
- BCDCFSQ_rec
- )>;
- // 59 Cycles Decimal Floating Point operations, 2 input operands
- def : InstRW<[P10W_DF_59C, P10W_DISP_ANY, P10DF_Read, P10DF_Read],
- (instrs
- XSDIVQP,
- XSDIVQPO
- )>;
- // 61 Cycles Decimal Floating Point operations, 2 input operands
- def : InstRW<[P10W_DF_61C, P10W_DISP_ANY, P10DF_Read, P10DF_Read],
- (instrs
- VDIVESQ,
- VDIVEUQ,
- VDIVSQ,
- VDIVUQ
- )>;
- // 68 Cycles Decimal Floating Point operations, 2 input operands
- def : InstRW<[P10W_DF_68C, P10W_DISP_ANY, P10DF_Read, P10DF_Read],
- (instrs
- VMODSQ,
- VMODUQ
- )>;
- // 77 Cycles Decimal Floating Point operations, 1 input operands
- def : InstRW<[P10W_DF_77C, P10W_DISP_ANY, P10DF_Read],
- (instrs
- XSSQRTQP,
- XSSQRTQPO
- )>;
- // 20 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_20C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- DIVW,
- DIVWO,
- DIVWU,
- DIVWUO,
- MODSW
- )>;
- // 2-way crack instructions
- // 20 Cycles Scalar Fixed-Point Divide operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_DV_20C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- DIVW_rec,
- DIVWO_rec,
- DIVWU_rec,
- DIVWUO_rec
- )>;
- // 25 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_25C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- DIVD,
- DIVDO,
- DIVDU,
- DIVDUO,
- DIVWE,
- DIVWEO,
- DIVWEU,
- DIVWEUO
- )>;
- // 2-way crack instructions
- // 25 Cycles Scalar Fixed-Point Divide operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_DV_25C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- DIVD_rec,
- DIVDO_rec,
- DIVDU_rec,
- DIVDUO_rec,
- DIVWE_rec,
- DIVWEO_rec,
- DIVWEU_rec,
- DIVWEUO_rec
- )>;
- // 27 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_27C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- MODSD,
- MODUD,
- MODUW
- )>;
- // 41 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_41C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- DIVDE,
- DIVDEO,
- DIVDEU,
- DIVDEUO
- )>;
- // 2-way crack instructions
- // 41 Cycles Scalar Fixed-Point Divide operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_DV_41C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- DIVDE_rec,
- DIVDEO_rec,
- DIVDEU_rec,
- DIVDEUO_rec
- )>;
- // 43 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_43C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- VDIVSD,
- VDIVUD
- )>;
- // 47 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_47C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- VMODSD,
- VMODUD
- )>;
- // 54 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_54C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- VDIVSW,
- VDIVUW
- )>;
- // 60 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_60C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- VMODSW,
- VMODUW
- )>;
- // 75 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_75C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- VDIVESD,
- VDIVEUD
- )>;
- // 83 Cycles Scalar Fixed-Point Divide operations, 2 input operands
- def : InstRW<[P10W_DV_83C, P10W_DISP_ANY, P10DV_Read, P10DV_Read],
- (instrs
- VDIVESW,
- VDIVEUW
- )>;
- // 5 Cycles Fixed-Point and BCD operations, 1 input operands
- def : InstRW<[P10W_DX_5C, P10W_DISP_ANY, P10DX_Read],
- (instrs
- BCDCTN_rec,
- VMUL10CUQ,
- VMUL10UQ,
- XSXSIGQP
- )>;
- // 5 Cycles Fixed-Point and BCD operations, 2 input operands
- def : InstRW<[P10W_DX_5C, P10W_DISP_ANY, P10DX_Read, P10DX_Read],
- (instrs
- BCDCFN_rec,
- BCDCFZ_rec,
- BCDCPSGN_rec,
- BCDCTZ_rec,
- BCDSETSGN_rec,
- BCDUS_rec,
- BCDUTRUNC_rec,
- VADDCUQ,
- VADDUQM,
- VMUL10ECUQ,
- VMUL10EUQ,
- VSUBCUQ,
- VSUBUQM,
- XSCMPEQQP,
- XSCMPEXPQP,
- XSCMPGEQP,
- XSCMPGTQP,
- XSCMPOQP,
- XSCMPUQP,
- XSMAXCQP,
- XSMINCQP,
- XSTSTDCQP,
- XXGENPCVBM
- )>;
- // 5 Cycles Fixed-Point and BCD operations, 3 input operands
- def : InstRW<[P10W_DX_5C, P10W_DISP_ANY, P10DX_Read, P10DX_Read, P10DX_Read],
- (instrs
- BCDADD_rec,
- BCDS_rec,
- BCDSUB_rec,
- BCDTRUNC_rec,
- VADDECUQ,
- VADDEUQM,
- VSUBECUQ,
- VSUBEUQM
- )>;
- // 4 Cycles ALU2 operations, 0 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_ANY],
- (instrs
- TRAP, TW
- )>;
- // 4 Cycles ALU2 operations, 1 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read],
- (instrs
- CNTLZD,
- CNTLZD_rec,
- CNTLZW, CNTLZW8,
- CNTLZW8_rec, CNTLZW_rec,
- CNTTZD,
- CNTTZD_rec,
- CNTTZW, CNTTZW8,
- CNTTZW8_rec, CNTTZW_rec,
- FTSQRT,
- MTVSRBM,
- MTVSRBMI,
- MTVSRDM,
- MTVSRHM,
- MTVSRQM,
- MTVSRWM,
- POPCNTB, POPCNTB8,
- POPCNTD,
- POPCNTW,
- VCLZB,
- VCLZD,
- VCLZH,
- VCLZW,
- VCTZB,
- VCTZD,
- VCTZH,
- VCTZW,
- VEXPANDBM,
- VEXPANDDM,
- VEXPANDHM,
- VEXPANDQM,
- VEXPANDWM,
- VEXTRACTBM,
- VEXTRACTDM,
- VEXTRACTHM,
- VEXTRACTQM,
- VEXTRACTWM,
- VPOPCNTB,
- VPOPCNTD,
- VPOPCNTH,
- VPOPCNTW,
- VPRTYBD,
- VPRTYBW,
- XSCVHPDP,
- XSCVSPDPN,
- XSTSQRTDP,
- XVCVHPSP,
- XVTLSBB,
- XVTSQRTDP,
- XVTSQRTSP
- )>;
- // 4 Cycles ALU2 operations, 2 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read],
- (instrs
- CMPEQB,
- EXTSWSLI_32_64_rec, EXTSWSLI_rec,
- FCMPOD, FCMPOS,
- FCMPUD, FCMPUS,
- FTDIV,
- SLD_rec,
- SLW8_rec, SLW_rec,
- SRD_rec,
- SRW8_rec, SRW_rec,
- VABSDUB,
- VABSDUH,
- VABSDUW,
- VADDCUW,
- VADDSBS,
- VADDSHS,
- VADDSWS,
- VADDUBS,
- VADDUHS,
- VADDUWS,
- VAVGSB,
- VAVGSH,
- VAVGSW,
- VAVGUB,
- VAVGUH,
- VAVGUW,
- VCMPBFP,
- VCMPBFP_rec,
- VCMPEQFP,
- VCMPEQFP_rec,
- VCMPEQUB_rec,
- VCMPEQUD_rec,
- VCMPEQUH_rec,
- VCMPEQUQ,
- VCMPEQUQ_rec,
- VCMPEQUW_rec,
- VCMPGEFP,
- VCMPGEFP_rec,
- VCMPGTFP,
- VCMPGTFP_rec,
- VCMPGTSB_rec,
- VCMPGTSD_rec,
- VCMPGTSH_rec,
- VCMPGTSQ,
- VCMPGTSQ_rec,
- VCMPGTSW_rec,
- VCMPGTUB_rec,
- VCMPGTUD_rec,
- VCMPGTUH_rec,
- VCMPGTUQ,
- VCMPGTUQ_rec,
- VCMPGTUW_rec,
- VCMPNEB_rec,
- VCMPNEH_rec,
- VCMPNEW_rec,
- VCMPNEZB_rec,
- VCMPNEZH_rec,
- VCMPNEZW_rec,
- VCMPSQ,
- VCMPUQ,
- VCNTMBB,
- VCNTMBD,
- VCNTMBH,
- VCNTMBW,
- VMAXFP,
- VMINFP,
- VSUBCUW,
- VSUBSBS,
- VSUBSHS,
- VSUBSWS,
- VSUBUBS,
- VSUBUHS,
- VSUBUWS,
- XSCMPEQDP,
- XSCMPEXPDP,
- XSCMPGEDP,
- XSCMPGTDP,
- XSCMPODP,
- XSCMPUDP,
- XSMAXCDP,
- XSMAXDP,
- XSMAXJDP,
- XSMINCDP,
- XSMINDP,
- XSMINJDP,
- XSTDIVDP,
- XSTSTDCDP,
- XSTSTDCSP,
- XVCMPEQDP,
- XVCMPEQDP_rec,
- XVCMPEQSP,
- XVCMPEQSP_rec,
- XVCMPGEDP,
- XVCMPGEDP_rec,
- XVCMPGESP,
- XVCMPGESP_rec,
- XVCMPGTDP,
- XVCMPGTDP_rec,
- XVCMPGTSP,
- XVCMPGTSP_rec,
- XVMAXDP,
- XVMAXSP,
- XVMINDP,
- XVMINSP,
- XVTDIVDP,
- XVTDIVSP,
- XVTSTDCDP,
- XVTSTDCSP
- )>;
- // 4 Cycles ALU2 operations, 3 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read, P10F2_Read],
- (instrs
- CMPRB, CMPRB8,
- RLDCL_rec,
- RLDCR_rec,
- RLDIC_rec,
- RLDICL_32_rec, RLDICL_rec,
- RLDICR_rec,
- TD,
- TDI,
- TWI,
- VSHASIGMAD,
- VSHASIGMAW
- )>;
- // 4 Cycles ALU2 operations, 4 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read, P10F2_Read, P10F2_Read],
- (instrs
- RLDIMI_rec,
- RLWINM8_rec, RLWINM_rec,
- RLWNM8_rec, RLWNM_rec
- )>;
- // 4 Cycles ALU2 operations, 5 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_ANY, P10F2_Read, P10F2_Read, P10F2_Read, P10F2_Read, P10F2_Read],
- (instrs
- RLWIMI8_rec, RLWIMI_rec
- )>;
- // Single crack instructions
- // 4 Cycles ALU2 operations, 2 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_DISP_ANY, P10F2_Read, P10F2_Read],
- (instrs
- SRAD_rec,
- SRADI_rec,
- SRAW_rec,
- SRAWI_rec
- )>;
- // Single crack instructions
- // 4 Cycles ALU2 operations, 3 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_DISP_ANY, P10F2_Read, P10F2_Read, P10F2_Read],
- (instrs
- TABORTDC,
- TABORTDCI,
- TABORTWC,
- TABORTWCI
- )>;
- // 2-way crack instructions
- // 4 Cycles ALU2 operations, and 4 Cycles Permute operations, 2 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_PM_4C, P10W_DISP_ANY],
- (instrs
- VRLQ,
- VRLQNM,
- VSLQ,
- VSRAQ,
- VSRQ
- )>;
- // 2-way crack instructions
- // 4 Cycles ALU2 operations, and 4 Cycles Permute operations, 3 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_EVEN, P10W_PM_4C, P10W_DISP_ANY],
- (instrs
- VRLQMI
- )>;
- // 2-way crack instructions
- // 4 Cycles ALU2 operations, and 4 Cycles ALU2 operations, 0 input operands
- def : InstRW<[P10W_F2_4C, P10W_DISP_PAIR, P10W_F2_4C],
- (instrs
- MFCR, MFCR8
- )>;
- // 2 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_FX_2C, P10W_DISP_ANY, P10FX_Read],
- (instrs
- MTCTR, MTCTR8, MTCTR8loop, MTCTRloop,
- MTLR, MTLR8
- )>;
- // 3 Cycles ALU operations, 0 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- CR6SET, CREQV, CRSET,
- DSS, DSSALL,
- MCRXRX,
- MFCTR, MFCTR8,
- MFLR, MFLR8,
- NOP, NOP_GT_PWR6, NOP_GT_PWR7, ORI, ORI8,
- VXOR, V_SET0, V_SET0B, V_SET0H,
- XXLEQV, XXLEQVOnes,
- XXLXOR, XXLXORdpz, XXLXORspz, XXLXORz
- )>;
- // 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read],
- (instrs
- ADDI, ADDI8, ADDIdtprelL32, ADDItlsldLADDR32, ADDItocL, LI, LI8,
- ADDIS, ADDIS8, ADDISdtprelHA32, ADDIStocHA, ADDIStocHA8, LIS, LIS8,
- ADDME, ADDME8,
- ADDME8O, ADDMEO,
- ADDZE, ADDZE8,
- ADDZE8O, ADDZEO,
- EXTSB, EXTSB8, EXTSB8_32_64,
- EXTSB8_rec, EXTSB_rec,
- EXTSH, EXTSH8, EXTSH8_32_64,
- EXTSH8_rec, EXTSH_rec,
- EXTSW, EXTSW_32, EXTSW_32_64,
- EXTSW_32_64_rec, EXTSW_rec,
- FABSD, FABSS,
- FMR,
- FNABSD, FNABSS,
- FNEGD, FNEGS,
- MCRF,
- MFOCRF, MFOCRF8,
- MFVRD, MFVSRD,
- MFVRWZ, MFVSRWZ,
- MTOCRF, MTOCRF8,
- MTVRD, MTVSRD,
- MTVRWA, MTVSRWA,
- MTVRWZ, MTVSRWZ,
- NEG, NEG8,
- NEG8_rec, NEG_rec,
- NEG8O, NEGO,
- SETB, SETB8,
- SETBC, SETBC8,
- SETBCR, SETBCR8,
- SETNBC, SETNBC8,
- SETNBCR, SETNBCR8,
- SUBFME, SUBFME8,
- SUBFME8O, SUBFMEO,
- SUBFZE, SUBFZE8,
- SUBFZE8O, SUBFZEO,
- VEXTSB2D, VEXTSB2Ds,
- VEXTSB2W, VEXTSB2Ws,
- VEXTSD2Q,
- VEXTSH2D, VEXTSH2Ds,
- VEXTSH2W, VEXTSH2Ws,
- VEXTSW2D, VEXTSW2Ds,
- VNEGD,
- VNEGW,
- WAIT,
- XSABSDP,
- XSABSQP,
- XSNABSDP, XSNABSDPs,
- XSNABSQP,
- XSNEGDP,
- XSNEGQP,
- XSXEXPDP,
- XSXEXPQP,
- XSXSIGDP,
- XVABSDP,
- XVABSSP,
- XVNABSDP,
- XVNABSSP,
- XVNEGDP,
- XVNEGSP,
- XVXEXPDP,
- XVXEXPSP,
- XVXSIGDP,
- XVXSIGSP
- )>;
- // 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read],
- (instrs
- ADD4, ADD4TLS, ADD8, ADD8TLS, ADD8TLS_,
- ADD4_rec, ADD8_rec,
- ADDE, ADDE8,
- ADDE8O, ADDEO,
- ADDIC, ADDIC8,
- ADD4O, ADD8O,
- AND, AND8,
- AND8_rec, AND_rec,
- ANDC, ANDC8,
- ANDC8_rec, ANDC_rec,
- ANDI8_rec, ANDI_rec,
- ANDIS8_rec, ANDIS_rec,
- CMPD, CMPW,
- CMPB, CMPB8,
- CMPDI, CMPWI,
- CMPLD, CMPLW,
- CMPLDI, CMPLWI,
- CRAND,
- CRANDC,
- CRNAND,
- CRNOR,
- CROR,
- CRORC,
- CR6UNSET, CRUNSET, CRXOR,
- EQV, EQV8,
- EQV8_rec, EQV_rec,
- EXTSWSLI, EXTSWSLI_32_64,
- FCPSGND, FCPSGNS,
- NAND, NAND8,
- NAND8_rec, NAND_rec,
- NOR, NOR8,
- NOR8_rec, NOR_rec,
- COPY, OR, OR8,
- OR8_rec, OR_rec,
- ORC, ORC8,
- ORC8_rec, ORC_rec,
- ORIS, ORIS8,
- SLD,
- SLW, SLW8,
- SRAD,
- SRADI, SRADI_32,
- SRAW,
- SRAWI,
- SRD,
- SRW, SRW8,
- SUBF, SUBF8,
- SUBF8_rec, SUBF_rec,
- SUBFE, SUBFE8,
- SUBFE8O, SUBFEO,
- SUBFIC, SUBFIC8,
- SUBF8O, SUBFO,
- VADDUBM,
- VADDUDM,
- VADDUHM,
- VADDUWM,
- VAND,
- VANDC,
- VCMPEQUB,
- VCMPEQUD,
- VCMPEQUH,
- VCMPEQUW,
- VCMPGTSB,
- VCMPGTSD,
- VCMPGTSH,
- VCMPGTSW,
- VCMPGTUB,
- VCMPGTUD,
- VCMPGTUH,
- VCMPGTUW,
- VCMPNEB,
- VCMPNEH,
- VCMPNEW,
- VCMPNEZB,
- VCMPNEZH,
- VCMPNEZW,
- VEQV,
- VMAXSB,
- VMAXSD,
- VMAXSH,
- VMAXSW,
- VMAXUB,
- VMAXUD,
- VMAXUH,
- VMAXUW,
- VMINSB,
- VMINSD,
- VMINSH,
- VMINSW,
- VMINUB,
- VMINUD,
- VMINUH,
- VMINUW,
- VMRGEW,
- VMRGOW,
- VNAND,
- VNOR,
- VOR,
- VORC,
- VRLB,
- VRLD,
- VRLDNM,
- VRLH,
- VRLW,
- VRLWNM,
- VSLB,
- VSLD,
- VSLH,
- VSLW,
- VSRAB,
- VSRAD,
- VSRAH,
- VSRAW,
- VSRB,
- VSRD,
- VSRH,
- VSRW,
- VSUBUBM,
- VSUBUDM,
- VSUBUHM,
- VSUBUWM,
- XOR, XOR8,
- XOR8_rec, XOR_rec,
- XORI, XORI8,
- XORIS, XORIS8,
- XSCPSGNDP,
- XSCPSGNQP,
- XSIEXPDP,
- XSIEXPQP,
- XVCPSGNDP,
- XVCPSGNSP,
- XVIEXPDP,
- XVIEXPSP,
- XXLAND,
- XXLANDC,
- XXLNAND,
- XXLNOR,
- XXLOR, XXLORf,
- XXLORC
- )>;
- // 3 Cycles ALU operations, 3 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read],
- (instrs
- ADDEX, ADDEX8,
- DST, DST64, DSTT, DSTT64,
- DSTST, DSTST64, DSTSTT, DSTSTT64,
- ISEL, ISEL8,
- RLDCL,
- RLDCR,
- RLDIC,
- RLDICL, RLDICL_32, RLDICL_32_64,
- RLDICR, RLDICR_32,
- VRLDMI,
- VRLWMI,
- VSEL,
- XXSEL
- )>;
- // 3 Cycles ALU operations, 4 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read, P10FX_Read],
- (instrs
- RLDIMI,
- RLWINM, RLWINM8,
- RLWNM, RLWNM8
- )>;
- // 3 Cycles ALU operations, 5 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read, P10FX_Read, P10FX_Read],
- (instrs
- RLWIMI, RLWIMI8
- )>;
- // Single crack instructions
- // 3 Cycles ALU operations, 0 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_DISP_ANY],
- (instrs
- MFFS,
- MFFS_rec,
- MFFSL,
- MFVSCR,
- TRECHKPT
- )>;
- // Single crack instructions
- // 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10FX_Read],
- (instrs
- ADDME8_rec, ADDME_rec,
- ADDME8O_rec, ADDMEO_rec,
- ADDZE8_rec, ADDZE_rec,
- ADDZE8O_rec, ADDZEO_rec,
- MCRFS,
- MFFSCDRN,
- MFFSCDRNI,
- MFFSCRN,
- MFFSCRNI,
- MTFSB0,
- MTVSCR,
- NEG8O_rec, NEGO_rec,
- SUBFME8_rec, SUBFME_rec,
- SUBFME8O_rec, SUBFMEO_rec,
- SUBFZE8_rec, SUBFZE_rec,
- SUBFZE8O_rec, SUBFZEO_rec,
- TABORT,
- TBEGIN,
- TRECLAIM,
- TSR
- )>;
- // Single crack instructions
- // 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10FX_Read, P10FX_Read],
- (instrs
- ADDE8_rec, ADDE_rec,
- ADDE8O_rec, ADDEO_rec,
- ADDIC_rec,
- ADD4O_rec, ADD8O_rec,
- SUBFE8_rec, SUBFE_rec,
- SUBFE8O_rec, SUBFEO_rec,
- SUBF8O_rec, SUBFO_rec
- )>;
- // 2-way crack instructions
- // 3 Cycles ALU operations, and 3 Cycles ALU operations, 0 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- HRFID,
- MFFSCE,
- RFID,
- STOP
- )>;
- // 2-way crack instructions
- // 3 Cycles ALU operations, and 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read],
- (instrs
- FABSD_rec, FABSS_rec,
- FMR_rec,
- FNABSD_rec, FNABSS_rec,
- FNEGD_rec, FNEGS_rec,
- MTFSB1,
- RFEBB,
- SC
- )>;
- // 2-way crack instructions
- // 3 Cycles ALU operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read],
- (instrs
- ADDC, ADDC8,
- ADDC8_rec, ADDC_rec,
- ADDC8O, ADDCO,
- FCPSGND_rec, FCPSGNS_rec,
- MTFSF, MTFSFb,
- MTFSFI, MTFSFIb,
- SUBFC, SUBFC8,
- SUBFC8_rec, SUBFC_rec,
- SUBFC8O, SUBFCO
- )>;
- // 2-way crack instructions
- // 3 Cycles ALU operations, and 3 Cycles ALU operations, 3 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read],
- (instrs
- MTFSFI_rec
- )>;
- // 2-way crack instructions
- // 3 Cycles ALU operations, and 3 Cycles ALU operations, 4 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read, P10FX_Read, P10FX_Read],
- (instrs
- MTFSF_rec
- )>;
- // 4-way crack instructions
- // 3 Cycles ALU operations, 3 Cycles ALU operations, 3 Cycles ALU operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY, P10FX_Read, P10FX_Read],
- (instrs
- ADDC8O_rec, ADDCO_rec,
- SUBFC8O_rec, SUBFCO_rec
- )>;
- // 2-way crack instructions
- // 3 Cycles ALU operations, and 4 Cycles Permute operations, 1 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_EVEN, P10W_PM_4C, P10W_DISP_ANY],
- (instrs
- VSTRIBL_rec,
- VSTRIBR_rec,
- VSTRIHL_rec,
- VSTRIHR_rec
- )>;
- // 2-way crack instructions
- // 3 Cycles ALU operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_FX_3C, P10W_DISP_PAIR, P10W_FX_3C, P10FX_Read, P10FX_Read],
- (instrs
- MTCRF, MTCRF8
- )>;
- // 6 Cycles Load operations, 1 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_ANY, P10LD_Read],
- (instrs
- LBZ, LBZ8,
- LD, LDtoc, LDtocBA, LDtocCPT, LDtocJTI, LDtocL, SPILLTOVSR_LD,
- LDBRX,
- DFLOADf32, DFLOADf64, LFD,
- LFDX, XFLOADf32, XFLOADf64,
- LFIWAX, LIWAX,
- LFIWZX, LIWZX,
- LHA, LHA8,
- LHAX, LHAX8,
- LHBRX, LHBRX8,
- LHZ, LHZ8,
- LVEBX,
- LVEHX,
- LVEWX,
- LVX,
- LVXL,
- LWA, LWA_32,
- LWAX, LWAX_32,
- LWBRX, LWBRX8,
- LWZ, LWZ8, LWZtoc, LWZtocL,
- LXSD,
- LXSDX,
- LXSIBZX,
- LXSIHZX,
- LXSIWAX,
- LXSIWZX,
- LXV,
- LXVB16X,
- LXVD2X,
- LXVDSX,
- LXVH8X,
- LXVRBX,
- LXVRDX,
- LXVRHX,
- LXVRWX,
- LXVW4X,
- LXVWSX,
- LXVX
- )>;
- // 6 Cycles Load operations, 2 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_ANY, P10LD_Read, P10LD_Read],
- (instrs
- DCBT,
- DCBTST,
- ICBT,
- LBZX, LBZX8, LBZXTLS, LBZXTLS_, LBZXTLS_32,
- LDX, LDXTLS, LDXTLS_, SPILLTOVSR_LDX,
- LHZX, LHZX8, LHZXTLS, LHZXTLS_, LHZXTLS_32,
- LWZX, LWZX8, LWZXTLS, LWZXTLS_, LWZXTLS_32,
- LXVL,
- LXVLL
- )>;
- // 2-way crack instructions
- // 6 Cycles Load operations, and 13 Cycles Decimal Floating Point operations, 2 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DF_13C, P10W_DISP_ANY],
- (instrs
- HASHCHK, HASHCHK8,
- HASHCHKP, HASHCHKP8
- )>;
- // Single crack instructions
- // 6 Cycles Load operations, 0 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DISP_ANY],
- (instrs
- SLBIA
- )>;
- // Single crack instructions
- // 6 Cycles Load operations, 1 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DISP_ANY, P10LD_Read],
- (instrs
- DARN,
- LBARX, LBARXL,
- LDARX, LDARXL,
- LHARX, LHARXL,
- LWARX, LWARXL,
- SLBFEE_rec,
- SLBIE,
- SLBMFEE,
- SLBMFEV
- )>;
- // Single crack instructions
- // 6 Cycles Load operations, 2 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_DISP_ANY, P10LD_Read, P10LD_Read],
- (instrs
- LBZCIX,
- LDCIX,
- LHZCIX,
- LWZCIX,
- MTSPR, MTSPR8, MTSR, MTUDSCR, MTVRSAVE, MTVRSAVEv
- )>;
- // Expand instructions
- // 6 Cycles Load operations, 6 Cycles Load operations, 6 Cycles Load operations, and 6 Cycles Load operations, 1 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_LD_6C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY, P10LD_Read],
- (instrs
- LMW
- )>;
- // Expand instructions
- // 6 Cycles Load operations, 6 Cycles Load operations, 6 Cycles Load operations, and 6 Cycles Load operations, 2 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_LD_6C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY, P10LD_Read, P10LD_Read],
- (instrs
- LSWI
- )>;
- // 2-way crack instructions
- // 6 Cycles Load operations, and 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_EVEN, P10W_SX_3C, P10W_DISP_ANY],
- (instrs
- LBZU, LBZU8,
- LBZUX, LBZUX8,
- LDU,
- LDUX,
- LFDU,
- LFDUX,
- LHAU, LHAU8,
- LHAUX, LHAUX8,
- LHZU, LHZU8,
- LHZUX, LHZUX8,
- LWAUX,
- LWZU, LWZU8,
- LWZUX, LWZUX8
- )>;
- // 6 Cycles Load operations, 1 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10LD_Read],
- (instrs
- PLBZ, PLBZ8, PLBZ8pc, PLBZpc,
- PLD, PLDpc,
- PLFD, PLFDpc,
- PLFS, PLFSpc,
- PLHA, PLHA8, PLHA8pc, PLHApc,
- PLHZ, PLHZ8, PLHZ8pc, PLHZpc,
- PLWA, PLWA8, PLWA8pc, PLWApc,
- PLWZ, PLWZ8, PLWZ8pc, PLWZpc,
- PLXSD, PLXSDpc,
- PLXSSP, PLXSSPpc,
- PLXV, PLXVpc,
- PLXVP, PLXVPpc
- )>;
- // 2-way crack instructions
- // 6 Cycles Load operations, and 4 Cycles ALU2 operations, 1 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_F2_4C],
- (instrs
- LFS,
- LFSX,
- LXSSP,
- LXSSPX
- )>;
- // 4-way crack instructions
- // 6 Cycles Load operations, 4 Cycles ALU2 operations, 3 Cycles Simple Fixed-point (SFX) operations, and 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_F2_4C, P10W_SX_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- LFSU,
- LFSUX
- )>;
- // 2-way crack instructions
- // 6 Cycles Load operations, and 6 Cycles Load operations, 1 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_LD_6C, P10W_DISP_PAIR, P10LD_Read],
- (instrs
- TLBIEL
- )>;
- // 2-way crack instructions
- // 6 Cycles Load operations, and 6 Cycles Load operations, 2 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_LD_6C, P10W_DISP_PAIR, P10LD_Read, P10LD_Read],
- (instrs
- SLBMTE
- )>;
- // 2-way crack instructions
- // 6 Cycles Load operations, and 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands
- def : InstRW<[P10W_LD_6C, P10W_DISP_PAIR, P10W_SX_3C],
- (instrs
- LXVP,
- LXVPX
- )>;
- // Single crack instructions
- // 13 Cycles Unknown operations, 1 input operands
- def : InstRW<[P10W_MFL_13C, P10W_DISP_EVEN, P10W_DISP_ANY],
- (instrs
- MFSPR, MFSPR8, MFSR, MFTB8, MFUDSCR, MFVRSAVE, MFVRSAVEv
- )>;
- // 10 Cycles SIMD Matrix Multiply Engine operations, 0 input operands
- def : InstRW<[P10W_MM_10C, P10W_DISP_ANY],
- (instrs
- XXSETACCZ
- )>;
- // 10 Cycles SIMD Matrix Multiply Engine operations, 2 input operands
- def : InstRW<[P10W_MM_10C, P10W_DISP_ANY, P10MM_Read, P10MM_Read],
- (instrs
- XVBF16GER2,
- XVF16GER2,
- XVF32GER,
- XVF64GER,
- XVI16GER2,
- XVI16GER2S,
- XVI4GER8,
- XVI8GER4
- )>;
- // 10 Cycles SIMD Matrix Multiply Engine operations, 3 input operands
- def : InstRW<[P10W_MM_10C, P10W_DISP_ANY, P10MM_Read, P10MM_Read, P10MM_Read],
- (instrs
- XVBF16GER2NN,
- XVBF16GER2NP,
- XVBF16GER2PN,
- XVBF16GER2PP,
- XVF16GER2NN,
- XVF16GER2NP,
- XVF16GER2PN,
- XVF16GER2PP,
- XVF32GERNN,
- XVF32GERNP,
- XVF32GERPN,
- XVF32GERPP,
- XVF64GERNN,
- XVF64GERNP,
- XVF64GERPN,
- XVF64GERPP,
- XVI16GER2PP,
- XVI16GER2SPP,
- XVI4GER8PP,
- XVI8GER4PP,
- XVI8GER4SPP
- )>;
- // 10 Cycles SIMD Matrix Multiply Engine operations, 4 input operands
- def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read],
- (instrs
- PMXVF32GER,
- PMXVF64GER
- )>;
- // 10 Cycles SIMD Matrix Multiply Engine operations, 5 input operands
- def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read],
- (instrs
- PMXVBF16GER2,
- PMXVF16GER2,
- PMXVF32GERNN,
- PMXVF32GERNP,
- PMXVF32GERPN,
- PMXVF32GERPP,
- PMXVF64GERNN,
- PMXVF64GERNP,
- PMXVF64GERPN,
- PMXVF64GERPP,
- PMXVI16GER2,
- PMXVI16GER2S,
- PMXVI4GER8,
- PMXVI8GER4
- )>;
- // 10 Cycles SIMD Matrix Multiply Engine operations, 6 input operands
- def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read, P10MM_Read],
- (instrs
- PMXVBF16GER2NN,
- PMXVBF16GER2NP,
- PMXVBF16GER2PN,
- PMXVBF16GER2PP,
- PMXVF16GER2NN,
- PMXVF16GER2NP,
- PMXVF16GER2PN,
- PMXVF16GER2PP,
- PMXVI16GER2PP,
- PMXVI16GER2SPP,
- PMXVI4GER8PP,
- PMXVI8GER4PP,
- PMXVI8GER4SPP
- )>;
- // 2-way crack instructions
- // 10 Cycles SIMD Matrix Multiply Engine operations, and 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10W_FX_3C],
- (instrs
- XXMTACC
- )>;
- // 4-way crack instructions
- // 10 Cycles SIMD Matrix Multiply Engine operations, 3 Cycles ALU operations, 10 Cycles SIMD Matrix Multiply Engine operations, and 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_MM_10C, P10W_DISP_PAIR, P10W_FX_3C, P10W_MM_10C, P10W_DISP_PAIR, P10W_FX_3C],
- (instrs
- XXMFACC
- )>;
- // 5 Cycles GPR Multiply operations, 2 input operands
- def : InstRW<[P10W_MU_5C, P10W_DISP_ANY, P10MU_Read, P10MU_Read],
- (instrs
- MULHD,
- MULHDU,
- MULHW,
- MULHWU,
- MULLD,
- MULLDO,
- MULLI, MULLI8,
- MULLW,
- MULLWO,
- VMULHSD,
- VMULHUD,
- VMULLD
- )>;
- // 5 Cycles GPR Multiply operations, 3 input operands
- def : InstRW<[P10W_MU_5C, P10W_DISP_ANY, P10MU_Read, P10MU_Read, P10MU_Read],
- (instrs
- MADDHD,
- MADDHDU,
- MADDLD, MADDLD8
- )>;
- // 2-way crack instructions
- // 5 Cycles GPR Multiply operations, and 3 Cycles ALU operations, 2 input operands
- def : InstRW<[P10W_MU_5C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- MULHD_rec,
- MULHDU_rec,
- MULHW_rec,
- MULHWU_rec,
- MULLD_rec,
- MULLDO_rec,
- MULLW_rec,
- MULLWO_rec
- )>;
- // 4 Cycles Permute operations, 0 input operands
- def : InstRW<[P10W_PM_4C, P10W_DISP_ANY],
- (instrs
- VSPLTISW, V_SETALLONES, V_SETALLONESB, V_SETALLONESH
- )>;
- // 4 Cycles Permute operations, 1 input operands
- def : InstRW<[P10W_PM_4C, P10W_DISP_ANY, P10PM_Read],
- (instrs
- BRD,
- BRH, BRH8,
- BRW, BRW8,
- LVSL,
- LVSR,
- LXVKQ,
- MFVSRLD,
- MTVSRWS,
- VCLZLSBB,
- VCTZLSBB,
- VGBBD,
- VPRTYBQ,
- VSPLTISB,
- VSPLTISH,
- VSTRIBL,
- VSTRIBR,
- VSTRIHL,
- VSTRIHR,
- VUPKHPX,
- VUPKHSB,
- VUPKHSH,
- VUPKHSW,
- VUPKLPX,
- VUPKLSB,
- VUPKLSH,
- VUPKLSW,
- XVCVBF16SPN,
- XXBRD,
- XXBRH,
- XXBRQ,
- XXBRW,
- XXSPLTIB
- )>;
- // 4 Cycles Permute operations, 2 input operands
- def : InstRW<[P10W_PM_4C, P10W_DISP_ANY, P10PM_Read, P10PM_Read],
- (instrs
- BPERMD,
- MTVSRDD,
- VBPERMD,
- VBPERMQ,
- VCLRLB,
- VCLRRB,
- VEXTRACTD,
- VEXTRACTUB,
- VEXTRACTUH,
- VEXTRACTUW,
- VEXTUBLX,
- VEXTUBRX,
- VEXTUHLX,
- VEXTUHRX,
- VEXTUWLX,
- VEXTUWRX,
- VINSERTD,
- VINSERTW,
- VMRGHB,
- VMRGHH,
- VMRGHW,
- VMRGLB,
- VMRGLH,
- VMRGLW,
- VPKPX,
- VPKSDSS,
- VPKSDUS,
- VPKSHSS,
- VPKSHUS,
- VPKSWSS,
- VPKSWUS,
- VPKUDUM,
- VPKUDUS,
- VPKUHUM,
- VPKUHUS,
- VPKUWUM,
- VPKUWUS,
- VSL,
- VSLO,
- VSLV,
- VSPLTB, VSPLTBs,
- VSPLTH, VSPLTHs,
- VSPLTW,
- VSR,
- VSRO,
- VSRV,
- XXEXTRACTUW,
- XXGENPCVDM,
- XXGENPCVHM,
- XXGENPCVWM,
- XXMRGHW,
- XXMRGLW,
- XXPERMDI, XXPERMDIs,
- XXSLDWI, XXSLDWIs,
- XXSPLTW, XXSPLTWs
- )>;
- // 4 Cycles Permute operations, 3 input operands
- def : InstRW<[P10W_PM_4C, P10W_DISP_ANY, P10PM_Read, P10PM_Read, P10PM_Read],
- (instrs
- VEXTDDVLX,
- VEXTDDVRX,
- VEXTDUBVLX,
- VEXTDUBVRX,
- VEXTDUHVLX,
- VEXTDUHVRX,
- VEXTDUWVLX,
- VEXTDUWVRX,
- VINSBLX,
- VINSBRX,
- VINSBVLX,
- VINSBVRX,
- VINSD,
- VINSDLX,
- VINSDRX,
- VINSERTB,
- VINSERTH,
- VINSHLX,
- VINSHRX,
- VINSHVLX,
- VINSHVRX,
- VINSW,
- VINSWLX,
- VINSWRX,
- VINSWVLX,
- VINSWVRX,
- VPERM,
- VPERMR,
- VPERMXOR,
- VSLDBI,
- VSLDOI,
- VSRDBI,
- XXINSERTW,
- XXPERM,
- XXPERMR
- )>;
- // 2-way crack instructions
- // 4 Cycles Permute operations, and 7 Cycles VMX Multiply operations, 2 input operands
- def : InstRW<[P10W_PM_4C, P10W_DISP_EVEN, P10W_vMU_7C, P10W_DISP_ANY],
- (instrs
- VSUMSWS
- )>;
- // 4 Cycles Permute operations, 1 input operands
- def : InstRW<[P10W_PM_4C, P10W_DISP_PAIR, P10PM_Read],
- (instrs
- XXSPLTIDP,
- XXSPLTIW
- )>;
- // 4 Cycles Permute operations, 3 input operands
- def : InstRW<[P10W_PM_4C, P10W_DISP_PAIR, P10PM_Read, P10PM_Read, P10PM_Read],
- (instrs
- XXBLENDVB,
- XXBLENDVD,
- XXBLENDVH,
- XXBLENDVW,
- XXSPLTI32DX
- )>;
- // 4 Cycles Permute operations, 4 input operands
- def : InstRW<[P10W_PM_4C, P10W_DISP_PAIR, P10PM_Read, P10PM_Read, P10PM_Read, P10PM_Read],
- (instrs
- XXEVAL,
- XXPERMX
- )>;
- // 3 Cycles Store operations, 1 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_ANY, P10ST_Read],
- (instrs
- DCBST,
- DCBZ,
- ICBI
- )>;
- // 3 Cycles Store operations, 2 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_ANY, P10ST_Read, P10ST_Read],
- (instrs
- DCBF,
- PSTXVP, PSTXVPpc,
- STB, STB8,
- STBU, STBU8,
- STBUX, STBUX8,
- SPILLTOVSR_ST, STD,
- STDBRX,
- STDU,
- STDUX,
- DFSTOREf32, DFSTOREf64, STFD,
- STFDU,
- STFDUX,
- STFDX,
- STFIWX, STIWX,
- STFS,
- STFSU,
- STFSUX,
- STFSX,
- STH, STH8,
- STHBRX,
- STHU, STHU8,
- STHUX, STHUX8,
- STVEBX,
- STVEHX,
- STVEWX,
- STVX,
- STVXL,
- STW, STW8,
- STWBRX,
- STWU, STWU8,
- STWUX, STWUX8,
- STXSD,
- STXSDX,
- STXSIBX, STXSIBXv,
- STXSIHX, STXSIHXv,
- STXSIWX,
- STXSSP,
- STXSSPX,
- STXV,
- STXVB16X,
- STXVD2X,
- STXVH8X,
- STXVRBX,
- STXVRDX,
- STXVRHX,
- STXVRWX,
- STXVW4X,
- STXVX
- )>;
- // 3 Cycles Store operations, 3 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_ANY, P10ST_Read, P10ST_Read, P10ST_Read],
- (instrs
- CP_COPY, CP_COPY8,
- STBX, STBX8, STBXTLS, STBXTLS_, STBXTLS_32,
- SPILLTOVSR_STX, STDX, STDXTLS, STDXTLS_,
- STHX, STHX8, STHXTLS, STHXTLS_, STHXTLS_32,
- STWX, STWX8, STWXTLS, STWXTLS_, STWXTLS_32,
- STXVL,
- STXVLL
- )>;
- // Single crack instructions
- // 3 Cycles Store operations, 0 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY],
- (instrs
- EnforceIEIO,
- MSGSYNC,
- SLBSYNC,
- TCHECK,
- TLBSYNC
- )>;
- // Single crack instructions
- // 3 Cycles Store operations, 1 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10ST_Read],
- (instrs
- TEND
- )>;
- // Single crack instructions
- // 3 Cycles Store operations, 2 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10ST_Read, P10ST_Read],
- (instrs
- SLBIEG,
- STBCX,
- STDCX,
- STHCX,
- STWCX,
- TLBIE
- )>;
- // Single crack instructions
- // 3 Cycles Store operations, 3 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10ST_Read, P10ST_Read, P10ST_Read],
- (instrs
- CP_PASTE8_rec, CP_PASTE_rec,
- STBCIX,
- STDCIX,
- STHCIX,
- STWCIX
- )>;
- // 2-way crack instructions
- // 3 Cycles Store operations, and 3 Cycles ALU operations, 0 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- ISYNC
- )>;
- // 2-way crack instructions
- // 3 Cycles Store operations, and 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- SYNC
- )>;
- // Expand instructions
- // 3 Cycles Store operations, 3 Cycles ALU operations, 3 Cycles Store operations, 3 Cycles ALU operations, 3 Cycles Store operations, 3 Cycles ALU operations, 6 Cycles Load operations, and 3 Cycles Store operations, 2 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_FX_3C, P10W_DISP_ANY, P10W_LD_6C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY],
- (instrs
- LDAT,
- LWAT
- )>;
- // 4-way crack instructions
- // 3 Cycles Store operations, 3 Cycles ALU operations, 3 Cycles Store operations, and 3 Cycles Store operations, 3 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY],
- (instrs
- STDAT,
- STWAT
- )>;
- // Expand instructions
- // 3 Cycles Store operations, 3 Cycles Store operations, 3 Cycles Store operations, and 3 Cycles Store operations, 2 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10ST_Read, P10ST_Read],
- (instrs
- STMW
- )>;
- // Expand instructions
- // 3 Cycles Store operations, 3 Cycles Store operations, 3 Cycles Store operations, and 3 Cycles Store operations, 3 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_EVEN, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10W_ST_3C, P10W_DISP_ANY, P10ST_Read, P10ST_Read, P10ST_Read],
- (instrs
- STSWI
- )>;
- // 3 Cycles Store operations, 2 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_PAIR, P10ST_Read, P10ST_Read],
- (instrs
- PSTB, PSTB8, PSTB8pc, PSTBpc,
- PSTD, PSTDpc,
- PSTFD, PSTFDpc,
- PSTFS, PSTFSpc,
- PSTH, PSTH8, PSTH8pc, PSTHpc,
- PSTW, PSTW8, PSTW8pc, PSTWpc,
- PSTXSD, PSTXSDpc,
- PSTXSSP, PSTXSSPpc,
- PSTXV, PSTXVpc
- )>;
- // 2-way crack instructions
- // 3 Cycles Store operations, and 3 Cycles Store operations, 2 input operands
- def : InstRW<[P10W_ST_3C, P10W_DISP_PAIR, P10W_ST_3C, P10ST_Read, P10ST_Read],
- (instrs
- STXVP,
- STXVPX
- )>;
- // FIXME - Miss scheduling information from datasheet
- // Temporary set it as 1 Cycles Simple Fixed-point (SFX) operations, 0 input operands
- def : InstRW<[P10W_SX, P10W_DISP_ANY],
- (instrs
- ATTN,
- CP_ABORT,
- CRNOT,
- DCBA,
- DCBI,
- DCBZL,
- DCCCI,
- ICBLC,
- ICBLQ,
- ICBTLS,
- ICCCI,
- LA, LA8,
- MFDCR,
- MFPMR,
- MFSRIN,
- MSYNC,
- MTDCR,
- MTPMR,
- MTSRIN,
- NAP,
- TLBIA,
- TLBLD,
- TLBLI,
- TLBRE2,
- TLBSX2,
- TLBSX2D,
- TLBWE2
- )>;
- // Single crack instructions
- // 3 Cycles Simple Fixed-point (SFX) operations, 0 input operands
- def : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_DISP_ANY],
- (instrs
- CLRBHRB,
- MFMSR
- )>;
- // Single crack instructions
- // 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands
- def : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10SX_Read],
- (instrs
- MFTB
- )>;
- // Single crack instructions
- // 3 Cycles Simple Fixed-point (SFX) operations, 2 input operands
- def : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_DISP_ANY, P10SX_Read, P10SX_Read],
- (instrs
- MFBHRBE,
- MTMSR,
- MTMSRD
- )>;
- // 2-way crack instructions
- // 3 Cycles Simple Fixed-point (SFX) operations, and 3 Cycles ALU operations, 1 input operands
- def : InstRW<[P10W_SX_3C, P10W_DISP_EVEN, P10W_FX_3C, P10W_DISP_ANY],
- (instrs
- ADDPCIS
- )>;
- // 3 Cycles Simple Fixed-point (SFX) operations, 1 input operands
- def : InstRW<[P10W_SX_3C, P10W_DISP_PAIR, P10SX_Read],
- (instrs
- PADDI, PADDI8, PADDI8pc, PADDIpc, PLI, PLI8
- )>;
- // 7 Cycles VMX Multiply operations, 2 input operands
- def : InstRW<[P10W_vMU_7C, P10W_DISP_ANY, P10vMU_Read, P10vMU_Read],
- (instrs
- VMULESB,
- VMULESD,
- VMULESH,
- VMULESW,
- VMULEUB,
- VMULEUD,
- VMULEUH,
- VMULEUW,
- VMULHSW,
- VMULHUW,
- VMULOSB,
- VMULOSD,
- VMULOSH,
- VMULOSW,
- VMULOUB,
- VMULOUD,
- VMULOUH,
- VMULOUW,
- VMULUWM,
- VSUM2SWS,
- VSUM4SBS,
- VSUM4SHS,
- VSUM4UBS
- )>;
- // 7 Cycles VMX Multiply operations, 3 input operands
- def : InstRW<[P10W_vMU_7C, P10W_DISP_ANY, P10vMU_Read, P10vMU_Read, P10vMU_Read],
- (instrs
- VMHADDSHS,
- VMHRADDSHS,
- VMLADDUHM,
- VMSUMCUD,
- VMSUMMBM,
- VMSUMSHM,
- VMSUMSHS,
- VMSUMUBM,
- VMSUMUDM,
- VMSUMUHM,
- VMSUMUHS
- )>;
|