123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678 |
- /* TI C6X opcode table.
- Copyright (C) 2010-2015 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
- MA 02110-1301, USA. */
- /* Define the INSN macro before including this file; it takes as
- arguments the fields from tic6x_opcode (defined in tic6x.h). The
- name is given as an identifier; the subsequent four operands should
- have "tic6x_func_unit_", "tic6x_insn_format_", "tic6x_pipeline_"
- and "TIC6X_INSN_", respectively, prepended to them by the macro
- definition. Also define INSNE, which has a second argument that
- goes after tic6x_opcode_NAME_ to form the enumeration value for
- this instruction, where the value otherwise formed from the name,
- functional unit and format is ambiguous, but otherwise has the same
- arguments as INSN. */
- #define TIC6X_INSN_C64X_AND_C67X TIC6X_INSN_C64X|TIC6X_INSN_C67X
- #define tic6x_insn_format_nfu_s_branch_nop_cst \
- tic6x_insn_format_s_branch_nop_cst
- #define tic6x_insn_format_s_l_1_or_2_src tic6x_insn_format_l_1_or_2_src
- #define RAN(id, min, max) { CONCAT2(tic6x_field_,id), (min), (max) }
- #define FIX(id, val) RAN(id, val, val)
- #define FIX0() 0, { { 0, 0, 0 } }
- #define FIX1(a) 1, { a }
- #define FIX2(a, b) 2, { a, b }
- #define FIX3(a, b, c) 3, { a, b, c }
- #define FIX4(a, b, c, d) 4, { a, b, c, d }
- #define OP0() 0, { { 0, 0, FALSE, 0, 0, 0, 0 } }
- #define OP1(a) 1, { a }
- #define OP2(a, b) 2, { a, b }
- #define OP3(a, b, c) 3, { a, b, c }
- #define OP4(a, b, c, d) 4, { a, b, c, d }
- #define OACST { tic6x_operand_asm_const, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define OLCST { tic6x_operand_link_const, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define OHWCSTM1 { tic6x_operand_hw_const_minus_1, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define OHWCST0 { tic6x_operand_hw_const_0, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define OHWCST1 { tic6x_operand_hw_const_1, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define OHWCST5 { tic6x_operand_hw_const_5, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define OHWCST16 { tic6x_operand_hw_const_16, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define OHWCST24 { tic6x_operand_hw_const_24, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define OHWCST31 { tic6x_operand_hw_const_31, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define OFULIST { tic6x_operand_func_unit, 0, tic6x_rw_none, 0, 0, 0, 0 }
- #define ORIRP1 { tic6x_operand_irp, 4, tic6x_rw_read, 1, 1, 0, 0 }
- #define ORNRP1 { tic6x_operand_nrp, 4, tic6x_rw_read, 1, 1, 0, 0 }
- #define OWREG1 { tic6x_operand_reg, 4, tic6x_rw_write, 1, 1, 0, 0 }
- #define OWREG1Z { tic6x_operand_zreg, 4, tic6x_rw_write, 1, 1, 0, 0 }
- #define OWREG1NORS { tic6x_operand_reg_nors, 4, tic6x_rw_write, 1, 1, 0, 0 }
- #define ORREG1B { tic6x_operand_reg_bside, 4, tic6x_rw_write, 1, 1, 0, 0 }
- #define ORREG1BNORS { tic6x_operand_reg_bside_nors, 4, tic6x_rw_write, 1, 1, 0, 0 }
- #define OWRETREG1 { tic6x_operand_retreg, 4, tic6x_rw_write, 1, 1, 0, 0 }
- #define ORREG1 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 1, 0, 0 }
- #define ORDREG1 { tic6x_operand_dreg, 4, tic6x_rw_read, 1, 1, 0, 0 }
- #define ORTREG1 { tic6x_operand_treg, 4, tic6x_rw_read, 1, 1, 0, 0 }
- #define ORWREG1 { tic6x_operand_reg, 4, tic6x_rw_read_write, 1, 1, 0, 0 }
- #define ORB15REG1 { tic6x_operand_b15reg, 4, tic6x_rw_read, 1, 1, 0, 0 }
- #define OWB15REG1 { tic6x_operand_b15reg, 4, tic6x_rw_write, 1, 1, 0, 0 }
- #define ORAREG1 { tic6x_operand_areg, 4, tic6x_rw_read, 1, 1, 0, 0 }
- #define ORXREG1 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 1, 0, 0 }
- #define ORREG12 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 2, 0, 0 }
- #define ORREG14 { tic6x_operand_reg, 4, tic6x_rw_read, 1, 4, 0, 0 }
- #define ORXREG14 { tic6x_operand_xreg, 4, tic6x_rw_read, 1, 4, 0, 0 }
- #define OWREG2 { tic6x_operand_reg, 4, tic6x_rw_write, 2, 2, 0, 0 }
- #define OWREG4 { tic6x_operand_reg, 4, tic6x_rw_write, 4, 4, 0, 0 }
- #define OWREG9 { tic6x_operand_reg, 4, tic6x_rw_write, 9, 9, 0, 0 }
- #define OWDREG5 { tic6x_operand_dreg, 4, tic6x_rw_write, 5, 5, 0, 0 }
- #define OWTREG5 { tic6x_operand_treg, 4, tic6x_rw_write, 5, 5, 0, 0 }
- #define OWREGL1 { tic6x_operand_regpair, 5, tic6x_rw_write, 1, 1, 1, 1 }
- #define ORREGL1 { tic6x_operand_regpair, 5, tic6x_rw_read, 1, 1, 1, 1 }
- #define OWREGD1 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 1, 1 }
- #define OWREGD12 { tic6x_operand_regpair, 8, tic6x_rw_write, 1, 1, 2, 2 }
- #define OWREGD4 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 4, 4 }
- #define ORREGD1 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 1, 1 }
- #define OWREGD45 { tic6x_operand_regpair, 8, tic6x_rw_write, 4, 4, 5, 5 }
- #define OWREGD67 { tic6x_operand_regpair, 8, tic6x_rw_write, 6, 6, 7, 7 }
- #define ORDREGD1 { tic6x_operand_dregpair, 8, tic6x_rw_read, 1, 1, 1, 1 }
- #define ORTREGD1 { tic6x_operand_tregpair, 8, tic6x_rw_read, 1, 1, 1, 1 }
- #define OWDREGD5 { tic6x_operand_dregpair, 8, tic6x_rw_write, 5, 5, 5, 5 }
- #define OWTREGD5 { tic6x_operand_tregpair, 8, tic6x_rw_write, 5, 5, 5, 5 }
- #define ORREGD12 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 1, 2, 2 }
- #define ORXREGD12 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 1, 2, 2 }
- #define ORREGD1234 { tic6x_operand_regpair, 8, tic6x_rw_read, 1, 2, 3, 4 }
- #define ORXREGD1324 { tic6x_operand_xregpair, 8, tic6x_rw_read, 1, 3, 2, 4 }
- #define OWREGD910 { tic6x_operand_regpair, 8, tic6x_rw_write, 9, 9, 10, 10 }
- #define ORCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_read, 1, 1, 0, 0 }
- #define OWCREG1 { tic6x_operand_ctrl, 4, tic6x_rw_write, 1, 1, 0, 0 }
- #define OWILC1 { tic6x_operand_ilc, 4, tic6x_rw_write, 1, 1, 0, 0 }
- #define ORMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_read, 3, 3, 0, 0 }
- #define OWMEMDW { tic6x_operand_mem_deref, 4, tic6x_rw_write, 3, 3, 0, 0 }
- #define ORMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_read, 3, 3, 0, 0 }
- #define OWMEMSB { tic6x_operand_mem_short, 1, tic6x_rw_write, 3, 3, 0, 0 }
- #define ORMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_read, 3, 3, 0, 0 }
- #define OWMEMLB { tic6x_operand_mem_long, 1, tic6x_rw_write, 3, 3, 0, 0 }
- #define ORMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_read, 3, 3, 0, 0 }
- #define OWMEMSH { tic6x_operand_mem_short, 2, tic6x_rw_write, 3, 3, 0, 0 }
- #define ORMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_read, 3, 3, 0, 0 }
- #define OWMEMLH { tic6x_operand_mem_long, 2, tic6x_rw_write, 3, 3, 0, 0 }
- #define ORMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_read, 3, 3, 0, 0 }
- #define OWMEMSW { tic6x_operand_mem_short, 4, tic6x_rw_write, 3, 3, 0, 0 }
- #define ORMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_read, 3, 3, 0, 0 }
- #define OWMEMLW { tic6x_operand_mem_long, 4, tic6x_rw_write, 3, 3, 0, 0 }
- #define ORMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_read, 3, 3, 0, 0 }
- #define OWMEMSD { tic6x_operand_mem_short, 8, tic6x_rw_write, 3, 3, 0, 0 }
- #define ORMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_read, 3, 3, 0, 0 }
- #define OWMEMND { tic6x_operand_mem_ndw, 8, tic6x_rw_write, 3, 3, 0, 0 }
- #define ENC(id, meth, op) { \
- CONCAT2(tic6x_field_,id), \
- CONCAT2(tic6x_coding_,meth), \
- op \
- }
- #define ENC0() 0, { { 0, 0, 0 } }
- #define ENC1(a) 1, { a }
- #define ENC2(a, b) 2, { a, b }
- #define ENC3(a, b, c) 3, { a, b, c }
- #define ENC4(a, b, c, d) 4, { a, b, c, d }
- #define ENC5(a, b, c, d, e) 5, { a, b, c, d, e }
- #define ENC6(a, b, c, d, e, f) 6, { a, b, c, d, e, f }
- #define ENC7(a, b, c, d, e, f, g) 7, { a, b, c, d, e, f, g }
- INSN(abs, l, unary, 1cycle, C62X, 0,
- FIX1(FIX(op, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(abs, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX3(FIX(op, 0x38), FIX(x, 0), FIX(src1, 0)),
- OP2(ORREGL1, OWREGL1),
- ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
- INSN(abs2, l, unary, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x4)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(absdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x2c), FIX(x, 0)),
- OP2(ORREGD1, OWREGD12),
- ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
- ENC(dst, reg, 1)))
- INSN(abssp, s, unary, 1cycle, C67X, 0,
- FIX1(FIX(op, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(add, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x3)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(add, l_si_xsi_sl, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x23)),
- OP3(ORREG1, ORXREG1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(add, l_xsi_sl_sl, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x21)),
- OP3(ORXREG1, ORREGL1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(add, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x2)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(add, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x20), FIX(x, 0)),
- OP3(OACST, ORREGL1, OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(add, s_si_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x7)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(add, s_s5_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x6)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(add, d_si_si_si, d, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x10)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(add, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x12)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- INSNE(add, d_si_xsi_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0xa)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(add, d_xsi_s5_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0xb)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, scst, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(add, l, l3_sat_0, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(add, l, l3i, 1cycle, C64XP, 0,
- FIX0(),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(cst, scst_l3i, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(add, l, lx1, 1cycle, C64XP,
- TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x3)),
- OP3(OHWCSTM1, ORREG1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2)))
- INSN(add, s, s3_sat_0, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(add, s, sx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x3)),
- OP3(OHWCSTM1, ORREG1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2)))
- INSN(add, s, sx2op, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2),
- ENC(src2, reg, 1), ENC(x, xpath, 1)))
- INSN(add, d, dx2op, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 1), ENC(srcdst, reg, 0),
- ENC(src2, reg, 1), ENC(srcdst, reg, 2)))
- INSNU(add, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x5), FIX(unit, 0x0)),
- OP3(ORREG1, OHWCST1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
- INSNU(add, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x5), FIX(unit, 0x1)),
- OP3(ORREG1, OHWCST1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
- INSNU(add, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x5), FIX(unit, 0x2)),
- OP3(ORREG1, OHWCST1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
- /**/
- INSNE(addab, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x30)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(addab, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x32)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- INSN(addab, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 3)),
- OP3(ORAREG1, OLCST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 1),
- ENC(dst, reg, 2)))
- INSNE(addad, d_si_si_si, d, 1_or_2_src, 1cycle, C64X_AND_C67X,
- TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x3c)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(addad, d_si_u5_si, d, 1_or_2_src, 1cycle, C64X_AND_C67X,
- TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x3d)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- INSNE(addah, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x34)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(addah, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x36)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- INSN(addah, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 5)),
- OP3(ORAREG1, OLCST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 1),
- ENC(dst, reg, 2)))
- INSNE(addaw, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x38)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(addaw, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x3a)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- INSN(addaw, d, adda_long, 1cycle, C64XP, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 7)),
- OP3(ORAREG1, OLCST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_word, 1),
- ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(addaw, d, dx5, 1cycle, C64XP, TIC6X_FLAG_INSN16_BSIDE,
- FIX0(),
- OP3(ORB15REG1, OACST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, ucst, 1), ENC(dst, reg, 2)))
- INSN(addaw, d, dx5p, 1cycle, C64XP, TIC6X_FLAG_INSN16_BSIDE,
- FIX1(FIX(op, 0)),
- OP3(ORB15REG1, OACST, OWB15REG1),
- ENC2(ENC(s, fu, 0), ENC(cst, ucst, 1)))
- /**/
- INSN(adddp, l, 1_or_2_src, addsubdp, C67X, 0,
- FIX1(FIX(op, 0x18)),
- OP3(ORREGD12, ORXREGD12, OWREGD67),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(adddp, s, l_1_or_2_src, addsubdp, C67XP, 0,
- FIX1(FIX(op, 0x72)),
- OP3(ORREGD12, ORXREGD12, OWREGD67),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(addk, s, addk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX0(),
- OP2(OLCST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1)))
- /* 16 bits insn */
- INSN(addk, s, sx5, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX0(),
- OP2(OACST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
- /**/
- INSN(addkpc, s, addkpc, 1cycle, C64X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_SIDE_B_ONLY,
- FIX1(FIX(s, 1)),
- OP3(OLCST, OWREG1, OACST),
- ENC3(ENC(src1, pcrel, 0), ENC(dst, reg, 1), ENC(src2, ucst, 2)))
- INSN(addsp, l, 1_or_2_src, 4cycle, C67X, 0,
- FIX1(FIX(op, 0x10)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(addsp, s, l_1_or_2_src, 4cycle, C67XP, 0,
- FIX1(FIX(op, 0x70)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(addsub, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0xc)),
- OP3(ORREG1, ORXREG1, OWREGD1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(addsub2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0xd)),
- OP3(ORREG1, ORXREG1, OWREGD1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(addu, l_ui_xui_ul, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x2b)),
- OP3(ORREG1, ORXREG1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(addu, l_xui_ul_ul, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x29)),
- OP3(ORXREG1, ORREGL1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(add2, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(add2, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x5)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(add2, d, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x4)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(add4, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x65)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(and, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x7b)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(and, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x7a)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(and, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x1f)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(and, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x1e)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(and, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x6)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(and, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x7)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(and, l, l2c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0)),
- OP3(ORREG1, ORXREG1, OWREG1NORS),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /**/
- INSN(andn, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x7c)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(andn, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x6)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(andn, d, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(avg2, m, compound, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x13)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(avgu4, m, compound, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x12)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(b, s, ext_branch_cond_imm, branch, C62X, TIC6X_FLAG_NO_CROSS,
- FIX0(),
- OP1(OLCST),
- ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
- INSN(b, s, branch, branch, C62X, TIC6X_FLAG_SIDE_B_ONLY,
- FIX1(FIX(s, 1)),
- OP1(ORXREG1),
- ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
- INSN(b, s, b_irp, branch, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY,
- FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
- OP1(ORIRP1),
- ENC0())
- INSN(b, s, b_nrp, branch, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY,
- FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
- OP1(ORNRP1),
- ENC0())
- INSN(bdec, s, bdec, branch, C64X, TIC6X_FLAG_NO_CROSS,
- FIX0(),
- OP2(OLCST, ORWREG1),
- ENC3(ENC(s, fu, 0), ENC(src, pcrel, 0), ENC(dst, reg, 1)))
- INSN(bitc4, m, unary, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x1e)),
- OP2(ORXREG1, OWREG2),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(bitr, m, unary, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x1f)),
- OP2(ORXREG1, OWREG2),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(bnop, s, branch_nop_cst, branch, C64X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
- FIX0(),
- OP2(OLCST, OACST),
- ENC3(ENC(s, fu, 0), ENC(src2, pcrel_half, 0), ENC(src1, ucst, 1)))
- INSN(bnop, nfu, s_branch_nop_cst, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP,
- FIX1(FIX(s, 0)),
- OP2(OLCST, OACST),
- ENC2(ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
- INSN(bnop, s, branch_nop_reg, branch, C64X,
- TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MCNOP,
- FIX1(FIX(s, 1)),
- OP2(ORXREG1, OACST),
- ENC3(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1)))
- /* 16 bits insn format */
- INSN(bnop, s, sbu8, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
- FIX0(),
- OP2(OLCST, OHWCST5),
- ENC2(ENC(s, fu, 0), ENC(cst, pcrel_half_unsigned, 0)))
- INSN(bnop, s, sbs7, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
- FIX0(),
- OP2(OLCST, OACST),
- ENC3(ENC(s, fu, 0), ENC(cst, pcrel_half, 0), ENC(n, ucst, 1)))
- INSN(bnop, s, sbu8c, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_INSN16_SPRED,
- FIX0(),
- OP2(OLCST, OHWCST5),
- ENC2(ENC(s, fu, 0), ENC(cst, pcrel_half_unsigned, 0)))
- INSN(bnop, s, sbs7c, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_INSN16_SPRED,
- FIX0(),
- OP2(OLCST, OACST),
- ENC3(ENC(s, fu, 0), ENC(cst, pcrel_half, 0), ENC(n, ucst, 1)))
- INSN(bnop, s, sx1b, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
- FIX0(),
- OP2(ORREG1BNORS, OACST),
- ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(n, ucst, 1)))
- /**/
- INSN(bpos, s, bpos, branch, C64X, TIC6X_FLAG_NO_CROSS,
- FIX0(),
- OP2(OLCST, ORREG1),
- ENC3(ENC(s, fu, 0), ENC(src, pcrel, 0), ENC(dst, reg, 1)))
- INSN(call, s, ext_branch_cond_imm, branch, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
- FIX0(),
- OP1(OLCST),
- ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
- INSN(call, s, branch, branch, C62X,
- TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
- FIX1(FIX(s, 1)),
- OP1(ORXREG1),
- ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
- INSN(call, s, b_irp, branch, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
- FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
- OP1(ORIRP1),
- ENC0())
- INSN(call, s, b_nrp, branch, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL,
- FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
- OP1(ORNRP1),
- ENC0())
- INSN(callnop, s, branch_nop_cst, branch, C64X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL,
- FIX0(),
- OP2(OLCST, OACST),
- ENC3(ENC(s, fu, 0), ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
- INSN(callnop, nfu, s_branch_nop_cst, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL,
- FIX1(FIX(s, 0)),
- OP2(OLCST, OACST),
- ENC2(ENC(src2, pcrel, 0), ENC(src1, ucst, 1)))
- INSN(callnop, s, branch_nop_reg, branch, C64X,
- TIC6X_FLAG_MACRO|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MCNOP|TIC6X_FLAG_CALL,
- FIX1(FIX(s, 1)),
- OP2(ORXREG1, OACST),
- ENC3(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1)))
- INSN(callp, s, call_imm_nop, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
- FIX1(FIX(z, 1)),
- OP2(OLCST, OWRETREG1),
- ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
- /* 16 bits insn format */
- INSN(callp, s, scs10, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP,
- FIX0(),
- OP2(OLCST, OWRETREG1),
- ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
- /**/
- INSN(callret, s, ext_branch_cond_imm, branch, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
- FIX0(),
- OP1(OLCST),
- ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
- INSN(callret, s, branch, branch, C62X,
- TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
- FIX1(FIX(s, 1)),
- OP1(ORXREG1),
- ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
- INSN(callret, s, b_irp, branch, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
- FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
- OP1(ORIRP1),
- ENC0())
- INSN(callret, s, b_nrp, branch, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_CALL|TIC6X_FLAG_RETURN,
- FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
- OP1(ORNRP1),
- ENC0())
- INSN(clr, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x3)),
- OP4(ORREG1, OACST, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
- ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
- INSN(clr, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x3f)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(clr, s, sc5, 1cycle, C64XP, 0,
- FIX1(FIX(op, 2)),
- OP4(ORREG1, OACST, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(cst, ucst, 1),
- ENC(cst, ucst, 2), ENC(srcdst, reg, 3)))
- /**/
- INSNE(cmpeq, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x53)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpeq, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x52)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpeq, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x51)),
- OP3(ORXREG1, ORREGL1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpeq, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x50), FIX(x, 0)),
- OP3(OACST, ORREGL1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(cmpeq, l, lx3c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX0(),
- OP3(OACST, ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSN(cmpeq, l, l2c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 3)),
- OP3(ORREG1, ORXREG1, OWREG1NORS),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /**/
- INSN(cmpeq2, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x1d)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpeq4, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x1c)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpeqdp, s, 1_or_2_src, dpcmp, C67X, 0,
- FIX1(FIX(op, 0x28)),
- OP3(ORREGD12, ORXREGD12, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpeqsp, s, 1_or_2_src, 1cycle, C67X, 0,
- FIX1(FIX(op, 0x38)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpgt, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x47)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpgt, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x46)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpgt, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x45)),
- OP3(ORXREG1, ORREGL1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpgt, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x44), FIX(x, 0)),
- OP3(OACST, ORREGL1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(cmpgt, l_xsi_si_ui, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x57)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
- ENC(src2, reg, 0), ENC(dst, reg, 2)))
- INSNE(cmpgt, l_xsi_s5_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x56)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 1),
- ENC(src2, reg, 0), ENC(dst, reg, 2)))
- INSNE(cmpgt, l_sl_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x55)),
- OP3(ORREGL1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
- ENC(src2, reg, 0), ENC(dst, reg, 2)))
- INSNE(cmpgt, l_sl_s5_ui, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x54), FIX(x, 0)),
- OP3(ORREGL1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, scst, 1), ENC(src2, reg, 0),
- ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(cmpgt, l, lx1c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 1)),
- OP3(OACST, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSN(cmpgt, l, l2c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 5)),
- OP3(ORREG1, ORXREG1, OWREG1NORS),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /**/
- INSN(cmpgt2, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x14)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpgtdp, s, 1_or_2_src, dpcmp, C67X, 0,
- FIX1(FIX(op, 0x29)),
- OP3(ORREGD12, ORXREGD12, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpgtsp, s, 1_or_2_src, 1cycle, C67X, 0,
- FIX1(FIX(op, 0x39)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpgtu, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x4f)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpgtu, l_u4_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 0x4e), RAN(src1, 0, 15)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* Although not mentioned in SPRUFE8, CMPGTU and CMPLTU support a
- 5-bit unsigned constant operand on C64X and above. */
- INSNE(cmpgtu, l_u5_xui_ui, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX2(FIX(op, 0x4e), RAN(src1, 16, 31)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpgtu, l_xui_ul_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x4d)),
- OP3(ORXREG1, ORREGL1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpgtu, l_u4_ul_ui, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX3(FIX(op, 0x4c), FIX(x, 0), RAN(src1, 0, 15)),
- OP3(OACST, ORREGL1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(cmpgtu, l_u5_ul_ui, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
- FIX3(FIX(op, 0x4c), FIX(x, 0), RAN(src1, 16, 31)),
- OP3(OACST, ORREGL1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(cmpgtu, l, lx1c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 3)),
- OP3(OACST, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSN(cmpgtu, l, l2c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 7)),
- OP3(ORREG1, ORXREG1, OWREG1NORS),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /**/
- INSN(cmpgtu4, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x15)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmplt, l_si_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x57)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmplt, l_s5_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x56)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmplt, l_xsi_sl_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x55)),
- OP3(ORXREG1, ORREGL1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmplt, l_s5_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x54), FIX(x, 0)),
- OP3(OACST, ORREGL1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(cmplt, l_xsi_si_ui, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x47)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
- ENC(src2, reg, 0), ENC(dst, reg, 2)))
- INSNE(cmplt, l_xsi_s5_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x46)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 1),
- ENC(src2, reg, 0), ENC(dst, reg, 2)))
- INSNE(cmplt, l_sl_xsi_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x45)),
- OP3(ORREGL1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 1),
- ENC(src2, reg, 0), ENC(dst, reg, 2)))
- INSNE(cmplt, l_sl_s5_ui, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x44), FIX(x, 0)),
- OP3(ORREGL1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, scst, 1), ENC(src2, reg, 0),
- ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(cmplt, l, lx1c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0)),
- OP3(OACST, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSN(cmplt, l, l2c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 4)),
- OP3(ORREG1, ORXREG1, OWREG1NORS),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /**/
- INSN(cmplt2, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x14)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpltdp, s, 1_or_2_src, dpcmp, C67X, 0,
- FIX1(FIX(op, 0x2a)),
- OP3(ORREGD12, ORXREGD12, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpltsp, s, 1_or_2_src, 1cycle, C67X, 0,
- FIX1(FIX(op, 0x3a)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpltu, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x5f)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpltu, l_u4_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 0x5e), RAN(src1, 0, 15)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpltu, l_u5_xui_ui, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX2(FIX(op, 0x5e), RAN(src1, 16, 31)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, ucst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpltu, l_xui_ul_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x5d)),
- OP3(ORXREG1, ORREGL1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(cmpltu, l_u4_ul_ui, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX3(FIX(op, 0x5c), FIX(x, 0), RAN(src1, 0, 15)),
- OP3(OACST, ORREGL1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(cmpltu, l_u5_ul_ui, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
- FIX3(FIX(op, 0x5c), FIX(x, 0), RAN(src1, 16, 31)),
- OP3(OACST, ORREGL1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, ucst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(cmpltu, l, lx1c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 2)),
- OP3(OACST, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- INSN(cmpltu, l, l2c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 6)),
- OP3(ORREG1, ORXREG1, OWREG1NORS),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /**/
- INSN(cmpltu4, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x15)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpy, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0xa)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpyr, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0xb)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(cmpyr1, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0xc)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(cmtl, d, 1_or_2_src, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS,
- FIX3(FIX(s, 1), FIX(op, 0xe), FIX(src1, 0)),
- OP2(ORMEMDW, OWDREG5),
- ENC2(ENC(src2, reg, 0), ENC(dst, reg, 1)))
- INSN(ddotp4, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x18)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(ddotph2, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x17)),
- OP3(ORREGD1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(ddotph2r, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x15)),
- OP3(ORREGD1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(ddotpl2, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x16)),
- OP3(ORREGD1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(ddotpl2r, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x14)),
- OP3(ORREGD1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(deal, m, unary, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x1d)),
- OP2(ORXREG1, OWREG2),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(dint, nfu, dint, 1cycle, C64XP, 0,
- FIX1(FIX(s, 0)),
- OP0(),
- ENC0())
- INSN(dmv, s, ext_1_or_2_src, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0xb)),
- OP3(ORREG1, ORXREG1, OWREGD1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(dotp2, m_s2_xs2_si, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0xc)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(dotp2, m_s2_xs2_sll, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0xb)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(dotpn2, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x9)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(dotpnrsu2, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x7)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(dotpnrus2, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x7)),
- OP3(ORXREG1, ORREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(dotprsu2, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0xd)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(dotprus2, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0xd)),
- OP3(ORXREG1, ORREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(dotpsu4, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x2)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(dotpus4, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x2)),
- OP3(ORXREG1, ORREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(dotpu4, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x6)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(dpack2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x34)),
- OP3(ORREG1, ORXREG1, OWREGD1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(dpackx2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x33)),
- OP3(ORREG1, ORXREG1, OWREGD1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(dpint, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x8), FIX(x, 0)),
- OP2(ORREGD1, OWREG4),
- ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
- ENC(dst, reg, 1)))
- INSN(dpsp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x9), FIX(x, 0)),
- OP2(ORREGD1, OWREG4),
- ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
- ENC(dst, reg, 1)))
- INSN(dptrunc, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x1), FIX(x, 0)),
- OP2(ORREGD1, OWREG4),
- ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
- ENC(dst, reg, 1)))
- INSN(ext, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x1)),
- OP4(ORREG1, OACST, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
- ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
- INSN(ext, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x2f)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSNE(ext, hwcst16, s, s2ext, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x0)),
- OP4(ORREG1, OHWCST16, OHWCST16, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3)))
- INSNE(ext, hwcst24, s, s2ext, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x1)),
- OP4(ORREG1, OHWCST24, OHWCST24, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3)))
- /**/
- INSN(extu, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x0)),
- OP4(ORREG1, OACST, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
- ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
- INSN(extu, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x2b)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSNE(extu, hwcst16, s, s2ext, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x2)),
- OP4(ORREG1, OHWCST16, OHWCST16, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3)))
- INSNE(extu, hwcst24, s, s2ext, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x3)),
- OP4(ORREG1, OHWCST24, OHWCST24, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(src, reg, 0), ENC(dst, reg, 3)))
- INSN(extu, s, sc5, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0)),
- OP4(ORREG1, OACST, OHWCST31, OWREG1Z),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(cst, ucst, 1)))
- /**/
- INSN(gmpy, m, 1_or_2_src, 4cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x1f), FIX(x, 0)),
- OP3(ORREG1, ORREG1, OWREG4),
- ENC4(ENC(s, fu, 0), ENC(src1, reg, 0), ENC(src2, reg, 1),
- ENC(dst, reg, 2)))
- /* This instruction can be predicated as usual; SPRUFE8 is incorrect
- where it shows the "z" field as fixed to 1. */
- INSN(gmpy4, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x11)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(idle, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MCNOP,
- FIX2(FIX(s, 0), FIX(op, 0xf)),
- OP0(),
- ENC0())
- INSN(intdp, l, 1_or_2_src, intdp, C67X, 0,
- FIX2(FIX(op, 0x39), FIX(src1, 0)),
- OP2(ORXREG1, OWREGD45),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(intdpu, l, 1_or_2_src, intdp, C67X, 0,
- FIX2(FIX(op, 0x3b), FIX(src1, 0)),
- OP2(ORXREG1, OWREGD45),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(intsp, l, 1_or_2_src, 4cycle, C67X, 0,
- FIX2(FIX(op, 0x4a), FIX(src1, 0)),
- OP2(ORXREG1, OWREG4),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(intspu, l, 1_or_2_src, 4cycle, C67X, 0,
- FIX2(FIX(op, 0x49), FIX(src1, 0)),
- OP2(ORXREG1, OWREG4),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(ldb, d, load_store, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 2), FIX(r, 0)),
- OP2(ORMEMSB, OWDREG5),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
- ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
- ENC(srcdst, reg, 1)))
- INSN(ldb, d, load_store_long, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 2)),
- OP2(ORMEMLB, OWDREG5),
- ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0),
- ENC(dst, reg, 1)))
- /* 16 bits insn */
- INSN(ldb, d, doff4_dsz_x01, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSB, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0)))
- INSN(ldb, d, dind_dsz_x01, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSB, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
- INSN(ldb, d, dinc_dsz_x01, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSB, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(ldb, d, ddec_dsz_x01, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSB, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- /**/
- INSN(ldbu, d, load_store, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 1), FIX(r, 0)),
- OP2(ORMEMSB, OWDREG5),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
- ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
- ENC(srcdst, reg, 1)))
- INSN(ldbu, d, load_store_long, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 1)),
- OP2(ORMEMLB, OWDREG5),
- ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_byte, 0),
- ENC(dst, reg, 1)))
- /* 16 bits insn */
- INSN(ldbu, d, dinc_dsz_000, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSB, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_minus_one, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
- INSN(ldbu, d, dind_dsz_000, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSB, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
- INSN(ldbu, d, doff4_dsz_000, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSB, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
- INSN(ldbu, d, ddec_dsz_000, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSB, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_minus_one, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
- /**/
- INSN(lddw, d, load_store, load, C64X_AND_C67X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 6), FIX(r, 1)),
- OP2(ORMEMSD, OWDREGD5),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
- ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
- ENC(srcdst, reg, 1)))
- /* 16 bits insn */
- INSN(lddw, d, dpp, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREINCR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS,
- FIX2(FIX(op, 1), FIX(dw, 1)),
- OP2(ORMEMSD, OWDREGD5),
- ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(cst, mem_offset_minus_one, 0)))
- INSN(lddw, d, ddecdw, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)),
- OP2(ORMEMSD, OWTREGD5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(lddw, d, dincdw, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)),
- OP2(ORMEMSD, OWTREGD5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(lddw, d, dinddw, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)),
- OP2(ORMEMSD, OWTREGD5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1)))
- INSN(lddw, d, doff4dw, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX3(FIX(op, 1), FIX(na, 0), FIX(sz, 0)),
- OP2(ORMEMSD, OWTREGD5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1)))
- /**/
- INSN(ldh, d, load_store, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 4), FIX(r, 0)),
- OP2(ORMEMSH, OWDREG5),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
- ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
- ENC(srcdst, reg, 1)))
- INSN(ldh, d, load_store_long, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 4)),
- OP2(ORMEMLH, OWDREG5),
- ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0),
- ENC(dst, reg, 1)))
- /* 16 bits insn */
- INSN(ldh, d, doff4_dsz_x11, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSH, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
- INSN(ldh, d, dind_dsz_x11, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSH, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
- INSN(ldh, d, dinc_dsz_x11, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSH, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(ldh, d, ddec_dsz_x11, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSH, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- /**/
- INSN(ldhu, d, load_store, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 0), FIX(r, 0)),
- OP2(ORMEMSH, OWDREG5),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
- ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
- ENC(srcdst, reg, 1)))
- INSN(ldhu, d, load_store_long, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0)),
- OP2(ORMEMLH, OWDREG5),
- ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_half, 0),
- ENC(dst, reg, 1)))
- /* 16 bits insn */
- INSN(ldhu, d, doff4_dsz_010, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSH, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg, 1)))
- INSN(ldhu, d, dind_dsz_010, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSH, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
- INSN(ldhu, d, dinc_dsz_010, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSH, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(ldhu, d, ddec_dsz_010, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSH, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- /**/
- INSN(ldndw, d, load_nonaligned, load, C64X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
- FIX0(),
- OP2(ORMEMND, OWDREGD5),
- ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
- ENC(offsetR, mem_offset_noscale, 0), ENC(baseR, reg, 0),
- ENC(sc, scaled, 0), ENC(dst, reg_shift, 1)))
- /* 16 bits insn */
- INSN(ldndw, d, ddecdw, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)),
- OP2(ORMEMND, OWTREGD5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one_noscale, 0)))
- INSN(ldndw, d, dincdw, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)),
- OP2(ORMEMND, OWTREGD5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one_noscale, 0)))
- INSN(ldndw, d, dinddw, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)),
- OP2(ORMEMND, OWTREGD5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset_noscale, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1)))
- INSN(ldndw, d, doff4dw, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX3(FIX(op, 1), FIX(na, 1), FIX(sz, 0)),
- OP2(ORMEMND, OWTREGD5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_noscale, 0),
- ENC(ptr, reg_ptr, 0), ENC(srcdst, reg_shift, 1)))
- /**/
- INSN(ldnw, d, load_store, load, C64X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
- FIX2(FIX(op, 3), FIX(r, 1)),
- OP2(ORMEMSW, OWDREG5),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
- ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
- ENC(srcdst, reg, 1)))
- /* 16 bits insn */
- INSN(ldnw, d, doff4_dsz_110, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0)))
- INSN(ldnw, d, dind_dsz_110, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
- INSN(ldnw, d, dinc_dsz_110, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(ldnw, d, ddec_dsz_110, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- /**/
- INSN(ldw, d, load_store, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 6), FIX(r, 0)),
- OP2(ORMEMSW, OWDREG5),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 0),
- ENC(offsetR, mem_offset, 0), ENC(baseR, reg, 0),
- ENC(srcdst, reg, 1)))
- INSN(ldw, d, load_store_long, load, C62X,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 6)),
- OP2(ORMEMLW, OWDREG5),
- ENC4(ENC(s, data_fu, 0), ENC(y, areg, 0), ENC(offsetR, ulcst_dpr_word, 0),
- ENC(dst, reg, 1)))
- /* 16 bits insn */
- INSN(ldw, d, doff4_dsz_0xx, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 0)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0)))
- INSN(ldw, d, doff4_dsz_100, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset, 0)))
- INSN(ldw, d, dind_dsz_0xx, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 0)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
- INSN(ldw, d, dind_dsz_100, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(src1, mem_offset, 0)))
- INSN(ldw, d, dinc_dsz_0xx, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 1), FIX(sz, 0)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(ldw, d, dinc_dsz_100, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(ldw, d, ddec_dsz_0xx, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 1), FIX(sz, 0)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(ldw, d, ddec_dsz_100, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 1), FIX(sz, 1)),
- OP2(ORMEMSW, OWTREG5),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(ptr, reg_ptr, 0), ENC(cst, mem_offset_minus_one, 0)))
- INSN(ldw, d, dpp, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREINCR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS,
- FIX2(FIX(op, 1), FIX(dw, 0)),
- OP2(ORMEMSW, OWTREG5),
- ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(cst, mem_offset_minus_one, 0)))
- INSN(ldw, d, dstk, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE)|TIC6X_FLAG_INSN16_B15PTR,
- FIX2(FIX(op, 0x1), FIX(s, 1)),
- OP2(ORMEMSW, OWTREG5),
- ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 1),
- ENC(cst, mem_offset, 0)))
- /**/
- INSN(ll, d, 1_or_2_src, load, C64XP,
- TIC6X_FLAG_LOAD|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS,
- FIX3(FIX(s, 1), FIX(op, 0xc), FIX(src1, 0)),
- OP2(ORMEMDW, OWDREG5),
- ENC2(ENC(src2, reg, 0), ENC(dst, reg, 1)))
- INSNE(lmbd, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x6b)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(lmbd, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x6a)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(max2, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x42)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(max2, s, ext_1_or_2_src, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0xd)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(maxu4, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x43)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(min2, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x41)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(min2, s, ext_1_or_2_src, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0xc)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(minu4, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x48)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpy, m_sl16_xsl16_si, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x19)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpy, m_s5_xsl16_si, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x18)),
- OP3(OACST, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16-bit insn. */
- INSN(mpy, m, m3_sat_0, 1616_m, C67X, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
- INSN(mpydp, m, mpy, mpydp, C67X, 0,
- FIX1(FIX(op, 0x0e)),
- OP3(ORREGD1234, ORXREGD1324, OWREGD910),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyh, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x01)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(mpyh, m, m3_sat_0, 1616_m, C67X, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
- /**/
- INSN(mpyhi, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x14)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyhir, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x10)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyhl, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x09)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(mpyhl, m, m3_sat_0, 1616_m, C67X, 0,
- FIX1(FIX(op, 0x3)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
- /**/
- INSN(mpyhlu, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x0f)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyhslu, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x0b)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyhsu, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x03)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyhu, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x07)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyhuls, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x0d)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyhus, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x05)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpyi, m_si_xsi_si, m, mpy, mpyi, C67X, 0,
- FIX1(FIX(op, 0x04)),
- OP3(ORREG14, ORXREG14, OWREG9),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpyi, m_s5_xsi_si, m, mpy, mpyi, C67X, 0,
- FIX1(FIX(op, 0x06)),
- OP3(OACST, ORXREG14, OWREG9),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpyid, m_si_xsi_sll, m, mpy, mpyid, C67X, 0,
- FIX1(FIX(op, 0x08)),
- OP3(ORREG14, ORXREG14, OWREGD910),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpyid, m_s5_xsi_sll, m, mpy, mpyid, C67X, 0,
- FIX1(FIX(op, 0x0c)),
- OP3(OACST, ORXREG14, OWREGD910),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyih, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x14)),
- OP3(ORXREG1, ORREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyihr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x10)),
- OP3(ORXREG1, ORREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyil, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x15)),
- OP3(ORXREG1, ORREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyilr, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x0e)),
- OP3(ORXREG1, ORREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(mpylh, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x11)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(mpylh, m, m3_sat_0, 1616_m, C67X, 0,
- FIX1(FIX(op, 0x2)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
- /**/
- INSN(mpylhu, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x17)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyli, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x15)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpylir, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x0e)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpylshu, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x13)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyluhs, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x15)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpysp, m, mpy, 4cycle, C67X, 0,
- FIX1(FIX(op, 0x1c)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* Contrary to SPRU733A, MPYSPDP and MPYSP2DP are on both C67X and
- C67X+. */
- INSN(mpyspdp, m, compound, mpyspdp, C67X, 0,
- FIX1(FIX(op, 0x16)),
- OP3(ORREG12, ORXREGD12, OWREGD67),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpysp2dp, m, compound, mpyspdp, C67X, 0,
- FIX1(FIX(op, 0x17)),
- OP3(ORREG1, ORXREG1, OWREGD45),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpysu, m_sl16_xul16_si, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x1b)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpysu, m_s5_xul16_si, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x1e)),
- OP3(OACST, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpysu4, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x05)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyu, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x1f)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyu4, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x04)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyus, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x1d)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpyus4, m, compound, 4cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x05)),
- OP3(ORXREG1, ORREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(mpy2, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x00)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpy2ir, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x0f)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpy32, 32_32_32, m, mpy, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x10)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(mpy32, 32_32_64, m, mpy, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x14)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpy32su, m, mpy, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x16)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpy32u, m, compound, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x18)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(mpy32us, m, compound, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x19)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* "or" forms of "mv" are preferred over "add" forms when available
- because "or" uses less power. However, 40-bit moves are only
- available through "add", and before C64X D-unit moves are only
- available through "add" (without cross paths being available). */
- INSNE(mv, l_xui_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX2(FIX(op, 0x7e), FIX(src1, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(mv, l_sl_sl, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
- FIX3(FIX(op, 0x20), FIX(x, 0), FIX(src1, 0)),
- OP2(ORREGL1, OWREGL1),
- ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
- INSNE(mv, s_xui_ui, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX2(FIX(op, 0x1a), FIX(src1, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(mv, d_si_si, d, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(0),
- FIX2(FIX(op, 0x12), FIX(src1, 0)),
- OP2(ORREG1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
- INSNE(mv, d_xui_ui, d, ext_1_or_2_src, 1cycle, C64X,
- TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 0x3), FIX(src1, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- /* 16 bits insn */
- INSNU(mv, l, lsdmvto, 1cycle, C64X, 0,
- FIX1(FIX(unit, 0x0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
- INSNU(mv, s, lsdmvto, 1cycle, C64X, 0,
- FIX1(FIX(unit, 0x1)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
- INSNU(mv, d, lsdmvto, 1cycle, C64X, 0,
- FIX1(FIX(unit, 0x2)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
- INSNU(mv, l, lsdmvfr, 1cycle, C64X, 0,
- FIX1(FIX(unit, 0x0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
- INSNU(mv, s, lsdmvfr, 1cycle, C64X, 0,
- FIX1(FIX(unit, 0x1)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
- INSNU(mv, d, lsdmvfr, 1cycle, C64X, 0,
- FIX1(FIX(unit, 0x2)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(x, xpath, 0), ENC(dst, reg, 1)))
- /**/
- INSNE(mvc, from_cr, s, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_NO_CROSS,
- FIX3(FIX(s, 1), FIX(op, 0x0f), FIX(x, 0)),
- OP2(ORCREG1, OWREG1),
- ENC3(ENC(src1, crhi, 0), ENC(src2, crlo, 0), ENC(dst, reg, 1)))
- INSNE(mvc, to_cr, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_SIDE_B_ONLY,
- FIX2(FIX(s, 1), FIX(op, 0x0e)),
- OP2(ORXREG1, OWCREG1),
- ENC4(ENC(x, xpath, 0), ENC(src2, reg, 0), ENC(src1, crhi, 1),
- ENC(dst, crlo, 1)))
- /* 16 bits insn */
- INSN(mvc, s, sx1, 1cycle, C64XP,
- TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x6)),
- OP2(ORREG1B, OWILC1),
- ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 0)))
- /**/
- INSN(mvd, m, unary, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x1a)),
- OP2(ORXREG1, OWREG4),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(mvk, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(h, 0)),
- OP2(OLCST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1)))
- INSN(mvk, l, unary, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(x, 0), FIX(op, 0x05)),
- OP2(OACST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(src2, scst, 0), ENC(dst, reg, 1)))
- INSN(mvk, d, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x00), FIX(src2, 0)),
- OP2(OACST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(src1, scst, 0), ENC(dst, reg, 1)))
- /* 16 bits insn */
- INSN(mvk, l, lx5, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX0(),
- OP2(OLCST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, scst, 0), ENC(dst, reg, 1)))
- INSN(mvk, s, smvk8, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX0(),
- OP2(OLCST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
- INSNU(mvk, l, lsdx1c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_SPRED,
- FIX1(FIX(unit, 0x0)),
- OP2(OACST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
- INSNU(mvk, s, lsdx1c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_SPRED,
- FIX1(FIX(unit, 0x1)),
- OP2(OACST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
- INSNU(mvk, d, lsdx1c, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_SPRED,
- FIX1(FIX(unit, 0x2)),
- OP2(OACST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, ucst, 0), ENC(dst, reg, 1)))
- INSNUE(mvk, zero, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0), FIX(unit, 0x0)),
- OP2(OHWCST0, OWREG1),
- ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
- INSNUE(mvk, zero, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0), FIX(unit, 0x1)),
- OP2(OHWCST0, OWREG1),
- ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
- INSNUE(mvk, zero, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0), FIX(unit, 0x2)),
- OP2(OHWCST0, OWREG1),
- ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
- INSNUE(mvk, one, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 1), FIX(unit, 0x0)),
- OP2(OHWCST1, OWREG1),
- ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
- INSNUE(mvk, one, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 1), FIX(unit, 0x1)),
- OP2(OHWCST1, OWREG1),
- ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
- INSNUE(mvk, one, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 1), FIX(unit, 0x2)),
- OP2(OHWCST1, OWREG1),
- ENC2(ENC(s, fu, 0), ENC(srcdst, reg, 1)))
- /**/
- INSN(mvkh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(h, 1)),
- OP2(OLCST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, lcst_high16, 0), ENC(dst, reg, 1)))
- INSN(mvklh, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
- FIX1(FIX(h, 1)),
- OP2(OLCST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1)))
- INSN(mvkl, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
- FIX1(FIX(h, 0)),
- OP2(OLCST, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(cst, lcst_low16, 0), ENC(dst, reg, 1)))
- INSNE(neg, s_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX2(FIX(op, 0x16), FIX(src1, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(neg, l_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX2(FIX(op, 0x06), FIX(src1, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(neg, l_sl_sl, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
- FIX2(FIX(op, 0x24), FIX(src1, 0)),
- OP2(ORREGL1, OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(nop, nfu, nop_idle, nop, C62X, 0,
- FIX2(FIX(s, 0), RAN(op, 0, 8)),
- OP1(OACST),
- ENC1(ENC(op, ucst_minus_one, 0)))
- INSNE(nop, 1, nfu, nop_idle, nop, C62X, TIC6X_FLAG_MACRO,
- FIX2(FIX(s, 0), FIX(op, 0)),
- OP0(),
- ENC0())
- /* 16 bits insn */
- /* contrary to sprufe8b.pdf p767, and accordingly to
- * dis6x.exe output, unop3 opcode is decoded as NOP N3 + 1 */
- INSN(nop, nfu, unop, nop, C64XP, 0,
- FIX0(),
- OP1(OACST),
- ENC1(ENC(n, ucst_minus_one, 0)))
- /**/
- INSNE(norm, l_xsi_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX2(FIX(op, 0x63), FIX(src1, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(norm, l_sl_ui, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX3(FIX(op, 0x60), FIX(x, 0), FIX(src1, 0)),
- OP2(ORREGL1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
- INSN(not, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX2(FIX(op, 0x6e), FIX(src1, 0x1f)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(not, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX2(FIX(op, 0x0a), FIX(src1, 0x1f)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(not, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
- FIX2(FIX(op, 0xf), FIX(src1, 0x1f)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(or, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x2)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(or, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x3)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(or, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x7f)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(or, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x7e)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(or, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x1b)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(or, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x1a)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(or, l, l2c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 1)),
- OP3(ORREG1, ORXREG1, OWREG1NORS),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /**/
- INSN(pack2, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(pack2, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0xf)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(packh2, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x1e)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(packh2, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x9)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(packh4, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x69)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(packhl2, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x1c)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(packhl2, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x8)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(packlh2, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x1b)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(packlh2, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x10)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(packl4, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x68)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(rcpdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x2d), FIX(x, 0)),
- OP2(ORREGD1, OWREGD12),
- ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
- ENC(dst, reg, 1)))
- INSN(rcpsp, s, 1_or_2_src, 1cycle, C67X, 0,
- FIX2(FIX(op, 0x3d), FIX(src1, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(ret, s, ext_branch_cond_imm, branch, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
- FIX0(),
- OP1(OLCST),
- ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
- INSN(ret, s, branch, branch, C62X,
- TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
- FIX1(FIX(s, 1)),
- OP1(ORXREG1),
- ENC2(ENC(x, xpath, 0), ENC(src2, reg, 0)))
- INSN(ret, s, b_irp, branch, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
- FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
- OP1(ORIRP1),
- ENC0())
- INSN(ret, s, b_nrp, branch, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
- FIX3(FIX(s, 1), FIX(x, 0), FIX(dst, 0)),
- OP1(ORNRP1),
- ENC0())
- INSN(retp, s, call_imm_nop, branch, C64XP,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MCNOP|TIC6X_FLAG_MACRO|TIC6X_FLAG_RETURN,
- FIX1(FIX(z, 1)),
- OP2(OLCST, OWRETREG1),
- ENC2(ENC(s, fu, 0), ENC(cst, pcrel, 0)))
- INSN(rint, nfu, rint, 1cycle, C64XP, 0,
- FIX1(FIX(s, 0)),
- OP0(),
- ENC0())
- INSNE(rotl, m_ui_xui_ui, m, compound, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x1d)),
- OP3(ORXREG1, ORREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(rotl, m_u5_xui_ui, m, compound, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x1e)),
- OP3(ORXREG1, OACST, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, ucst, 1), ENC(dst, reg, 2)))
- INSN(rpack2, s, ext_1_or_2_src_noncond, 1cycle, C64XP, 0,
- FIX2(FIX(op, 0xb), FIX(z, 1)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(rsqrdp, s, 1_or_2_src, 2cycle_dp, C67X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x2e), FIX(x, 0)),
- OP2(ORREGD1, OWREGD12),
- ENC4(ENC(s, fu, 0), ENC(src2, regpair_msb, 0), ENC(src1, regpair_lsb, 0),
- ENC(dst, reg, 1)))
- INSN(rsqrsp, s, 1_or_2_src, 1cycle, C67X, 0,
- FIX2(FIX(op, 0x3e), FIX(src1, 0)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(sadd, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x13)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sadd, l_xsi_sl_sl, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x31)),
- OP3(ORXREG1, ORREGL1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sadd, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x12)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sadd, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x30)),
- OP3(OACST, ORREGL1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sadd, s_si_xsi_si, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x20)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(sadd, l, l3_sat_1, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(sadd, s, s3_sat_1, 1cycle, C64XP,0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /**/
- INSN(sadd2, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(saddsub, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x0e)),
- OP3(ORREG1, ORXREG1, OWREGD1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(saddsub2, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x0f)),
- OP3(ORREG1, ORXREG1, OWREGD1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(saddsu2, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x1)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSN(saddus2, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(saddu4, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x3)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(sat, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX3(FIX(op, 0x40), FIX(x, 0), FIX(src1, 0)),
- OP2(ORREGL1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(dst, reg, 1)))
- INSN(set, s, field, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x2)),
- OP4(ORREG1, OACST, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(csta, ucst, 1),
- ENC(cstb, ucst, 2), ENC(dst, reg, 3)))
- INSN(set, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x3b)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(set, s, sc5, 1cycle, C64XP, 0,
- FIX1(FIX(op, 1)),
- OP4(ORREG1, OACST, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(cst, ucst, 1),
- ENC(cst, ucst, 2), ENC(srcdst, reg, 3)))
- /**/
- INSN(shfl, m, unary, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x1c)),
- OP2(ORXREG1, OWREG2),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(shfl3, l, 1_or_2_src_noncond, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x36)),
- OP3(ORREG1, ORXREG1, OWREGD1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(shl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x33)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(shl, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x31), FIX(x, 0)),
- OP3(ORREGL1, ORREG1, OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(shl, s_xui_ui_ul, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x13)),
- OP3(ORXREG1, ORREG1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(shl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x32)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, ucst, 1), ENC(dst, reg, 2)))
- INSNE(shl, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x30), FIX(x, 0)),
- OP3(ORREGL1, OACST, OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- INSNE(shl, s_xui_u5_ul, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x12)),
- OP3(ORXREG1, OACST, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, ucst, 1), ENC(dst, reg, 2)))
- /* 16bit insn */
- INSN(shl, s, s3i, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(cst, cst_s3i, 1), ENC(dst, reg, 2)))
- INSN(shl, s, ssh5_sat_x, 1cycle, C64XP,
- TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0),
- ENC(cst, ucst, 1), ENC(srcdst, reg, 2)))
- INSN(shl, s, s2sh, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1),
- ENC(srcdst, reg, 2)))
- /**/
- INSN(shlmb, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x61)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(shlmb, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x9)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(shr, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x37)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(shr, s_sl_ui_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x35), FIX(x, 0)),
- OP3(ORREGL1, ORREG1, OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(shr, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x36)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, ucst, 1), ENC(dst, reg, 2)))
- INSNE(shr, s_sl_u5_sl, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x34), FIX(x, 0)),
- OP3(ORREGL1, OACST, OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- /* 16bit insn */
- INSN(shr, s, s3i, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(cst, cst_s3i, 1), ENC(dst, reg, 2)))
- INSN(shr, s, ssh5_sat_x, 1cycle, C64XP,
- TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0),
- ENC(cst, ucst, 1), ENC(srcdst, reg, 2)))
- INSN(shr, s, s2sh, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1),
- ENC(srcdst, reg, 2)))
- /**/
- INSNE(shr2, s_xs2_ui_s2, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x7)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(shr2, s_xs2_u5_s2, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x18)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, ucst, 1), ENC(dst, reg, 2)))
- INSN(shrmb, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x62)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(shrmb, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0xa)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(shru, s_xui_ui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x27)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(shru, s_ul_ui_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x25), FIX(x, 0)),
- OP3(ORREGL1, ORREG1, OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(shru, s_xui_u5_ui, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x26)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, ucst, 1), ENC(dst, reg, 2)))
- INSNE(shru, s_ul_u5_ul, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x24), FIX(x, 0)),
- OP3(ORREGL1, OACST, OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(shru, s, ssh5_sat_0, 1cycle, C64XP,
- TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x2)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0),
- ENC(cst, ucst, 1), ENC(srcdst, reg, 2)))
- INSN(shru, s, s2sh, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x2)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1),
- ENC(srcdst, reg, 2)))
- /**/
- INSNE(shru2, s_xu2_ui_u2, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x8)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(shru2, s_xu2_u5_u2, s, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x19)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, ucst, 1), ENC(dst, reg, 2)))
- INSN(sl, d, 1_or_2_src, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_SIDE_T2_ONLY|TIC6X_FLAG_NO_CROSS,
- FIX3(FIX(s, 1), FIX(op, 0xd), FIX(src1, 0)),
- OP2(ORDREG1, OWMEMDW),
- ENC2(ENC(dst, reg, 0), ENC(src2, reg, 1)))
- INSN(smpy, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x1a)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(smpy, m, m3_sat_1, 1616_m, C67X, 0,
- FIX1(FIX(op, 0x0)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
- /**/
- INSN(smpyh, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x02)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(smpyh, m, m3_sat_1, 1616_m, C67X, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
- /**/
- INSN(smpyhl, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x0a)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(smpyhl, m, m3_sat_1, 1616_m, C67X, 0,
- FIX1(FIX(op, 0x3)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
- /**/
- INSN(smpylh, m, mpy, 1616_m, C62X, 0,
- FIX1(FIX(op, 0x12)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(smpylh, m, m3_sat_1, 1616_m, C67X, 0,
- FIX1(FIX(op, 0x2)),
- OP3(ORREG1, ORXREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg_shift, 2)))
- /**/
- INSN(smpy2, m, compound, 4cycle, C64X, 0,
- FIX1(FIX(op, 0x01)),
- OP3(ORREG1, ORXREG1, OWREGD4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* Contrary to SPRUFE8, this is the correct operand order for this
- instruction. */
- INSN(smpy32, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x19)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(spack2, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x2)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(spacku4, s, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x4)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(spdp, s, 1_or_2_src, 2cycle_dp, C67X, 0,
- FIX2(FIX(op, 0x02), FIX(src1, 0)),
- OP2(ORXREG1, OWREGD12),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(spint, l, 1_or_2_src, 4cycle, C67X, 0,
- FIX2(FIX(op, 0x0a), FIX(src1, 0)),
- OP2(ORXREG1, OWREG4),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(spkernel, nfu_2, nfu, spkernel, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL,
- FIX1(FIX(s, 0)),
- OP2(OACST, OACST),
- ENC2(ENC(fstgfcyc, fstg, 0), ENC(fstgfcyc, fcyc, 1)))
- INSNE(spkernel, nfu_0, nfu, spkernel, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL|TIC6X_FLAG_MACRO,
- FIX2(FIX(s, 0), FIX(fstgfcyc, 0)),
- OP0(),
- ENC0())
- /* 16 bits insn */
- INSN(spkernel, nfu, uspk, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL,
- FIX0(),
- OP2(OACST, OACST),
- ENC2(ENC(fstgfcyc, fstg, 0), ENC(fstgfcyc, fcyc, 1)))
- /**/
- INSN(spkernelr, nfu, spkernelr, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPKERNEL,
- FIX1(FIX(s, 0)),
- OP0(),
- ENC0())
- INSN(sploop, nfu, loop_buffer, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
- FIX4(FIX(s, 0), FIX(op, 0xc), FIX(csta, 0), RAN(cstb, 0, 13)),
- OP1(OACST),
- ENC1(ENC(cstb, ucst_minus_one, 0)))
- INSN(sploopd, nfu, loop_buffer, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
- FIX4(FIX(s, 0), FIX(op, 0xd), FIX(csta, 0), RAN(cstb, 0, 13)),
- OP1(OACST),
- ENC1(ENC(cstb, ucst_minus_one, 0)))
- INSN(sploopw, nfu, loop_buffer, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
- FIX4(FIX(s, 0), FIX(op, 0xf), FIX(csta, 0), RAN(cstb, 0, 13)),
- OP1(OACST),
- ENC1(ENC(cstb, ucst_minus_one, 0)))
- /* 16 bits insn */
- INSN(sploop, nfu, uspl, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
- FIX1(FIX(op, 0)),
- OP1(OACST),
- ENC1(ENC(ii, ucst_minus_one, 0)))
- INSN(sploopd, nfu, uspl, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP,
- FIX1(FIX(op, 1)),
- OP1(OACST),
- ENC1(ENC(ii, ucst_minus_one, 0)))
- INSN(sploopd, nfu, uspldr, 1cycle, C64XP,
- TIC6X_FLAG_FIRST|TIC6X_FLAG_NO_MCNOP|TIC6X_FLAG_SPLOOP|TIC6X_FLAG_INSN16_SPRED,
- FIX0(),
- OP1(OACST),
- ENC1(ENC(ii, ucst_minus_one, 0)))
- /**/
- /* Contrary to SPRUFE8, this is the correct encoding for this
- instruction. */
- INSN(spmask, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
- FIX2(FIX(s, 0), FIX(op, 0x8)),
- OP1(OFULIST),
- ENC1(ENC(mask, spmask, 0)))
- /* 16 bits insn */
- INSN(spmask, nfu, uspma, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
- FIX0(),
- OP1(OFULIST),
- ENC1(ENC(mask, spmask, 0)))
- /**/
- INSN(spmaskr, nfu, spmask, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
- FIX2(FIX(s, 0), FIX(op, 0x9)),
- OP1(OFULIST),
- ENC1(ENC(mask, spmask, 0)))
- /* 16 bits insn */
- INSN(spmaskr, nfu, uspmb, 1cycle, C64XP, TIC6X_FLAG_FIRST|TIC6X_FLAG_SPMASK,
- FIX0(),
- OP1(OFULIST),
- ENC1(ENC(mask, spmask, 0)))
- /**/
- INSN(sptrunc, l, 1_or_2_src, 4cycle, C67X, 0,
- FIX2(FIX(op, 0x0b), FIX(src1, 0)),
- OP2(ORXREG1, OWREG4),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(sshl, s_xsi_ui_si, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x23)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(sshl, s_xsi_u5_si, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x22)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, ucst, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(sshl, s, ssh5_sat_1, 1cycle, C64XP,
- TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x2)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0),
- ENC(cst, ucst, 1), ENC(srcdst, reg, 2)))
- INSN(sshl, s, s2sh, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x3)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(src1, reg, 1),
- ENC(srcdst, reg, 2)))
- /**/
- INSN(sshvl, m, compound, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x1c)),
- OP3(ORXREG1, ORREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- /* Contrary to SPRUFE8, this is the correct encoding for this
- instruction. */
- INSN(sshvr, m, compound, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x1a)),
- OP3(ORXREG1, ORREG1, OWREG2),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(ssub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x0f)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(ssub, l_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x1f)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(ssub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x0e)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(ssub, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x2c)),
- OP3(OACST, ORREGL1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(ssub, l, l3_sat_1, 1cycle, C64XP, 0,
- FIX1(FIX(op, 1)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /**/
- INSN(ssub2, l, 1_or_2_src, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x64)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(stb, d, load_store, store, C62X,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 3), FIX(r, 0)),
- OP2(ORDREG1, OWMEMSB),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
- ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
- ENC(srcdst, reg, 0)))
- INSN(stb, d, load_store_long, store, C62X,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 3)),
- OP2(ORDREG1, OWMEMLB),
- ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_byte, 1),
- ENC(dst, reg, 0)))
- /* 16 bits insn */
- INSN(stb, d, doff4_dsz_000, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSB),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
- INSN(stb, d, doff4_dsz_x01, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSB),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
- INSN(stb, d, dind_dsz_000, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSB),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 1),
- ENC(ptr, reg_ptr, 1), ENC(srcdst, reg, 0)))
- INSN(stb, d, dind_dsz_x01, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSB),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 1),
- ENC(ptr, reg_ptr, 1), ENC(srcdst, reg, 0)))
- INSN(stb, d, dinc_dsz_000, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSB),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stb, d, dinc_dsz_x01, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSB),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stb, d, ddec_dsz_000, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSB),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stb, d, ddec_dsz_x01, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSB),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- /**/
- INSN(stdw, d, load_store, store, C64X, TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 4), FIX(r, 1)),
- OP2(ORDREGD1, OWMEMSD),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
- ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
- ENC(srcdst, reg, 0)))
- /* 16 bits insn */
- INSN(stdw, d, dpp, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTDECR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS,
- FIX3(FIX(op, 0), FIX(dw, 1), FIX(s, 1)),
- OP2(ORTREGD1, OWMEMSD),
- ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(cst, mem_offset_minus_one, 1)))
- INSN(stdw, d, ddecdw, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)),
- OP2(ORTREGD1, OWMEMSD),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stdw, d, dincdw, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)),
- OP2(ORTREGD1, OWMEMSD),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stdw, d, dinddw, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)),
- OP2(ORTREGD1, OWMEMSD),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset, 1),
- ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0)))
- INSN(stdw, d, doff4dw, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX3(FIX(op, 0), FIX(na, 0), FIX(sz, 0)),
- OP2(ORTREGD1, OWMEMSD),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset, 1),
- ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0)))
- /**/
- INSN(sth, d, load_store, store, C62X,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 5), FIX(r, 0)),
- OP2(ORDREG1, OWMEMSH),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
- ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
- ENC(srcdst, reg, 0)))
- INSN(sth, d, load_store_long, store, C62X,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 5)),
- OP2(ORDREG1, OWMEMLH),
- ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_half, 1),
- ENC(dst, reg, 0)))
- /* 16 bits insn */
- INSN(sth, d, doff4_dsz_01x, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSH),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
- INSN(sth, d, doff4_dsz_111, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSH),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
- INSN(sth, d, dind_dsz_01x, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSH),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
- INSN(sth, d, dind_dsz_111, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSH),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
- INSN(sth, d, dinc_dsz_01x, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSH),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(sth, d, dinc_dsz_111, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSH),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(sth, d, ddec_dsz_01x, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSH),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(sth, d, ddec_dsz_111, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSH),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- /**/
- INSN(stndw, d, store_nonaligned, store, C64X,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
- FIX0(),
- OP2(ORDREGD1, OWMEMND),
- ENC7(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
- ENC(offsetR, mem_offset_noscale, 1), ENC(baseR, reg, 1),
- ENC(sc, scaled, 1), ENC(src, reg_shift, 0)))
- /* 16 bits insn */
- INSN(stndw, d, ddecdw, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)),
- OP2(ORTREGD1, OWMEMND),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one_noscale, 1)))
- INSN(stndw, d, dincdw, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)),
- OP2(ORTREGD1, OWMEMND),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg_shift, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one_noscale, 1)))
- INSN(stndw, d, dinddw, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)),
- OP2(ORTREGD1, OWMEMND),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(src1, mem_offset_noscale, 1),
- ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0)))
- INSN(stndw, d, doff4dw, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX3(FIX(op, 0), FIX(na, 1), FIX(sz, 0)),
- OP2(ORTREGD1, OWMEMND),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(cst, mem_offset_noscale, 1),
- ENC(ptr, reg_ptr, 1), ENC(srcdst, reg_shift, 0)))
- /**/
- INSN(stnw, d, load_store, store, C64X,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_UNALIGNED,
- FIX2(FIX(op, 5), FIX(r, 1)),
- OP2(ORDREG1, OWMEMSW),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
- ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
- ENC(srcdst, reg, 0)))
- /* 16 bits insn */
- INSN(stnw, d, doff4_dsz_110, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
- INSN(stnw, d, dind_dsz_110, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
- INSN(stnw, d, dinc_dsz_110, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stnw, d, ddec_dsz_110, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- /**/
- INSN(stw, d, load_store, store, C62X,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX2(FIX(op, 7), FIX(r, 0)),
- OP2(ORDREG1, OWMEMSW),
- ENC6(ENC(s, data_fu, 0), ENC(y, fu, 0), ENC(mode, mem_mode, 1),
- ENC(offsetR, mem_offset, 1), ENC(baseR, reg, 1),
- ENC(srcdst, reg, 0)))
- INSN(stw, d, load_store_long, store, C62X,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_SIDE_B_ONLY|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 7)),
- OP2(ORDREG1, OWMEMLW),
- ENC4(ENC(s, data_fu, 0), ENC(y, areg, 1), ENC(offsetR, ulcst_dpr_word, 1),
- ENC(dst, reg, 0)))
- /* 16 bits insn */
- INSN(stw, d, doff4_dsz_0xx, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 0)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
- INSN(stw, d, doff4_dsz_100, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset, 1)))
- INSN(stw, d, dind_dsz_0xx, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 0)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
- INSN(stw, d, dind_dsz_100, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(REG_POSITIVE),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(src1, mem_offset, 1)))
- INSN(stw, d, dinc_dsz_0xx, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 0), FIX(sz, 0)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stw, d, dinc_dsz_100, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTINCR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stw, d, ddec_dsz_0xx, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 0), FIX(sz, 0)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stw, d, ddec_dsz_100, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(PREDECR),
- FIX2(FIX(op, 0), FIX(sz, 1)),
- OP2(ORTREG1, OWMEMSW),
- ENC5(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(ptr, reg_ptr, 1), ENC(cst, mem_offset_minus_one, 1)))
- INSN(stw, d, dpp, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSTDECR)|TIC6X_FLAG_INSN16_B15PTR|TIC6X_FLAG_INSN16_NORS,
- FIX2(FIX(op, 0), FIX(dw, 0)),
- OP2(ORTREG1, OWMEMSW),
- ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(cst, mem_offset_minus_one, 1)))
- INSN(stw, d, dstk, store, C64XP,
- TIC6X_FLAG_STORE|TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_INSN16_MEM_MODE(POSITIVE)|TIC6X_FLAG_INSN16_B15PTR,
- FIX2(FIX(op, 0x0), FIX(s, 1)),
- OP2(ORTREG1, OWMEMSW),
- ENC4(ENC(s, fu, 0), ENC(t, rside, 0), ENC(srcdst, reg, 0),
- ENC(cst, mem_offset, 1)))
- /**/
- INSNE(sub, l_si_xsi_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x07)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sub, l_xsi_si_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x17)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sub, l_si_xsi_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x27)),
- OP3(ORREG1, ORXREG1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sub, l_xsi_si_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x37)),
- OP3(ORXREG1, ORREG1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sub, l_s5_xsi_si, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x06)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sub, l_s5_sl_sl, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x24)),
- OP3(OACST, ORREGL1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sub, l_xsi_s5_si, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x2)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1),
- ENC(src2, reg, 0), ENC(dst, reg, 2)))
- INSNE(sub, l_sl_s5_sl, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x20), FIX(x, 0)),
- OP3(ORREGL1, OACST, OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(src1, scst_negate, 1), ENC(src2, reg, 0),
- ENC(dst, reg, 2)))
- INSNE(sub, s_si_xsi_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x17)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(sub, s_s5_xsi_si, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x16)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* Contrary to SPRUFE8, this is the correct encoding for this
- instruction; this instruction can be predicated. */
- INSNE(sub, s_xsi_si_si, s, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x5)),
- OP3(ORXREG1, ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(sub, s_xsi_s5_si, s, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_MACRO,
- FIX1(FIX(op, 0x6)),
- OP3(ORXREG1, OACST, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst_negate, 1),
- ENC(src2, reg, 0), ENC(dst, reg, 2)))
- INSNE(sub, d_si_si_si, d, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x11)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(sub, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x13)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- INSNE(sub, d_si_xsi_si, d, ext_1_or_2_src, 1cycle, C64X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0xc)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(sub, l, l3_sat_0, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(sub, l, lx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x2)),
- OP3(OHWCST0, ORREG1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2)))
- INSN(sub, s, sx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x2)),
- OP3(OHWCST0, ORREG1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 1), ENC(srcdst, reg, 2)))
- INSN(sub, s, sx2op, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2),
- ENC(src2, reg, 1), ENC(x, xpath, 1)))
- INSN(sub, s, s3_sat_x, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(sub, d, dx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x3)),
- OP3(ORREG1, OHWCST1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
- INSN(sub, d, dx2op, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x1)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(srcdst, reg, 0),
- ENC(src2, reg, 1), ENC(srcdst, reg, 2)))
- /**/
- INSNE(subab, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x31)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(subab, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x33)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- INSN(subabs4, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x5a)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(subah, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x35)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(subah, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x37)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- INSNE(subaw, d_si_si_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x39)),
- OP3(ORREG1, ORREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, reg, 1),
- ENC(dst, reg, 2)))
- INSNE(subaw, d_si_u5_si, d, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_NO_CROSS,
- FIX1(FIX(op, 0x3b)),
- OP3(ORREG1, OACST, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg, 0), ENC(src1, ucst, 1),
- ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(subaw, d, dx5p, 1cycle, C64XP, 0,
- FIX1(FIX(op, 1)),
- OP3(ORB15REG1, OACST, OWB15REG1),
- ENC2(ENC(s, fu, 0), ENC(cst, ucst, 1)))
- /**/
- INSN(subc, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x4b)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(subdp, l_dp_xdp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x19)),
- OP3(ORREGD12, ORXREGD12, OWREGD67),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(subdp, l_xdp_dp_dp, l, 1_or_2_src, addsubdp, C67X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x1d)),
- OP3(ORXREGD12, ORREGD12, OWREGD67),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(subdp, s_dp_xdp_dp, s, l_1_or_2_src, addsubdp, C67XP,
- TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x73)),
- OP3(ORREGD12, ORXREGD12, OWREGD67),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(subdp, s_xdp_dp_dp, s, l_1_or_2_src, addsubdp, C67XP,
- TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x77)),
- OP3(ORXREGD12, ORREGD12, OWREGD67),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(subsp, l_sp_xsp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x11)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(subsp, l_xsp_sp_sp, l, 1_or_2_src, 4cycle, C67X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x15)),
- OP3(ORXREG1, ORREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(subsp, s_sp_xsp_sp, s, l_1_or_2_src, 4cycle, C67XP,
- TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x71)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(subsp, s_xsp_sp_sp, s, l_1_or_2_src, 4cycle, C67XP,
- TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x75)),
- OP3(ORXREG1, ORREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(src1, reg, 1), ENC(dst, reg, 2)))
- INSNE(subu, l_ui_xui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(1),
- FIX1(FIX(op, 0x2f)),
- OP3(ORREG1, ORXREG1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(subu, l_xui_ui_ul, l, 1_or_2_src, 1cycle, C62X, TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x3f)),
- OP3(ORXREG1, ORREG1, OWREGL1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(sub2, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x04)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(sub2, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x11)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(sub2, d, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x5)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(sub4, l, 1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x66)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(swap2, l, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x1b), FIX(x, 0)),
- OP2(ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 0), ENC(dst, reg, 1)))
- INSN(swap2, s, 1_or_2_src, 1cycle, C64X, TIC6X_FLAG_MACRO|TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x10), FIX(x, 0)),
- OP2(ORREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 0), ENC(dst, reg, 1)))
- /* Contrary to SPRUFE8, this is the correct encoding for this
- instruction. */
- INSN(swap4, l, unary, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x1)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(swe, nfu, swe, 1cycle, C64XP, 0,
- FIX1(FIX(s, 0)),
- OP0(),
- ENC0())
- INSN(swenr, nfu, swenr, 1cycle, C64XP, 0,
- FIX1(FIX(s, 0)),
- OP0(),
- ENC0())
- INSN(unpkhu4, l, unary, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x03)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(unpkhu4, s, unary, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x03)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(unpklu4, l, unary, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x02)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(unpklu4, s, unary, 1cycle, C64X, 0,
- FIX1(FIX(op, 0x02)),
- OP2(ORXREG1, OWREG1),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSNE(xor, l_ui_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x6f)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(xor, l_s5_xui_ui, l, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x6e)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(xor, s_ui_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x0b)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(xor, s_s5_xui_ui, s, 1_or_2_src, 1cycle, C62X, 0,
- FIX1(FIX(op, 0x0a)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(xor, d_ui_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0xe)),
- OP3(ORREG1, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNE(xor, d_s5_xui_ui, d, ext_1_or_2_src, 1cycle, C64X, 0,
- FIX1(FIX(op, 0xf)),
- OP3(OACST, ORXREG1, OWREG1),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, scst, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- /* 16 bits insn */
- INSN(xor, l, l2c, 1cycle, C64XP, 0,
- FIX1(FIX(op, 0x2)),
- OP3(ORREG1, ORXREG1, OWREG1NORS),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSNU(xor, l, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x7), FIX(unit, 0x0)),
- OP3(ORREG1, OHWCST1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
- INSNU(xor, s, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x7), FIX(unit, 0x1)),
- OP3(ORREG1, OHWCST1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
- INSNU(xor, d, lsdx1, 1cycle, C64XP, TIC6X_FLAG_NO_CROSS,
- FIX2(FIX(op, 0x7), FIX(unit, 0x2)),
- OP3(ORREG1, OHWCST1, OWREG1),
- ENC3(ENC(s, fu, 0), ENC(srcdst, reg, 0), ENC(srcdst, reg, 2)))
- /**/
- INSN(xormpy, m, 1_or_2_src, 4cycle, C64XP, 0,
- FIX1(FIX(op, 0x1b)),
- OP3(ORREG1, ORXREG1, OWREG4),
- ENC5(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src1, reg, 0),
- ENC(src2, reg, 1), ENC(dst, reg, 2)))
- INSN(xpnd2, m, unary, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x19)),
- OP2(ORXREG1, OWREG2),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(xpnd4, m, unary, 1616_m, C64X, 0,
- FIX1(FIX(op, 0x18)),
- OP2(ORXREG1, OWREG2),
- ENC4(ENC(s, fu, 0), ENC(x, xpath, 0), ENC(src2, reg, 0),
- ENC(dst, reg, 1)))
- INSN(zero, s, mvk, 1cycle, C62X, TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
- FIX2(FIX(h, 0), FIX(cst, 0)),
- OP1(OWREG1),
- ENC2(ENC(s, fu, 0), ENC(dst, reg, 0)))
- INSN(zero, l, unary, 1cycle, C64X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1),
- FIX3(FIX(x, 0), FIX(op, 0x05), FIX(src2, 0)),
- OP1(OWREG1),
- ENC2(ENC(s, fu, 0), ENC(dst, reg, 0)))
- INSNE(zero, l_sub, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
- FIX2(FIX(op, 0x07), FIX(x, 0)),
- OP1(OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0),
- ENC(dst, reg, 0)))
- INSNE(zero, l_sub_sl, l, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO,
- FIX2(FIX(op, 0x27), FIX(x, 0)),
- OP1(OWREGL1),
- ENC4(ENC(s, fu, 0), ENC(src1, reg_unused, 0), ENC(src2, reg_unused, 0),
- ENC(dst, reg, 0)))
- INSNE(zero, d_mvk, d, 1_or_2_src, 1cycle, C64X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(1),
- FIX3(FIX(op, 0x00), FIX(src1, 0), FIX(src2, 0)),
- OP1(OWREG1),
- ENC2(ENC(s, fu, 0), ENC(dst, reg, 0)))
- INSNE(zero, d_sub, d, 1_or_2_src, 1cycle, C62X,
- TIC6X_FLAG_NO_CROSS|TIC6X_FLAG_MACRO|TIC6X_FLAG_PREFER(0),
- FIX1(FIX(op, 0x11)),
- OP1(OWREG1),
- ENC4(ENC(s, fu, 0), ENC(src2, reg_unused, 0), ENC(src1, reg_unused, 0),
- ENC(dst, reg, 0)))
- #undef TIC6X_INSN_C64X_AND_C67X
- #undef tic6x_insn_format_nfu_s_branch_nop_cst
- #undef tic6x_insn_format_s_l_1_or_2_src
- #undef RAN
- #undef FIX
- #undef FIX0
- #undef FIX1
- #undef FIX2
- #undef FIX3
- #undef FIX4
- #undef OP0
- #undef OP1
- #undef OP2
- #undef OP3
- #undef OP4
- #undef OACST
- #undef OLCST
- #undef OHWCSTM1
- #undef OHWCST0
- #undef OHWCST1
- #undef OHWCST5
- #undef OHWCST16
- #undef OHWCST24
- #undef OHWCST31
- #undef OFULIST
- #undef ORIRP1
- #undef ORNRP1
- #undef OWREG1
- #undef OWRETREG1
- #undef ORREG1
- #undef ORDREG1
- #undef ORWREG1
- #undef ORAREG1
- #undef ORXREG1
- #undef ORREG12
- #undef ORREG14
- #undef ORXREG14
- #undef OWREG2
- #undef OWREG4
- #undef OWREG9
- #undef OWDREG5
- #undef OWREGL1
- #undef ORREGL1
- #undef OWREGD1
- #undef ORTREG1
- #undef ORTREGD1
- #undef OWTREG5
- #undef OWTREGD5
- #undef OWREGD12
- #undef OWREGD4
- #undef ORREGD1
- #undef OWREGD45
- #undef OWREGD67
- #undef ORDREGD1
- #undef OWDREGD5
- #undef ORREGD12
- #undef ORXREGD12
- #undef ORXREGD1234
- #undef ORREGD1324
- #undef OWREGD910
- #undef OWILC1
- #undef ORCREG1
- #undef OWCREG1
- #undef OWREG1Z
- #undef ORB15REG1
- #undef OWB15REG1
- #undef ORMEMDW
- #undef OWMEMDW
- #undef ORMEMSB
- #undef OWMEMSB
- #undef ORMEMLB
- #undef OWMEMLB
- #undef ORMEMSH
- #undef OWMEMSH
- #undef ORMEMLH
- #undef OWMEMLH
- #undef ORMEMSW
- #undef OWMEMSW
- #undef ORMEMLW
- #undef OWMEMLW
- #undef ORMEMSD
- #undef OWMEMSD
- #undef ORMEMND
- #undef OWMEMND
- #undef ENC
- #undef ENC0
- #undef ENC1
- #undef ENC2
- #undef ENC3
- #undef ENC4
- #undef ENC5
- #undef ENC6
- #undef ENC7
|