IntrinsicsNVVM.td 220 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614
  1. //===- IntrinsicsNVVM.td - Defines NVVM intrinsics ---------*- tablegen -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. //
  9. // This file defines all of the NVVM-specific intrinsics for use with NVPTX.
  10. //
  11. //===----------------------------------------------------------------------===//
  12. // The following intrinsics were once defined here, but are now auto-upgraded
  13. // to target-generic LLVM intrinsics.
  14. //
  15. // * llvm.nvvm.brev32 --> llvm.bitreverse.i32
  16. // * llvm.nvvm.brev64 --> llvm.bitreverse.i64
  17. // * llvm.nvvm.clz.i --> llvm.ctlz.i32
  18. // * llvm.nvvm.clz.ll --> trunc i64 llvm.ctlz.i64(x) to i32
  19. // * llvm.nvvm.popc.i --> llvm.ctpop.i32
  20. // * llvm.nvvm.popc.ll --> trunc i64 llvm.ctpop.i64 to i32
  21. // * llvm.nvvm.abs.i --> select(x >= -x, x, -x)
  22. // * llvm.nvvm.abs.ll --> ibid.
  23. // * llvm.nvvm.max.i --> select(x sge y, x, y)
  24. // * llvm.nvvm.max.ll --> ibid.
  25. // * llvm.nvvm.max.ui --> select(x uge y, x, y)
  26. // * llvm.nvvm.max.ull --> ibid.
  27. // * llvm.nvvm.max.i --> select(x sle y, x, y)
  28. // * llvm.nvvm.max.ll --> ibid.
  29. // * llvm.nvvm.max.ui --> select(x ule y, x, y)
  30. // * llvm.nvvm.max.ull --> ibid.
  31. // * llvm.nvvm.h2f --> llvm.convert.to.fp16.f32
  32. def llvm_global_i8ptr_ty : LLVMQualPointerType<llvm_i8_ty, 1>; // (global)i8*
  33. def llvm_shared_i8ptr_ty : LLVMQualPointerType<llvm_i8_ty, 3>; // (shared)i8*
  34. def llvm_i64ptr_ty : LLVMPointerType<llvm_i64_ty>; // i64*
  35. def llvm_any_i64ptr_ty : LLVMAnyPointerType<llvm_i64_ty>; // (space)i64*
  36. def llvm_shared_i64ptr_ty : LLVMQualPointerType<llvm_i64_ty, 3>; // (shared)i64*
  37. //
  38. // MISC
  39. //
  40. // Helper class that represents a 'fragment' of an NVPTX *MMA instruction.
  41. // Geom: m<M>n<N>k<K>. E.g. m8n32k16
  42. // Frag: [a|b|c|d] ([x1|x2|x4] for ldmatrix)
  43. // PtxEltType: PTX type for the element.
  44. class WMMA_REGS<string Geom, string Frag, string PtxEltType> {
  45. string geom = Geom;
  46. string frag = Frag;
  47. string ptx_elt_type = PtxEltType;
  48. string gft = Geom#":"#Frag#":"#ptx_elt_type;
  49. string ft = frag#":"#ptx_elt_type;
  50. list<LLVMType> regs = !cond(
  51. // mma fp ops use smaller fragments than wmma fp ops
  52. !eq(gft,"m8n8k4:a:f16") : !listsplat(llvm_v2f16_ty, 2),
  53. !eq(gft,"m8n8k4:b:f16") : !listsplat(llvm_v2f16_ty, 2),
  54. !eq(gft,"m16n8k8:a:f16") : !listsplat(llvm_v2f16_ty, 2),
  55. !eq(gft,"m16n8k8:b:f16") : [llvm_v2f16_ty],
  56. !eq(gft,"m16n8k8:c:f16") : !listsplat(llvm_v2f16_ty, 2),
  57. !eq(gft,"m16n8k8:d:f16") : !listsplat(llvm_v2f16_ty, 2),
  58. !eq(gft,"m16n8k8:c:f32") : !listsplat(llvm_float_ty, 4),
  59. !eq(gft,"m16n8k8:d:f32") : !listsplat(llvm_float_ty, 4),
  60. !eq(gft,"m16n8k16:a:f16") : !listsplat(llvm_v2f16_ty, 4),
  61. !eq(gft,"m16n8k16:b:f16") : !listsplat(llvm_v2f16_ty, 2),
  62. !eq(gft,"m16n8k16:c:f16") : !listsplat(llvm_v2f16_ty, 2),
  63. !eq(gft,"m16n8k16:d:f16") : !listsplat(llvm_v2f16_ty, 2),
  64. !eq(gft,"m16n8k16:c:f32") : !listsplat(llvm_float_ty, 4),
  65. !eq(gft,"m16n8k16:d:f32") : !listsplat(llvm_float_ty, 4),
  66. !eq(gft,"m16n8k4:c:f32") : !listsplat(llvm_float_ty, 4),
  67. !eq(gft,"m16n8k4:d:f32") : !listsplat(llvm_float_ty, 4),
  68. // wmma fp16 -> fp16/fp32 @ m16n16k16/m8n32k16/m32n8k16
  69. // All other supported geometries use the same fragment format for f32 and
  70. // f16, so we only need to consider {fragment, type}.
  71. !eq(ft,"a:f16") : !listsplat(llvm_v2f16_ty, 8),
  72. !eq(ft,"b:f16") : !listsplat(llvm_v2f16_ty, 8),
  73. !eq(ft,"c:f16") : !listsplat(llvm_v2f16_ty, 4),
  74. !eq(ft,"d:f16") : !listsplat(llvm_v2f16_ty, 4),
  75. !eq(ft,"c:f32") : !listsplat(llvm_float_ty, 8),
  76. !eq(ft,"d:f32") : !listsplat(llvm_float_ty, 8),
  77. // wmma tf32 -> s32 @ m16n16k8
  78. !eq(gft,"m16n16k8:a:tf32") : !listsplat(llvm_i32_ty, 4),
  79. !eq(gft,"m16n16k8:b:tf32") : !listsplat(llvm_i32_ty, 4),
  80. // mma tf32 -> s32 @ m16n16k8/m16n8k8
  81. !eq(gft,"m16n8k4:a:tf32") : !listsplat(llvm_i32_ty, 2),
  82. !eq(gft,"m16n8k4:b:tf32") : [llvm_i32_ty],
  83. !eq(gft,"m16n8k8:a:tf32") : !listsplat(llvm_i32_ty, 4),
  84. !eq(gft,"m16n8k8:b:tf32") : !listsplat(llvm_i32_ty, 2),
  85. !eq(gft,"m8n8k4:a:f64") : [llvm_double_ty],
  86. !eq(gft,"m8n8k4:b:f64") : [llvm_double_ty],
  87. !eq(gft,"m8n8k4:c:f64") : !listsplat(llvm_double_ty, 2),
  88. !eq(gft,"m8n8k4:d:f64") : !listsplat(llvm_double_ty, 2),
  89. // wmma bf16 -> s32 @ m16n16k16/m8n32k16/m32n8k16
  90. !eq(gft,"m16n16k16:a:bf16") : !listsplat(llvm_i32_ty, 4),
  91. !eq(gft,"m16n16k16:b:bf16") : !listsplat(llvm_i32_ty, 4),
  92. !eq(gft,"m8n32k16:a:bf16") : !listsplat(llvm_i32_ty, 2),
  93. !eq(gft,"m8n32k16:b:bf16") : !listsplat(llvm_i32_ty, 8),
  94. !eq(gft,"m32n8k16:a:bf16") : !listsplat(llvm_i32_ty, 8),
  95. !eq(gft,"m32n8k16:b:bf16") : !listsplat(llvm_i32_ty, 2),
  96. // mma bf16 -> s32 @ m16n8k16/m16n8k8
  97. !eq(gft,"m16n8k16:a:bf16") : !listsplat(llvm_i32_ty, 4),
  98. !eq(gft,"m16n8k16:b:bf16") : !listsplat(llvm_i32_ty, 2),
  99. !eq(gft,"m16n8k8:a:bf16") : !listsplat(llvm_i32_ty, 2),
  100. !eq(gft,"m16n8k8:b:bf16") : [llvm_i32_ty],
  101. // wmma u8/s8 -> s32 @ m16n16k16/m8n32k16/m32n8k16
  102. !eq(gft,"m16n16k16:a:u8") : !listsplat(llvm_i32_ty, 2),
  103. !eq(gft,"m16n16k16:a:s8") : !listsplat(llvm_i32_ty, 2),
  104. !eq(gft,"m16n16k16:b:u8") : !listsplat(llvm_i32_ty, 2),
  105. !eq(gft,"m16n16k16:b:s8") : !listsplat(llvm_i32_ty, 2),
  106. !eq(gft,"m16n16k16:c:s32") : !listsplat(llvm_i32_ty, 8),
  107. !eq(gft,"m16n16k16:d:s32") : !listsplat(llvm_i32_ty, 8),
  108. !eq(gft,"m8n32k16:a:u8") : [llvm_i32_ty],
  109. !eq(gft,"m8n32k16:a:s8") : [llvm_i32_ty],
  110. !eq(gft,"m8n32k16:b:u8") : !listsplat(llvm_i32_ty, 4),
  111. !eq(gft,"m8n32k16:b:s8") : !listsplat(llvm_i32_ty, 4),
  112. !eq(gft,"m8n32k16:c:s32") : !listsplat(llvm_i32_ty, 8),
  113. !eq(gft,"m8n32k16:d:s32") : !listsplat(llvm_i32_ty, 8),
  114. !eq(gft,"m32n8k16:a:u8") : !listsplat(llvm_i32_ty, 4),
  115. !eq(gft,"m32n8k16:a:s8") : !listsplat(llvm_i32_ty, 4),
  116. !eq(gft,"m32n8k16:b:u8") : [llvm_i32_ty],
  117. !eq(gft,"m32n8k16:b:s8") : [llvm_i32_ty],
  118. !eq(gft,"m32n8k16:c:s32") : !listsplat(llvm_i32_ty, 8),
  119. !eq(gft,"m32n8k16:d:s32") : !listsplat(llvm_i32_ty, 8),
  120. // mma u8/s8 -> s32 @ m8n8k16/m16n8k16/m16n8k32
  121. !eq(gft,"m8n8k16:a:u8") : [llvm_i32_ty],
  122. !eq(gft,"m8n8k16:a:s8") : [llvm_i32_ty],
  123. !eq(gft,"m8n8k16:b:u8") : [llvm_i32_ty],
  124. !eq(gft,"m8n8k16:b:s8") : [llvm_i32_ty],
  125. !eq(gft,"m8n8k16:c:s32") : !listsplat(llvm_i32_ty, 2),
  126. !eq(gft,"m8n8k16:d:s32") : !listsplat(llvm_i32_ty, 2),
  127. !eq(gft,"m16n8k16:a:u8") : !listsplat(llvm_i32_ty, 2),
  128. !eq(gft,"m16n8k16:a:s8") : !listsplat(llvm_i32_ty, 2),
  129. !eq(gft,"m16n8k16:b:u8") : [llvm_i32_ty],
  130. !eq(gft,"m16n8k16:b:s8") : [llvm_i32_ty],
  131. !eq(gft,"m16n8k16:c:s32") : !listsplat(llvm_i32_ty, 4),
  132. !eq(gft,"m16n8k16:d:s32") : !listsplat(llvm_i32_ty, 4),
  133. !eq(gft,"m16n8k32:a:u8") : !listsplat(llvm_i32_ty, 4),
  134. !eq(gft,"m16n8k32:a:s8") : !listsplat(llvm_i32_ty, 4),
  135. !eq(gft,"m16n8k32:b:u8") : !listsplat(llvm_i32_ty, 2),
  136. !eq(gft,"m16n8k32:b:s8") : !listsplat(llvm_i32_ty, 2),
  137. !eq(gft,"m16n8k32:c:s32") : !listsplat(llvm_i32_ty, 4),
  138. !eq(gft,"m16n8k32:d:s32") : !listsplat(llvm_i32_ty, 4),
  139. // wmma/mma u4/s4 -> s32 @ m8n8k32 (u4/s4)
  140. !eq(gft,"m8n8k32:a:u4") : [llvm_i32_ty],
  141. !eq(gft,"m8n8k32:a:s4") : [llvm_i32_ty],
  142. !eq(gft,"m8n8k32:b:u4") : [llvm_i32_ty],
  143. !eq(gft,"m8n8k32:b:s4") : [llvm_i32_ty],
  144. !eq(gft,"m8n8k32:c:s32") : !listsplat(llvm_i32_ty, 2),
  145. !eq(gft,"m8n8k32:d:s32") : !listsplat(llvm_i32_ty, 2),
  146. !eq(gft,"m16n8k32:a:u4") : !listsplat(llvm_i32_ty, 2),
  147. !eq(gft,"m16n8k32:a:s4") : !listsplat(llvm_i32_ty, 2),
  148. !eq(gft,"m16n8k32:b:u4") : [llvm_i32_ty],
  149. !eq(gft,"m16n8k32:b:s4") : [llvm_i32_ty],
  150. !eq(gft,"m16n8k32:c:s32") : !listsplat(llvm_i32_ty, 4),
  151. !eq(gft,"m16n8k32:d:s32") : !listsplat(llvm_i32_ty, 4),
  152. !eq(gft,"m16n8k64:a:u4") : !listsplat(llvm_i32_ty, 4),
  153. !eq(gft,"m16n8k64:a:s4") : !listsplat(llvm_i32_ty, 4),
  154. !eq(gft,"m16n8k64:b:u4") : !listsplat(llvm_i32_ty, 2),
  155. !eq(gft,"m16n8k64:b:s4") : !listsplat(llvm_i32_ty, 2),
  156. !eq(gft,"m16n8k64:c:s32") : !listsplat(llvm_i32_ty, 4),
  157. !eq(gft,"m16n8k64:d:s32") : !listsplat(llvm_i32_ty, 4),
  158. // wmma/mma b1 -> s32 @ m8n8k128(b1)
  159. !eq(gft,"m8n8k128:a:b1") : [llvm_i32_ty],
  160. !eq(gft,"m8n8k128:b:b1") : [llvm_i32_ty],
  161. !eq(gft,"m8n8k128:c:s32") : !listsplat(llvm_i32_ty, 2),
  162. !eq(gft,"m8n8k128:d:s32") : !listsplat(llvm_i32_ty, 2),
  163. !eq(gft,"m16n8k128:a:b1") : !listsplat(llvm_i32_ty, 2),
  164. !eq(gft,"m16n8k128:b:b1") : [llvm_i32_ty],
  165. !eq(gft,"m16n8k128:c:s32") : !listsplat(llvm_i32_ty, 4),
  166. !eq(gft,"m16n8k128:d:s32") : !listsplat(llvm_i32_ty, 4),
  167. !eq(gft,"m16n8k256:a:b1") : !listsplat(llvm_i32_ty, 4),
  168. !eq(gft,"m16n8k256:b:b1") : !listsplat(llvm_i32_ty, 2),
  169. !eq(gft,"m16n8k256:c:s32") : !listsplat(llvm_i32_ty, 4),
  170. !eq(gft,"m16n8k256:d:s32") : !listsplat(llvm_i32_ty, 4),
  171. // ldmatrix b16 -> s32 @ m8n8
  172. !eq(gft,"m8n8:x1:b16") : !listsplat(llvm_i32_ty, 1),
  173. !eq(gft,"m8n8:x2:b16") : !listsplat(llvm_i32_ty, 2),
  174. !eq(gft,"m8n8:x4:b16") : !listsplat(llvm_i32_ty, 4),
  175. );
  176. }
  177. class WMMA_NAME_LDST<string Op, WMMA_REGS Frag, string Layout, int WithStride> {
  178. string intr = "llvm.nvvm.wmma."
  179. # Frag.geom
  180. # "." # Op
  181. # "." # Frag.frag
  182. # "." # Layout
  183. # !if(WithStride, ".stride", "")
  184. # "." # Frag.ptx_elt_type
  185. ;
  186. // TODO(tra): record name should ideally use the same field order as the intrinsic.
  187. // E.g. string record = !subst("llvm", "int",
  188. // !subst(".", "_", llvm));
  189. string record = "int_nvvm_wmma_"
  190. # Frag.geom
  191. # "_" # Op
  192. # "_" # Frag.frag
  193. # "_" # Frag.ptx_elt_type
  194. # "_" # Layout
  195. # !if(WithStride, "_stride", "");
  196. }
  197. class MMA_SIGNATURE<WMMA_REGS A, WMMA_REGS B, WMMA_REGS C, WMMA_REGS D> {
  198. list<WMMA_REGS> id_frags = !cond(
  199. // FP16 ops are identified by accumulator & result type.
  200. !eq(A.ptx_elt_type, "f16") : [D, C],
  201. // other ops are identified by input types.
  202. !ne(A.ptx_elt_type, B.ptx_elt_type): [A, B],
  203. true: [A]
  204. );
  205. string ret = !foldl("", id_frags, a, b, !strconcat(a, ".", b.ptx_elt_type));
  206. }
  207. class WMMA_NAME<string ALayout, string BLayout, int Satfinite, string Rnd, string b1op,
  208. WMMA_REGS A, WMMA_REGS B, WMMA_REGS C, WMMA_REGS D> {
  209. string signature = MMA_SIGNATURE<A, B, C, D>.ret;
  210. string llvm = "llvm.nvvm.wmma."
  211. # A.geom
  212. # ".mma"
  213. # b1op
  214. # "." # ALayout
  215. # "." # BLayout
  216. # !if(!ne(Rnd, ""), !strconcat(".", Rnd), "")
  217. # signature
  218. # !if(Satfinite, ".satfinite", "");
  219. string record = !subst(".", "_",
  220. !subst("llvm.", "int_", llvm));
  221. }
  222. class MMA_NAME<string ALayout, string BLayout, int Satfinite, string b1op,
  223. WMMA_REGS A, WMMA_REGS B, WMMA_REGS C, WMMA_REGS D> {
  224. string signature = MMA_SIGNATURE<A, B, C, D>.ret;
  225. string llvm = "llvm.nvvm.mma"
  226. # b1op
  227. # "." # A.geom
  228. # "." # ALayout
  229. # "." # BLayout
  230. # !if(Satfinite, ".satfinite", "")
  231. # signature;
  232. string record = !subst(".", "_",
  233. !subst("llvm.", "int_", llvm));
  234. }
  235. class LDMATRIX_NAME<WMMA_REGS Frag, int Trans> {
  236. string intr = "llvm.nvvm.ldmatrix.sync.aligned"
  237. # "." # Frag.geom
  238. # "." # Frag.frag
  239. # !if(Trans, ".trans", "")
  240. # "." # Frag.ptx_elt_type
  241. ;
  242. string record = !subst(".", "_",
  243. !subst("llvm.", "int_", intr));
  244. }
  245. // Generates list of 4-tuples of WMMA_REGS representing a valid MMA op.
  246. // Geom: list of supported geometries.
  247. // TypeN: PTX type of the corresponding fragment's element.
  248. // TypeB and TypeD may be empty if it must match that of TypeA or TypeC.
  249. class MMA_OPS<list<string> Geom, list<string> TypeA, list<string> TypeB,
  250. list<string> TypeC, list<string> TypeD> {
  251. list<list<WMMA_REGS>> ret =
  252. !foldl([]<list<WMMA_REGS>>, Geom, t1, geom, !listconcat(t1,
  253. !foldl([]<list<WMMA_REGS>>, TypeA, t2, type_a, !listconcat(t2,
  254. !foldl([]<list<WMMA_REGS>>, !if(!size(TypeB), TypeB, [type_a]), t3, type_b, !listconcat(t3,
  255. !foldl([]<list<WMMA_REGS>>, TypeC, t4, type_c, !listconcat(t4,
  256. !foldl([]<list<WMMA_REGS>>, !if(!size(TypeD), TypeD, [type_c]), t5, type_d, !listconcat(t5,
  257. [[WMMA_REGS<geom, "a", type_a>,
  258. WMMA_REGS<geom, "b", type_b>,
  259. WMMA_REGS<geom, "c", type_c>,
  260. WMMA_REGS<geom, "d", type_d>]]))))))))));
  261. // Debugging aid for readable representation of the list above.
  262. list<list<string>> ops = !foreach(x, ret, [x[0].gft, x[1].gft, x[2].gft, x[3].gft]);
  263. }
  264. class MMA_LDST_OPS<list<string> Geom, list<string> Frags, list<string> Types> {
  265. list<WMMA_REGS> ret =
  266. !foldl([]<WMMA_REGS>, Geom, t1, geom, !listconcat(t1,
  267. !foldl([]<WMMA_REGS>, Frags, t2, frag, !listconcat(t2,
  268. !foldl([]<WMMA_REGS>, Types, t3, type, !listconcat(t3,
  269. [WMMA_REGS<geom, frag, type>]))))));
  270. // Debugging aid for readable representation of the list above.
  271. list<string> ops = !foreach(x, ret, x.gft);
  272. }
  273. class LDMATRIX_OPS<list<string> Geom, list<string> Frags, list<string> Types> {
  274. list<WMMA_REGS> ret =
  275. !foldl([]<WMMA_REGS>, Geom, t1, geom, !listconcat(t1,
  276. !foldl([]<WMMA_REGS>, Frags, t2, frag, !listconcat(t2,
  277. !foldl([]<WMMA_REGS>, Types, t3, type, !listconcat(t3,
  278. [WMMA_REGS<geom, frag, type>]))))));
  279. // Debugging aid for readable representation of the list above.
  280. list<string> ops = !foreach(x, ret, x.gft);
  281. }
  282. // Creates list of valid combinations of fragments. This is the main list that
  283. // drives generation of corresponding intrinsics and instructions.
  284. class NVVM_MMA_OPS {
  285. list<list<WMMA_REGS>> tf32_wmma_ops = MMA_OPS<
  286. ["m16n16k8"],
  287. ["tf32"], [], ["f32"], []>.ret;
  288. list<list<WMMA_REGS>> bf16_wmma_ops = MMA_OPS<
  289. ["m16n16k16", "m32n8k16", "m8n32k16"],
  290. ["bf16"], [], ["f32"], []>.ret;
  291. list<list<WMMA_REGS>> f64_wmma_ops = MMA_OPS<
  292. ["m8n8k4"],
  293. ["f64"], [], ["f64"], []>.ret;
  294. list<list<WMMA_REGS>> fp_wmma_ops = MMA_OPS<
  295. ["m16n16k16", "m32n8k16", "m8n32k16"],
  296. ["f16"], [], ["f16", "f32"], ["f16", "f32"]>.ret;
  297. list<list<WMMA_REGS>> int_wmma_ops = MMA_OPS<
  298. ["m16n16k16", "m32n8k16", "m8n32k16"],
  299. ["s8", "u8"], [], ["s32"], []>.ret;
  300. list<list<WMMA_REGS>> subint_wmma_ops = MMA_OPS<
  301. ["m8n8k32"],
  302. ["s4", "u4"], [], ["s32"], []>.ret;
  303. list<list<WMMA_REGS>> bit_wmma_ops = MMA_OPS<
  304. ["m8n8k128"],
  305. ["b1"], [], ["s32"], []>.ret;
  306. list<list<WMMA_REGS>> all_wmma_ops = !listconcat(
  307. tf32_wmma_ops, bf16_wmma_ops, f64_wmma_ops,
  308. fp_wmma_ops, int_wmma_ops, subint_wmma_ops, bit_wmma_ops);
  309. list<list<WMMA_REGS>> tf32_mma_ops = MMA_OPS<
  310. ["m16n8k4", "m16n8k8"],
  311. ["tf32"], [], ["f32"], []>.ret;
  312. list<list<WMMA_REGS>> bf16_mma_ops = MMA_OPS<
  313. ["m16n8k16", "m16n8k8"],
  314. ["bf16"], [], ["f32"], []>.ret;
  315. list<list<WMMA_REGS>> f64_mma_ops = MMA_OPS<
  316. ["m8n8k4"],
  317. ["f64"], [], ["f64"], []>.ret;
  318. list<list<WMMA_REGS>> fp_mma_ops = MMA_OPS<
  319. ["m8n8k4", "m16n8k8", "m16n8k16"],
  320. ["f16"], [], ["f16", "f32"], ["f16", "f32"]>.ret;
  321. list<list<WMMA_REGS>> int_mma_ops = MMA_OPS<
  322. ["m8n8k16", "m16n8k16", "m16n8k32"],
  323. ["s8", "u8"], ["s8", "u8"], ["s32"], []>.ret;
  324. list<list<WMMA_REGS>> subint_mma_ops = MMA_OPS<
  325. ["m8n8k32", "m16n8k32", "m16n8k64"],
  326. ["s4", "u4"], ["s4", "u4"], ["s32"], []>.ret;
  327. list<list<WMMA_REGS>> bit_mma_ops = MMA_OPS<
  328. ["m8n8k128", "m16n8k128", "m16n8k256"],
  329. ["b1"], [], ["s32"], []>.ret;
  330. list<list<WMMA_REGS>> all_mma_ops = !listconcat(
  331. tf32_mma_ops, bf16_mma_ops, f64_mma_ops,
  332. fp_mma_ops, int_mma_ops, subint_mma_ops, bit_mma_ops);
  333. list<WMMA_REGS> ldst_ab_ops = MMA_LDST_OPS<
  334. ["m16n16k16", "m32n8k16", "m8n32k16"],
  335. ["a", "b"], ["f16", "u8", "s8", "bf16"]>.ret;
  336. list<WMMA_REGS> ldst_cd_ops = MMA_LDST_OPS<
  337. ["m16n16k16", "m32n8k16", "m8n32k16"],
  338. ["c", "d"], ["f16", "f32", "s32"]>.ret;
  339. list<WMMA_REGS> ldst_tf32_ab_ops = MMA_LDST_OPS<
  340. ["m16n16k8"],
  341. ["a", "b"], ["tf32"]>.ret;
  342. list<WMMA_REGS> ldst_tf32_cd_ops = MMA_LDST_OPS<
  343. ["m16n16k8"],
  344. ["c", "d"], ["f32"]>.ret;
  345. list<WMMA_REGS> ldst_f64_abcd_ops = MMA_LDST_OPS<
  346. ["m8n8k4"],
  347. ["a", "b", "c", "d"], ["f64"]>.ret;
  348. list<WMMA_REGS> ldst_subint_ab_ops = MMA_LDST_OPS<
  349. ["m8n8k32"], ["a", "b"], ["s4","u4"]>.ret;
  350. list<WMMA_REGS> ldst_bit_ab_ops = MMA_LDST_OPS<
  351. ["m8n8k128"], ["a", "b"], ["b1"]>.ret;
  352. list<WMMA_REGS> ldst_subint_cd_ops = MMA_LDST_OPS<
  353. ["m8n8k32", "m8n8k128"], ["c", "d"], ["s32"]>.ret;
  354. list<WMMA_REGS> all_ldst_ops = !listconcat(ldst_ab_ops, ldst_cd_ops,
  355. ldst_tf32_ab_ops,
  356. ldst_tf32_cd_ops,
  357. ldst_f64_abcd_ops,
  358. ldst_subint_ab_ops,
  359. ldst_bit_ab_ops,
  360. ldst_subint_cd_ops);
  361. // Separate A/B/C fragments (loads) from D (stores).
  362. list<WMMA_REGS> all_ld_ops = !filter(op, all_ldst_ops, !ne(op.frag, "d"));
  363. list<WMMA_REGS> all_st_ops = !filter(op, all_ldst_ops, !eq(op.frag, "d"));
  364. list<WMMA_REGS> ldmatrix_b16_ops = LDMATRIX_OPS<
  365. ["m8n8"], ["x1", "x2", "x4"], ["b16"]>.ret;
  366. list<WMMA_REGS> all_ldmatrix_ops = ldmatrix_b16_ops;
  367. }
  368. def NVVM_MMA_OPS : NVVM_MMA_OPS;
  369. // Returns true if this combination of fragment and layout for WMMA load/store
  370. // ops is supported; false otherwise.
  371. // E.g.
  372. // if NVVM_WMMA_LDST_SUPPORTED<...>.ret then
  373. // def : FOO<>; // The record will only be defined for supported ops.
  374. //
  375. class NVVM_WMMA_LDST_SUPPORTED<WMMA_REGS frag, string layout> {
  376. string f = frag.frag;
  377. string t = frag.ptx_elt_type;
  378. bit ret = !cond(
  379. // Sub-int load and store requires A fragment to be of row layout and B
  380. // fragments to be of column layout.
  381. !and(!or(!eq(t, "b1"),
  382. !eq(t, "u4"),
  383. !eq(t, "s4")),
  384. !or(!and(!eq(f, "a"),
  385. !ne(layout, "row")),
  386. !and(!eq(f, "b"),
  387. !ne(layout, "col")))) : false,
  388. true: true
  389. );
  390. }
  391. // Returns true if this combination of layout/satf/rnd for WMMA ops is
  392. // supported; false otherwise.
  393. // E.g.
  394. // if NVVM_WMMA_SUPPORTED<...>.ret then
  395. // def : FOO<>; // The record will only be defined for supported ops.
  396. //
  397. class NVVM_WMMA_SUPPORTED<list<WMMA_REGS> frags, string layout_a, string layout_b, int satf, string rnd> {
  398. // WMMA ops check both layouts.
  399. string layout = layout_a # ":" # layout_b;
  400. string t = frags[0].ptx_elt_type;
  401. bit ret = !cond(
  402. // only f64 wmma functions support rnd options
  403. // any non f64 type that uses a rnd value is invalid
  404. !and(!ne(t, "f64"), !ne(rnd, "")) : false,
  405. // satf is only valid for select types
  406. !and(!eq(satf, 1),
  407. !ne(t, "s8"),
  408. !ne(t, "u8"),
  409. !ne(t, "s4"),
  410. !ne(t, "u4"),
  411. !ne(t, "f16")): false,
  412. // Sub-int wmma requires row/column layout
  413. !and(!or(!eq(t, "s4"),
  414. !eq(t, "u4"),
  415. !eq(t, "b1")),
  416. !ne(layout, "row:col")) : false,
  417. true: true
  418. );
  419. }
  420. class NVVM_MMA_B1OPS<list<WMMA_REGS> frags> {
  421. list<string> ret = !cond(
  422. !eq(frags[0].ptx_elt_type, "b1") : [".xor.popc", ".and.popc"],
  423. true: [""]
  424. );
  425. }
  426. // Returns true if this combination of layout/satf for MMA ops is supported;
  427. // false otherwise.
  428. // E.g.
  429. // if NVVM_MMA_SUPPORTED<...>.ret then
  430. // def : FOO<>; // The record will only be defined for supported ops.
  431. //
  432. class NVVM_MMA_SUPPORTED<list<WMMA_REGS> frags, string layout_a, string layout_b, int satf> {
  433. // MMA ops check both layouts.
  434. string layout = layout_a # ":" # layout_b;
  435. string a_type = frags[0].ptx_elt_type;
  436. string b_type = frags[1].ptx_elt_type;
  437. string c_type = frags[2].ptx_elt_type;
  438. string d_type = frags[3].ptx_elt_type;
  439. string geom = frags[0].geom;
  440. // gcd is a shortcut used to identify instructions that depend on
  441. // geom+frag_c+frag_d.
  442. string gcd = geom # ":" # c_type # d_type;
  443. bit ret = !cond(
  444. // Limit satf to valid types
  445. !and(!eq(satf, 1),
  446. !ne(a_type, "s8"),
  447. !ne(a_type, "u8"),
  448. !ne(a_type, "s4"),
  449. !ne(a_type, "u4")): false,
  450. // m8n8k4 has no C=f32 D=f16 variant.
  451. !eq(gcd, "m8n8k4:f32f16"): false,
  452. // only m8n8k4 for f16 does not require row:col layout
  453. !and(!ne(layout, "row:col"),
  454. !or(!ne(geom, "m8n8k4"),
  455. !ne(a_type, "f16"))) : false,
  456. // m16n8k8 requires A and B to be the same type and C and D to be the same
  457. // type.
  458. !and(!eq(geom, "m16n8k8"),
  459. !or(!ne(a_type, b_type),
  460. !ne(c_type, d_type))): false,
  461. // m16n8k8 requires C and D to be the same type.
  462. !and(!eq(geom, "m16n8k8"),
  463. !ne(c_type, d_type)): false,
  464. // All other are OK.
  465. true: true
  466. );
  467. }
  468. // Returns true if the fragment is valid for ldmatrix ops is supported;
  469. // false otherwise.
  470. // E.g.
  471. // if NVVM_LDMATRIX_SUPPORTED<...>.ret then
  472. // def : FOO<>; // The record will only be defined for supported ops.
  473. //
  474. class NVVM_LDMATRIX_SUPPORTED<WMMA_REGS frag> {
  475. string g = frag.geom;
  476. string t = frag.ptx_elt_type;
  477. bit ret = !cond(
  478. // Only currently support m8n8 and b16
  479. !and(!eq(g, "m8n8"), !eq(t, "b16")): true,
  480. true: false
  481. );
  482. }
  483. class SHFL_INFO<bit sync, string mode, string type, bit return_pred> {
  484. string Suffix = !if(sync, "sync_", "")
  485. # mode # "_"
  486. # type
  487. # !if(return_pred, "p", "");
  488. string Name = "int_nvvm_shfl_" # Suffix;
  489. string Builtin = "__nvvm_shfl_" # Suffix;
  490. string IntrName = "llvm.nvvm.shfl." # !subst("_",".", Suffix);
  491. bit withGccBuiltin = !not(return_pred);
  492. bit withoutGccBuiltin = return_pred;
  493. LLVMType OpType = !cond(
  494. !eq(type,"i32"): llvm_i32_ty,
  495. !eq(type,"f32"): llvm_float_ty);
  496. list<LLVMType> RetTy = !if(return_pred, [OpType, llvm_i1_ty], [OpType]);
  497. list<LLVMType> ArgsTy = !if(sync,
  498. [llvm_i32_ty, OpType, llvm_i32_ty, llvm_i32_ty],
  499. [OpType, llvm_i32_ty, llvm_i32_ty]);
  500. }
  501. let TargetPrefix = "nvvm" in {
  502. def int_nvvm_prmt : GCCBuiltin<"__nvvm_prmt">,
  503. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  504. [IntrNoMem, Commutative]>;
  505. //
  506. // Min Max
  507. //
  508. def int_nvvm_fmin_f : GCCBuiltin<"__nvvm_fmin_f">,
  509. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  510. [IntrNoMem, IntrSpeculatable, Commutative]>;
  511. def int_nvvm_fmin_ftz_f : GCCBuiltin<"__nvvm_fmin_ftz_f">,
  512. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  513. [IntrNoMem, IntrSpeculatable, Commutative]>;
  514. def int_nvvm_fmax_f : GCCBuiltin<"__nvvm_fmax_f">,
  515. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty]
  516. , [IntrNoMem, IntrSpeculatable, Commutative]>;
  517. def int_nvvm_fmax_ftz_f : GCCBuiltin<"__nvvm_fmax_ftz_f">,
  518. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  519. [IntrNoMem, IntrSpeculatable, Commutative]>;
  520. def int_nvvm_fmin_d : GCCBuiltin<"__nvvm_fmin_d">,
  521. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  522. [IntrNoMem, IntrSpeculatable, Commutative]>;
  523. def int_nvvm_fmax_d : GCCBuiltin<"__nvvm_fmax_d">,
  524. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  525. [IntrNoMem, IntrSpeculatable, Commutative]>;
  526. //
  527. // Multiplication
  528. //
  529. def int_nvvm_mulhi_i : GCCBuiltin<"__nvvm_mulhi_i">,
  530. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  531. [IntrNoMem, IntrSpeculatable, Commutative]>;
  532. def int_nvvm_mulhi_ui : GCCBuiltin<"__nvvm_mulhi_ui">,
  533. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  534. [IntrNoMem, IntrSpeculatable, Commutative]>;
  535. def int_nvvm_mulhi_ll : GCCBuiltin<"__nvvm_mulhi_ll">,
  536. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
  537. [IntrNoMem, IntrSpeculatable, Commutative]>;
  538. def int_nvvm_mulhi_ull : GCCBuiltin<"__nvvm_mulhi_ull">,
  539. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
  540. [IntrNoMem, IntrSpeculatable, Commutative]>;
  541. def int_nvvm_mul_rn_ftz_f : GCCBuiltin<"__nvvm_mul_rn_ftz_f">,
  542. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  543. [IntrNoMem, IntrSpeculatable, Commutative]>;
  544. def int_nvvm_mul_rn_f : GCCBuiltin<"__nvvm_mul_rn_f">,
  545. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  546. [IntrNoMem, IntrSpeculatable, Commutative]>;
  547. def int_nvvm_mul_rz_ftz_f : GCCBuiltin<"__nvvm_mul_rz_ftz_f">,
  548. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  549. [IntrNoMem, IntrSpeculatable, Commutative]>;
  550. def int_nvvm_mul_rz_f : GCCBuiltin<"__nvvm_mul_rz_f">,
  551. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  552. [IntrNoMem, IntrSpeculatable, Commutative]>;
  553. def int_nvvm_mul_rm_ftz_f : GCCBuiltin<"__nvvm_mul_rm_ftz_f">,
  554. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  555. [IntrNoMem, IntrSpeculatable, Commutative]>;
  556. def int_nvvm_mul_rm_f : GCCBuiltin<"__nvvm_mul_rm_f">,
  557. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  558. [IntrNoMem, IntrSpeculatable, Commutative]>;
  559. def int_nvvm_mul_rp_ftz_f : GCCBuiltin<"__nvvm_mul_rp_ftz_f">,
  560. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  561. [IntrNoMem, IntrSpeculatable, Commutative]>;
  562. def int_nvvm_mul_rp_f : GCCBuiltin<"__nvvm_mul_rp_f">,
  563. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  564. [IntrNoMem, IntrSpeculatable, Commutative]>;
  565. def int_nvvm_mul_rn_d : GCCBuiltin<"__nvvm_mul_rn_d">,
  566. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  567. [IntrNoMem, IntrSpeculatable, Commutative]>;
  568. def int_nvvm_mul_rz_d : GCCBuiltin<"__nvvm_mul_rz_d">,
  569. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  570. [IntrNoMem, IntrSpeculatable, Commutative]>;
  571. def int_nvvm_mul_rm_d : GCCBuiltin<"__nvvm_mul_rm_d">,
  572. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  573. [IntrNoMem, IntrSpeculatable, Commutative]>;
  574. def int_nvvm_mul_rp_d : GCCBuiltin<"__nvvm_mul_rp_d">,
  575. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  576. [IntrNoMem, IntrSpeculatable, Commutative]>;
  577. def int_nvvm_mul24_i : GCCBuiltin<"__nvvm_mul24_i">,
  578. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  579. [IntrNoMem, IntrSpeculatable, Commutative]>;
  580. def int_nvvm_mul24_ui : GCCBuiltin<"__nvvm_mul24_ui">,
  581. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  582. [IntrNoMem, IntrSpeculatable, Commutative]>;
  583. //
  584. // Div
  585. //
  586. def int_nvvm_div_approx_ftz_f : GCCBuiltin<"__nvvm_div_approx_ftz_f">,
  587. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  588. [IntrNoMem]>;
  589. def int_nvvm_div_approx_f : GCCBuiltin<"__nvvm_div_approx_f">,
  590. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  591. [IntrNoMem]>;
  592. def int_nvvm_div_rn_ftz_f : GCCBuiltin<"__nvvm_div_rn_ftz_f">,
  593. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  594. [IntrNoMem]>;
  595. def int_nvvm_div_rn_f : GCCBuiltin<"__nvvm_div_rn_f">,
  596. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  597. [IntrNoMem]>;
  598. def int_nvvm_div_rz_ftz_f : GCCBuiltin<"__nvvm_div_rz_ftz_f">,
  599. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  600. [IntrNoMem]>;
  601. def int_nvvm_div_rz_f : GCCBuiltin<"__nvvm_div_rz_f">,
  602. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  603. [IntrNoMem]>;
  604. def int_nvvm_div_rm_ftz_f : GCCBuiltin<"__nvvm_div_rm_ftz_f">,
  605. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  606. [IntrNoMem]>;
  607. def int_nvvm_div_rm_f : GCCBuiltin<"__nvvm_div_rm_f">,
  608. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  609. [IntrNoMem]>;
  610. def int_nvvm_div_rp_ftz_f : GCCBuiltin<"__nvvm_div_rp_ftz_f">,
  611. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  612. [IntrNoMem]>;
  613. def int_nvvm_div_rp_f : GCCBuiltin<"__nvvm_div_rp_f">,
  614. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  615. [IntrNoMem]>;
  616. def int_nvvm_div_rn_d : GCCBuiltin<"__nvvm_div_rn_d">,
  617. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  618. [IntrNoMem]>;
  619. def int_nvvm_div_rz_d : GCCBuiltin<"__nvvm_div_rz_d">,
  620. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  621. [IntrNoMem]>;
  622. def int_nvvm_div_rm_d : GCCBuiltin<"__nvvm_div_rm_d">,
  623. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  624. [IntrNoMem]>;
  625. def int_nvvm_div_rp_d : GCCBuiltin<"__nvvm_div_rp_d">,
  626. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  627. [IntrNoMem]>;
  628. //
  629. // Sad
  630. //
  631. def int_nvvm_sad_i : GCCBuiltin<"__nvvm_sad_i">,
  632. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  633. [IntrNoMem, Commutative]>;
  634. def int_nvvm_sad_ui : GCCBuiltin<"__nvvm_sad_ui">,
  635. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  636. [IntrNoMem, Commutative]>;
  637. //
  638. // Floor Ceil
  639. //
  640. def int_nvvm_floor_ftz_f : GCCBuiltin<"__nvvm_floor_ftz_f">,
  641. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  642. def int_nvvm_floor_f : GCCBuiltin<"__nvvm_floor_f">,
  643. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  644. def int_nvvm_floor_d : GCCBuiltin<"__nvvm_floor_d">,
  645. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  646. def int_nvvm_ceil_ftz_f : GCCBuiltin<"__nvvm_ceil_ftz_f">,
  647. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  648. def int_nvvm_ceil_f : GCCBuiltin<"__nvvm_ceil_f">,
  649. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  650. def int_nvvm_ceil_d : GCCBuiltin<"__nvvm_ceil_d">,
  651. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  652. //
  653. // Abs
  654. //
  655. def int_nvvm_fabs_ftz_f : GCCBuiltin<"__nvvm_fabs_ftz_f">,
  656. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  657. def int_nvvm_fabs_f : GCCBuiltin<"__nvvm_fabs_f">,
  658. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  659. def int_nvvm_fabs_d : GCCBuiltin<"__nvvm_fabs_d">,
  660. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  661. //
  662. // Round
  663. //
  664. def int_nvvm_round_ftz_f : GCCBuiltin<"__nvvm_round_ftz_f">,
  665. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  666. def int_nvvm_round_f : GCCBuiltin<"__nvvm_round_f">,
  667. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  668. def int_nvvm_round_d : GCCBuiltin<"__nvvm_round_d">,
  669. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  670. //
  671. // Trunc
  672. //
  673. def int_nvvm_trunc_ftz_f : GCCBuiltin<"__nvvm_trunc_ftz_f">,
  674. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  675. def int_nvvm_trunc_f : GCCBuiltin<"__nvvm_trunc_f">,
  676. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  677. def int_nvvm_trunc_d : GCCBuiltin<"__nvvm_trunc_d">,
  678. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  679. //
  680. // Saturate
  681. //
  682. def int_nvvm_saturate_ftz_f : GCCBuiltin<"__nvvm_saturate_ftz_f">,
  683. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  684. def int_nvvm_saturate_f : GCCBuiltin<"__nvvm_saturate_f">,
  685. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  686. def int_nvvm_saturate_d : GCCBuiltin<"__nvvm_saturate_d">,
  687. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  688. //
  689. // Exp2 Log2
  690. //
  691. def int_nvvm_ex2_approx_ftz_f : GCCBuiltin<"__nvvm_ex2_approx_ftz_f">,
  692. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  693. def int_nvvm_ex2_approx_f : GCCBuiltin<"__nvvm_ex2_approx_f">,
  694. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  695. def int_nvvm_ex2_approx_d : GCCBuiltin<"__nvvm_ex2_approx_d">,
  696. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  697. def int_nvvm_lg2_approx_ftz_f : GCCBuiltin<"__nvvm_lg2_approx_ftz_f">,
  698. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  699. def int_nvvm_lg2_approx_f : GCCBuiltin<"__nvvm_lg2_approx_f">,
  700. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  701. def int_nvvm_lg2_approx_d : GCCBuiltin<"__nvvm_lg2_approx_d">,
  702. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  703. //
  704. // Sin Cos
  705. //
  706. def int_nvvm_sin_approx_ftz_f : GCCBuiltin<"__nvvm_sin_approx_ftz_f">,
  707. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  708. def int_nvvm_sin_approx_f : GCCBuiltin<"__nvvm_sin_approx_f">,
  709. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  710. def int_nvvm_cos_approx_ftz_f : GCCBuiltin<"__nvvm_cos_approx_ftz_f">,
  711. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  712. def int_nvvm_cos_approx_f : GCCBuiltin<"__nvvm_cos_approx_f">,
  713. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  714. //
  715. // Fma
  716. //
  717. def int_nvvm_fma_rn_ftz_f : GCCBuiltin<"__nvvm_fma_rn_ftz_f">,
  718. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
  719. [IntrNoMem, IntrSpeculatable]>;
  720. def int_nvvm_fma_rn_f : GCCBuiltin<"__nvvm_fma_rn_f">,
  721. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
  722. [IntrNoMem, IntrSpeculatable]>;
  723. def int_nvvm_fma_rz_ftz_f : GCCBuiltin<"__nvvm_fma_rz_ftz_f">,
  724. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
  725. [IntrNoMem, IntrSpeculatable]>;
  726. def int_nvvm_fma_rz_f : GCCBuiltin<"__nvvm_fma_rz_f">,
  727. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
  728. [IntrNoMem, IntrSpeculatable]>;
  729. def int_nvvm_fma_rm_ftz_f : GCCBuiltin<"__nvvm_fma_rm_ftz_f">,
  730. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
  731. [IntrNoMem, IntrSpeculatable]>;
  732. def int_nvvm_fma_rm_f : GCCBuiltin<"__nvvm_fma_rm_f">,
  733. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
  734. [IntrNoMem, IntrSpeculatable]>;
  735. def int_nvvm_fma_rp_ftz_f : GCCBuiltin<"__nvvm_fma_rp_ftz_f">,
  736. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
  737. [IntrNoMem, IntrSpeculatable]>;
  738. def int_nvvm_fma_rp_f : GCCBuiltin<"__nvvm_fma_rp_f">,
  739. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
  740. [IntrNoMem, IntrSpeculatable]>;
  741. def int_nvvm_fma_rn_d : GCCBuiltin<"__nvvm_fma_rn_d">,
  742. DefaultAttrsIntrinsic<[llvm_double_ty],
  743. [llvm_double_ty, llvm_double_ty, llvm_double_ty],
  744. [IntrNoMem, IntrSpeculatable]>;
  745. def int_nvvm_fma_rz_d : GCCBuiltin<"__nvvm_fma_rz_d">,
  746. DefaultAttrsIntrinsic<[llvm_double_ty],
  747. [llvm_double_ty, llvm_double_ty, llvm_double_ty],
  748. [IntrNoMem, IntrSpeculatable]>;
  749. def int_nvvm_fma_rm_d : GCCBuiltin<"__nvvm_fma_rm_d">,
  750. DefaultAttrsIntrinsic<[llvm_double_ty],
  751. [llvm_double_ty, llvm_double_ty, llvm_double_ty],
  752. [IntrNoMem, IntrSpeculatable]>;
  753. def int_nvvm_fma_rp_d : GCCBuiltin<"__nvvm_fma_rp_d">,
  754. DefaultAttrsIntrinsic<[llvm_double_ty],
  755. [llvm_double_ty, llvm_double_ty, llvm_double_ty],
  756. [IntrNoMem, IntrSpeculatable]>;
  757. //
  758. // Rcp
  759. //
  760. def int_nvvm_rcp_rn_ftz_f : GCCBuiltin<"__nvvm_rcp_rn_ftz_f">,
  761. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  762. def int_nvvm_rcp_rn_f : GCCBuiltin<"__nvvm_rcp_rn_f">,
  763. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  764. def int_nvvm_rcp_rz_ftz_f : GCCBuiltin<"__nvvm_rcp_rz_ftz_f">,
  765. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  766. def int_nvvm_rcp_rz_f : GCCBuiltin<"__nvvm_rcp_rz_f">,
  767. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  768. def int_nvvm_rcp_rm_ftz_f : GCCBuiltin<"__nvvm_rcp_rm_ftz_f">,
  769. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  770. def int_nvvm_rcp_rm_f : GCCBuiltin<"__nvvm_rcp_rm_f">,
  771. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  772. def int_nvvm_rcp_rp_ftz_f : GCCBuiltin<"__nvvm_rcp_rp_ftz_f">,
  773. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  774. def int_nvvm_rcp_rp_f : GCCBuiltin<"__nvvm_rcp_rp_f">,
  775. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  776. def int_nvvm_rcp_rn_d : GCCBuiltin<"__nvvm_rcp_rn_d">,
  777. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  778. def int_nvvm_rcp_rz_d : GCCBuiltin<"__nvvm_rcp_rz_d">,
  779. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  780. def int_nvvm_rcp_rm_d : GCCBuiltin<"__nvvm_rcp_rm_d">,
  781. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  782. def int_nvvm_rcp_rp_d : GCCBuiltin<"__nvvm_rcp_rp_d">,
  783. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  784. def int_nvvm_rcp_approx_ftz_d : GCCBuiltin<"__nvvm_rcp_approx_ftz_d">,
  785. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  786. //
  787. // Sqrt
  788. //
  789. def int_nvvm_sqrt_f : GCCBuiltin<"__nvvm_sqrt_f">,
  790. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  791. def int_nvvm_sqrt_rn_ftz_f : GCCBuiltin<"__nvvm_sqrt_rn_ftz_f">,
  792. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  793. def int_nvvm_sqrt_rn_f : GCCBuiltin<"__nvvm_sqrt_rn_f">,
  794. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  795. def int_nvvm_sqrt_rz_ftz_f : GCCBuiltin<"__nvvm_sqrt_rz_ftz_f">,
  796. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  797. def int_nvvm_sqrt_rz_f : GCCBuiltin<"__nvvm_sqrt_rz_f">,
  798. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  799. def int_nvvm_sqrt_rm_ftz_f : GCCBuiltin<"__nvvm_sqrt_rm_ftz_f">,
  800. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  801. def int_nvvm_sqrt_rm_f : GCCBuiltin<"__nvvm_sqrt_rm_f">,
  802. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  803. def int_nvvm_sqrt_rp_ftz_f : GCCBuiltin<"__nvvm_sqrt_rp_ftz_f">,
  804. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  805. def int_nvvm_sqrt_rp_f : GCCBuiltin<"__nvvm_sqrt_rp_f">,
  806. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  807. def int_nvvm_sqrt_approx_ftz_f : GCCBuiltin<"__nvvm_sqrt_approx_ftz_f">,
  808. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  809. def int_nvvm_sqrt_approx_f : GCCBuiltin<"__nvvm_sqrt_approx_f">,
  810. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  811. def int_nvvm_sqrt_rn_d : GCCBuiltin<"__nvvm_sqrt_rn_d">,
  812. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  813. def int_nvvm_sqrt_rz_d : GCCBuiltin<"__nvvm_sqrt_rz_d">,
  814. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  815. def int_nvvm_sqrt_rm_d : GCCBuiltin<"__nvvm_sqrt_rm_d">,
  816. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  817. def int_nvvm_sqrt_rp_d : GCCBuiltin<"__nvvm_sqrt_rp_d">,
  818. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  819. //
  820. // Rsqrt
  821. //
  822. def int_nvvm_rsqrt_approx_ftz_f : GCCBuiltin<"__nvvm_rsqrt_approx_ftz_f">,
  823. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  824. def int_nvvm_rsqrt_approx_f : GCCBuiltin<"__nvvm_rsqrt_approx_f">,
  825. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
  826. def int_nvvm_rsqrt_approx_d : GCCBuiltin<"__nvvm_rsqrt_approx_d">,
  827. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
  828. //
  829. // Add
  830. //
  831. def int_nvvm_add_rn_ftz_f : GCCBuiltin<"__nvvm_add_rn_ftz_f">,
  832. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  833. [IntrNoMem, IntrSpeculatable, Commutative]>;
  834. def int_nvvm_add_rn_f : GCCBuiltin<"__nvvm_add_rn_f">,
  835. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  836. [IntrNoMem, IntrSpeculatable, Commutative]>;
  837. def int_nvvm_add_rz_ftz_f : GCCBuiltin<"__nvvm_add_rz_ftz_f">,
  838. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  839. [IntrNoMem, IntrSpeculatable, Commutative]>;
  840. def int_nvvm_add_rz_f : GCCBuiltin<"__nvvm_add_rz_f">,
  841. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  842. [IntrNoMem, IntrSpeculatable, Commutative]>;
  843. def int_nvvm_add_rm_ftz_f : GCCBuiltin<"__nvvm_add_rm_ftz_f">,
  844. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  845. [IntrNoMem, IntrSpeculatable, Commutative]>;
  846. def int_nvvm_add_rm_f : GCCBuiltin<"__nvvm_add_rm_f">,
  847. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  848. [IntrNoMem, IntrSpeculatable, Commutative]>;
  849. def int_nvvm_add_rp_ftz_f : GCCBuiltin<"__nvvm_add_rp_ftz_f">,
  850. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  851. [IntrNoMem, IntrSpeculatable, Commutative]>;
  852. def int_nvvm_add_rp_f : GCCBuiltin<"__nvvm_add_rp_f">,
  853. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
  854. [IntrNoMem, IntrSpeculatable, Commutative]>;
  855. def int_nvvm_add_rn_d : GCCBuiltin<"__nvvm_add_rn_d">,
  856. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  857. [IntrNoMem, IntrSpeculatable, Commutative]>;
  858. def int_nvvm_add_rz_d : GCCBuiltin<"__nvvm_add_rz_d">,
  859. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  860. [IntrNoMem, IntrSpeculatable, Commutative]>;
  861. def int_nvvm_add_rm_d : GCCBuiltin<"__nvvm_add_rm_d">,
  862. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  863. [IntrNoMem, IntrSpeculatable, Commutative]>;
  864. def int_nvvm_add_rp_d : GCCBuiltin<"__nvvm_add_rp_d">,
  865. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
  866. [IntrNoMem, IntrSpeculatable, Commutative]>;
  867. //
  868. // Convert
  869. //
  870. def int_nvvm_d2f_rn_ftz : GCCBuiltin<"__nvvm_d2f_rn_ftz">,
  871. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  872. def int_nvvm_d2f_rn : GCCBuiltin<"__nvvm_d2f_rn">,
  873. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  874. def int_nvvm_d2f_rz_ftz : GCCBuiltin<"__nvvm_d2f_rz_ftz">,
  875. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  876. def int_nvvm_d2f_rz : GCCBuiltin<"__nvvm_d2f_rz">,
  877. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  878. def int_nvvm_d2f_rm_ftz : GCCBuiltin<"__nvvm_d2f_rm_ftz">,
  879. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  880. def int_nvvm_d2f_rm : GCCBuiltin<"__nvvm_d2f_rm">,
  881. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  882. def int_nvvm_d2f_rp_ftz : GCCBuiltin<"__nvvm_d2f_rp_ftz">,
  883. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  884. def int_nvvm_d2f_rp : GCCBuiltin<"__nvvm_d2f_rp">,
  885. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  886. def int_nvvm_d2i_rn : GCCBuiltin<"__nvvm_d2i_rn">,
  887. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  888. def int_nvvm_d2i_rz : GCCBuiltin<"__nvvm_d2i_rz">,
  889. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  890. def int_nvvm_d2i_rm : GCCBuiltin<"__nvvm_d2i_rm">,
  891. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  892. def int_nvvm_d2i_rp : GCCBuiltin<"__nvvm_d2i_rp">,
  893. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  894. def int_nvvm_d2ui_rn : GCCBuiltin<"__nvvm_d2ui_rn">,
  895. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  896. def int_nvvm_d2ui_rz : GCCBuiltin<"__nvvm_d2ui_rz">,
  897. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  898. def int_nvvm_d2ui_rm : GCCBuiltin<"__nvvm_d2ui_rm">,
  899. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  900. def int_nvvm_d2ui_rp : GCCBuiltin<"__nvvm_d2ui_rp">,
  901. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  902. def int_nvvm_i2d_rn : GCCBuiltin<"__nvvm_i2d_rn">,
  903. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  904. def int_nvvm_i2d_rz : GCCBuiltin<"__nvvm_i2d_rz">,
  905. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  906. def int_nvvm_i2d_rm : GCCBuiltin<"__nvvm_i2d_rm">,
  907. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  908. def int_nvvm_i2d_rp : GCCBuiltin<"__nvvm_i2d_rp">,
  909. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  910. def int_nvvm_ui2d_rn : GCCBuiltin<"__nvvm_ui2d_rn">,
  911. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  912. def int_nvvm_ui2d_rz : GCCBuiltin<"__nvvm_ui2d_rz">,
  913. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  914. def int_nvvm_ui2d_rm : GCCBuiltin<"__nvvm_ui2d_rm">,
  915. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  916. def int_nvvm_ui2d_rp : GCCBuiltin<"__nvvm_ui2d_rp">,
  917. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  918. def int_nvvm_f2i_rn_ftz : GCCBuiltin<"__nvvm_f2i_rn_ftz">,
  919. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  920. def int_nvvm_f2i_rn : GCCBuiltin<"__nvvm_f2i_rn">,
  921. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  922. def int_nvvm_f2i_rz_ftz : GCCBuiltin<"__nvvm_f2i_rz_ftz">,
  923. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  924. def int_nvvm_f2i_rz : GCCBuiltin<"__nvvm_f2i_rz">,
  925. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  926. def int_nvvm_f2i_rm_ftz : GCCBuiltin<"__nvvm_f2i_rm_ftz">,
  927. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  928. def int_nvvm_f2i_rm : GCCBuiltin<"__nvvm_f2i_rm">,
  929. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  930. def int_nvvm_f2i_rp_ftz : GCCBuiltin<"__nvvm_f2i_rp_ftz">,
  931. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  932. def int_nvvm_f2i_rp : GCCBuiltin<"__nvvm_f2i_rp">,
  933. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  934. def int_nvvm_f2ui_rn_ftz : GCCBuiltin<"__nvvm_f2ui_rn_ftz">,
  935. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  936. def int_nvvm_f2ui_rn : GCCBuiltin<"__nvvm_f2ui_rn">,
  937. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  938. def int_nvvm_f2ui_rz_ftz : GCCBuiltin<"__nvvm_f2ui_rz_ftz">,
  939. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  940. def int_nvvm_f2ui_rz : GCCBuiltin<"__nvvm_f2ui_rz">,
  941. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  942. def int_nvvm_f2ui_rm_ftz : GCCBuiltin<"__nvvm_f2ui_rm_ftz">,
  943. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  944. def int_nvvm_f2ui_rm : GCCBuiltin<"__nvvm_f2ui_rm">,
  945. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  946. def int_nvvm_f2ui_rp_ftz : GCCBuiltin<"__nvvm_f2ui_rp_ftz">,
  947. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  948. def int_nvvm_f2ui_rp : GCCBuiltin<"__nvvm_f2ui_rp">,
  949. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  950. def int_nvvm_i2f_rn : GCCBuiltin<"__nvvm_i2f_rn">,
  951. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  952. def int_nvvm_i2f_rz : GCCBuiltin<"__nvvm_i2f_rz">,
  953. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  954. def int_nvvm_i2f_rm : GCCBuiltin<"__nvvm_i2f_rm">,
  955. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  956. def int_nvvm_i2f_rp : GCCBuiltin<"__nvvm_i2f_rp">,
  957. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  958. def int_nvvm_ui2f_rn : GCCBuiltin<"__nvvm_ui2f_rn">,
  959. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  960. def int_nvvm_ui2f_rz : GCCBuiltin<"__nvvm_ui2f_rz">,
  961. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  962. def int_nvvm_ui2f_rm : GCCBuiltin<"__nvvm_ui2f_rm">,
  963. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  964. def int_nvvm_ui2f_rp : GCCBuiltin<"__nvvm_ui2f_rp">,
  965. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  966. def int_nvvm_lohi_i2d : GCCBuiltin<"__nvvm_lohi_i2d">,
  967. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i32_ty, llvm_i32_ty],
  968. [IntrNoMem, IntrSpeculatable, Commutative]>;
  969. def int_nvvm_d2i_lo : GCCBuiltin<"__nvvm_d2i_lo">,
  970. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  971. def int_nvvm_d2i_hi : GCCBuiltin<"__nvvm_d2i_hi">,
  972. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  973. def int_nvvm_f2ll_rn_ftz : GCCBuiltin<"__nvvm_f2ll_rn_ftz">,
  974. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  975. def int_nvvm_f2ll_rn : GCCBuiltin<"__nvvm_f2ll_rn">,
  976. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  977. def int_nvvm_f2ll_rz_ftz : GCCBuiltin<"__nvvm_f2ll_rz_ftz">,
  978. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  979. def int_nvvm_f2ll_rz : GCCBuiltin<"__nvvm_f2ll_rz">,
  980. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  981. def int_nvvm_f2ll_rm_ftz : GCCBuiltin<"__nvvm_f2ll_rm_ftz">,
  982. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  983. def int_nvvm_f2ll_rm : GCCBuiltin<"__nvvm_f2ll_rm">,
  984. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  985. def int_nvvm_f2ll_rp_ftz : GCCBuiltin<"__nvvm_f2ll_rp_ftz">,
  986. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  987. def int_nvvm_f2ll_rp : GCCBuiltin<"__nvvm_f2ll_rp">,
  988. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  989. def int_nvvm_f2ull_rn_ftz : GCCBuiltin<"__nvvm_f2ull_rn_ftz">,
  990. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  991. def int_nvvm_f2ull_rn : GCCBuiltin<"__nvvm_f2ull_rn">,
  992. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  993. def int_nvvm_f2ull_rz_ftz : GCCBuiltin<"__nvvm_f2ull_rz_ftz">,
  994. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  995. def int_nvvm_f2ull_rz : GCCBuiltin<"__nvvm_f2ull_rz">,
  996. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  997. def int_nvvm_f2ull_rm_ftz : GCCBuiltin<"__nvvm_f2ull_rm_ftz">,
  998. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  999. def int_nvvm_f2ull_rm : GCCBuiltin<"__nvvm_f2ull_rm">,
  1000. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  1001. def int_nvvm_f2ull_rp_ftz : GCCBuiltin<"__nvvm_f2ull_rp_ftz">,
  1002. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  1003. def int_nvvm_f2ull_rp : GCCBuiltin<"__nvvm_f2ull_rp">,
  1004. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  1005. def int_nvvm_d2ll_rn : GCCBuiltin<"__nvvm_d2ll_rn">,
  1006. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  1007. def int_nvvm_d2ll_rz : GCCBuiltin<"__nvvm_d2ll_rz">,
  1008. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  1009. def int_nvvm_d2ll_rm : GCCBuiltin<"__nvvm_d2ll_rm">,
  1010. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  1011. def int_nvvm_d2ll_rp : GCCBuiltin<"__nvvm_d2ll_rp">,
  1012. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  1013. def int_nvvm_d2ull_rn : GCCBuiltin<"__nvvm_d2ull_rn">,
  1014. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  1015. def int_nvvm_d2ull_rz : GCCBuiltin<"__nvvm_d2ull_rz">,
  1016. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  1017. def int_nvvm_d2ull_rm : GCCBuiltin<"__nvvm_d2ull_rm">,
  1018. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  1019. def int_nvvm_d2ull_rp : GCCBuiltin<"__nvvm_d2ull_rp">,
  1020. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  1021. def int_nvvm_ll2f_rn : GCCBuiltin<"__nvvm_ll2f_rn">,
  1022. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1023. def int_nvvm_ll2f_rz : GCCBuiltin<"__nvvm_ll2f_rz">,
  1024. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1025. def int_nvvm_ll2f_rm : GCCBuiltin<"__nvvm_ll2f_rm">,
  1026. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1027. def int_nvvm_ll2f_rp : GCCBuiltin<"__nvvm_ll2f_rp">,
  1028. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1029. def int_nvvm_ull2f_rn : GCCBuiltin<"__nvvm_ull2f_rn">,
  1030. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1031. def int_nvvm_ull2f_rz : GCCBuiltin<"__nvvm_ull2f_rz">,
  1032. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1033. def int_nvvm_ull2f_rm : GCCBuiltin<"__nvvm_ull2f_rm">,
  1034. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1035. def int_nvvm_ull2f_rp : GCCBuiltin<"__nvvm_ull2f_rp">,
  1036. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1037. def int_nvvm_ll2d_rn : GCCBuiltin<"__nvvm_ll2d_rn">,
  1038. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1039. def int_nvvm_ll2d_rz : GCCBuiltin<"__nvvm_ll2d_rz">,
  1040. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1041. def int_nvvm_ll2d_rm : GCCBuiltin<"__nvvm_ll2d_rm">,
  1042. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1043. def int_nvvm_ll2d_rp : GCCBuiltin<"__nvvm_ll2d_rp">,
  1044. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1045. def int_nvvm_ull2d_rn : GCCBuiltin<"__nvvm_ull2d_rn">,
  1046. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1047. def int_nvvm_ull2d_rz : GCCBuiltin<"__nvvm_ull2d_rz">,
  1048. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1049. def int_nvvm_ull2d_rm : GCCBuiltin<"__nvvm_ull2d_rm">,
  1050. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1051. def int_nvvm_ull2d_rp : GCCBuiltin<"__nvvm_ull2d_rp">,
  1052. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1053. def int_nvvm_f2h_rn_ftz : GCCBuiltin<"__nvvm_f2h_rn_ftz">,
  1054. DefaultAttrsIntrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  1055. def int_nvvm_f2h_rn : GCCBuiltin<"__nvvm_f2h_rn">,
  1056. DefaultAttrsIntrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  1057. def int_nvvm_ff2bf16x2_rn : GCCBuiltin<"__nvvm_ff2bf16x2_rn">,
  1058. Intrinsic<[llvm_i32_ty], [llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
  1059. def int_nvvm_ff2bf16x2_rn_relu : GCCBuiltin<"__nvvm_ff2bf16x2_rn_relu">,
  1060. Intrinsic<[llvm_i32_ty], [llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
  1061. def int_nvvm_ff2bf16x2_rz : GCCBuiltin<"__nvvm_ff2bf16x2_rz">,
  1062. Intrinsic<[llvm_i32_ty], [llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
  1063. def int_nvvm_ff2bf16x2_rz_relu : GCCBuiltin<"__nvvm_ff2bf16x2_rz_relu">,
  1064. Intrinsic<[llvm_i32_ty], [llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
  1065. def int_nvvm_ff2f16x2_rn : GCCBuiltin<"__nvvm_ff2f16x2_rn">,
  1066. Intrinsic<[llvm_v2f16_ty], [llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
  1067. def int_nvvm_ff2f16x2_rn_relu : GCCBuiltin<"__nvvm_ff2f16x2_rn_relu">,
  1068. Intrinsic<[llvm_v2f16_ty], [llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
  1069. def int_nvvm_ff2f16x2_rz : GCCBuiltin<"__nvvm_ff2f16x2_rz">,
  1070. Intrinsic<[llvm_v2f16_ty], [llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
  1071. def int_nvvm_ff2f16x2_rz_relu : GCCBuiltin<"__nvvm_ff2f16x2_rz_relu">,
  1072. Intrinsic<[llvm_v2f16_ty], [llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
  1073. def int_nvvm_f2bf16_rn : GCCBuiltin<"__nvvm_f2bf16_rn">,
  1074. Intrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem]>;
  1075. def int_nvvm_f2bf16_rn_relu : GCCBuiltin<"__nvvm_f2bf16_rn_relu">,
  1076. Intrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem]>;
  1077. def int_nvvm_f2bf16_rz : GCCBuiltin<"__nvvm_f2bf16_rz">,
  1078. Intrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem]>;
  1079. def int_nvvm_f2bf16_rz_relu : GCCBuiltin<"__nvvm_f2bf16_rz_relu">,
  1080. Intrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem]>;
  1081. def int_nvvm_f2tf32_rna : GCCBuiltin<"__nvvm_f2tf32_rna">,
  1082. Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
  1083. //
  1084. // Bitcast
  1085. //
  1086. def int_nvvm_bitcast_f2i : GCCBuiltin<"__nvvm_bitcast_f2i">,
  1087. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem, IntrSpeculatable]>;
  1088. def int_nvvm_bitcast_i2f : GCCBuiltin<"__nvvm_bitcast_i2f">,
  1089. DefaultAttrsIntrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem, IntrSpeculatable]>;
  1090. def int_nvvm_bitcast_ll2d : GCCBuiltin<"__nvvm_bitcast_ll2d">,
  1091. DefaultAttrsIntrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem, IntrSpeculatable]>;
  1092. def int_nvvm_bitcast_d2ll : GCCBuiltin<"__nvvm_bitcast_d2ll">,
  1093. DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem, IntrSpeculatable]>;
  1094. // FNS
  1095. def int_nvvm_fns : GCCBuiltin<"__nvvm_fns">,
  1096. DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1097. [IntrNoMem]>;
  1098. // Atomics not available as llvm intrinsics.
  1099. def int_nvvm_atomic_load_inc_32 : Intrinsic<[llvm_i32_ty],
  1100. [LLVMAnyPointerType<llvm_i32_ty>, llvm_i32_ty],
  1101. [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
  1102. def int_nvvm_atomic_load_dec_32 : Intrinsic<[llvm_i32_ty],
  1103. [LLVMAnyPointerType<llvm_i32_ty>, llvm_i32_ty],
  1104. [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
  1105. class SCOPED_ATOMIC2_impl<LLVMType elty>
  1106. : Intrinsic<[elty],
  1107. [LLVMAnyPointerType<LLVMMatchType<0>>, LLVMMatchType<0>],
  1108. [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
  1109. class SCOPED_ATOMIC3_impl<LLVMType elty>
  1110. : Intrinsic<[elty],
  1111. [LLVMAnyPointerType<LLVMMatchType<0>>, LLVMMatchType<0>,
  1112. LLVMMatchType<0>],
  1113. [IntrArgMemOnly, NoCapture<ArgIndex<0>>]>;
  1114. multiclass PTXAtomicWithScope2<LLVMType elty> {
  1115. def _cta : SCOPED_ATOMIC2_impl<elty>;
  1116. def _sys : SCOPED_ATOMIC2_impl<elty>;
  1117. }
  1118. multiclass PTXAtomicWithScope3<LLVMType elty> {
  1119. def _cta : SCOPED_ATOMIC3_impl<elty>;
  1120. def _sys : SCOPED_ATOMIC3_impl<elty>;
  1121. }
  1122. multiclass PTXAtomicWithScope2_fi {
  1123. defm _f: PTXAtomicWithScope2<llvm_anyfloat_ty>;
  1124. defm _i: PTXAtomicWithScope2<llvm_anyint_ty>;
  1125. }
  1126. defm int_nvvm_atomic_add_gen : PTXAtomicWithScope2_fi;
  1127. defm int_nvvm_atomic_inc_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
  1128. defm int_nvvm_atomic_dec_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
  1129. defm int_nvvm_atomic_exch_gen_i: PTXAtomicWithScope2<llvm_anyint_ty>;
  1130. defm int_nvvm_atomic_xor_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
  1131. defm int_nvvm_atomic_max_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
  1132. defm int_nvvm_atomic_min_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
  1133. defm int_nvvm_atomic_or_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
  1134. defm int_nvvm_atomic_and_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
  1135. defm int_nvvm_atomic_cas_gen_i : PTXAtomicWithScope3<llvm_anyint_ty>;
  1136. // Bar.Sync
  1137. // The builtin for "bar.sync 0" is called __syncthreads. Unlike most of the
  1138. // intrinsics in this file, this one is a user-facing API.
  1139. def int_nvvm_barrier0 : GCCBuiltin<"__syncthreads">,
  1140. Intrinsic<[], [], [IntrConvergent]>;
  1141. // Synchronize all threads in the CTA at barrier 'n'.
  1142. def int_nvvm_barrier_n : GCCBuiltin<"__nvvm_bar_n">,
  1143. Intrinsic<[], [llvm_i32_ty], [IntrConvergent]>;
  1144. // Synchronize 'm', a multiple of warp size, (arg 2) threads in
  1145. // the CTA at barrier 'n' (arg 1).
  1146. def int_nvvm_barrier : GCCBuiltin<"__nvvm_bar">,
  1147. Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], [IntrConvergent]>;
  1148. def int_nvvm_barrier0_popc : GCCBuiltin<"__nvvm_bar0_popc">,
  1149. Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrConvergent]>;
  1150. def int_nvvm_barrier0_and : GCCBuiltin<"__nvvm_bar0_and">,
  1151. Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrConvergent]>;
  1152. def int_nvvm_barrier0_or : GCCBuiltin<"__nvvm_bar0_or">,
  1153. Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrConvergent]>;
  1154. def int_nvvm_bar_sync :
  1155. Intrinsic<[], [llvm_i32_ty], [IntrConvergent]>,
  1156. GCCBuiltin<"__nvvm_bar_sync">;
  1157. def int_nvvm_bar_warp_sync :
  1158. Intrinsic<[], [llvm_i32_ty], [IntrConvergent]>,
  1159. GCCBuiltin<"__nvvm_bar_warp_sync">;
  1160. // barrier.sync id[, cnt]
  1161. def int_nvvm_barrier_sync :
  1162. Intrinsic<[], [llvm_i32_ty], [IntrConvergent]>,
  1163. GCCBuiltin<"__nvvm_barrier_sync">;
  1164. def int_nvvm_barrier_sync_cnt :
  1165. Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], [IntrConvergent]>,
  1166. GCCBuiltin<"__nvvm_barrier_sync_cnt">;
  1167. // Membar
  1168. def int_nvvm_membar_cta : GCCBuiltin<"__nvvm_membar_cta">,
  1169. Intrinsic<[], [], []>;
  1170. def int_nvvm_membar_gl : GCCBuiltin<"__nvvm_membar_gl">,
  1171. Intrinsic<[], [], []>;
  1172. def int_nvvm_membar_sys : GCCBuiltin<"__nvvm_membar_sys">,
  1173. Intrinsic<[], [], []>;
  1174. // Async Copy
  1175. def int_nvvm_cp_async_mbarrier_arrive :
  1176. GCCBuiltin<"__nvvm_cp_async_mbarrier_arrive">,
  1177. Intrinsic<[],[llvm_i64ptr_ty],[IntrConvergent]>;
  1178. def int_nvvm_cp_async_mbarrier_arrive_shared :
  1179. GCCBuiltin<"__nvvm_cp_async_mbarrier_arrive_shared">,
  1180. Intrinsic<[],[llvm_shared_i64ptr_ty],[IntrConvergent]>;
  1181. def int_nvvm_cp_async_mbarrier_arrive_noinc :
  1182. GCCBuiltin<"__nvvm_cp_async_mbarrier_arrive_noinc">,
  1183. Intrinsic<[],[llvm_i64ptr_ty],[IntrConvergent]>;
  1184. def int_nvvm_cp_async_mbarrier_arrive_noinc_shared :
  1185. GCCBuiltin<"__nvvm_cp_async_mbarrier_arrive_noinc_shared">,
  1186. Intrinsic<[],[llvm_shared_i64ptr_ty],[IntrConvergent]>;
  1187. def int_nvvm_cp_async_ca_shared_global_4 :
  1188. GCCBuiltin<"__nvvm_cp_async_ca_shared_global_4">,
  1189. Intrinsic<[],[llvm_shared_i8ptr_ty, llvm_global_i8ptr_ty],
  1190. [IntrArgMemOnly, NoAlias<ArgIndex<0>>, NoAlias<ArgIndex<1>>,
  1191. WriteOnly<ArgIndex<0>>, ReadOnly<ArgIndex<1>>],
  1192. "llvm.nvvm.cp.async.ca.shared.global.4">;
  1193. def int_nvvm_cp_async_ca_shared_global_8 :
  1194. GCCBuiltin<"__nvvm_cp_async_ca_shared_global_8">,
  1195. Intrinsic<[],[llvm_shared_i8ptr_ty, llvm_global_i8ptr_ty],
  1196. [IntrArgMemOnly, NoAlias<ArgIndex<0>>, NoAlias<ArgIndex<1>>,
  1197. WriteOnly<ArgIndex<0>>, ReadOnly<ArgIndex<1>>],
  1198. "llvm.nvvm.cp.async.ca.shared.global.8">;
  1199. def int_nvvm_cp_async_ca_shared_global_16 :
  1200. GCCBuiltin<"__nvvm_cp_async_ca_shared_global_16">,
  1201. Intrinsic<[],[llvm_shared_i8ptr_ty, llvm_global_i8ptr_ty],
  1202. [IntrArgMemOnly, NoAlias<ArgIndex<0>>, NoAlias<ArgIndex<1>>,
  1203. WriteOnly<ArgIndex<0>>, ReadOnly<ArgIndex<1>>],
  1204. "llvm.nvvm.cp.async.ca.shared.global.16">;
  1205. def int_nvvm_cp_async_cg_shared_global_16 :
  1206. GCCBuiltin<"__nvvm_cp_async_cg_shared_global_16">,
  1207. Intrinsic<[],[llvm_shared_i8ptr_ty, llvm_global_i8ptr_ty],
  1208. [IntrArgMemOnly, NoAlias<ArgIndex<0>>, NoAlias<ArgIndex<1>>,
  1209. WriteOnly<ArgIndex<0>>, ReadOnly<ArgIndex<1>>],
  1210. "llvm.nvvm.cp.async.cg.shared.global.16">;
  1211. def int_nvvm_cp_async_commit_group :
  1212. GCCBuiltin<"__nvvm_cp_async_commit_group">,
  1213. Intrinsic<[],[],[]>;
  1214. def int_nvvm_cp_async_wait_group :
  1215. GCCBuiltin<"__nvvm_cp_async_wait_group">,
  1216. Intrinsic<[],[llvm_i32_ty],[ImmArg<ArgIndex<0>>]>;
  1217. def int_nvvm_cp_async_wait_all :
  1218. GCCBuiltin<"__nvvm_cp_async_wait_all">,
  1219. Intrinsic<[],[],[]>;
  1220. // mbarrier
  1221. def int_nvvm_mbarrier_init : GCCBuiltin<"__nvvm_mbarrier_init">,
  1222. Intrinsic<[],[llvm_i64ptr_ty, llvm_i32_ty],[IntrConvergent]>;
  1223. def int_nvvm_mbarrier_init_shared :
  1224. GCCBuiltin<"__nvvm_mbarrier_init_shared">,
  1225. Intrinsic<[],[llvm_shared_i64ptr_ty, llvm_i32_ty],[IntrConvergent]>;
  1226. def int_nvvm_mbarrier_inval : GCCBuiltin<"__nvvm_mbarrier_inval">,
  1227. Intrinsic<[],[llvm_i64ptr_ty],
  1228. [IntrConvergent, IntrWriteMem, IntrArgMemOnly,
  1229. WriteOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>]>;
  1230. def int_nvvm_mbarrier_inval_shared :
  1231. GCCBuiltin<"__nvvm_mbarrier_inval_shared">,
  1232. Intrinsic<[],[llvm_shared_i64ptr_ty],
  1233. [IntrConvergent, IntrWriteMem, IntrArgMemOnly,
  1234. WriteOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>]>;
  1235. def int_nvvm_mbarrier_arrive : GCCBuiltin<"__nvvm_mbarrier_arrive">,
  1236. Intrinsic<[llvm_i64_ty],[llvm_i64ptr_ty],[IntrConvergent]>;
  1237. def int_nvvm_mbarrier_arrive_shared :
  1238. GCCBuiltin<"__nvvm_mbarrier_arrive_shared">,
  1239. Intrinsic<[llvm_i64_ty],[llvm_shared_i64ptr_ty],[IntrConvergent]>;
  1240. def int_nvvm_mbarrier_arrive_noComplete :
  1241. GCCBuiltin<"__nvvm_mbarrier_arrive_noComplete">,
  1242. Intrinsic<[llvm_i64_ty],[llvm_i64ptr_ty, llvm_i32_ty],[IntrConvergent]>;
  1243. def int_nvvm_mbarrier_arrive_noComplete_shared :
  1244. GCCBuiltin<"__nvvm_mbarrier_arrive_noComplete_shared">,
  1245. Intrinsic<[llvm_i64_ty],[llvm_shared_i64ptr_ty, llvm_i32_ty],[IntrConvergent]>;
  1246. def int_nvvm_mbarrier_arrive_drop :
  1247. GCCBuiltin<"__nvvm_mbarrier_arrive_drop">,
  1248. Intrinsic<[llvm_i64_ty],[llvm_i64ptr_ty],[IntrConvergent]>;
  1249. def int_nvvm_mbarrier_arrive_drop_shared :
  1250. GCCBuiltin<"__nvvm_mbarrier_arrive_drop_shared">,
  1251. Intrinsic<[llvm_i64_ty],[llvm_shared_i64ptr_ty],[IntrConvergent]>;
  1252. def int_nvvm_mbarrier_arrive_drop_noComplete :
  1253. GCCBuiltin<"__nvvm_mbarrier_arrive_drop_noComplete">,
  1254. Intrinsic<[llvm_i64_ty],[llvm_i64ptr_ty, llvm_i32_ty],[IntrConvergent]>;
  1255. def int_nvvm_mbarrier_arrive_drop_noComplete_shared :
  1256. GCCBuiltin<"__nvvm_mbarrier_arrive_drop_noComplete_shared">,
  1257. Intrinsic<[llvm_i64_ty],[llvm_shared_i64ptr_ty, llvm_i32_ty],[IntrConvergent]>;
  1258. def int_nvvm_mbarrier_test_wait :
  1259. GCCBuiltin<"__nvvm_mbarrier_test_wait">,
  1260. Intrinsic<[llvm_i1_ty],[llvm_i64ptr_ty, llvm_i64_ty],[IntrConvergent]>;
  1261. def int_nvvm_mbarrier_test_wait_shared :
  1262. GCCBuiltin<"__nvvm_mbarrier_test_wait_shared">,
  1263. Intrinsic<[llvm_i1_ty],[llvm_shared_i64ptr_ty, llvm_i64_ty],[IntrConvergent]>;
  1264. def int_nvvm_mbarrier_pending_count :
  1265. GCCBuiltin<"__nvvm_mbarrier_pending_count">,
  1266. Intrinsic<[llvm_i32_ty],[llvm_i64_ty],[IntrNoMem, IntrConvergent]>;
  1267. // Generated within nvvm. Use for ldu on sm_20 or later. Second arg is the
  1268. // pointer's alignment.
  1269. def int_nvvm_ldu_global_i : Intrinsic<[llvm_anyint_ty],
  1270. [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
  1271. [IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
  1272. "llvm.nvvm.ldu.global.i">;
  1273. def int_nvvm_ldu_global_f : Intrinsic<[llvm_anyfloat_ty],
  1274. [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
  1275. [IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
  1276. "llvm.nvvm.ldu.global.f">;
  1277. def int_nvvm_ldu_global_p : Intrinsic<[llvm_anyptr_ty],
  1278. [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
  1279. [IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
  1280. "llvm.nvvm.ldu.global.p">;
  1281. // Generated within nvvm. Use for ldg on sm_35 or later. Second arg is the
  1282. // pointer's alignment.
  1283. def int_nvvm_ldg_global_i : Intrinsic<[llvm_anyint_ty],
  1284. [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
  1285. [IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
  1286. "llvm.nvvm.ldg.global.i">;
  1287. def int_nvvm_ldg_global_f : Intrinsic<[llvm_anyfloat_ty],
  1288. [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
  1289. [IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
  1290. "llvm.nvvm.ldg.global.f">;
  1291. def int_nvvm_ldg_global_p : Intrinsic<[llvm_anyptr_ty],
  1292. [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
  1293. [IntrReadMem, IntrArgMemOnly, NoCapture<ArgIndex<0>>],
  1294. "llvm.nvvm.ldg.global.p">;
  1295. // Use for generic pointers
  1296. // - These intrinsics are used to convert address spaces.
  1297. // - The input pointer and output pointer must have the same type, except for
  1298. // the address-space. (This restriction is not enforced here as there is
  1299. // currently no way to describe it).
  1300. // - This complements the llvm bitcast, which can be used to cast one type
  1301. // of pointer to another type of pointer, while the address space remains
  1302. // the same.
  1303. def int_nvvm_ptr_local_to_gen: DefaultAttrsIntrinsic<[llvm_anyptr_ty],
  1304. [llvm_anyptr_ty], [IntrNoMem, IntrSpeculatable],
  1305. "llvm.nvvm.ptr.local.to.gen">;
  1306. def int_nvvm_ptr_shared_to_gen: DefaultAttrsIntrinsic<[llvm_anyptr_ty],
  1307. [llvm_anyptr_ty], [IntrNoMem, IntrSpeculatable],
  1308. "llvm.nvvm.ptr.shared.to.gen">;
  1309. def int_nvvm_ptr_global_to_gen: DefaultAttrsIntrinsic<[llvm_anyptr_ty],
  1310. [llvm_anyptr_ty], [IntrNoMem, IntrSpeculatable],
  1311. "llvm.nvvm.ptr.global.to.gen">;
  1312. def int_nvvm_ptr_constant_to_gen: DefaultAttrsIntrinsic<[llvm_anyptr_ty],
  1313. [llvm_anyptr_ty], [IntrNoMem, IntrSpeculatable],
  1314. "llvm.nvvm.ptr.constant.to.gen">;
  1315. def int_nvvm_ptr_gen_to_global: DefaultAttrsIntrinsic<[llvm_anyptr_ty],
  1316. [llvm_anyptr_ty], [IntrNoMem, IntrSpeculatable],
  1317. "llvm.nvvm.ptr.gen.to.global">;
  1318. def int_nvvm_ptr_gen_to_shared: DefaultAttrsIntrinsic<[llvm_anyptr_ty],
  1319. [llvm_anyptr_ty], [IntrNoMem, IntrSpeculatable],
  1320. "llvm.nvvm.ptr.gen.to.shared">;
  1321. def int_nvvm_ptr_gen_to_local: DefaultAttrsIntrinsic<[llvm_anyptr_ty],
  1322. [llvm_anyptr_ty], [IntrNoMem, IntrSpeculatable],
  1323. "llvm.nvvm.ptr.gen.to.local">;
  1324. def int_nvvm_ptr_gen_to_constant: DefaultAttrsIntrinsic<[llvm_anyptr_ty],
  1325. [llvm_anyptr_ty], [IntrNoMem, IntrSpeculatable],
  1326. "llvm.nvvm.ptr.gen.to.constant">;
  1327. // Used in nvvm internally to help address space opt and ptx code generation
  1328. // This is for params that are passed to kernel functions by pointer by-val.
  1329. def int_nvvm_ptr_gen_to_param: Intrinsic<[llvm_anyptr_ty],
  1330. [llvm_anyptr_ty],
  1331. [IntrNoMem, IntrSpeculatable],
  1332. "llvm.nvvm.ptr.gen.to.param">;
  1333. // Move intrinsics, used in nvvm internally
  1334. def int_nvvm_move_i16 : Intrinsic<[llvm_i16_ty], [llvm_i16_ty], [IntrNoMem],
  1335. "llvm.nvvm.move.i16">;
  1336. def int_nvvm_move_i32 : Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem],
  1337. "llvm.nvvm.move.i32">;
  1338. def int_nvvm_move_i64 : Intrinsic<[llvm_i64_ty], [llvm_i64_ty], [IntrNoMem],
  1339. "llvm.nvvm.move.i64">;
  1340. def int_nvvm_move_float : Intrinsic<[llvm_float_ty], [llvm_float_ty],
  1341. [IntrNoMem], "llvm.nvvm.move.float">;
  1342. def int_nvvm_move_double : Intrinsic<[llvm_double_ty], [llvm_double_ty],
  1343. [IntrNoMem], "llvm.nvvm.move.double">;
  1344. def int_nvvm_move_ptr : Intrinsic<[llvm_anyptr_ty], [llvm_anyptr_ty],
  1345. [IntrNoMem, NoCapture<ArgIndex<0>>], "llvm.nvvm.move.ptr">;
  1346. // For getting the handle from a texture or surface variable
  1347. def int_nvvm_texsurf_handle
  1348. : Intrinsic<[llvm_i64_ty], [llvm_metadata_ty, llvm_any_i64ptr_ty],
  1349. [IntrNoMem], "llvm.nvvm.texsurf.handle">;
  1350. def int_nvvm_texsurf_handle_internal
  1351. : Intrinsic<[llvm_i64_ty], [llvm_anyptr_ty],
  1352. [IntrNoMem], "llvm.nvvm.texsurf.handle.internal">;
  1353. /// Error / Warn
  1354. def int_nvvm_compiler_error :
  1355. Intrinsic<[], [llvm_anyptr_ty], [], "llvm.nvvm.compiler.error">;
  1356. def int_nvvm_compiler_warn :
  1357. Intrinsic<[], [llvm_anyptr_ty], [], "llvm.nvvm.compiler.warn">;
  1358. def int_nvvm_reflect :
  1359. Intrinsic<[llvm_i32_ty], [llvm_anyptr_ty], [IntrNoMem], "llvm.nvvm.reflect">;
  1360. // isspacep.{const, global, local, shared}
  1361. def int_nvvm_isspacep_const
  1362. : DefaultAttrsIntrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem, IntrSpeculatable],
  1363. "llvm.nvvm.isspacep.const">,
  1364. GCCBuiltin<"__nvvm_isspacep_const">;
  1365. def int_nvvm_isspacep_global
  1366. : DefaultAttrsIntrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem, IntrSpeculatable],
  1367. "llvm.nvvm.isspacep.global">,
  1368. GCCBuiltin<"__nvvm_isspacep_global">;
  1369. def int_nvvm_isspacep_local
  1370. : DefaultAttrsIntrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem, IntrSpeculatable],
  1371. "llvm.nvvm.isspacep.local">,
  1372. GCCBuiltin<"__nvvm_isspacep_local">;
  1373. def int_nvvm_isspacep_shared
  1374. : DefaultAttrsIntrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem, IntrSpeculatable],
  1375. "llvm.nvvm.isspacep.shared">,
  1376. GCCBuiltin<"__nvvm_isspacep_shared">;
  1377. // Environment register read
  1378. def int_nvvm_read_ptx_sreg_envreg0
  1379. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1380. "llvm.nvvm.read.ptx.sreg.envreg0">,
  1381. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg0">;
  1382. def int_nvvm_read_ptx_sreg_envreg1
  1383. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1384. "llvm.nvvm.read.ptx.sreg.envreg1">,
  1385. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg1">;
  1386. def int_nvvm_read_ptx_sreg_envreg2
  1387. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1388. "llvm.nvvm.read.ptx.sreg.envreg2">,
  1389. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg2">;
  1390. def int_nvvm_read_ptx_sreg_envreg3
  1391. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1392. "llvm.nvvm.read.ptx.sreg.envreg3">,
  1393. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg3">;
  1394. def int_nvvm_read_ptx_sreg_envreg4
  1395. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1396. "llvm.nvvm.read.ptx.sreg.envreg4">,
  1397. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg4">;
  1398. def int_nvvm_read_ptx_sreg_envreg5
  1399. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1400. "llvm.nvvm.read.ptx.sreg.envreg5">,
  1401. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg5">;
  1402. def int_nvvm_read_ptx_sreg_envreg6
  1403. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1404. "llvm.nvvm.read.ptx.sreg.envreg6">,
  1405. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg6">;
  1406. def int_nvvm_read_ptx_sreg_envreg7
  1407. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1408. "llvm.nvvm.read.ptx.sreg.envreg7">,
  1409. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg7">;
  1410. def int_nvvm_read_ptx_sreg_envreg8
  1411. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1412. "llvm.nvvm.read.ptx.sreg.envreg8">,
  1413. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg8">;
  1414. def int_nvvm_read_ptx_sreg_envreg9
  1415. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1416. "llvm.nvvm.read.ptx.sreg.envreg9">,
  1417. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg9">;
  1418. def int_nvvm_read_ptx_sreg_envreg10
  1419. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1420. "llvm.nvvm.read.ptx.sreg.envreg10">,
  1421. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg10">;
  1422. def int_nvvm_read_ptx_sreg_envreg11
  1423. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1424. "llvm.nvvm.read.ptx.sreg.envreg11">,
  1425. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg11">;
  1426. def int_nvvm_read_ptx_sreg_envreg12
  1427. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1428. "llvm.nvvm.read.ptx.sreg.envreg12">,
  1429. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg12">;
  1430. def int_nvvm_read_ptx_sreg_envreg13
  1431. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1432. "llvm.nvvm.read.ptx.sreg.envreg13">,
  1433. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg13">;
  1434. def int_nvvm_read_ptx_sreg_envreg14
  1435. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1436. "llvm.nvvm.read.ptx.sreg.envreg14">,
  1437. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg14">;
  1438. def int_nvvm_read_ptx_sreg_envreg15
  1439. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1440. "llvm.nvvm.read.ptx.sreg.envreg15">,
  1441. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg15">;
  1442. def int_nvvm_read_ptx_sreg_envreg16
  1443. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1444. "llvm.nvvm.read.ptx.sreg.envreg16">,
  1445. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg16">;
  1446. def int_nvvm_read_ptx_sreg_envreg17
  1447. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1448. "llvm.nvvm.read.ptx.sreg.envreg17">,
  1449. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg17">;
  1450. def int_nvvm_read_ptx_sreg_envreg18
  1451. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1452. "llvm.nvvm.read.ptx.sreg.envreg18">,
  1453. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg18">;
  1454. def int_nvvm_read_ptx_sreg_envreg19
  1455. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1456. "llvm.nvvm.read.ptx.sreg.envreg19">,
  1457. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg19">;
  1458. def int_nvvm_read_ptx_sreg_envreg20
  1459. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1460. "llvm.nvvm.read.ptx.sreg.envreg20">,
  1461. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg20">;
  1462. def int_nvvm_read_ptx_sreg_envreg21
  1463. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1464. "llvm.nvvm.read.ptx.sreg.envreg21">,
  1465. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg21">;
  1466. def int_nvvm_read_ptx_sreg_envreg22
  1467. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1468. "llvm.nvvm.read.ptx.sreg.envreg22">,
  1469. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg22">;
  1470. def int_nvvm_read_ptx_sreg_envreg23
  1471. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1472. "llvm.nvvm.read.ptx.sreg.envreg23">,
  1473. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg23">;
  1474. def int_nvvm_read_ptx_sreg_envreg24
  1475. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1476. "llvm.nvvm.read.ptx.sreg.envreg24">,
  1477. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg24">;
  1478. def int_nvvm_read_ptx_sreg_envreg25
  1479. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1480. "llvm.nvvm.read.ptx.sreg.envreg25">,
  1481. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg25">;
  1482. def int_nvvm_read_ptx_sreg_envreg26
  1483. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1484. "llvm.nvvm.read.ptx.sreg.envreg26">,
  1485. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg26">;
  1486. def int_nvvm_read_ptx_sreg_envreg27
  1487. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1488. "llvm.nvvm.read.ptx.sreg.envreg27">,
  1489. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg27">;
  1490. def int_nvvm_read_ptx_sreg_envreg28
  1491. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1492. "llvm.nvvm.read.ptx.sreg.envreg28">,
  1493. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg28">;
  1494. def int_nvvm_read_ptx_sreg_envreg29
  1495. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1496. "llvm.nvvm.read.ptx.sreg.envreg29">,
  1497. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg29">;
  1498. def int_nvvm_read_ptx_sreg_envreg30
  1499. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1500. "llvm.nvvm.read.ptx.sreg.envreg30">,
  1501. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg30">;
  1502. def int_nvvm_read_ptx_sreg_envreg31
  1503. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable],
  1504. "llvm.nvvm.read.ptx.sreg.envreg31">,
  1505. GCCBuiltin<"__nvvm_read_ptx_sreg_envreg31">;
  1506. // Texture Fetch
  1507. // texmode_independent
  1508. def int_nvvm_tex_1d_v4f32_s32
  1509. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1510. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [],
  1511. "llvm.nvvm.tex.1d.v4f32.s32">;
  1512. def int_nvvm_tex_1d_v4f32_f32
  1513. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1514. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [],
  1515. "llvm.nvvm.tex.1d.v4f32.f32">;
  1516. def int_nvvm_tex_1d_level_v4f32_f32
  1517. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1518. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1519. "llvm.nvvm.tex.1d.level.v4f32.f32">;
  1520. def int_nvvm_tex_1d_grad_v4f32_f32
  1521. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1522. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1523. llvm_float_ty], [],
  1524. "llvm.nvvm.tex.1d.grad.v4f32.f32">;
  1525. def int_nvvm_tex_1d_v4s32_s32
  1526. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1527. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [],
  1528. "llvm.nvvm.tex.1d.v4s32.s32">;
  1529. def int_nvvm_tex_1d_v4s32_f32
  1530. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1531. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [],
  1532. "llvm.nvvm.tex.1d.v4s32.f32">;
  1533. def int_nvvm_tex_1d_level_v4s32_f32
  1534. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1535. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1536. "llvm.nvvm.tex.1d.level.v4s32.f32">;
  1537. def int_nvvm_tex_1d_grad_v4s32_f32
  1538. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1539. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1540. llvm_float_ty], [],
  1541. "llvm.nvvm.tex.1d.grad.v4s32.f32">;
  1542. def int_nvvm_tex_1d_v4u32_s32
  1543. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1544. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [],
  1545. "llvm.nvvm.tex.1d.v4u32.s32">;
  1546. def int_nvvm_tex_1d_v4u32_f32
  1547. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1548. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [],
  1549. "llvm.nvvm.tex.1d.v4u32.f32">;
  1550. def int_nvvm_tex_1d_level_v4u32_f32
  1551. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1552. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1553. "llvm.nvvm.tex.1d.level.v4u32.f32">;
  1554. def int_nvvm_tex_1d_grad_v4u32_f32
  1555. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1556. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1557. llvm_float_ty], [],
  1558. "llvm.nvvm.tex.1d.grad.v4u32.f32">;
  1559. def int_nvvm_tex_1d_array_v4f32_s32
  1560. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1561. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  1562. "llvm.nvvm.tex.1d.array.v4f32.s32">;
  1563. def int_nvvm_tex_1d_array_v4f32_f32
  1564. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1565. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
  1566. "llvm.nvvm.tex.1d.array.v4f32.f32">;
  1567. def int_nvvm_tex_1d_array_level_v4f32_f32
  1568. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1569. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1570. llvm_float_ty], [],
  1571. "llvm.nvvm.tex.1d.array.level.v4f32.f32">;
  1572. def int_nvvm_tex_1d_array_grad_v4f32_f32
  1573. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1574. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1575. llvm_float_ty, llvm_float_ty], [],
  1576. "llvm.nvvm.tex.1d.array.grad.v4f32.f32">;
  1577. def int_nvvm_tex_1d_array_v4s32_s32
  1578. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1579. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  1580. "llvm.nvvm.tex.1d.array.v4s32.s32">;
  1581. def int_nvvm_tex_1d_array_v4s32_f32
  1582. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1583. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
  1584. "llvm.nvvm.tex.1d.array.v4s32.f32">;
  1585. def int_nvvm_tex_1d_array_level_v4s32_f32
  1586. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1587. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1588. llvm_float_ty], [],
  1589. "llvm.nvvm.tex.1d.array.level.v4s32.f32">;
  1590. def int_nvvm_tex_1d_array_grad_v4s32_f32
  1591. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1592. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1593. llvm_float_ty, llvm_float_ty], [],
  1594. "llvm.nvvm.tex.1d.array.grad.v4s32.f32">;
  1595. def int_nvvm_tex_1d_array_v4u32_s32
  1596. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1597. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  1598. "llvm.nvvm.tex.1d.array.v4u32.s32">;
  1599. def int_nvvm_tex_1d_array_v4u32_f32
  1600. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1601. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
  1602. "llvm.nvvm.tex.1d.array.v4u32.f32">;
  1603. def int_nvvm_tex_1d_array_level_v4u32_f32
  1604. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1605. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1606. llvm_float_ty], [],
  1607. "llvm.nvvm.tex.1d.array.level.v4u32.f32">;
  1608. def int_nvvm_tex_1d_array_grad_v4u32_f32
  1609. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1610. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1611. llvm_float_ty, llvm_float_ty], [],
  1612. "llvm.nvvm.tex.1d.array.grad.v4u32.f32">;
  1613. def int_nvvm_tex_2d_v4f32_s32
  1614. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1615. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  1616. "llvm.nvvm.tex.2d.v4f32.s32">;
  1617. def int_nvvm_tex_2d_v4f32_f32
  1618. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1619. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1620. "llvm.nvvm.tex.2d.v4f32.f32">;
  1621. def int_nvvm_tex_2d_level_v4f32_f32
  1622. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1623. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1624. llvm_float_ty], [],
  1625. "llvm.nvvm.tex.2d.level.v4f32.f32">;
  1626. def int_nvvm_tex_2d_grad_v4f32_f32
  1627. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1628. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1629. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1630. "llvm.nvvm.tex.2d.grad.v4f32.f32">;
  1631. def int_nvvm_tex_2d_v4s32_s32
  1632. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1633. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  1634. "llvm.nvvm.tex.2d.v4s32.s32">;
  1635. def int_nvvm_tex_2d_v4s32_f32
  1636. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1637. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1638. "llvm.nvvm.tex.2d.v4s32.f32">;
  1639. def int_nvvm_tex_2d_level_v4s32_f32
  1640. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1641. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1642. llvm_float_ty], [],
  1643. "llvm.nvvm.tex.2d.level.v4s32.f32">;
  1644. def int_nvvm_tex_2d_grad_v4s32_f32
  1645. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1646. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1647. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1648. "llvm.nvvm.tex.2d.grad.v4s32.f32">;
  1649. def int_nvvm_tex_2d_v4u32_s32
  1650. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1651. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  1652. "llvm.nvvm.tex.2d.v4u32.s32">;
  1653. def int_nvvm_tex_2d_v4u32_f32
  1654. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1655. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1656. "llvm.nvvm.tex.2d.v4u32.f32">;
  1657. def int_nvvm_tex_2d_level_v4u32_f32
  1658. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1659. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1660. llvm_float_ty], [],
  1661. "llvm.nvvm.tex.2d.level.v4u32.f32">;
  1662. def int_nvvm_tex_2d_grad_v4u32_f32
  1663. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1664. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1665. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1666. "llvm.nvvm.tex.2d.grad.v4u32.f32">;
  1667. def int_nvvm_tex_2d_array_v4f32_s32
  1668. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1669. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  1670. llvm_i32_ty], [],
  1671. "llvm.nvvm.tex.2d.array.v4f32.s32">;
  1672. def int_nvvm_tex_2d_array_v4f32_f32
  1673. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1674. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1675. llvm_float_ty], [],
  1676. "llvm.nvvm.tex.2d.array.v4f32.f32">;
  1677. def int_nvvm_tex_2d_array_level_v4f32_f32
  1678. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1679. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1680. llvm_float_ty, llvm_float_ty], [],
  1681. "llvm.nvvm.tex.2d.array.level.v4f32.f32">;
  1682. def int_nvvm_tex_2d_array_grad_v4f32_f32
  1683. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1684. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1685. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  1686. llvm_float_ty], [],
  1687. "llvm.nvvm.tex.2d.array.grad.v4f32.f32">;
  1688. def int_nvvm_tex_2d_array_v4s32_s32
  1689. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1690. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  1691. llvm_i32_ty], [],
  1692. "llvm.nvvm.tex.2d.array.v4s32.s32">;
  1693. def int_nvvm_tex_2d_array_v4s32_f32
  1694. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1695. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1696. llvm_float_ty], [],
  1697. "llvm.nvvm.tex.2d.array.v4s32.f32">;
  1698. def int_nvvm_tex_2d_array_level_v4s32_f32
  1699. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1700. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1701. llvm_float_ty, llvm_float_ty], [],
  1702. "llvm.nvvm.tex.2d.array.level.v4s32.f32">;
  1703. def int_nvvm_tex_2d_array_grad_v4s32_f32
  1704. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1705. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1706. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  1707. llvm_float_ty], [],
  1708. "llvm.nvvm.tex.2d.array.grad.v4s32.f32">;
  1709. def int_nvvm_tex_2d_array_v4u32_s32
  1710. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1711. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  1712. llvm_i32_ty], [],
  1713. "llvm.nvvm.tex.2d.array.v4u32.s32">;
  1714. def int_nvvm_tex_2d_array_v4u32_f32
  1715. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1716. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1717. llvm_float_ty], [],
  1718. "llvm.nvvm.tex.2d.array.v4u32.f32">;
  1719. def int_nvvm_tex_2d_array_level_v4u32_f32
  1720. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1721. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1722. llvm_float_ty, llvm_float_ty], [],
  1723. "llvm.nvvm.tex.2d.array.level.v4u32.f32">;
  1724. def int_nvvm_tex_2d_array_grad_v4u32_f32
  1725. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1726. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1727. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  1728. llvm_float_ty], [],
  1729. "llvm.nvvm.tex.2d.array.grad.v4u32.f32">;
  1730. def int_nvvm_tex_3d_v4f32_s32
  1731. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1732. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1733. [], "llvm.nvvm.tex.3d.v4f32.s32">;
  1734. def int_nvvm_tex_3d_v4f32_f32
  1735. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1736. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1737. llvm_float_ty], [],
  1738. "llvm.nvvm.tex.3d.v4f32.f32">;
  1739. def int_nvvm_tex_3d_level_v4f32_f32
  1740. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1741. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1742. llvm_float_ty, llvm_float_ty], [],
  1743. "llvm.nvvm.tex.3d.level.v4f32.f32">;
  1744. def int_nvvm_tex_3d_grad_v4f32_f32
  1745. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1746. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1747. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  1748. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1749. "llvm.nvvm.tex.3d.grad.v4f32.f32">;
  1750. def int_nvvm_tex_3d_v4s32_s32
  1751. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1752. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1753. [], "llvm.nvvm.tex.3d.v4s32.s32">;
  1754. def int_nvvm_tex_3d_v4s32_f32
  1755. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1756. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1757. llvm_float_ty], [],
  1758. "llvm.nvvm.tex.3d.v4s32.f32">;
  1759. def int_nvvm_tex_3d_level_v4s32_f32
  1760. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1761. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1762. llvm_float_ty, llvm_float_ty], [],
  1763. "llvm.nvvm.tex.3d.level.v4s32.f32">;
  1764. def int_nvvm_tex_3d_grad_v4s32_f32
  1765. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1766. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1767. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  1768. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1769. "llvm.nvvm.tex.3d.grad.v4s32.f32">;
  1770. def int_nvvm_tex_3d_v4u32_s32
  1771. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1772. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1773. [], "llvm.nvvm.tex.3d.v4u32.s32">;
  1774. def int_nvvm_tex_3d_v4u32_f32
  1775. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1776. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1777. llvm_float_ty], [],
  1778. "llvm.nvvm.tex.3d.v4u32.f32">;
  1779. def int_nvvm_tex_3d_level_v4u32_f32
  1780. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1781. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1782. llvm_float_ty, llvm_float_ty], [],
  1783. "llvm.nvvm.tex.3d.level.v4u32.f32">;
  1784. def int_nvvm_tex_3d_grad_v4u32_f32
  1785. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1786. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1787. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  1788. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1789. "llvm.nvvm.tex.3d.grad.v4u32.f32">;
  1790. def int_nvvm_tex_cube_v4f32_f32
  1791. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1792. [llvm_i64_ty, llvm_i64_ty,
  1793. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1794. "llvm.nvvm.tex.cube.v4f32.f32">;
  1795. def int_nvvm_tex_cube_level_v4f32_f32
  1796. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1797. [llvm_i64_ty, llvm_i64_ty,
  1798. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1799. "llvm.nvvm.tex.cube.level.v4f32.f32">;
  1800. def int_nvvm_tex_cube_v4s32_f32
  1801. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1802. [llvm_i64_ty, llvm_i64_ty,
  1803. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1804. "llvm.nvvm.tex.cube.v4s32.f32">;
  1805. def int_nvvm_tex_cube_level_v4s32_f32
  1806. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1807. [llvm_i64_ty, llvm_i64_ty,
  1808. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1809. "llvm.nvvm.tex.cube.level.v4s32.f32">;
  1810. def int_nvvm_tex_cube_v4u32_f32
  1811. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1812. [llvm_i64_ty, llvm_i64_ty,
  1813. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1814. "llvm.nvvm.tex.cube.v4u32.f32">;
  1815. def int_nvvm_tex_cube_level_v4u32_f32
  1816. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1817. [llvm_i64_ty, llvm_i64_ty,
  1818. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1819. "llvm.nvvm.tex.cube.level.v4u32.f32">;
  1820. def int_nvvm_tex_cube_array_v4f32_f32
  1821. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1822. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
  1823. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1824. "llvm.nvvm.tex.cube.array.v4f32.f32">;
  1825. def int_nvvm_tex_cube_array_level_v4f32_f32
  1826. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1827. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
  1828. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1829. "llvm.nvvm.tex.cube.array.level.v4f32.f32">;
  1830. def int_nvvm_tex_cube_array_v4s32_f32
  1831. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1832. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
  1833. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1834. "llvm.nvvm.tex.cube.array.v4s32.f32">;
  1835. def int_nvvm_tex_cube_array_level_v4s32_f32
  1836. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1837. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
  1838. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1839. "llvm.nvvm.tex.cube.array.level.v4s32.f32">;
  1840. def int_nvvm_tex_cube_array_v4u32_f32
  1841. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1842. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
  1843. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1844. "llvm.nvvm.tex.cube.array.v4u32.f32">;
  1845. def int_nvvm_tex_cube_array_level_v4u32_f32
  1846. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1847. [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
  1848. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  1849. "llvm.nvvm.tex.cube.array.level.v4u32.f32">;
  1850. def int_nvvm_tld4_r_2d_v4f32_f32
  1851. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1852. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1853. "llvm.nvvm.tld4.r.2d.v4f32.f32">;
  1854. def int_nvvm_tld4_g_2d_v4f32_f32
  1855. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1856. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1857. "llvm.nvvm.tld4.g.2d.v4f32.f32">;
  1858. def int_nvvm_tld4_b_2d_v4f32_f32
  1859. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1860. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1861. "llvm.nvvm.tld4.b.2d.v4f32.f32">;
  1862. def int_nvvm_tld4_a_2d_v4f32_f32
  1863. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1864. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1865. "llvm.nvvm.tld4.a.2d.v4f32.f32">;
  1866. def int_nvvm_tld4_r_2d_v4s32_f32
  1867. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1868. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1869. "llvm.nvvm.tld4.r.2d.v4s32.f32">;
  1870. def int_nvvm_tld4_g_2d_v4s32_f32
  1871. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1872. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1873. "llvm.nvvm.tld4.g.2d.v4s32.f32">;
  1874. def int_nvvm_tld4_b_2d_v4s32_f32
  1875. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1876. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1877. "llvm.nvvm.tld4.b.2d.v4s32.f32">;
  1878. def int_nvvm_tld4_a_2d_v4s32_f32
  1879. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1880. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1881. "llvm.nvvm.tld4.a.2d.v4s32.f32">;
  1882. def int_nvvm_tld4_r_2d_v4u32_f32
  1883. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1884. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1885. "llvm.nvvm.tld4.r.2d.v4u32.f32">;
  1886. def int_nvvm_tld4_g_2d_v4u32_f32
  1887. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1888. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1889. "llvm.nvvm.tld4.g.2d.v4u32.f32">;
  1890. def int_nvvm_tld4_b_2d_v4u32_f32
  1891. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1892. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1893. "llvm.nvvm.tld4.b.2d.v4u32.f32">;
  1894. def int_nvvm_tld4_a_2d_v4u32_f32
  1895. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1896. [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1897. "llvm.nvvm.tld4.a.2d.v4u32.f32">;
  1898. // texmode_unified
  1899. def int_nvvm_tex_unified_1d_v4f32_s32
  1900. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1901. [llvm_i64_ty, llvm_i32_ty], [],
  1902. "llvm.nvvm.tex.unified.1d.v4f32.s32">;
  1903. def int_nvvm_tex_unified_1d_v4f32_f32
  1904. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1905. [llvm_i64_ty, llvm_float_ty], [],
  1906. "llvm.nvvm.tex.unified.1d.v4f32.f32">;
  1907. def int_nvvm_tex_unified_1d_level_v4f32_f32
  1908. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1909. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1910. "llvm.nvvm.tex.unified.1d.level.v4f32.f32">;
  1911. def int_nvvm_tex_unified_1d_grad_v4f32_f32
  1912. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1913. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1914. llvm_float_ty], [],
  1915. "llvm.nvvm.tex.unified.1d.grad.v4f32.f32">;
  1916. def int_nvvm_tex_unified_1d_v4s32_s32
  1917. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1918. [llvm_i64_ty, llvm_i32_ty], [],
  1919. "llvm.nvvm.tex.unified.1d.v4s32.s32">;
  1920. def int_nvvm_tex_unified_1d_v4s32_f32
  1921. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1922. [llvm_i64_ty, llvm_float_ty], [],
  1923. "llvm.nvvm.tex.unified.1d.v4s32.f32">;
  1924. def int_nvvm_tex_unified_1d_level_v4s32_f32
  1925. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1926. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1927. "llvm.nvvm.tex.unified.1d.level.v4s32.f32">;
  1928. def int_nvvm_tex_unified_1d_grad_v4s32_f32
  1929. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1930. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1931. llvm_float_ty], [],
  1932. "llvm.nvvm.tex.unified.1d.grad.v4s32.f32">;
  1933. def int_nvvm_tex_unified_1d_v4u32_s32
  1934. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1935. [llvm_i64_ty, llvm_i32_ty], [],
  1936. "llvm.nvvm.tex.unified.1d.v4u32.s32">;
  1937. def int_nvvm_tex_unified_1d_v4u32_f32
  1938. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1939. [llvm_i64_ty, llvm_float_ty], [],
  1940. "llvm.nvvm.tex.unified.1d.v4u32.f32">;
  1941. def int_nvvm_tex_unified_1d_level_v4u32_f32
  1942. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1943. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  1944. "llvm.nvvm.tex.unified.1d.level.v4u32.f32">;
  1945. def int_nvvm_tex_unified_1d_grad_v4u32_f32
  1946. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1947. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  1948. llvm_float_ty], [],
  1949. "llvm.nvvm.tex.unified.1d.grad.v4u32.f32">;
  1950. def int_nvvm_tex_unified_1d_array_v4f32_s32
  1951. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1952. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  1953. "llvm.nvvm.tex.unified.1d.array.v4f32.s32">;
  1954. def int_nvvm_tex_unified_1d_array_v4f32_f32
  1955. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1956. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
  1957. "llvm.nvvm.tex.unified.1d.array.v4f32.f32">;
  1958. def int_nvvm_tex_unified_1d_array_level_v4f32_f32
  1959. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1960. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1961. llvm_float_ty], [],
  1962. "llvm.nvvm.tex.unified.1d.array.level.v4f32.f32">;
  1963. def int_nvvm_tex_unified_1d_array_grad_v4f32_f32
  1964. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  1965. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1966. llvm_float_ty, llvm_float_ty], [],
  1967. "llvm.nvvm.tex.unified.1d.array.grad.v4f32.f32">;
  1968. def int_nvvm_tex_unified_1d_array_v4s32_s32
  1969. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1970. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  1971. "llvm.nvvm.tex.unified.1d.array.v4s32.s32">;
  1972. def int_nvvm_tex_unified_1d_array_v4s32_f32
  1973. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1974. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
  1975. "llvm.nvvm.tex.unified.1d.array.v4s32.f32">;
  1976. def int_nvvm_tex_unified_1d_array_level_v4s32_f32
  1977. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1978. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1979. llvm_float_ty], [],
  1980. "llvm.nvvm.tex.unified.1d.array.level.v4s32.f32">;
  1981. def int_nvvm_tex_unified_1d_array_grad_v4s32_f32
  1982. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1983. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1984. llvm_float_ty, llvm_float_ty], [],
  1985. "llvm.nvvm.tex.unified.1d.array.grad.v4s32.f32">;
  1986. def int_nvvm_tex_unified_1d_array_v4u32_s32
  1987. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1988. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  1989. "llvm.nvvm.tex.unified.1d.array.v4u32.s32">;
  1990. def int_nvvm_tex_unified_1d_array_v4u32_f32
  1991. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1992. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
  1993. "llvm.nvvm.tex.unified.1d.array.v4u32.f32">;
  1994. def int_nvvm_tex_unified_1d_array_level_v4u32_f32
  1995. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  1996. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  1997. llvm_float_ty], [],
  1998. "llvm.nvvm.tex.unified.1d.array.level.v4u32.f32">;
  1999. def int_nvvm_tex_unified_1d_array_grad_v4u32_f32
  2000. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2001. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2002. llvm_float_ty, llvm_float_ty], [],
  2003. "llvm.nvvm.tex.unified.1d.array.grad.v4u32.f32">;
  2004. def int_nvvm_tex_unified_2d_v4f32_s32
  2005. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2006. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2007. "llvm.nvvm.tex.unified.2d.v4f32.s32">;
  2008. def int_nvvm_tex_unified_2d_v4f32_f32
  2009. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2010. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2011. "llvm.nvvm.tex.unified.2d.v4f32.f32">;
  2012. def int_nvvm_tex_unified_2d_level_v4f32_f32
  2013. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2014. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2015. llvm_float_ty], [],
  2016. "llvm.nvvm.tex.unified.2d.level.v4f32.f32">;
  2017. def int_nvvm_tex_unified_2d_grad_v4f32_f32
  2018. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2019. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2020. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2021. "llvm.nvvm.tex.unified.2d.grad.v4f32.f32">;
  2022. def int_nvvm_tex_unified_2d_v4s32_s32
  2023. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2024. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2025. "llvm.nvvm.tex.unified.2d.v4s32.s32">;
  2026. def int_nvvm_tex_unified_2d_v4s32_f32
  2027. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2028. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2029. "llvm.nvvm.tex.unified.2d.v4s32.f32">;
  2030. def int_nvvm_tex_unified_2d_level_v4s32_f32
  2031. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2032. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2033. llvm_float_ty], [],
  2034. "llvm.nvvm.tex.unified.2d.level.v4s32.f32">;
  2035. def int_nvvm_tex_unified_2d_grad_v4s32_f32
  2036. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2037. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2038. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2039. "llvm.nvvm.tex.unified.2d.grad.v4s32.f32">;
  2040. def int_nvvm_tex_unified_2d_v4u32_s32
  2041. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2042. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2043. "llvm.nvvm.tex.unified.2d.v4u32.s32">;
  2044. def int_nvvm_tex_unified_2d_v4u32_f32
  2045. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2046. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2047. "llvm.nvvm.tex.unified.2d.v4u32.f32">;
  2048. def int_nvvm_tex_unified_2d_level_v4u32_f32
  2049. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2050. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2051. llvm_float_ty], [],
  2052. "llvm.nvvm.tex.unified.2d.level.v4u32.f32">;
  2053. def int_nvvm_tex_unified_2d_grad_v4u32_f32
  2054. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2055. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2056. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2057. "llvm.nvvm.tex.unified.2d.grad.v4u32.f32">;
  2058. def int_nvvm_tex_unified_2d_array_v4f32_s32
  2059. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2060. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  2061. llvm_i32_ty], [],
  2062. "llvm.nvvm.tex.unified.2d.array.v4f32.s32">;
  2063. def int_nvvm_tex_unified_2d_array_v4f32_f32
  2064. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2065. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2066. llvm_float_ty], [],
  2067. "llvm.nvvm.tex.unified.2d.array.v4f32.f32">;
  2068. def int_nvvm_tex_unified_2d_array_level_v4f32_f32
  2069. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2070. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2071. llvm_float_ty, llvm_float_ty], [],
  2072. "llvm.nvvm.tex.unified.2d.array.level.v4f32.f32">;
  2073. def int_nvvm_tex_unified_2d_array_grad_v4f32_f32
  2074. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2075. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2076. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  2077. llvm_float_ty], [],
  2078. "llvm.nvvm.tex.unified.2d.array.grad.v4f32.f32">;
  2079. def int_nvvm_tex_unified_2d_array_v4s32_s32
  2080. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2081. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  2082. llvm_i32_ty], [],
  2083. "llvm.nvvm.tex.unified.2d.array.v4s32.s32">;
  2084. def int_nvvm_tex_unified_2d_array_v4s32_f32
  2085. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2086. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2087. llvm_float_ty], [],
  2088. "llvm.nvvm.tex.unified.2d.array.v4s32.f32">;
  2089. def int_nvvm_tex_unified_2d_array_level_v4s32_f32
  2090. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2091. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2092. llvm_float_ty, llvm_float_ty], [],
  2093. "llvm.nvvm.tex.unified.2d.array.level.v4s32.f32">;
  2094. def int_nvvm_tex_unified_2d_array_grad_v4s32_f32
  2095. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2096. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2097. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  2098. llvm_float_ty], [],
  2099. "llvm.nvvm.tex.unified.2d.array.grad.v4s32.f32">;
  2100. def int_nvvm_tex_unified_2d_array_v4u32_s32
  2101. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2102. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  2103. llvm_i32_ty], [],
  2104. "llvm.nvvm.tex.unified.2d.array.v4u32.s32">;
  2105. def int_nvvm_tex_unified_2d_array_v4u32_f32
  2106. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2107. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2108. llvm_float_ty], [],
  2109. "llvm.nvvm.tex.unified.2d.array.v4u32.f32">;
  2110. def int_nvvm_tex_unified_2d_array_level_v4u32_f32
  2111. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2112. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2113. llvm_float_ty, llvm_float_ty], [],
  2114. "llvm.nvvm.tex.unified.2d.array.level.v4u32.f32">;
  2115. def int_nvvm_tex_unified_2d_array_grad_v4u32_f32
  2116. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2117. [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
  2118. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  2119. llvm_float_ty], [],
  2120. "llvm.nvvm.tex.unified.2d.array.grad.v4u32.f32">;
  2121. def int_nvvm_tex_unified_3d_v4f32_s32
  2122. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2123. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2124. [], "llvm.nvvm.tex.unified.3d.v4f32.s32">;
  2125. def int_nvvm_tex_unified_3d_v4f32_f32
  2126. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2127. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2128. llvm_float_ty], [],
  2129. "llvm.nvvm.tex.unified.3d.v4f32.f32">;
  2130. def int_nvvm_tex_unified_3d_level_v4f32_f32
  2131. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2132. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2133. llvm_float_ty, llvm_float_ty], [],
  2134. "llvm.nvvm.tex.unified.3d.level.v4f32.f32">;
  2135. def int_nvvm_tex_unified_3d_grad_v4f32_f32
  2136. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2137. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2138. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  2139. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2140. "llvm.nvvm.tex.unified.3d.grad.v4f32.f32">;
  2141. def int_nvvm_tex_unified_3d_v4s32_s32
  2142. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2143. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2144. [], "llvm.nvvm.tex.unified.3d.v4s32.s32">;
  2145. def int_nvvm_tex_unified_3d_v4s32_f32
  2146. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2147. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2148. llvm_float_ty], [],
  2149. "llvm.nvvm.tex.unified.3d.v4s32.f32">;
  2150. def int_nvvm_tex_unified_3d_level_v4s32_f32
  2151. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2152. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2153. llvm_float_ty, llvm_float_ty], [],
  2154. "llvm.nvvm.tex.unified.3d.level.v4s32.f32">;
  2155. def int_nvvm_tex_unified_3d_grad_v4s32_f32
  2156. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2157. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2158. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  2159. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2160. "llvm.nvvm.tex.unified.3d.grad.v4s32.f32">;
  2161. def int_nvvm_tex_unified_3d_v4u32_s32
  2162. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2163. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2164. [], "llvm.nvvm.tex.unified.3d.v4u32.s32">;
  2165. def int_nvvm_tex_unified_3d_v4u32_f32
  2166. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2167. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2168. llvm_float_ty], [],
  2169. "llvm.nvvm.tex.unified.3d.v4u32.f32">;
  2170. def int_nvvm_tex_unified_3d_level_v4u32_f32
  2171. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2172. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2173. llvm_float_ty, llvm_float_ty], [],
  2174. "llvm.nvvm.tex.unified.3d.level.v4u32.f32">;
  2175. def int_nvvm_tex_unified_3d_grad_v4u32_f32
  2176. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2177. [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
  2178. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
  2179. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2180. "llvm.nvvm.tex.unified.3d.grad.v4u32.f32">;
  2181. def int_nvvm_tex_unified_cube_v4f32_f32
  2182. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2183. [llvm_i64_ty,
  2184. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2185. "llvm.nvvm.tex.unified.cube.v4f32.f32">;
  2186. def int_nvvm_tex_unified_cube_level_v4f32_f32
  2187. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2188. [llvm_i64_ty,
  2189. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2190. "llvm.nvvm.tex.unified.cube.level.v4f32.f32">;
  2191. def int_nvvm_tex_unified_cube_v4s32_f32
  2192. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2193. [llvm_i64_ty,
  2194. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2195. "llvm.nvvm.tex.unified.cube.v4s32.f32">;
  2196. def int_nvvm_tex_unified_cube_level_v4s32_f32
  2197. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2198. [llvm_i64_ty,
  2199. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2200. "llvm.nvvm.tex.unified.cube.level.v4s32.f32">;
  2201. def int_nvvm_tex_unified_cube_v4u32_f32
  2202. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2203. [llvm_i64_ty,
  2204. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2205. "llvm.nvvm.tex.unified.cube.v4u32.f32">;
  2206. def int_nvvm_tex_unified_cube_level_v4u32_f32
  2207. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2208. [llvm_i64_ty,
  2209. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2210. "llvm.nvvm.tex.unified.cube.level.v4u32.f32">;
  2211. def int_nvvm_tex_unified_cube_array_v4f32_f32
  2212. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2213. [llvm_i64_ty, llvm_i32_ty,
  2214. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2215. "llvm.nvvm.tex.unified.cube.array.v4f32.f32">;
  2216. def int_nvvm_tex_unified_cube_array_level_v4f32_f32
  2217. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2218. [llvm_i64_ty, llvm_i32_ty,
  2219. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2220. "llvm.nvvm.tex.unified.cube.array.level.v4f32.f32">;
  2221. def int_nvvm_tex_unified_cube_array_v4s32_f32
  2222. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2223. [llvm_i64_ty, llvm_i32_ty,
  2224. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2225. "llvm.nvvm.tex.unified.cube.array.v4s32.f32">;
  2226. def int_nvvm_tex_unified_cube_array_level_v4s32_f32
  2227. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2228. [llvm_i64_ty, llvm_i32_ty,
  2229. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2230. "llvm.nvvm.tex.unified.cube.array.level.v4s32.f32">;
  2231. def int_nvvm_tex_unified_cube_array_v4u32_f32
  2232. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2233. [llvm_i64_ty, llvm_i32_ty,
  2234. llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2235. "llvm.nvvm.tex.unified.cube.array.v4u32.f32">;
  2236. def int_nvvm_tex_unified_cube_array_level_v4u32_f32
  2237. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2238. [llvm_i64_ty, llvm_i32_ty,
  2239. llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
  2240. "llvm.nvvm.tex.unified.cube.array.level.v4u32.f32">;
  2241. def int_nvvm_tld4_unified_r_2d_v4f32_f32
  2242. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2243. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2244. "llvm.nvvm.tld4.unified.r.2d.v4f32.f32">;
  2245. def int_nvvm_tld4_unified_g_2d_v4f32_f32
  2246. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2247. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2248. "llvm.nvvm.tld4.unified.g.2d.v4f32.f32">;
  2249. def int_nvvm_tld4_unified_b_2d_v4f32_f32
  2250. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2251. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2252. "llvm.nvvm.tld4.unified.b.2d.v4f32.f32">;
  2253. def int_nvvm_tld4_unified_a_2d_v4f32_f32
  2254. : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
  2255. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2256. "llvm.nvvm.tld4.unified.a.2d.v4f32.f32">;
  2257. def int_nvvm_tld4_unified_r_2d_v4s32_f32
  2258. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2259. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2260. "llvm.nvvm.tld4.unified.r.2d.v4s32.f32">;
  2261. def int_nvvm_tld4_unified_g_2d_v4s32_f32
  2262. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2263. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2264. "llvm.nvvm.tld4.unified.g.2d.v4s32.f32">;
  2265. def int_nvvm_tld4_unified_b_2d_v4s32_f32
  2266. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2267. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2268. "llvm.nvvm.tld4.unified.b.2d.v4s32.f32">;
  2269. def int_nvvm_tld4_unified_a_2d_v4s32_f32
  2270. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2271. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2272. "llvm.nvvm.tld4.unified.a.2d.v4s32.f32">;
  2273. def int_nvvm_tld4_unified_r_2d_v4u32_f32
  2274. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2275. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2276. "llvm.nvvm.tld4.unified.r.2d.v4u32.f32">;
  2277. def int_nvvm_tld4_unified_g_2d_v4u32_f32
  2278. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2279. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2280. "llvm.nvvm.tld4.unified.g.2d.v4u32.f32">;
  2281. def int_nvvm_tld4_unified_b_2d_v4u32_f32
  2282. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2283. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2284. "llvm.nvvm.tld4.unified.b.2d.v4u32.f32">;
  2285. def int_nvvm_tld4_unified_a_2d_v4u32_f32
  2286. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2287. [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
  2288. "llvm.nvvm.tld4.unified.a.2d.v4u32.f32">;
  2289. //=== Surface Load
  2290. // .clamp variants
  2291. def int_nvvm_suld_1d_i8_clamp
  2292. : Intrinsic<[llvm_i16_ty],
  2293. [llvm_i64_ty, llvm_i32_ty], [],
  2294. "llvm.nvvm.suld.1d.i8.clamp">;
  2295. def int_nvvm_suld_1d_i16_clamp
  2296. : Intrinsic<[llvm_i16_ty],
  2297. [llvm_i64_ty, llvm_i32_ty], [],
  2298. "llvm.nvvm.suld.1d.i16.clamp">;
  2299. def int_nvvm_suld_1d_i32_clamp
  2300. : Intrinsic<[llvm_i32_ty],
  2301. [llvm_i64_ty, llvm_i32_ty], [],
  2302. "llvm.nvvm.suld.1d.i32.clamp">;
  2303. def int_nvvm_suld_1d_i64_clamp
  2304. : Intrinsic<[llvm_i64_ty],
  2305. [llvm_i64_ty, llvm_i32_ty], [],
  2306. "llvm.nvvm.suld.1d.i64.clamp">;
  2307. def int_nvvm_suld_1d_v2i8_clamp
  2308. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2309. [llvm_i64_ty, llvm_i32_ty], [],
  2310. "llvm.nvvm.suld.1d.v2i8.clamp">;
  2311. def int_nvvm_suld_1d_v2i16_clamp
  2312. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2313. [llvm_i64_ty, llvm_i32_ty], [],
  2314. "llvm.nvvm.suld.1d.v2i16.clamp">;
  2315. def int_nvvm_suld_1d_v2i32_clamp
  2316. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2317. [llvm_i64_ty, llvm_i32_ty], [],
  2318. "llvm.nvvm.suld.1d.v2i32.clamp">;
  2319. def int_nvvm_suld_1d_v2i64_clamp
  2320. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2321. [llvm_i64_ty, llvm_i32_ty], [],
  2322. "llvm.nvvm.suld.1d.v2i64.clamp">;
  2323. def int_nvvm_suld_1d_v4i8_clamp
  2324. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2325. [llvm_i64_ty, llvm_i32_ty], [],
  2326. "llvm.nvvm.suld.1d.v4i8.clamp">;
  2327. def int_nvvm_suld_1d_v4i16_clamp
  2328. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2329. [llvm_i64_ty, llvm_i32_ty], [],
  2330. "llvm.nvvm.suld.1d.v4i16.clamp">;
  2331. def int_nvvm_suld_1d_v4i32_clamp
  2332. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2333. [llvm_i64_ty, llvm_i32_ty], [],
  2334. "llvm.nvvm.suld.1d.v4i32.clamp">;
  2335. def int_nvvm_suld_1d_array_i8_clamp
  2336. : Intrinsic<[llvm_i16_ty],
  2337. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2338. "llvm.nvvm.suld.1d.array.i8.clamp">;
  2339. def int_nvvm_suld_1d_array_i16_clamp
  2340. : Intrinsic<[llvm_i16_ty],
  2341. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2342. "llvm.nvvm.suld.1d.array.i16.clamp">;
  2343. def int_nvvm_suld_1d_array_i32_clamp
  2344. : Intrinsic<[llvm_i32_ty],
  2345. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2346. "llvm.nvvm.suld.1d.array.i32.clamp">;
  2347. def int_nvvm_suld_1d_array_i64_clamp
  2348. : Intrinsic<[llvm_i64_ty],
  2349. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2350. "llvm.nvvm.suld.1d.array.i64.clamp">;
  2351. def int_nvvm_suld_1d_array_v2i8_clamp
  2352. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2353. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2354. "llvm.nvvm.suld.1d.array.v2i8.clamp">;
  2355. def int_nvvm_suld_1d_array_v2i16_clamp
  2356. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2357. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2358. "llvm.nvvm.suld.1d.array.v2i16.clamp">;
  2359. def int_nvvm_suld_1d_array_v2i32_clamp
  2360. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2361. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2362. "llvm.nvvm.suld.1d.array.v2i32.clamp">;
  2363. def int_nvvm_suld_1d_array_v2i64_clamp
  2364. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2365. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2366. "llvm.nvvm.suld.1d.array.v2i64.clamp">;
  2367. def int_nvvm_suld_1d_array_v4i8_clamp
  2368. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2369. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2370. "llvm.nvvm.suld.1d.array.v4i8.clamp">;
  2371. def int_nvvm_suld_1d_array_v4i16_clamp
  2372. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2373. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2374. "llvm.nvvm.suld.1d.array.v4i16.clamp">;
  2375. def int_nvvm_suld_1d_array_v4i32_clamp
  2376. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2377. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2378. "llvm.nvvm.suld.1d.array.v4i32.clamp">;
  2379. def int_nvvm_suld_2d_i8_clamp
  2380. : Intrinsic<[llvm_i16_ty],
  2381. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2382. "llvm.nvvm.suld.2d.i8.clamp">;
  2383. def int_nvvm_suld_2d_i16_clamp
  2384. : Intrinsic<[llvm_i16_ty],
  2385. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2386. "llvm.nvvm.suld.2d.i16.clamp">;
  2387. def int_nvvm_suld_2d_i32_clamp
  2388. : Intrinsic<[llvm_i32_ty],
  2389. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2390. "llvm.nvvm.suld.2d.i32.clamp">;
  2391. def int_nvvm_suld_2d_i64_clamp
  2392. : Intrinsic<[llvm_i64_ty],
  2393. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2394. "llvm.nvvm.suld.2d.i64.clamp">;
  2395. def int_nvvm_suld_2d_v2i8_clamp
  2396. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2397. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2398. "llvm.nvvm.suld.2d.v2i8.clamp">;
  2399. def int_nvvm_suld_2d_v2i16_clamp
  2400. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2401. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2402. "llvm.nvvm.suld.2d.v2i16.clamp">;
  2403. def int_nvvm_suld_2d_v2i32_clamp
  2404. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2405. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2406. "llvm.nvvm.suld.2d.v2i32.clamp">;
  2407. def int_nvvm_suld_2d_v2i64_clamp
  2408. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2409. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2410. "llvm.nvvm.suld.2d.v2i64.clamp">;
  2411. def int_nvvm_suld_2d_v4i8_clamp
  2412. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2413. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2414. "llvm.nvvm.suld.2d.v4i8.clamp">;
  2415. def int_nvvm_suld_2d_v4i16_clamp
  2416. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2417. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2418. "llvm.nvvm.suld.2d.v4i16.clamp">;
  2419. def int_nvvm_suld_2d_v4i32_clamp
  2420. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2421. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2422. "llvm.nvvm.suld.2d.v4i32.clamp">;
  2423. def int_nvvm_suld_2d_array_i8_clamp
  2424. : Intrinsic<[llvm_i16_ty],
  2425. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2426. "llvm.nvvm.suld.2d.array.i8.clamp">;
  2427. def int_nvvm_suld_2d_array_i16_clamp
  2428. : Intrinsic<[llvm_i16_ty],
  2429. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2430. "llvm.nvvm.suld.2d.array.i16.clamp">;
  2431. def int_nvvm_suld_2d_array_i32_clamp
  2432. : Intrinsic<[llvm_i32_ty],
  2433. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2434. "llvm.nvvm.suld.2d.array.i32.clamp">;
  2435. def int_nvvm_suld_2d_array_i64_clamp
  2436. : Intrinsic<[llvm_i64_ty],
  2437. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2438. "llvm.nvvm.suld.2d.array.i64.clamp">;
  2439. def int_nvvm_suld_2d_array_v2i8_clamp
  2440. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2441. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2442. "llvm.nvvm.suld.2d.array.v2i8.clamp">;
  2443. def int_nvvm_suld_2d_array_v2i16_clamp
  2444. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2445. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2446. "llvm.nvvm.suld.2d.array.v2i16.clamp">;
  2447. def int_nvvm_suld_2d_array_v2i32_clamp
  2448. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2449. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2450. "llvm.nvvm.suld.2d.array.v2i32.clamp">;
  2451. def int_nvvm_suld_2d_array_v2i64_clamp
  2452. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2453. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2454. "llvm.nvvm.suld.2d.array.v2i64.clamp">;
  2455. def int_nvvm_suld_2d_array_v4i8_clamp
  2456. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2457. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2458. "llvm.nvvm.suld.2d.array.v4i8.clamp">;
  2459. def int_nvvm_suld_2d_array_v4i16_clamp
  2460. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2461. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2462. "llvm.nvvm.suld.2d.array.v4i16.clamp">;
  2463. def int_nvvm_suld_2d_array_v4i32_clamp
  2464. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2465. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2466. "llvm.nvvm.suld.2d.array.v4i32.clamp">;
  2467. def int_nvvm_suld_3d_i8_clamp
  2468. : Intrinsic<[llvm_i16_ty],
  2469. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2470. "llvm.nvvm.suld.3d.i8.clamp">;
  2471. def int_nvvm_suld_3d_i16_clamp
  2472. : Intrinsic<[llvm_i16_ty],
  2473. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2474. "llvm.nvvm.suld.3d.i16.clamp">;
  2475. def int_nvvm_suld_3d_i32_clamp
  2476. : Intrinsic<[llvm_i32_ty],
  2477. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2478. "llvm.nvvm.suld.3d.i32.clamp">;
  2479. def int_nvvm_suld_3d_i64_clamp
  2480. : Intrinsic<[llvm_i64_ty],
  2481. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2482. "llvm.nvvm.suld.3d.i64.clamp">;
  2483. def int_nvvm_suld_3d_v2i8_clamp
  2484. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2485. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2486. "llvm.nvvm.suld.3d.v2i8.clamp">;
  2487. def int_nvvm_suld_3d_v2i16_clamp
  2488. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2489. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2490. "llvm.nvvm.suld.3d.v2i16.clamp">;
  2491. def int_nvvm_suld_3d_v2i32_clamp
  2492. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2493. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2494. "llvm.nvvm.suld.3d.v2i32.clamp">;
  2495. def int_nvvm_suld_3d_v2i64_clamp
  2496. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2497. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2498. "llvm.nvvm.suld.3d.v2i64.clamp">;
  2499. def int_nvvm_suld_3d_v4i8_clamp
  2500. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2501. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2502. "llvm.nvvm.suld.3d.v4i8.clamp">;
  2503. def int_nvvm_suld_3d_v4i16_clamp
  2504. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2505. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2506. "llvm.nvvm.suld.3d.v4i16.clamp">;
  2507. def int_nvvm_suld_3d_v4i32_clamp
  2508. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2509. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2510. "llvm.nvvm.suld.3d.v4i32.clamp">;
  2511. // .trap variants
  2512. def int_nvvm_suld_1d_i8_trap
  2513. : Intrinsic<[llvm_i16_ty],
  2514. [llvm_i64_ty, llvm_i32_ty], [],
  2515. "llvm.nvvm.suld.1d.i8.trap">;
  2516. def int_nvvm_suld_1d_i16_trap
  2517. : Intrinsic<[llvm_i16_ty],
  2518. [llvm_i64_ty, llvm_i32_ty], [],
  2519. "llvm.nvvm.suld.1d.i16.trap">;
  2520. def int_nvvm_suld_1d_i32_trap
  2521. : Intrinsic<[llvm_i32_ty],
  2522. [llvm_i64_ty, llvm_i32_ty], [],
  2523. "llvm.nvvm.suld.1d.i32.trap">;
  2524. def int_nvvm_suld_1d_i64_trap
  2525. : Intrinsic<[llvm_i64_ty],
  2526. [llvm_i64_ty, llvm_i32_ty], [],
  2527. "llvm.nvvm.suld.1d.i64.trap">;
  2528. def int_nvvm_suld_1d_v2i8_trap
  2529. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2530. [llvm_i64_ty, llvm_i32_ty], [],
  2531. "llvm.nvvm.suld.1d.v2i8.trap">;
  2532. def int_nvvm_suld_1d_v2i16_trap
  2533. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2534. [llvm_i64_ty, llvm_i32_ty], [],
  2535. "llvm.nvvm.suld.1d.v2i16.trap">;
  2536. def int_nvvm_suld_1d_v2i32_trap
  2537. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2538. [llvm_i64_ty, llvm_i32_ty], [],
  2539. "llvm.nvvm.suld.1d.v2i32.trap">;
  2540. def int_nvvm_suld_1d_v2i64_trap
  2541. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2542. [llvm_i64_ty, llvm_i32_ty], [],
  2543. "llvm.nvvm.suld.1d.v2i64.trap">;
  2544. def int_nvvm_suld_1d_v4i8_trap
  2545. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2546. [llvm_i64_ty, llvm_i32_ty], [],
  2547. "llvm.nvvm.suld.1d.v4i8.trap">;
  2548. def int_nvvm_suld_1d_v4i16_trap
  2549. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2550. [llvm_i64_ty, llvm_i32_ty], [],
  2551. "llvm.nvvm.suld.1d.v4i16.trap">;
  2552. def int_nvvm_suld_1d_v4i32_trap
  2553. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2554. [llvm_i64_ty, llvm_i32_ty], [],
  2555. "llvm.nvvm.suld.1d.v4i32.trap">;
  2556. def int_nvvm_suld_1d_array_i8_trap
  2557. : Intrinsic<[llvm_i16_ty],
  2558. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2559. "llvm.nvvm.suld.1d.array.i8.trap">;
  2560. def int_nvvm_suld_1d_array_i16_trap
  2561. : Intrinsic<[llvm_i16_ty],
  2562. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2563. "llvm.nvvm.suld.1d.array.i16.trap">;
  2564. def int_nvvm_suld_1d_array_i32_trap
  2565. : Intrinsic<[llvm_i32_ty],
  2566. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2567. "llvm.nvvm.suld.1d.array.i32.trap">;
  2568. def int_nvvm_suld_1d_array_i64_trap
  2569. : Intrinsic<[llvm_i64_ty],
  2570. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2571. "llvm.nvvm.suld.1d.array.i64.trap">;
  2572. def int_nvvm_suld_1d_array_v2i8_trap
  2573. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2574. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2575. "llvm.nvvm.suld.1d.array.v2i8.trap">;
  2576. def int_nvvm_suld_1d_array_v2i16_trap
  2577. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2578. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2579. "llvm.nvvm.suld.1d.array.v2i16.trap">;
  2580. def int_nvvm_suld_1d_array_v2i32_trap
  2581. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2582. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2583. "llvm.nvvm.suld.1d.array.v2i32.trap">;
  2584. def int_nvvm_suld_1d_array_v2i64_trap
  2585. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2586. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2587. "llvm.nvvm.suld.1d.array.v2i64.trap">;
  2588. def int_nvvm_suld_1d_array_v4i8_trap
  2589. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2590. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2591. "llvm.nvvm.suld.1d.array.v4i8.trap">;
  2592. def int_nvvm_suld_1d_array_v4i16_trap
  2593. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2594. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2595. "llvm.nvvm.suld.1d.array.v4i16.trap">;
  2596. def int_nvvm_suld_1d_array_v4i32_trap
  2597. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2598. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2599. "llvm.nvvm.suld.1d.array.v4i32.trap">;
  2600. def int_nvvm_suld_2d_i8_trap
  2601. : Intrinsic<[llvm_i16_ty],
  2602. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2603. "llvm.nvvm.suld.2d.i8.trap">;
  2604. def int_nvvm_suld_2d_i16_trap
  2605. : Intrinsic<[llvm_i16_ty],
  2606. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2607. "llvm.nvvm.suld.2d.i16.trap">;
  2608. def int_nvvm_suld_2d_i32_trap
  2609. : Intrinsic<[llvm_i32_ty],
  2610. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2611. "llvm.nvvm.suld.2d.i32.trap">;
  2612. def int_nvvm_suld_2d_i64_trap
  2613. : Intrinsic<[llvm_i64_ty],
  2614. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2615. "llvm.nvvm.suld.2d.i64.trap">;
  2616. def int_nvvm_suld_2d_v2i8_trap
  2617. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2618. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2619. "llvm.nvvm.suld.2d.v2i8.trap">;
  2620. def int_nvvm_suld_2d_v2i16_trap
  2621. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2622. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2623. "llvm.nvvm.suld.2d.v2i16.trap">;
  2624. def int_nvvm_suld_2d_v2i32_trap
  2625. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2626. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2627. "llvm.nvvm.suld.2d.v2i32.trap">;
  2628. def int_nvvm_suld_2d_v2i64_trap
  2629. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2630. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2631. "llvm.nvvm.suld.2d.v2i64.trap">;
  2632. def int_nvvm_suld_2d_v4i8_trap
  2633. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2634. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2635. "llvm.nvvm.suld.2d.v4i8.trap">;
  2636. def int_nvvm_suld_2d_v4i16_trap
  2637. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2638. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2639. "llvm.nvvm.suld.2d.v4i16.trap">;
  2640. def int_nvvm_suld_2d_v4i32_trap
  2641. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2642. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2643. "llvm.nvvm.suld.2d.v4i32.trap">;
  2644. def int_nvvm_suld_2d_array_i8_trap
  2645. : Intrinsic<[llvm_i16_ty],
  2646. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2647. "llvm.nvvm.suld.2d.array.i8.trap">;
  2648. def int_nvvm_suld_2d_array_i16_trap
  2649. : Intrinsic<[llvm_i16_ty],
  2650. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2651. "llvm.nvvm.suld.2d.array.i16.trap">;
  2652. def int_nvvm_suld_2d_array_i32_trap
  2653. : Intrinsic<[llvm_i32_ty],
  2654. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2655. "llvm.nvvm.suld.2d.array.i32.trap">;
  2656. def int_nvvm_suld_2d_array_i64_trap
  2657. : Intrinsic<[llvm_i64_ty],
  2658. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2659. "llvm.nvvm.suld.2d.array.i64.trap">;
  2660. def int_nvvm_suld_2d_array_v2i8_trap
  2661. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2662. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2663. "llvm.nvvm.suld.2d.array.v2i8.trap">;
  2664. def int_nvvm_suld_2d_array_v2i16_trap
  2665. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2666. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2667. "llvm.nvvm.suld.2d.array.v2i16.trap">;
  2668. def int_nvvm_suld_2d_array_v2i32_trap
  2669. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2670. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2671. "llvm.nvvm.suld.2d.array.v2i32.trap">;
  2672. def int_nvvm_suld_2d_array_v2i64_trap
  2673. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2674. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2675. "llvm.nvvm.suld.2d.array.v2i64.trap">;
  2676. def int_nvvm_suld_2d_array_v4i8_trap
  2677. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2678. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2679. "llvm.nvvm.suld.2d.array.v4i8.trap">;
  2680. def int_nvvm_suld_2d_array_v4i16_trap
  2681. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2682. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2683. "llvm.nvvm.suld.2d.array.v4i16.trap">;
  2684. def int_nvvm_suld_2d_array_v4i32_trap
  2685. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2686. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2687. "llvm.nvvm.suld.2d.array.v4i32.trap">;
  2688. def int_nvvm_suld_3d_i8_trap
  2689. : Intrinsic<[llvm_i16_ty],
  2690. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2691. "llvm.nvvm.suld.3d.i8.trap">;
  2692. def int_nvvm_suld_3d_i16_trap
  2693. : Intrinsic<[llvm_i16_ty],
  2694. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2695. "llvm.nvvm.suld.3d.i16.trap">;
  2696. def int_nvvm_suld_3d_i32_trap
  2697. : Intrinsic<[llvm_i32_ty],
  2698. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2699. "llvm.nvvm.suld.3d.i32.trap">;
  2700. def int_nvvm_suld_3d_i64_trap
  2701. : Intrinsic<[llvm_i64_ty],
  2702. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2703. "llvm.nvvm.suld.3d.i64.trap">;
  2704. def int_nvvm_suld_3d_v2i8_trap
  2705. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2706. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2707. "llvm.nvvm.suld.3d.v2i8.trap">;
  2708. def int_nvvm_suld_3d_v2i16_trap
  2709. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2710. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2711. "llvm.nvvm.suld.3d.v2i16.trap">;
  2712. def int_nvvm_suld_3d_v2i32_trap
  2713. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2714. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2715. "llvm.nvvm.suld.3d.v2i32.trap">;
  2716. def int_nvvm_suld_3d_v2i64_trap
  2717. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2718. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2719. "llvm.nvvm.suld.3d.v2i64.trap">;
  2720. def int_nvvm_suld_3d_v4i8_trap
  2721. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2722. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2723. "llvm.nvvm.suld.3d.v4i8.trap">;
  2724. def int_nvvm_suld_3d_v4i16_trap
  2725. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2726. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2727. "llvm.nvvm.suld.3d.v4i16.trap">;
  2728. def int_nvvm_suld_3d_v4i32_trap
  2729. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2730. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2731. "llvm.nvvm.suld.3d.v4i32.trap">;
  2732. // .zero variants
  2733. def int_nvvm_suld_1d_i8_zero
  2734. : Intrinsic<[llvm_i16_ty],
  2735. [llvm_i64_ty, llvm_i32_ty], [],
  2736. "llvm.nvvm.suld.1d.i8.zero">;
  2737. def int_nvvm_suld_1d_i16_zero
  2738. : Intrinsic<[llvm_i16_ty],
  2739. [llvm_i64_ty, llvm_i32_ty], [],
  2740. "llvm.nvvm.suld.1d.i16.zero">;
  2741. def int_nvvm_suld_1d_i32_zero
  2742. : Intrinsic<[llvm_i32_ty],
  2743. [llvm_i64_ty, llvm_i32_ty], [],
  2744. "llvm.nvvm.suld.1d.i32.zero">;
  2745. def int_nvvm_suld_1d_i64_zero
  2746. : Intrinsic<[llvm_i64_ty],
  2747. [llvm_i64_ty, llvm_i32_ty], [],
  2748. "llvm.nvvm.suld.1d.i64.zero">;
  2749. def int_nvvm_suld_1d_v2i8_zero
  2750. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2751. [llvm_i64_ty, llvm_i32_ty], [],
  2752. "llvm.nvvm.suld.1d.v2i8.zero">;
  2753. def int_nvvm_suld_1d_v2i16_zero
  2754. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2755. [llvm_i64_ty, llvm_i32_ty], [],
  2756. "llvm.nvvm.suld.1d.v2i16.zero">;
  2757. def int_nvvm_suld_1d_v2i32_zero
  2758. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2759. [llvm_i64_ty, llvm_i32_ty], [],
  2760. "llvm.nvvm.suld.1d.v2i32.zero">;
  2761. def int_nvvm_suld_1d_v2i64_zero
  2762. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2763. [llvm_i64_ty, llvm_i32_ty], [],
  2764. "llvm.nvvm.suld.1d.v2i64.zero">;
  2765. def int_nvvm_suld_1d_v4i8_zero
  2766. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2767. [llvm_i64_ty, llvm_i32_ty], [],
  2768. "llvm.nvvm.suld.1d.v4i8.zero">;
  2769. def int_nvvm_suld_1d_v4i16_zero
  2770. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2771. [llvm_i64_ty, llvm_i32_ty], [],
  2772. "llvm.nvvm.suld.1d.v4i16.zero">;
  2773. def int_nvvm_suld_1d_v4i32_zero
  2774. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2775. [llvm_i64_ty, llvm_i32_ty], [],
  2776. "llvm.nvvm.suld.1d.v4i32.zero">;
  2777. def int_nvvm_suld_1d_array_i8_zero
  2778. : Intrinsic<[llvm_i16_ty],
  2779. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2780. "llvm.nvvm.suld.1d.array.i8.zero">;
  2781. def int_nvvm_suld_1d_array_i16_zero
  2782. : Intrinsic<[llvm_i16_ty],
  2783. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2784. "llvm.nvvm.suld.1d.array.i16.zero">;
  2785. def int_nvvm_suld_1d_array_i32_zero
  2786. : Intrinsic<[llvm_i32_ty],
  2787. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2788. "llvm.nvvm.suld.1d.array.i32.zero">;
  2789. def int_nvvm_suld_1d_array_i64_zero
  2790. : Intrinsic<[llvm_i64_ty],
  2791. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2792. "llvm.nvvm.suld.1d.array.i64.zero">;
  2793. def int_nvvm_suld_1d_array_v2i8_zero
  2794. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2795. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2796. "llvm.nvvm.suld.1d.array.v2i8.zero">;
  2797. def int_nvvm_suld_1d_array_v2i16_zero
  2798. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2799. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2800. "llvm.nvvm.suld.1d.array.v2i16.zero">;
  2801. def int_nvvm_suld_1d_array_v2i32_zero
  2802. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2803. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2804. "llvm.nvvm.suld.1d.array.v2i32.zero">;
  2805. def int_nvvm_suld_1d_array_v2i64_zero
  2806. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2807. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2808. "llvm.nvvm.suld.1d.array.v2i64.zero">;
  2809. def int_nvvm_suld_1d_array_v4i8_zero
  2810. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2811. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2812. "llvm.nvvm.suld.1d.array.v4i8.zero">;
  2813. def int_nvvm_suld_1d_array_v4i16_zero
  2814. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2815. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2816. "llvm.nvvm.suld.1d.array.v4i16.zero">;
  2817. def int_nvvm_suld_1d_array_v4i32_zero
  2818. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2819. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2820. "llvm.nvvm.suld.1d.array.v4i32.zero">;
  2821. def int_nvvm_suld_2d_i8_zero
  2822. : Intrinsic<[llvm_i16_ty],
  2823. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2824. "llvm.nvvm.suld.2d.i8.zero">;
  2825. def int_nvvm_suld_2d_i16_zero
  2826. : Intrinsic<[llvm_i16_ty],
  2827. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2828. "llvm.nvvm.suld.2d.i16.zero">;
  2829. def int_nvvm_suld_2d_i32_zero
  2830. : Intrinsic<[llvm_i32_ty],
  2831. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2832. "llvm.nvvm.suld.2d.i32.zero">;
  2833. def int_nvvm_suld_2d_i64_zero
  2834. : Intrinsic<[llvm_i64_ty],
  2835. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2836. "llvm.nvvm.suld.2d.i64.zero">;
  2837. def int_nvvm_suld_2d_v2i8_zero
  2838. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2839. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2840. "llvm.nvvm.suld.2d.v2i8.zero">;
  2841. def int_nvvm_suld_2d_v2i16_zero
  2842. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2843. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2844. "llvm.nvvm.suld.2d.v2i16.zero">;
  2845. def int_nvvm_suld_2d_v2i32_zero
  2846. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2847. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2848. "llvm.nvvm.suld.2d.v2i32.zero">;
  2849. def int_nvvm_suld_2d_v2i64_zero
  2850. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2851. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2852. "llvm.nvvm.suld.2d.v2i64.zero">;
  2853. def int_nvvm_suld_2d_v4i8_zero
  2854. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2855. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2856. "llvm.nvvm.suld.2d.v4i8.zero">;
  2857. def int_nvvm_suld_2d_v4i16_zero
  2858. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2859. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2860. "llvm.nvvm.suld.2d.v4i16.zero">;
  2861. def int_nvvm_suld_2d_v4i32_zero
  2862. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2863. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  2864. "llvm.nvvm.suld.2d.v4i32.zero">;
  2865. def int_nvvm_suld_2d_array_i8_zero
  2866. : Intrinsic<[llvm_i16_ty],
  2867. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2868. "llvm.nvvm.suld.2d.array.i8.zero">;
  2869. def int_nvvm_suld_2d_array_i16_zero
  2870. : Intrinsic<[llvm_i16_ty],
  2871. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2872. "llvm.nvvm.suld.2d.array.i16.zero">;
  2873. def int_nvvm_suld_2d_array_i32_zero
  2874. : Intrinsic<[llvm_i32_ty],
  2875. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2876. "llvm.nvvm.suld.2d.array.i32.zero">;
  2877. def int_nvvm_suld_2d_array_i64_zero
  2878. : Intrinsic<[llvm_i64_ty],
  2879. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2880. "llvm.nvvm.suld.2d.array.i64.zero">;
  2881. def int_nvvm_suld_2d_array_v2i8_zero
  2882. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2883. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2884. "llvm.nvvm.suld.2d.array.v2i8.zero">;
  2885. def int_nvvm_suld_2d_array_v2i16_zero
  2886. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2887. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2888. "llvm.nvvm.suld.2d.array.v2i16.zero">;
  2889. def int_nvvm_suld_2d_array_v2i32_zero
  2890. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2891. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2892. "llvm.nvvm.suld.2d.array.v2i32.zero">;
  2893. def int_nvvm_suld_2d_array_v2i64_zero
  2894. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2895. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2896. "llvm.nvvm.suld.2d.array.v2i64.zero">;
  2897. def int_nvvm_suld_2d_array_v4i8_zero
  2898. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2899. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2900. "llvm.nvvm.suld.2d.array.v4i8.zero">;
  2901. def int_nvvm_suld_2d_array_v4i16_zero
  2902. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2903. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2904. "llvm.nvvm.suld.2d.array.v4i16.zero">;
  2905. def int_nvvm_suld_2d_array_v4i32_zero
  2906. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2907. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2908. "llvm.nvvm.suld.2d.array.v4i32.zero">;
  2909. def int_nvvm_suld_3d_i8_zero
  2910. : Intrinsic<[llvm_i16_ty],
  2911. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2912. "llvm.nvvm.suld.3d.i8.zero">;
  2913. def int_nvvm_suld_3d_i16_zero
  2914. : Intrinsic<[llvm_i16_ty],
  2915. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2916. "llvm.nvvm.suld.3d.i16.zero">;
  2917. def int_nvvm_suld_3d_i32_zero
  2918. : Intrinsic<[llvm_i32_ty],
  2919. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2920. "llvm.nvvm.suld.3d.i32.zero">;
  2921. def int_nvvm_suld_3d_i64_zero
  2922. : Intrinsic<[llvm_i64_ty],
  2923. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2924. "llvm.nvvm.suld.3d.i64.zero">;
  2925. def int_nvvm_suld_3d_v2i8_zero
  2926. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2927. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2928. "llvm.nvvm.suld.3d.v2i8.zero">;
  2929. def int_nvvm_suld_3d_v2i16_zero
  2930. : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
  2931. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2932. "llvm.nvvm.suld.3d.v2i16.zero">;
  2933. def int_nvvm_suld_3d_v2i32_zero
  2934. : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
  2935. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2936. "llvm.nvvm.suld.3d.v2i32.zero">;
  2937. def int_nvvm_suld_3d_v2i64_zero
  2938. : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
  2939. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2940. "llvm.nvvm.suld.3d.v2i64.zero">;
  2941. def int_nvvm_suld_3d_v4i8_zero
  2942. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2943. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2944. "llvm.nvvm.suld.3d.v4i8.zero">;
  2945. def int_nvvm_suld_3d_v4i16_zero
  2946. : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
  2947. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2948. "llvm.nvvm.suld.3d.v4i16.zero">;
  2949. def int_nvvm_suld_3d_v4i32_zero
  2950. : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
  2951. [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  2952. "llvm.nvvm.suld.3d.v4i32.zero">;
  2953. //===- Texture Query ------------------------------------------------------===//
  2954. def int_nvvm_txq_channel_order
  2955. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2956. "llvm.nvvm.txq.channel.order">,
  2957. GCCBuiltin<"__nvvm_txq_channel_order">;
  2958. def int_nvvm_txq_channel_data_type
  2959. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2960. "llvm.nvvm.txq.channel.data.type">,
  2961. GCCBuiltin<"__nvvm_txq_channel_data_type">;
  2962. def int_nvvm_txq_width
  2963. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2964. "llvm.nvvm.txq.width">,
  2965. GCCBuiltin<"__nvvm_txq_width">;
  2966. def int_nvvm_txq_height
  2967. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2968. "llvm.nvvm.txq.height">,
  2969. GCCBuiltin<"__nvvm_txq_height">;
  2970. def int_nvvm_txq_depth
  2971. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2972. "llvm.nvvm.txq.depth">,
  2973. GCCBuiltin<"__nvvm_txq_depth">;
  2974. def int_nvvm_txq_array_size
  2975. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2976. "llvm.nvvm.txq.array.size">,
  2977. GCCBuiltin<"__nvvm_txq_array_size">;
  2978. def int_nvvm_txq_num_samples
  2979. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2980. "llvm.nvvm.txq.num.samples">,
  2981. GCCBuiltin<"__nvvm_txq_num_samples">;
  2982. def int_nvvm_txq_num_mipmap_levels
  2983. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2984. "llvm.nvvm.txq.num.mipmap.levels">,
  2985. GCCBuiltin<"__nvvm_txq_num_mipmap_levels">;
  2986. //===- Surface Query ------------------------------------------------------===//
  2987. def int_nvvm_suq_channel_order
  2988. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2989. "llvm.nvvm.suq.channel.order">,
  2990. GCCBuiltin<"__nvvm_suq_channel_order">;
  2991. def int_nvvm_suq_channel_data_type
  2992. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2993. "llvm.nvvm.suq.channel.data.type">,
  2994. GCCBuiltin<"__nvvm_suq_channel_data_type">;
  2995. def int_nvvm_suq_width
  2996. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  2997. "llvm.nvvm.suq.width">,
  2998. GCCBuiltin<"__nvvm_suq_width">;
  2999. def int_nvvm_suq_height
  3000. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  3001. "llvm.nvvm.suq.height">,
  3002. GCCBuiltin<"__nvvm_suq_height">;
  3003. def int_nvvm_suq_depth
  3004. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  3005. "llvm.nvvm.suq.depth">,
  3006. GCCBuiltin<"__nvvm_suq_depth">;
  3007. def int_nvvm_suq_array_size
  3008. : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
  3009. "llvm.nvvm.suq.array.size">,
  3010. GCCBuiltin<"__nvvm_suq_array_size">;
  3011. //===- Handle Query -------------------------------------------------------===//
  3012. def int_nvvm_istypep_sampler
  3013. : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem],
  3014. "llvm.nvvm.istypep.sampler">,
  3015. GCCBuiltin<"__nvvm_istypep_sampler">;
  3016. def int_nvvm_istypep_surface
  3017. : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem],
  3018. "llvm.nvvm.istypep.surface">,
  3019. GCCBuiltin<"__nvvm_istypep_surface">;
  3020. def int_nvvm_istypep_texture
  3021. : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem],
  3022. "llvm.nvvm.istypep.texture">,
  3023. GCCBuiltin<"__nvvm_istypep_texture">;
  3024. //===- Surface Stores -----------------------------------------------------===//
  3025. // Unformatted
  3026. // .clamp variant
  3027. def int_nvvm_sust_b_1d_i8_clamp
  3028. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
  3029. "llvm.nvvm.sust.b.1d.i8.clamp">,
  3030. GCCBuiltin<"__nvvm_sust_b_1d_i8_clamp">;
  3031. def int_nvvm_sust_b_1d_i16_clamp
  3032. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
  3033. "llvm.nvvm.sust.b.1d.i16.clamp">,
  3034. GCCBuiltin<"__nvvm_sust_b_1d_i16_clamp">;
  3035. def int_nvvm_sust_b_1d_i32_clamp
  3036. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  3037. "llvm.nvvm.sust.b.1d.i32.clamp">,
  3038. GCCBuiltin<"__nvvm_sust_b_1d_i32_clamp">;
  3039. def int_nvvm_sust_b_1d_i64_clamp
  3040. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty], [],
  3041. "llvm.nvvm.sust.b.1d.i64.clamp">,
  3042. GCCBuiltin<"__nvvm_sust_b_1d_i64_clamp">;
  3043. def int_nvvm_sust_b_1d_v2i8_clamp
  3044. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
  3045. "llvm.nvvm.sust.b.1d.v2i8.clamp">,
  3046. GCCBuiltin<"__nvvm_sust_b_1d_v2i8_clamp">;
  3047. def int_nvvm_sust_b_1d_v2i16_clamp
  3048. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
  3049. "llvm.nvvm.sust.b.1d.v2i16.clamp">,
  3050. GCCBuiltin<"__nvvm_sust_b_1d_v2i16_clamp">;
  3051. def int_nvvm_sust_b_1d_v2i32_clamp
  3052. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3053. "llvm.nvvm.sust.b.1d.v2i32.clamp">,
  3054. GCCBuiltin<"__nvvm_sust_b_1d_v2i32_clamp">;
  3055. def int_nvvm_sust_b_1d_v2i64_clamp
  3056. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty, llvm_i64_ty], [],
  3057. "llvm.nvvm.sust.b.1d.v2i64.clamp">,
  3058. GCCBuiltin<"__nvvm_sust_b_1d_v2i64_clamp">;
  3059. def int_nvvm_sust_b_1d_v4i8_clamp
  3060. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
  3061. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3062. "llvm.nvvm.sust.b.1d.v4i8.clamp">,
  3063. GCCBuiltin<"__nvvm_sust_b_1d_v4i8_clamp">;
  3064. def int_nvvm_sust_b_1d_v4i16_clamp
  3065. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
  3066. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3067. "llvm.nvvm.sust.b.1d.v4i16.clamp">,
  3068. GCCBuiltin<"__nvvm_sust_b_1d_v4i16_clamp">;
  3069. def int_nvvm_sust_b_1d_v4i32_clamp
  3070. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3071. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3072. "llvm.nvvm.sust.b.1d.v4i32.clamp">,
  3073. GCCBuiltin<"__nvvm_sust_b_1d_v4i32_clamp">;
  3074. def int_nvvm_sust_b_1d_array_i8_clamp
  3075. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3076. "llvm.nvvm.sust.b.1d.array.i8.clamp">,
  3077. GCCBuiltin<"__nvvm_sust_b_1d_array_i8_clamp">;
  3078. def int_nvvm_sust_b_1d_array_i16_clamp
  3079. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3080. "llvm.nvvm.sust.b.1d.array.i16.clamp">,
  3081. GCCBuiltin<"__nvvm_sust_b_1d_array_i16_clamp">;
  3082. def int_nvvm_sust_b_1d_array_i32_clamp
  3083. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3084. "llvm.nvvm.sust.b.1d.array.i32.clamp">,
  3085. GCCBuiltin<"__nvvm_sust_b_1d_array_i32_clamp">;
  3086. def int_nvvm_sust_b_1d_array_i64_clamp
  3087. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
  3088. "llvm.nvvm.sust.b.1d.array.i64.clamp">,
  3089. GCCBuiltin<"__nvvm_sust_b_1d_array_i64_clamp">;
  3090. def int_nvvm_sust_b_1d_array_v2i8_clamp
  3091. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3092. llvm_i16_ty, llvm_i16_ty], [],
  3093. "llvm.nvvm.sust.b.1d.array.v2i8.clamp">,
  3094. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i8_clamp">;
  3095. def int_nvvm_sust_b_1d_array_v2i16_clamp
  3096. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3097. llvm_i16_ty, llvm_i16_ty], [],
  3098. "llvm.nvvm.sust.b.1d.array.v2i16.clamp">,
  3099. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i16_clamp">;
  3100. def int_nvvm_sust_b_1d_array_v2i32_clamp
  3101. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3102. llvm_i32_ty, llvm_i32_ty], [],
  3103. "llvm.nvvm.sust.b.1d.array.v2i32.clamp">,
  3104. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i32_clamp">;
  3105. def int_nvvm_sust_b_1d_array_v2i64_clamp
  3106. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3107. llvm_i64_ty, llvm_i64_ty], [],
  3108. "llvm.nvvm.sust.b.1d.array.v2i64.clamp">,
  3109. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i64_clamp">;
  3110. def int_nvvm_sust_b_1d_array_v4i8_clamp
  3111. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3112. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3113. "llvm.nvvm.sust.b.1d.array.v4i8.clamp">,
  3114. GCCBuiltin<"__nvvm_sust_b_1d_array_v4i8_clamp">;
  3115. def int_nvvm_sust_b_1d_array_v4i16_clamp
  3116. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3117. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3118. "llvm.nvvm.sust.b.1d.array.v4i16.clamp">,
  3119. GCCBuiltin<"__nvvm_sust_b_1d_array_v4i16_clamp">;
  3120. def int_nvvm_sust_b_1d_array_v4i32_clamp
  3121. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3122. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3123. "llvm.nvvm.sust.b.1d.array.v4i32.clamp">,
  3124. GCCBuiltin<"__nvvm_sust_b_1d_array_v4i32_clamp">;
  3125. def int_nvvm_sust_b_2d_i8_clamp
  3126. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3127. "llvm.nvvm.sust.b.2d.i8.clamp">,
  3128. GCCBuiltin<"__nvvm_sust_b_2d_i8_clamp">;
  3129. def int_nvvm_sust_b_2d_i16_clamp
  3130. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3131. "llvm.nvvm.sust.b.2d.i16.clamp">,
  3132. GCCBuiltin<"__nvvm_sust_b_2d_i16_clamp">;
  3133. def int_nvvm_sust_b_2d_i32_clamp
  3134. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3135. "llvm.nvvm.sust.b.2d.i32.clamp">,
  3136. GCCBuiltin<"__nvvm_sust_b_2d_i32_clamp">;
  3137. def int_nvvm_sust_b_2d_i64_clamp
  3138. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
  3139. "llvm.nvvm.sust.b.2d.i64.clamp">,
  3140. GCCBuiltin<"__nvvm_sust_b_2d_i64_clamp">;
  3141. def int_nvvm_sust_b_2d_v2i8_clamp
  3142. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3143. llvm_i16_ty, llvm_i16_ty], [],
  3144. "llvm.nvvm.sust.b.2d.v2i8.clamp">,
  3145. GCCBuiltin<"__nvvm_sust_b_2d_v2i8_clamp">;
  3146. def int_nvvm_sust_b_2d_v2i16_clamp
  3147. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3148. llvm_i16_ty, llvm_i16_ty], [],
  3149. "llvm.nvvm.sust.b.2d.v2i16.clamp">,
  3150. GCCBuiltin<"__nvvm_sust_b_2d_v2i16_clamp">;
  3151. def int_nvvm_sust_b_2d_v2i32_clamp
  3152. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3153. llvm_i32_ty, llvm_i32_ty], [],
  3154. "llvm.nvvm.sust.b.2d.v2i32.clamp">,
  3155. GCCBuiltin<"__nvvm_sust_b_2d_v2i32_clamp">;
  3156. def int_nvvm_sust_b_2d_v2i64_clamp
  3157. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3158. llvm_i64_ty, llvm_i64_ty], [],
  3159. "llvm.nvvm.sust.b.2d.v2i64.clamp">,
  3160. GCCBuiltin<"__nvvm_sust_b_2d_v2i64_clamp">;
  3161. def int_nvvm_sust_b_2d_v4i8_clamp
  3162. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3163. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3164. "llvm.nvvm.sust.b.2d.v4i8.clamp">,
  3165. GCCBuiltin<"__nvvm_sust_b_2d_v4i8_clamp">;
  3166. def int_nvvm_sust_b_2d_v4i16_clamp
  3167. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3168. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3169. "llvm.nvvm.sust.b.2d.v4i16.clamp">,
  3170. GCCBuiltin<"__nvvm_sust_b_2d_v4i16_clamp">;
  3171. def int_nvvm_sust_b_2d_v4i32_clamp
  3172. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3173. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3174. "llvm.nvvm.sust.b.2d.v4i32.clamp">,
  3175. GCCBuiltin<"__nvvm_sust_b_2d_v4i32_clamp">;
  3176. def int_nvvm_sust_b_2d_array_i8_clamp
  3177. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3178. llvm_i32_ty, llvm_i16_ty], [],
  3179. "llvm.nvvm.sust.b.2d.array.i8.clamp">,
  3180. GCCBuiltin<"__nvvm_sust_b_2d_array_i8_clamp">;
  3181. def int_nvvm_sust_b_2d_array_i16_clamp
  3182. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3183. llvm_i32_ty, llvm_i16_ty], [],
  3184. "llvm.nvvm.sust.b.2d.array.i16.clamp">,
  3185. GCCBuiltin<"__nvvm_sust_b_2d_array_i16_clamp">;
  3186. def int_nvvm_sust_b_2d_array_i32_clamp
  3187. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3188. llvm_i32_ty, llvm_i32_ty], [],
  3189. "llvm.nvvm.sust.b.2d.array.i32.clamp">,
  3190. GCCBuiltin<"__nvvm_sust_b_2d_array_i32_clamp">;
  3191. def int_nvvm_sust_b_2d_array_i64_clamp
  3192. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3193. llvm_i32_ty, llvm_i64_ty], [],
  3194. "llvm.nvvm.sust.b.2d.array.i64.clamp">,
  3195. GCCBuiltin<"__nvvm_sust_b_2d_array_i64_clamp">;
  3196. def int_nvvm_sust_b_2d_array_v2i8_clamp
  3197. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3198. llvm_i16_ty, llvm_i16_ty], [],
  3199. "llvm.nvvm.sust.b.2d.array.v2i8.clamp">,
  3200. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i8_clamp">;
  3201. def int_nvvm_sust_b_2d_array_v2i16_clamp
  3202. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3203. llvm_i16_ty, llvm_i16_ty], [],
  3204. "llvm.nvvm.sust.b.2d.array.v2i16.clamp">,
  3205. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i16_clamp">;
  3206. def int_nvvm_sust_b_2d_array_v2i32_clamp
  3207. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3208. llvm_i32_ty, llvm_i32_ty], [],
  3209. "llvm.nvvm.sust.b.2d.array.v2i32.clamp">,
  3210. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i32_clamp">;
  3211. def int_nvvm_sust_b_2d_array_v2i64_clamp
  3212. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3213. llvm_i64_ty, llvm_i64_ty], [],
  3214. "llvm.nvvm.sust.b.2d.array.v2i64.clamp">,
  3215. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i64_clamp">;
  3216. def int_nvvm_sust_b_2d_array_v4i8_clamp
  3217. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3218. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3219. "llvm.nvvm.sust.b.2d.array.v4i8.clamp">,
  3220. GCCBuiltin<"__nvvm_sust_b_2d_array_v4i8_clamp">;
  3221. def int_nvvm_sust_b_2d_array_v4i16_clamp
  3222. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3223. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3224. "llvm.nvvm.sust.b.2d.array.v4i16.clamp">,
  3225. GCCBuiltin<"__nvvm_sust_b_2d_array_v4i16_clamp">;
  3226. def int_nvvm_sust_b_2d_array_v4i32_clamp
  3227. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3228. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3229. "llvm.nvvm.sust.b.2d.array.v4i32.clamp">,
  3230. GCCBuiltin<"__nvvm_sust_b_2d_array_v4i32_clamp">;
  3231. def int_nvvm_sust_b_3d_i8_clamp
  3232. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3233. llvm_i32_ty, llvm_i16_ty], [],
  3234. "llvm.nvvm.sust.b.3d.i8.clamp">,
  3235. GCCBuiltin<"__nvvm_sust_b_3d_i8_clamp">;
  3236. def int_nvvm_sust_b_3d_i16_clamp
  3237. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3238. llvm_i32_ty, llvm_i16_ty], [],
  3239. "llvm.nvvm.sust.b.3d.i16.clamp">,
  3240. GCCBuiltin<"__nvvm_sust_b_3d_i16_clamp">;
  3241. def int_nvvm_sust_b_3d_i32_clamp
  3242. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3243. llvm_i32_ty, llvm_i32_ty], [],
  3244. "llvm.nvvm.sust.b.3d.i32.clamp">,
  3245. GCCBuiltin<"__nvvm_sust_b_3d_i32_clamp">;
  3246. def int_nvvm_sust_b_3d_i64_clamp
  3247. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3248. llvm_i32_ty, llvm_i64_ty], [],
  3249. "llvm.nvvm.sust.b.3d.i64.clamp">,
  3250. GCCBuiltin<"__nvvm_sust_b_3d_i64_clamp">;
  3251. def int_nvvm_sust_b_3d_v2i8_clamp
  3252. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3253. llvm_i16_ty, llvm_i16_ty], [],
  3254. "llvm.nvvm.sust.b.3d.v2i8.clamp">,
  3255. GCCBuiltin<"__nvvm_sust_b_3d_v2i8_clamp">;
  3256. def int_nvvm_sust_b_3d_v2i16_clamp
  3257. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3258. llvm_i16_ty, llvm_i16_ty], [],
  3259. "llvm.nvvm.sust.b.3d.v2i16.clamp">,
  3260. GCCBuiltin<"__nvvm_sust_b_3d_v2i16_clamp">;
  3261. def int_nvvm_sust_b_3d_v2i32_clamp
  3262. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3263. llvm_i32_ty, llvm_i32_ty], [],
  3264. "llvm.nvvm.sust.b.3d.v2i32.clamp">,
  3265. GCCBuiltin<"__nvvm_sust_b_3d_v2i32_clamp">;
  3266. def int_nvvm_sust_b_3d_v2i64_clamp
  3267. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3268. llvm_i64_ty, llvm_i64_ty], [],
  3269. "llvm.nvvm.sust.b.3d.v2i64.clamp">,
  3270. GCCBuiltin<"__nvvm_sust_b_3d_v2i64_clamp">;
  3271. def int_nvvm_sust_b_3d_v4i8_clamp
  3272. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3273. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3274. "llvm.nvvm.sust.b.3d.v4i8.clamp">,
  3275. GCCBuiltin<"__nvvm_sust_b_3d_v4i8_clamp">;
  3276. def int_nvvm_sust_b_3d_v4i16_clamp
  3277. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3278. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3279. "llvm.nvvm.sust.b.3d.v4i16.clamp">,
  3280. GCCBuiltin<"__nvvm_sust_b_3d_v4i16_clamp">;
  3281. def int_nvvm_sust_b_3d_v4i32_clamp
  3282. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3283. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3284. "llvm.nvvm.sust.b.3d.v4i32.clamp">,
  3285. GCCBuiltin<"__nvvm_sust_b_3d_v4i32_clamp">;
  3286. // .trap variant
  3287. def int_nvvm_sust_b_1d_i8_trap
  3288. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
  3289. "llvm.nvvm.sust.b.1d.i8.trap">,
  3290. GCCBuiltin<"__nvvm_sust_b_1d_i8_trap">;
  3291. def int_nvvm_sust_b_1d_i16_trap
  3292. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
  3293. "llvm.nvvm.sust.b.1d.i16.trap">,
  3294. GCCBuiltin<"__nvvm_sust_b_1d_i16_trap">;
  3295. def int_nvvm_sust_b_1d_i32_trap
  3296. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  3297. "llvm.nvvm.sust.b.1d.i32.trap">,
  3298. GCCBuiltin<"__nvvm_sust_b_1d_i32_trap">;
  3299. def int_nvvm_sust_b_1d_i64_trap
  3300. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty], [],
  3301. "llvm.nvvm.sust.b.1d.i64.trap">,
  3302. GCCBuiltin<"__nvvm_sust_b_1d_i64_trap">;
  3303. def int_nvvm_sust_b_1d_v2i8_trap
  3304. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
  3305. "llvm.nvvm.sust.b.1d.v2i8.trap">,
  3306. GCCBuiltin<"__nvvm_sust_b_1d_v2i8_trap">;
  3307. def int_nvvm_sust_b_1d_v2i16_trap
  3308. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
  3309. "llvm.nvvm.sust.b.1d.v2i16.trap">,
  3310. GCCBuiltin<"__nvvm_sust_b_1d_v2i16_trap">;
  3311. def int_nvvm_sust_b_1d_v2i32_trap
  3312. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3313. "llvm.nvvm.sust.b.1d.v2i32.trap">,
  3314. GCCBuiltin<"__nvvm_sust_b_1d_v2i32_trap">;
  3315. def int_nvvm_sust_b_1d_v2i64_trap
  3316. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty, llvm_i64_ty], [],
  3317. "llvm.nvvm.sust.b.1d.v2i64.trap">,
  3318. GCCBuiltin<"__nvvm_sust_b_1d_v2i64_trap">;
  3319. def int_nvvm_sust_b_1d_v4i8_trap
  3320. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
  3321. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3322. "llvm.nvvm.sust.b.1d.v4i8.trap">,
  3323. GCCBuiltin<"__nvvm_sust_b_1d_v4i8_trap">;
  3324. def int_nvvm_sust_b_1d_v4i16_trap
  3325. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
  3326. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3327. "llvm.nvvm.sust.b.1d.v4i16.trap">,
  3328. GCCBuiltin<"__nvvm_sust_b_1d_v4i16_trap">;
  3329. def int_nvvm_sust_b_1d_v4i32_trap
  3330. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3331. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3332. "llvm.nvvm.sust.b.1d.v4i32.trap">,
  3333. GCCBuiltin<"__nvvm_sust_b_1d_v4i32_trap">;
  3334. def int_nvvm_sust_b_1d_array_i8_trap
  3335. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3336. "llvm.nvvm.sust.b.1d.array.i8.trap">,
  3337. GCCBuiltin<"__nvvm_sust_b_1d_array_i8_trap">;
  3338. def int_nvvm_sust_b_1d_array_i16_trap
  3339. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3340. "llvm.nvvm.sust.b.1d.array.i16.trap">,
  3341. GCCBuiltin<"__nvvm_sust_b_1d_array_i16_trap">;
  3342. def int_nvvm_sust_b_1d_array_i32_trap
  3343. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3344. "llvm.nvvm.sust.b.1d.array.i32.trap">,
  3345. GCCBuiltin<"__nvvm_sust_b_1d_array_i32_trap">;
  3346. def int_nvvm_sust_b_1d_array_i64_trap
  3347. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
  3348. "llvm.nvvm.sust.b.1d.array.i64.trap">,
  3349. GCCBuiltin<"__nvvm_sust_b_1d_array_i64_trap">;
  3350. def int_nvvm_sust_b_1d_array_v2i8_trap
  3351. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3352. llvm_i16_ty, llvm_i16_ty], [],
  3353. "llvm.nvvm.sust.b.1d.array.v2i8.trap">,
  3354. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i8_trap">;
  3355. def int_nvvm_sust_b_1d_array_v2i16_trap
  3356. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3357. llvm_i16_ty, llvm_i16_ty], [],
  3358. "llvm.nvvm.sust.b.1d.array.v2i16.trap">,
  3359. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i16_trap">;
  3360. def int_nvvm_sust_b_1d_array_v2i32_trap
  3361. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3362. llvm_i32_ty, llvm_i32_ty], [],
  3363. "llvm.nvvm.sust.b.1d.array.v2i32.trap">,
  3364. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i32_trap">;
  3365. def int_nvvm_sust_b_1d_array_v2i64_trap
  3366. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3367. llvm_i64_ty, llvm_i64_ty], [],
  3368. "llvm.nvvm.sust.b.1d.array.v2i64.trap">,
  3369. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i64_trap">;
  3370. def int_nvvm_sust_b_1d_array_v4i8_trap
  3371. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3372. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3373. "llvm.nvvm.sust.b.1d.array.v4i8.trap">,
  3374. GCCBuiltin<"__nvvm_sust_b_1d_array_v4i8_trap">;
  3375. def int_nvvm_sust_b_1d_array_v4i16_trap
  3376. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3377. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3378. "llvm.nvvm.sust.b.1d.array.v4i16.trap">,
  3379. GCCBuiltin<"__nvvm_sust_b_1d_array_v4i16_trap">;
  3380. def int_nvvm_sust_b_1d_array_v4i32_trap
  3381. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3382. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3383. "llvm.nvvm.sust.b.1d.array.v4i32.trap">,
  3384. GCCBuiltin<"__nvvm_sust_b_1d_array_v4i32_trap">;
  3385. def int_nvvm_sust_b_2d_i8_trap
  3386. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3387. "llvm.nvvm.sust.b.2d.i8.trap">,
  3388. GCCBuiltin<"__nvvm_sust_b_2d_i8_trap">;
  3389. def int_nvvm_sust_b_2d_i16_trap
  3390. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3391. "llvm.nvvm.sust.b.2d.i16.trap">,
  3392. GCCBuiltin<"__nvvm_sust_b_2d_i16_trap">;
  3393. def int_nvvm_sust_b_2d_i32_trap
  3394. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3395. "llvm.nvvm.sust.b.2d.i32.trap">,
  3396. GCCBuiltin<"__nvvm_sust_b_2d_i32_trap">;
  3397. def int_nvvm_sust_b_2d_i64_trap
  3398. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
  3399. "llvm.nvvm.sust.b.2d.i64.trap">,
  3400. GCCBuiltin<"__nvvm_sust_b_2d_i64_trap">;
  3401. def int_nvvm_sust_b_2d_v2i8_trap
  3402. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3403. llvm_i16_ty, llvm_i16_ty], [],
  3404. "llvm.nvvm.sust.b.2d.v2i8.trap">,
  3405. GCCBuiltin<"__nvvm_sust_b_2d_v2i8_trap">;
  3406. def int_nvvm_sust_b_2d_v2i16_trap
  3407. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3408. llvm_i16_ty, llvm_i16_ty], [],
  3409. "llvm.nvvm.sust.b.2d.v2i16.trap">,
  3410. GCCBuiltin<"__nvvm_sust_b_2d_v2i16_trap">;
  3411. def int_nvvm_sust_b_2d_v2i32_trap
  3412. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3413. llvm_i32_ty, llvm_i32_ty], [],
  3414. "llvm.nvvm.sust.b.2d.v2i32.trap">,
  3415. GCCBuiltin<"__nvvm_sust_b_2d_v2i32_trap">;
  3416. def int_nvvm_sust_b_2d_v2i64_trap
  3417. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3418. llvm_i64_ty, llvm_i64_ty], [],
  3419. "llvm.nvvm.sust.b.2d.v2i64.trap">,
  3420. GCCBuiltin<"__nvvm_sust_b_2d_v2i64_trap">;
  3421. def int_nvvm_sust_b_2d_v4i8_trap
  3422. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3423. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3424. "llvm.nvvm.sust.b.2d.v4i8.trap">,
  3425. GCCBuiltin<"__nvvm_sust_b_2d_v4i8_trap">;
  3426. def int_nvvm_sust_b_2d_v4i16_trap
  3427. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3428. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3429. "llvm.nvvm.sust.b.2d.v4i16.trap">,
  3430. GCCBuiltin<"__nvvm_sust_b_2d_v4i16_trap">;
  3431. def int_nvvm_sust_b_2d_v4i32_trap
  3432. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3433. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3434. "llvm.nvvm.sust.b.2d.v4i32.trap">,
  3435. GCCBuiltin<"__nvvm_sust_b_2d_v4i32_trap">;
  3436. def int_nvvm_sust_b_2d_array_i8_trap
  3437. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3438. llvm_i32_ty, llvm_i16_ty], [],
  3439. "llvm.nvvm.sust.b.2d.array.i8.trap">,
  3440. GCCBuiltin<"__nvvm_sust_b_2d_array_i8_trap">;
  3441. def int_nvvm_sust_b_2d_array_i16_trap
  3442. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3443. llvm_i32_ty, llvm_i16_ty], [],
  3444. "llvm.nvvm.sust.b.2d.array.i16.trap">,
  3445. GCCBuiltin<"__nvvm_sust_b_2d_array_i16_trap">;
  3446. def int_nvvm_sust_b_2d_array_i32_trap
  3447. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3448. llvm_i32_ty, llvm_i32_ty], [],
  3449. "llvm.nvvm.sust.b.2d.array.i32.trap">,
  3450. GCCBuiltin<"__nvvm_sust_b_2d_array_i32_trap">;
  3451. def int_nvvm_sust_b_2d_array_i64_trap
  3452. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3453. llvm_i32_ty, llvm_i64_ty], [],
  3454. "llvm.nvvm.sust.b.2d.array.i64.trap">,
  3455. GCCBuiltin<"__nvvm_sust_b_2d_array_i64_trap">;
  3456. def int_nvvm_sust_b_2d_array_v2i8_trap
  3457. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3458. llvm_i16_ty, llvm_i16_ty], [],
  3459. "llvm.nvvm.sust.b.2d.array.v2i8.trap">,
  3460. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i8_trap">;
  3461. def int_nvvm_sust_b_2d_array_v2i16_trap
  3462. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3463. llvm_i16_ty, llvm_i16_ty], [],
  3464. "llvm.nvvm.sust.b.2d.array.v2i16.trap">,
  3465. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i16_trap">;
  3466. def int_nvvm_sust_b_2d_array_v2i32_trap
  3467. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3468. llvm_i32_ty, llvm_i32_ty], [],
  3469. "llvm.nvvm.sust.b.2d.array.v2i32.trap">,
  3470. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i32_trap">;
  3471. def int_nvvm_sust_b_2d_array_v2i64_trap
  3472. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3473. llvm_i64_ty, llvm_i64_ty], [],
  3474. "llvm.nvvm.sust.b.2d.array.v2i64.trap">,
  3475. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i64_trap">;
  3476. def int_nvvm_sust_b_2d_array_v4i8_trap
  3477. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3478. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3479. "llvm.nvvm.sust.b.2d.array.v4i8.trap">,
  3480. GCCBuiltin<"__nvvm_sust_b_2d_array_v4i8_trap">;
  3481. def int_nvvm_sust_b_2d_array_v4i16_trap
  3482. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3483. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3484. "llvm.nvvm.sust.b.2d.array.v4i16.trap">,
  3485. GCCBuiltin<"__nvvm_sust_b_2d_array_v4i16_trap">;
  3486. def int_nvvm_sust_b_2d_array_v4i32_trap
  3487. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3488. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3489. "llvm.nvvm.sust.b.2d.array.v4i32.trap">,
  3490. GCCBuiltin<"__nvvm_sust_b_2d_array_v4i32_trap">;
  3491. def int_nvvm_sust_b_3d_i8_trap
  3492. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3493. llvm_i32_ty, llvm_i16_ty], [],
  3494. "llvm.nvvm.sust.b.3d.i8.trap">,
  3495. GCCBuiltin<"__nvvm_sust_b_3d_i8_trap">;
  3496. def int_nvvm_sust_b_3d_i16_trap
  3497. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3498. llvm_i32_ty, llvm_i16_ty], [],
  3499. "llvm.nvvm.sust.b.3d.i16.trap">,
  3500. GCCBuiltin<"__nvvm_sust_b_3d_i16_trap">;
  3501. def int_nvvm_sust_b_3d_i32_trap
  3502. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3503. llvm_i32_ty, llvm_i32_ty], [],
  3504. "llvm.nvvm.sust.b.3d.i32.trap">,
  3505. GCCBuiltin<"__nvvm_sust_b_3d_i32_trap">;
  3506. def int_nvvm_sust_b_3d_i64_trap
  3507. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3508. llvm_i32_ty, llvm_i64_ty], [],
  3509. "llvm.nvvm.sust.b.3d.i64.trap">,
  3510. GCCBuiltin<"__nvvm_sust_b_3d_i64_trap">;
  3511. def int_nvvm_sust_b_3d_v2i8_trap
  3512. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3513. llvm_i16_ty, llvm_i16_ty], [],
  3514. "llvm.nvvm.sust.b.3d.v2i8.trap">,
  3515. GCCBuiltin<"__nvvm_sust_b_3d_v2i8_trap">;
  3516. def int_nvvm_sust_b_3d_v2i16_trap
  3517. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3518. llvm_i16_ty, llvm_i16_ty], [],
  3519. "llvm.nvvm.sust.b.3d.v2i16.trap">,
  3520. GCCBuiltin<"__nvvm_sust_b_3d_v2i16_trap">;
  3521. def int_nvvm_sust_b_3d_v2i32_trap
  3522. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3523. llvm_i32_ty, llvm_i32_ty], [],
  3524. "llvm.nvvm.sust.b.3d.v2i32.trap">,
  3525. GCCBuiltin<"__nvvm_sust_b_3d_v2i32_trap">;
  3526. def int_nvvm_sust_b_3d_v2i64_trap
  3527. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3528. llvm_i64_ty, llvm_i64_ty], [],
  3529. "llvm.nvvm.sust.b.3d.v2i64.trap">,
  3530. GCCBuiltin<"__nvvm_sust_b_3d_v2i64_trap">;
  3531. def int_nvvm_sust_b_3d_v4i8_trap
  3532. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3533. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3534. "llvm.nvvm.sust.b.3d.v4i8.trap">,
  3535. GCCBuiltin<"__nvvm_sust_b_3d_v4i8_trap">;
  3536. def int_nvvm_sust_b_3d_v4i16_trap
  3537. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3538. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3539. "llvm.nvvm.sust.b.3d.v4i16.trap">,
  3540. GCCBuiltin<"__nvvm_sust_b_3d_v4i16_trap">;
  3541. def int_nvvm_sust_b_3d_v4i32_trap
  3542. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3543. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3544. "llvm.nvvm.sust.b.3d.v4i32.trap">,
  3545. GCCBuiltin<"__nvvm_sust_b_3d_v4i32_trap">;
  3546. // .zero variant
  3547. def int_nvvm_sust_b_1d_i8_zero
  3548. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
  3549. "llvm.nvvm.sust.b.1d.i8.zero">,
  3550. GCCBuiltin<"__nvvm_sust_b_1d_i8_zero">;
  3551. def int_nvvm_sust_b_1d_i16_zero
  3552. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
  3553. "llvm.nvvm.sust.b.1d.i16.zero">,
  3554. GCCBuiltin<"__nvvm_sust_b_1d_i16_zero">;
  3555. def int_nvvm_sust_b_1d_i32_zero
  3556. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  3557. "llvm.nvvm.sust.b.1d.i32.zero">,
  3558. GCCBuiltin<"__nvvm_sust_b_1d_i32_zero">;
  3559. def int_nvvm_sust_b_1d_i64_zero
  3560. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty], [],
  3561. "llvm.nvvm.sust.b.1d.i64.zero">,
  3562. GCCBuiltin<"__nvvm_sust_b_1d_i64_zero">;
  3563. def int_nvvm_sust_b_1d_v2i8_zero
  3564. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
  3565. "llvm.nvvm.sust.b.1d.v2i8.zero">,
  3566. GCCBuiltin<"__nvvm_sust_b_1d_v2i8_zero">;
  3567. def int_nvvm_sust_b_1d_v2i16_zero
  3568. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
  3569. "llvm.nvvm.sust.b.1d.v2i16.zero">,
  3570. GCCBuiltin<"__nvvm_sust_b_1d_v2i16_zero">;
  3571. def int_nvvm_sust_b_1d_v2i32_zero
  3572. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3573. "llvm.nvvm.sust.b.1d.v2i32.zero">,
  3574. GCCBuiltin<"__nvvm_sust_b_1d_v2i32_zero">;
  3575. def int_nvvm_sust_b_1d_v2i64_zero
  3576. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty, llvm_i64_ty], [],
  3577. "llvm.nvvm.sust.b.1d.v2i64.zero">,
  3578. GCCBuiltin<"__nvvm_sust_b_1d_v2i64_zero">;
  3579. def int_nvvm_sust_b_1d_v4i8_zero
  3580. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
  3581. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3582. "llvm.nvvm.sust.b.1d.v4i8.zero">,
  3583. GCCBuiltin<"__nvvm_sust_b_1d_v4i8_zero">;
  3584. def int_nvvm_sust_b_1d_v4i16_zero
  3585. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
  3586. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3587. "llvm.nvvm.sust.b.1d.v4i16.zero">,
  3588. GCCBuiltin<"__nvvm_sust_b_1d_v4i16_zero">;
  3589. def int_nvvm_sust_b_1d_v4i32_zero
  3590. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3591. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3592. "llvm.nvvm.sust.b.1d.v4i32.zero">,
  3593. GCCBuiltin<"__nvvm_sust_b_1d_v4i32_zero">;
  3594. def int_nvvm_sust_b_1d_array_i8_zero
  3595. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3596. "llvm.nvvm.sust.b.1d.array.i8.zero">,
  3597. GCCBuiltin<"__nvvm_sust_b_1d_array_i8_zero">;
  3598. def int_nvvm_sust_b_1d_array_i16_zero
  3599. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3600. "llvm.nvvm.sust.b.1d.array.i16.zero">,
  3601. GCCBuiltin<"__nvvm_sust_b_1d_array_i16_zero">;
  3602. def int_nvvm_sust_b_1d_array_i32_zero
  3603. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3604. "llvm.nvvm.sust.b.1d.array.i32.zero">,
  3605. GCCBuiltin<"__nvvm_sust_b_1d_array_i32_zero">;
  3606. def int_nvvm_sust_b_1d_array_i64_zero
  3607. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
  3608. "llvm.nvvm.sust.b.1d.array.i64.zero">,
  3609. GCCBuiltin<"__nvvm_sust_b_1d_array_i64_zero">;
  3610. def int_nvvm_sust_b_1d_array_v2i8_zero
  3611. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3612. llvm_i16_ty, llvm_i16_ty], [],
  3613. "llvm.nvvm.sust.b.1d.array.v2i8.zero">,
  3614. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i8_zero">;
  3615. def int_nvvm_sust_b_1d_array_v2i16_zero
  3616. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3617. llvm_i16_ty, llvm_i16_ty], [],
  3618. "llvm.nvvm.sust.b.1d.array.v2i16.zero">,
  3619. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i16_zero">;
  3620. def int_nvvm_sust_b_1d_array_v2i32_zero
  3621. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3622. llvm_i32_ty, llvm_i32_ty], [],
  3623. "llvm.nvvm.sust.b.1d.array.v2i32.zero">,
  3624. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i32_zero">;
  3625. def int_nvvm_sust_b_1d_array_v2i64_zero
  3626. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3627. llvm_i64_ty, llvm_i64_ty], [],
  3628. "llvm.nvvm.sust.b.1d.array.v2i64.zero">,
  3629. GCCBuiltin<"__nvvm_sust_b_1d_array_v2i64_zero">;
  3630. def int_nvvm_sust_b_1d_array_v4i8_zero
  3631. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3632. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3633. "llvm.nvvm.sust.b.1d.array.v4i8.zero">,
  3634. GCCBuiltin<"__nvvm_sust_b_1d_array_v4i8_zero">;
  3635. def int_nvvm_sust_b_1d_array_v4i16_zero
  3636. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3637. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3638. "llvm.nvvm.sust.b.1d.array.v4i16.zero">,
  3639. GCCBuiltin<"__nvvm_sust_b_1d_array_v4i16_zero">;
  3640. def int_nvvm_sust_b_1d_array_v4i32_zero
  3641. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3642. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3643. "llvm.nvvm.sust.b.1d.array.v4i32.zero">,
  3644. GCCBuiltin<"__nvvm_sust_b_1d_array_v4i32_zero">;
  3645. def int_nvvm_sust_b_2d_i8_zero
  3646. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3647. "llvm.nvvm.sust.b.2d.i8.zero">,
  3648. GCCBuiltin<"__nvvm_sust_b_2d_i8_zero">;
  3649. def int_nvvm_sust_b_2d_i16_zero
  3650. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3651. "llvm.nvvm.sust.b.2d.i16.zero">,
  3652. GCCBuiltin<"__nvvm_sust_b_2d_i16_zero">;
  3653. def int_nvvm_sust_b_2d_i32_zero
  3654. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3655. "llvm.nvvm.sust.b.2d.i32.zero">,
  3656. GCCBuiltin<"__nvvm_sust_b_2d_i32_zero">;
  3657. def int_nvvm_sust_b_2d_i64_zero
  3658. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
  3659. "llvm.nvvm.sust.b.2d.i64.zero">,
  3660. GCCBuiltin<"__nvvm_sust_b_2d_i64_zero">;
  3661. def int_nvvm_sust_b_2d_v2i8_zero
  3662. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3663. llvm_i16_ty, llvm_i16_ty], [],
  3664. "llvm.nvvm.sust.b.2d.v2i8.zero">,
  3665. GCCBuiltin<"__nvvm_sust_b_2d_v2i8_zero">;
  3666. def int_nvvm_sust_b_2d_v2i16_zero
  3667. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3668. llvm_i16_ty, llvm_i16_ty], [],
  3669. "llvm.nvvm.sust.b.2d.v2i16.zero">,
  3670. GCCBuiltin<"__nvvm_sust_b_2d_v2i16_zero">;
  3671. def int_nvvm_sust_b_2d_v2i32_zero
  3672. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3673. llvm_i32_ty, llvm_i32_ty], [],
  3674. "llvm.nvvm.sust.b.2d.v2i32.zero">,
  3675. GCCBuiltin<"__nvvm_sust_b_2d_v2i32_zero">;
  3676. def int_nvvm_sust_b_2d_v2i64_zero
  3677. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3678. llvm_i64_ty, llvm_i64_ty], [],
  3679. "llvm.nvvm.sust.b.2d.v2i64.zero">,
  3680. GCCBuiltin<"__nvvm_sust_b_2d_v2i64_zero">;
  3681. def int_nvvm_sust_b_2d_v4i8_zero
  3682. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3683. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3684. "llvm.nvvm.sust.b.2d.v4i8.zero">,
  3685. GCCBuiltin<"__nvvm_sust_b_2d_v4i8_zero">;
  3686. def int_nvvm_sust_b_2d_v4i16_zero
  3687. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3688. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3689. "llvm.nvvm.sust.b.2d.v4i16.zero">,
  3690. GCCBuiltin<"__nvvm_sust_b_2d_v4i16_zero">;
  3691. def int_nvvm_sust_b_2d_v4i32_zero
  3692. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3693. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3694. "llvm.nvvm.sust.b.2d.v4i32.zero">,
  3695. GCCBuiltin<"__nvvm_sust_b_2d_v4i32_zero">;
  3696. def int_nvvm_sust_b_2d_array_i8_zero
  3697. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3698. llvm_i32_ty, llvm_i16_ty], [],
  3699. "llvm.nvvm.sust.b.2d.array.i8.zero">,
  3700. GCCBuiltin<"__nvvm_sust_b_2d_array_i8_zero">;
  3701. def int_nvvm_sust_b_2d_array_i16_zero
  3702. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3703. llvm_i32_ty, llvm_i16_ty], [],
  3704. "llvm.nvvm.sust.b.2d.array.i16.zero">,
  3705. GCCBuiltin<"__nvvm_sust_b_2d_array_i16_zero">;
  3706. def int_nvvm_sust_b_2d_array_i32_zero
  3707. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3708. llvm_i32_ty, llvm_i32_ty], [],
  3709. "llvm.nvvm.sust.b.2d.array.i32.zero">,
  3710. GCCBuiltin<"__nvvm_sust_b_2d_array_i32_zero">;
  3711. def int_nvvm_sust_b_2d_array_i64_zero
  3712. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3713. llvm_i32_ty, llvm_i64_ty], [],
  3714. "llvm.nvvm.sust.b.2d.array.i64.zero">,
  3715. GCCBuiltin<"__nvvm_sust_b_2d_array_i64_zero">;
  3716. def int_nvvm_sust_b_2d_array_v2i8_zero
  3717. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3718. llvm_i16_ty, llvm_i16_ty], [],
  3719. "llvm.nvvm.sust.b.2d.array.v2i8.zero">,
  3720. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i8_zero">;
  3721. def int_nvvm_sust_b_2d_array_v2i16_zero
  3722. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3723. llvm_i16_ty, llvm_i16_ty], [],
  3724. "llvm.nvvm.sust.b.2d.array.v2i16.zero">,
  3725. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i16_zero">;
  3726. def int_nvvm_sust_b_2d_array_v2i32_zero
  3727. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3728. llvm_i32_ty, llvm_i32_ty], [],
  3729. "llvm.nvvm.sust.b.2d.array.v2i32.zero">,
  3730. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i32_zero">;
  3731. def int_nvvm_sust_b_2d_array_v2i64_zero
  3732. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3733. llvm_i64_ty, llvm_i64_ty], [],
  3734. "llvm.nvvm.sust.b.2d.array.v2i64.zero">,
  3735. GCCBuiltin<"__nvvm_sust_b_2d_array_v2i64_zero">;
  3736. def int_nvvm_sust_b_2d_array_v4i8_zero
  3737. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3738. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3739. "llvm.nvvm.sust.b.2d.array.v4i8.zero">,
  3740. GCCBuiltin<"__nvvm_sust_b_2d_array_v4i8_zero">;
  3741. def int_nvvm_sust_b_2d_array_v4i16_zero
  3742. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3743. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3744. "llvm.nvvm.sust.b.2d.array.v4i16.zero">,
  3745. GCCBuiltin<"__nvvm_sust_b_2d_array_v4i16_zero">;
  3746. def int_nvvm_sust_b_2d_array_v4i32_zero
  3747. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3748. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3749. "llvm.nvvm.sust.b.2d.array.v4i32.zero">,
  3750. GCCBuiltin<"__nvvm_sust_b_2d_array_v4i32_zero">;
  3751. def int_nvvm_sust_b_3d_i8_zero
  3752. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3753. llvm_i32_ty, llvm_i16_ty], [],
  3754. "llvm.nvvm.sust.b.3d.i8.zero">,
  3755. GCCBuiltin<"__nvvm_sust_b_3d_i8_zero">;
  3756. def int_nvvm_sust_b_3d_i16_zero
  3757. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3758. llvm_i32_ty, llvm_i16_ty], [],
  3759. "llvm.nvvm.sust.b.3d.i16.zero">,
  3760. GCCBuiltin<"__nvvm_sust_b_3d_i16_zero">;
  3761. def int_nvvm_sust_b_3d_i32_zero
  3762. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3763. llvm_i32_ty, llvm_i32_ty], [],
  3764. "llvm.nvvm.sust.b.3d.i32.zero">,
  3765. GCCBuiltin<"__nvvm_sust_b_3d_i32_zero">;
  3766. def int_nvvm_sust_b_3d_i64_zero
  3767. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3768. llvm_i32_ty, llvm_i64_ty], [],
  3769. "llvm.nvvm.sust.b.3d.i64.zero">,
  3770. GCCBuiltin<"__nvvm_sust_b_3d_i64_zero">;
  3771. def int_nvvm_sust_b_3d_v2i8_zero
  3772. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3773. llvm_i16_ty, llvm_i16_ty], [],
  3774. "llvm.nvvm.sust.b.3d.v2i8.zero">,
  3775. GCCBuiltin<"__nvvm_sust_b_3d_v2i8_zero">;
  3776. def int_nvvm_sust_b_3d_v2i16_zero
  3777. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3778. llvm_i16_ty, llvm_i16_ty], [],
  3779. "llvm.nvvm.sust.b.3d.v2i16.zero">,
  3780. GCCBuiltin<"__nvvm_sust_b_3d_v2i16_zero">;
  3781. def int_nvvm_sust_b_3d_v2i32_zero
  3782. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3783. llvm_i32_ty, llvm_i32_ty], [],
  3784. "llvm.nvvm.sust.b.3d.v2i32.zero">,
  3785. GCCBuiltin<"__nvvm_sust_b_3d_v2i32_zero">;
  3786. def int_nvvm_sust_b_3d_v2i64_zero
  3787. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3788. llvm_i64_ty, llvm_i64_ty], [],
  3789. "llvm.nvvm.sust.b.3d.v2i64.zero">,
  3790. GCCBuiltin<"__nvvm_sust_b_3d_v2i64_zero">;
  3791. def int_nvvm_sust_b_3d_v4i8_zero
  3792. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3793. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3794. "llvm.nvvm.sust.b.3d.v4i8.zero">,
  3795. GCCBuiltin<"__nvvm_sust_b_3d_v4i8_zero">;
  3796. def int_nvvm_sust_b_3d_v4i16_zero
  3797. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3798. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3799. "llvm.nvvm.sust.b.3d.v4i16.zero">,
  3800. GCCBuiltin<"__nvvm_sust_b_3d_v4i16_zero">;
  3801. def int_nvvm_sust_b_3d_v4i32_zero
  3802. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3803. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3804. "llvm.nvvm.sust.b.3d.v4i32.zero">,
  3805. GCCBuiltin<"__nvvm_sust_b_3d_v4i32_zero">;
  3806. // Formatted
  3807. def int_nvvm_sust_p_1d_i8_trap
  3808. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
  3809. "llvm.nvvm.sust.p.1d.i8.trap">,
  3810. GCCBuiltin<"__nvvm_sust_p_1d_i8_trap">;
  3811. def int_nvvm_sust_p_1d_i16_trap
  3812. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
  3813. "llvm.nvvm.sust.p.1d.i16.trap">,
  3814. GCCBuiltin<"__nvvm_sust_p_1d_i16_trap">;
  3815. def int_nvvm_sust_p_1d_i32_trap
  3816. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
  3817. "llvm.nvvm.sust.p.1d.i32.trap">,
  3818. GCCBuiltin<"__nvvm_sust_p_1d_i32_trap">;
  3819. def int_nvvm_sust_p_1d_v2i8_trap
  3820. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
  3821. "llvm.nvvm.sust.p.1d.v2i8.trap">,
  3822. GCCBuiltin<"__nvvm_sust_p_1d_v2i8_trap">;
  3823. def int_nvvm_sust_p_1d_v2i16_trap
  3824. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
  3825. "llvm.nvvm.sust.p.1d.v2i16.trap">,
  3826. GCCBuiltin<"__nvvm_sust_p_1d_v2i16_trap">;
  3827. def int_nvvm_sust_p_1d_v2i32_trap
  3828. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3829. "llvm.nvvm.sust.p.1d.v2i32.trap">,
  3830. GCCBuiltin<"__nvvm_sust_p_1d_v2i32_trap">;
  3831. def int_nvvm_sust_p_1d_v4i8_trap
  3832. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
  3833. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3834. "llvm.nvvm.sust.p.1d.v4i8.trap">,
  3835. GCCBuiltin<"__nvvm_sust_p_1d_v4i8_trap">;
  3836. def int_nvvm_sust_p_1d_v4i16_trap
  3837. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
  3838. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3839. "llvm.nvvm.sust.p.1d.v4i16.trap">,
  3840. GCCBuiltin<"__nvvm_sust_p_1d_v4i16_trap">;
  3841. def int_nvvm_sust_p_1d_v4i32_trap
  3842. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3843. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3844. "llvm.nvvm.sust.p.1d.v4i32.trap">,
  3845. GCCBuiltin<"__nvvm_sust_p_1d_v4i32_trap">;
  3846. def int_nvvm_sust_p_1d_array_i8_trap
  3847. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3848. "llvm.nvvm.sust.p.1d.array.i8.trap">,
  3849. GCCBuiltin<"__nvvm_sust_p_1d_array_i8_trap">;
  3850. def int_nvvm_sust_p_1d_array_i16_trap
  3851. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3852. "llvm.nvvm.sust.p.1d.array.i16.trap">,
  3853. GCCBuiltin<"__nvvm_sust_p_1d_array_i16_trap">;
  3854. def int_nvvm_sust_p_1d_array_i32_trap
  3855. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3856. "llvm.nvvm.sust.p.1d.array.i32.trap">,
  3857. GCCBuiltin<"__nvvm_sust_p_1d_array_i32_trap">;
  3858. def int_nvvm_sust_p_1d_array_v2i8_trap
  3859. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3860. llvm_i16_ty, llvm_i16_ty], [],
  3861. "llvm.nvvm.sust.p.1d.array.v2i8.trap">,
  3862. GCCBuiltin<"__nvvm_sust_p_1d_array_v2i8_trap">;
  3863. def int_nvvm_sust_p_1d_array_v2i16_trap
  3864. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3865. llvm_i16_ty, llvm_i16_ty], [],
  3866. "llvm.nvvm.sust.p.1d.array.v2i16.trap">,
  3867. GCCBuiltin<"__nvvm_sust_p_1d_array_v2i16_trap">;
  3868. def int_nvvm_sust_p_1d_array_v2i32_trap
  3869. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3870. llvm_i32_ty, llvm_i32_ty], [],
  3871. "llvm.nvvm.sust.p.1d.array.v2i32.trap">,
  3872. GCCBuiltin<"__nvvm_sust_p_1d_array_v2i32_trap">;
  3873. def int_nvvm_sust_p_1d_array_v4i8_trap
  3874. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3875. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3876. "llvm.nvvm.sust.p.1d.array.v4i8.trap">,
  3877. GCCBuiltin<"__nvvm_sust_p_1d_array_v4i8_trap">;
  3878. def int_nvvm_sust_p_1d_array_v4i16_trap
  3879. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3880. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3881. "llvm.nvvm.sust.p.1d.array.v4i16.trap">,
  3882. GCCBuiltin<"__nvvm_sust_p_1d_array_v4i16_trap">;
  3883. def int_nvvm_sust_p_1d_array_v4i32_trap
  3884. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3885. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3886. "llvm.nvvm.sust.p.1d.array.v4i32.trap">,
  3887. GCCBuiltin<"__nvvm_sust_p_1d_array_v4i32_trap">;
  3888. def int_nvvm_sust_p_2d_i8_trap
  3889. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3890. "llvm.nvvm.sust.p.2d.i8.trap">,
  3891. GCCBuiltin<"__nvvm_sust_p_2d_i8_trap">;
  3892. def int_nvvm_sust_p_2d_i16_trap
  3893. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
  3894. "llvm.nvvm.sust.p.2d.i16.trap">,
  3895. GCCBuiltin<"__nvvm_sust_p_2d_i16_trap">;
  3896. def int_nvvm_sust_p_2d_i32_trap
  3897. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3898. "llvm.nvvm.sust.p.2d.i32.trap">,
  3899. GCCBuiltin<"__nvvm_sust_p_2d_i32_trap">;
  3900. def int_nvvm_sust_p_2d_v2i8_trap
  3901. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3902. llvm_i16_ty, llvm_i16_ty], [],
  3903. "llvm.nvvm.sust.p.2d.v2i8.trap">,
  3904. GCCBuiltin<"__nvvm_sust_p_2d_v2i8_trap">;
  3905. def int_nvvm_sust_p_2d_v2i16_trap
  3906. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3907. llvm_i16_ty, llvm_i16_ty], [],
  3908. "llvm.nvvm.sust.p.2d.v2i16.trap">,
  3909. GCCBuiltin<"__nvvm_sust_p_2d_v2i16_trap">;
  3910. def int_nvvm_sust_p_2d_v2i32_trap
  3911. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3912. llvm_i32_ty, llvm_i32_ty], [],
  3913. "llvm.nvvm.sust.p.2d.v2i32.trap">,
  3914. GCCBuiltin<"__nvvm_sust_p_2d_v2i32_trap">;
  3915. def int_nvvm_sust_p_2d_v4i8_trap
  3916. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3917. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3918. "llvm.nvvm.sust.p.2d.v4i8.trap">,
  3919. GCCBuiltin<"__nvvm_sust_p_2d_v4i8_trap">;
  3920. def int_nvvm_sust_p_2d_v4i16_trap
  3921. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
  3922. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3923. "llvm.nvvm.sust.p.2d.v4i16.trap">,
  3924. GCCBuiltin<"__nvvm_sust_p_2d_v4i16_trap">;
  3925. def int_nvvm_sust_p_2d_v4i32_trap
  3926. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3927. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3928. "llvm.nvvm.sust.p.2d.v4i32.trap">,
  3929. GCCBuiltin<"__nvvm_sust_p_2d_v4i32_trap">;
  3930. def int_nvvm_sust_p_2d_array_i8_trap
  3931. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3932. llvm_i32_ty, llvm_i16_ty], [],
  3933. "llvm.nvvm.sust.p.2d.array.i8.trap">,
  3934. GCCBuiltin<"__nvvm_sust_p_2d_array_i8_trap">;
  3935. def int_nvvm_sust_p_2d_array_i16_trap
  3936. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3937. llvm_i32_ty, llvm_i16_ty], [],
  3938. "llvm.nvvm.sust.p.2d.array.i16.trap">,
  3939. GCCBuiltin<"__nvvm_sust_p_2d_array_i16_trap">;
  3940. def int_nvvm_sust_p_2d_array_i32_trap
  3941. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3942. llvm_i32_ty, llvm_i32_ty], [],
  3943. "llvm.nvvm.sust.p.2d.array.i32.trap">,
  3944. GCCBuiltin<"__nvvm_sust_p_2d_array_i32_trap">;
  3945. def int_nvvm_sust_p_2d_array_v2i8_trap
  3946. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3947. llvm_i16_ty, llvm_i16_ty], [],
  3948. "llvm.nvvm.sust.p.2d.array.v2i8.trap">,
  3949. GCCBuiltin<"__nvvm_sust_p_2d_array_v2i8_trap">;
  3950. def int_nvvm_sust_p_2d_array_v2i16_trap
  3951. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3952. llvm_i16_ty, llvm_i16_ty], [],
  3953. "llvm.nvvm.sust.p.2d.array.v2i16.trap">,
  3954. GCCBuiltin<"__nvvm_sust_p_2d_array_v2i16_trap">;
  3955. def int_nvvm_sust_p_2d_array_v2i32_trap
  3956. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3957. llvm_i32_ty, llvm_i32_ty], [],
  3958. "llvm.nvvm.sust.p.2d.array.v2i32.trap">,
  3959. GCCBuiltin<"__nvvm_sust_p_2d_array_v2i32_trap">;
  3960. def int_nvvm_sust_p_2d_array_v4i8_trap
  3961. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3962. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3963. "llvm.nvvm.sust.p.2d.array.v4i8.trap">,
  3964. GCCBuiltin<"__nvvm_sust_p_2d_array_v4i8_trap">;
  3965. def int_nvvm_sust_p_2d_array_v4i16_trap
  3966. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3967. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  3968. "llvm.nvvm.sust.p.2d.array.v4i16.trap">,
  3969. GCCBuiltin<"__nvvm_sust_p_2d_array_v4i16_trap">;
  3970. def int_nvvm_sust_p_2d_array_v4i32_trap
  3971. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3972. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  3973. "llvm.nvvm.sust.p.2d.array.v4i32.trap">,
  3974. GCCBuiltin<"__nvvm_sust_p_2d_array_v4i32_trap">;
  3975. def int_nvvm_sust_p_3d_i8_trap
  3976. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3977. llvm_i32_ty, llvm_i16_ty], [],
  3978. "llvm.nvvm.sust.p.3d.i8.trap">,
  3979. GCCBuiltin<"__nvvm_sust_p_3d_i8_trap">;
  3980. def int_nvvm_sust_p_3d_i16_trap
  3981. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3982. llvm_i32_ty, llvm_i16_ty], [],
  3983. "llvm.nvvm.sust.p.3d.i16.trap">,
  3984. GCCBuiltin<"__nvvm_sust_p_3d_i16_trap">;
  3985. def int_nvvm_sust_p_3d_i32_trap
  3986. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
  3987. llvm_i32_ty, llvm_i32_ty], [],
  3988. "llvm.nvvm.sust.p.3d.i32.trap">,
  3989. GCCBuiltin<"__nvvm_sust_p_3d_i32_trap">;
  3990. def int_nvvm_sust_p_3d_v2i8_trap
  3991. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3992. llvm_i16_ty, llvm_i16_ty], [],
  3993. "llvm.nvvm.sust.p.3d.v2i8.trap">,
  3994. GCCBuiltin<"__nvvm_sust_p_3d_v2i8_trap">;
  3995. def int_nvvm_sust_p_3d_v2i16_trap
  3996. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  3997. llvm_i16_ty, llvm_i16_ty], [],
  3998. "llvm.nvvm.sust.p.3d.v2i16.trap">,
  3999. GCCBuiltin<"__nvvm_sust_p_3d_v2i16_trap">;
  4000. def int_nvvm_sust_p_3d_v2i32_trap
  4001. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  4002. llvm_i32_ty, llvm_i32_ty], [],
  4003. "llvm.nvvm.sust.p.3d.v2i32.trap">,
  4004. GCCBuiltin<"__nvvm_sust_p_3d_v2i32_trap">;
  4005. def int_nvvm_sust_p_3d_v4i8_trap
  4006. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  4007. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  4008. "llvm.nvvm.sust.p.3d.v4i8.trap">,
  4009. GCCBuiltin<"__nvvm_sust_p_3d_v4i8_trap">;
  4010. def int_nvvm_sust_p_3d_v4i16_trap
  4011. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  4012. llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
  4013. "llvm.nvvm.sust.p.3d.v4i16.trap">,
  4014. GCCBuiltin<"__nvvm_sust_p_3d_v4i16_trap">;
  4015. def int_nvvm_sust_p_3d_v4i32_trap
  4016. : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
  4017. llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
  4018. "llvm.nvvm.sust.p.3d.v4i32.trap">,
  4019. GCCBuiltin<"__nvvm_sust_p_3d_v4i32_trap">;
  4020. def int_nvvm_rotate_b32
  4021. : DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4022. [IntrNoMem, IntrSpeculatable], "llvm.nvvm.rotate.b32">,
  4023. GCCBuiltin<"__nvvm_rotate_b32">;
  4024. def int_nvvm_rotate_b64
  4025. : DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty],
  4026. [IntrNoMem, IntrSpeculatable], "llvm.nvvm.rotate.b64">,
  4027. GCCBuiltin<"__nvvm_rotate_b64">;
  4028. def int_nvvm_rotate_right_b64
  4029. : DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty],
  4030. [IntrNoMem, IntrSpeculatable], "llvm.nvvm.rotate.right.b64">,
  4031. GCCBuiltin<"__nvvm_rotate_right_b64">;
  4032. def int_nvvm_swap_lo_hi_b64
  4033. : DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty],
  4034. [IntrNoMem, IntrSpeculatable], "llvm.nvvm.swap.lo.hi.b64">,
  4035. GCCBuiltin<"__nvvm_swap_lo_hi_b64">;
  4036. // Accessing special registers.
  4037. multiclass PTXReadSRegIntrinsic_v4i32<string regname> {
  4038. // FIXME: Do we need the 128-bit integer type version?
  4039. // def _r64 : Intrinsic<[llvm_i128_ty], [], [IntrNoMem, IntrSpeculatable]>;
  4040. // FIXME: Enable this once v4i32 support is enabled in back-end.
  4041. // def _v4i16 : Intrinsic<[llvm_v4i32_ty], [], [IntrNoMem, IntrSpeculatable]>;
  4042. def _x : Intrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>,
  4043. GCCBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_x">;
  4044. def _y : Intrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>,
  4045. GCCBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_y">;
  4046. def _z : Intrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>,
  4047. GCCBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_z">;
  4048. def _w : Intrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>,
  4049. GCCBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_w">;
  4050. }
  4051. class PTXReadSRegIntrinsic_r32<string name>
  4052. : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>,
  4053. GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
  4054. class PTXReadSRegIntrinsic_r64<string name>
  4055. : DefaultAttrsIntrinsic<[llvm_i64_ty], [], [IntrNoMem, IntrSpeculatable]>,
  4056. GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
  4057. // Intrinsics to read registers with non-constant values. E.g. the values that
  4058. // do change over the kernel lifetime. Such reads should not be CSE'd.
  4059. class PTXReadNCSRegIntrinsic_r32<string name>
  4060. : Intrinsic<[llvm_i32_ty], [], [IntrInaccessibleMemOnly]>,
  4061. GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
  4062. class PTXReadNCSRegIntrinsic_r64<string name>
  4063. : Intrinsic<[llvm_i64_ty], [], [IntrInaccessibleMemOnly]>,
  4064. GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
  4065. defm int_nvvm_read_ptx_sreg_tid : PTXReadSRegIntrinsic_v4i32<"tid">;
  4066. defm int_nvvm_read_ptx_sreg_ntid : PTXReadSRegIntrinsic_v4i32<"ntid">;
  4067. def int_nvvm_read_ptx_sreg_laneid : PTXReadSRegIntrinsic_r32<"laneid">;
  4068. def int_nvvm_read_ptx_sreg_warpid : PTXReadSRegIntrinsic_r32<"warpid">;
  4069. def int_nvvm_read_ptx_sreg_nwarpid : PTXReadSRegIntrinsic_r32<"nwarpid">;
  4070. defm int_nvvm_read_ptx_sreg_ctaid : PTXReadSRegIntrinsic_v4i32<"ctaid">;
  4071. defm int_nvvm_read_ptx_sreg_nctaid : PTXReadSRegIntrinsic_v4i32<"nctaid">;
  4072. def int_nvvm_read_ptx_sreg_smid : PTXReadSRegIntrinsic_r32<"smid">;
  4073. def int_nvvm_read_ptx_sreg_nsmid : PTXReadSRegIntrinsic_r32<"nsmid">;
  4074. def int_nvvm_read_ptx_sreg_gridid : PTXReadSRegIntrinsic_r32<"gridid">;
  4075. def int_nvvm_read_ptx_sreg_lanemask_eq :
  4076. PTXReadSRegIntrinsic_r32<"lanemask_eq">;
  4077. def int_nvvm_read_ptx_sreg_lanemask_le :
  4078. PTXReadSRegIntrinsic_r32<"lanemask_le">;
  4079. def int_nvvm_read_ptx_sreg_lanemask_lt :
  4080. PTXReadSRegIntrinsic_r32<"lanemask_lt">;
  4081. def int_nvvm_read_ptx_sreg_lanemask_ge :
  4082. PTXReadSRegIntrinsic_r32<"lanemask_ge">;
  4083. def int_nvvm_read_ptx_sreg_lanemask_gt :
  4084. PTXReadSRegIntrinsic_r32<"lanemask_gt">;
  4085. def int_nvvm_read_ptx_sreg_clock : PTXReadNCSRegIntrinsic_r32<"clock">;
  4086. def int_nvvm_read_ptx_sreg_clock64 : PTXReadNCSRegIntrinsic_r64<"clock64">;
  4087. def int_nvvm_read_ptx_sreg_pm0 : PTXReadNCSRegIntrinsic_r32<"pm0">;
  4088. def int_nvvm_read_ptx_sreg_pm1 : PTXReadNCSRegIntrinsic_r32<"pm1">;
  4089. def int_nvvm_read_ptx_sreg_pm2 : PTXReadNCSRegIntrinsic_r32<"pm2">;
  4090. def int_nvvm_read_ptx_sreg_pm3 : PTXReadNCSRegIntrinsic_r32<"pm3">;
  4091. def int_nvvm_read_ptx_sreg_warpsize : PTXReadSRegIntrinsic_r32<"warpsize">;
  4092. //
  4093. // SHUFFLE
  4094. //
  4095. // Generate intrinsics for all variants of shfl instruction.
  4096. foreach sync = [false, true] in {
  4097. foreach mode = ["up", "down", "bfly", "idx"] in {
  4098. foreach type = ["i32", "f32"] in {
  4099. foreach return_pred = [false, true] in {
  4100. foreach i = [SHFL_INFO<sync, mode, type, return_pred>] in {
  4101. if i.withGccBuiltin then {
  4102. def i.Name : GCCBuiltin<i.Builtin>,
  4103. Intrinsic<i.RetTy, i.ArgsTy,
  4104. [IntrInaccessibleMemOnly, IntrConvergent],
  4105. i.IntrName>;
  4106. }
  4107. if i.withoutGccBuiltin then {
  4108. def i.Name : Intrinsic<i.RetTy, i.ArgsTy,
  4109. [IntrInaccessibleMemOnly, IntrConvergent], i.IntrName>;
  4110. }
  4111. }
  4112. }
  4113. }
  4114. }
  4115. }
  4116. //
  4117. // VOTE
  4118. //
  4119. // vote.all pred
  4120. def int_nvvm_vote_all :
  4121. Intrinsic<[llvm_i1_ty], [llvm_i1_ty],
  4122. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.all">,
  4123. GCCBuiltin<"__nvvm_vote_all">;
  4124. // vote.any pred
  4125. def int_nvvm_vote_any :
  4126. Intrinsic<[llvm_i1_ty], [llvm_i1_ty],
  4127. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.any">,
  4128. GCCBuiltin<"__nvvm_vote_any">;
  4129. // vote.uni pred
  4130. def int_nvvm_vote_uni :
  4131. Intrinsic<[llvm_i1_ty], [llvm_i1_ty],
  4132. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.uni">,
  4133. GCCBuiltin<"__nvvm_vote_uni">;
  4134. // vote.ballot pred
  4135. def int_nvvm_vote_ballot :
  4136. Intrinsic<[llvm_i32_ty], [llvm_i1_ty],
  4137. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.ballot">,
  4138. GCCBuiltin<"__nvvm_vote_ballot">;
  4139. //
  4140. // VOTE.SYNC
  4141. //
  4142. // vote.sync.all mask, pred
  4143. def int_nvvm_vote_all_sync :
  4144. Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_i1_ty],
  4145. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.all.sync">,
  4146. GCCBuiltin<"__nvvm_vote_all_sync">;
  4147. // vote.sync.any mask, pred
  4148. def int_nvvm_vote_any_sync :
  4149. Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_i1_ty],
  4150. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.any.sync">,
  4151. GCCBuiltin<"__nvvm_vote_any_sync">;
  4152. // vote.sync.uni mask, pred
  4153. def int_nvvm_vote_uni_sync :
  4154. Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_i1_ty],
  4155. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.uni.sync">,
  4156. GCCBuiltin<"__nvvm_vote_uni_sync">;
  4157. // vote.sync.ballot mask, pred
  4158. def int_nvvm_vote_ballot_sync :
  4159. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i1_ty],
  4160. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.ballot.sync">,
  4161. GCCBuiltin<"__nvvm_vote_ballot_sync">;
  4162. //
  4163. // MATCH.SYNC
  4164. //
  4165. // match.any.sync.b32 mask, value
  4166. def int_nvvm_match_any_sync_i32 :
  4167. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4168. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.match.any.sync.i32">,
  4169. GCCBuiltin<"__nvvm_match_any_sync_i32">;
  4170. // match.any.sync.b64 mask, value
  4171. def int_nvvm_match_any_sync_i64 :
  4172. Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i64_ty],
  4173. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.match.any.sync.i64">,
  4174. GCCBuiltin<"__nvvm_match_any_sync_i64">;
  4175. // match.all instruction have two variants -- one returns a single value, another
  4176. // returns a pair {value, predicate}. We currently only implement the latter as
  4177. // that's the variant exposed by CUDA API.
  4178. // match.all.sync.b32p mask, value
  4179. def int_nvvm_match_all_sync_i32p :
  4180. Intrinsic<[llvm_i32_ty, llvm_i1_ty], [llvm_i32_ty, llvm_i32_ty],
  4181. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.match.all.sync.i32p">;
  4182. // match.all.sync.b64p mask, value
  4183. def int_nvvm_match_all_sync_i64p :
  4184. Intrinsic<[llvm_i64_ty, llvm_i1_ty], [llvm_i32_ty, llvm_i64_ty],
  4185. [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.match.all.sync.i64p">;
  4186. //
  4187. // REDUX.SYNC
  4188. //
  4189. // redux.sync.min.u32 dst, src, membermask;
  4190. def int_nvvm_redux_sync_umin : GCCBuiltin<"__nvvm_redux_sync_umin">,
  4191. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4192. [IntrConvergent, IntrInaccessibleMemOnly]>;
  4193. // redux.sync.max.u32 dst, src, membermask;
  4194. def int_nvvm_redux_sync_umax : GCCBuiltin<"__nvvm_redux_sync_umax">,
  4195. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4196. [IntrConvergent, IntrInaccessibleMemOnly]>;
  4197. // redux.sync.add.s32 dst, src, membermask;
  4198. def int_nvvm_redux_sync_add : GCCBuiltin<"__nvvm_redux_sync_add">,
  4199. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4200. [IntrConvergent, IntrInaccessibleMemOnly]>;
  4201. // redux.sync.min.s32 dst, src, membermask;
  4202. def int_nvvm_redux_sync_min : GCCBuiltin<"__nvvm_redux_sync_min">,
  4203. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4204. [IntrConvergent, IntrInaccessibleMemOnly]>;
  4205. // redux.sync.max.s32 dst, src, membermask;
  4206. def int_nvvm_redux_sync_max : GCCBuiltin<"__nvvm_redux_sync_max">,
  4207. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4208. [IntrConvergent, IntrInaccessibleMemOnly]>;
  4209. // redux.sync.and.b32 dst, src, membermask;
  4210. def int_nvvm_redux_sync_and : GCCBuiltin<"__nvvm_redux_sync_and">,
  4211. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4212. [IntrConvergent, IntrInaccessibleMemOnly]>;
  4213. // redux.sync.xor.b32 dst, src, membermask;
  4214. def int_nvvm_redux_sync_xor : GCCBuiltin<"__nvvm_redux_sync_xor">,
  4215. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4216. [IntrConvergent, IntrInaccessibleMemOnly]>;
  4217. // redux.sync.or.b32 dst, src, membermask;
  4218. def int_nvvm_redux_sync_or : GCCBuiltin<"__nvvm_redux_sync_or">,
  4219. Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
  4220. [IntrConvergent, IntrInaccessibleMemOnly]>;
  4221. //
  4222. // WMMA instructions
  4223. //
  4224. // WMMA.LOAD
  4225. class NVVM_WMMA_LD<WMMA_REGS Frag, string Layout, int WithStride>
  4226. : Intrinsic<Frag.regs,
  4227. !if(WithStride, [llvm_anyptr_ty, llvm_i32_ty], [llvm_anyptr_ty]),
  4228. [IntrReadMem, IntrArgMemOnly, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>],
  4229. WMMA_NAME_LDST<"load", Frag, Layout, WithStride>.intr>;
  4230. // WMMA.STORE.D
  4231. class NVVM_WMMA_ST<WMMA_REGS Frag, string Layout, int WithStride>
  4232. : Intrinsic<[],
  4233. !listconcat(
  4234. [llvm_anyptr_ty],
  4235. Frag.regs,
  4236. !if(WithStride, [llvm_i32_ty], [])),
  4237. [IntrWriteMem, IntrArgMemOnly, WriteOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>],
  4238. WMMA_NAME_LDST<"store", Frag, Layout, WithStride>.intr>;
  4239. // Create all load/store variants
  4240. foreach layout = ["row", "col"] in {
  4241. foreach stride = [0, 1] in {
  4242. foreach frag = NVVM_MMA_OPS.all_ld_ops in
  4243. if NVVM_WMMA_LDST_SUPPORTED<frag, layout>.ret then
  4244. def WMMA_NAME_LDST<"load", frag, layout, stride>.record
  4245. : NVVM_WMMA_LD<frag, layout, stride>;
  4246. foreach frag = NVVM_MMA_OPS.all_st_ops in
  4247. if NVVM_WMMA_LDST_SUPPORTED<frag, layout>.ret then
  4248. def WMMA_NAME_LDST<"store", frag, layout, stride>.record
  4249. : NVVM_WMMA_ST<frag, layout, stride>;
  4250. }
  4251. }
  4252. // WMMA.MMA
  4253. class NVVM_WMMA_MMA<string ALayout, string BLayout, int Satfinite, string rnd, string b1op,
  4254. WMMA_REGS A, WMMA_REGS B,
  4255. WMMA_REGS C, WMMA_REGS D>
  4256. : Intrinsic<D.regs,
  4257. !listconcat(A.regs, B.regs, C.regs),
  4258. [IntrNoMem],
  4259. WMMA_NAME<ALayout, BLayout, Satfinite, rnd, b1op, A, B, C, D>.llvm>;
  4260. foreach layout_a = ["row", "col"] in {
  4261. foreach layout_b = ["row", "col"] in {
  4262. foreach satf = [0, 1] in {
  4263. foreach rnd = ["", "rn", "rz", "rm", "rp"] in {
  4264. foreach op = NVVM_MMA_OPS.all_wmma_ops in {
  4265. foreach b1op = NVVM_MMA_B1OPS<op>.ret in {
  4266. if NVVM_WMMA_SUPPORTED<op, layout_a, layout_b, satf, rnd>.ret then {
  4267. def WMMA_NAME<layout_a, layout_b, satf, rnd, b1op,
  4268. op[0], op[1], op[2], op[3]>.record
  4269. : NVVM_WMMA_MMA<layout_a, layout_b, satf, rnd, b1op,
  4270. op[0], op[1], op[2], op[3]>;
  4271. }
  4272. } // b1op
  4273. } // op
  4274. } // rnd
  4275. } // satf
  4276. } // layout_b
  4277. } // layout_a
  4278. // MMA
  4279. class NVVM_MMA<string ALayout, string BLayout, int Satfinite, string b1op,
  4280. WMMA_REGS A, WMMA_REGS B, WMMA_REGS C, WMMA_REGS D>
  4281. : Intrinsic<D.regs,
  4282. !listconcat(A.regs, B.regs, C.regs),
  4283. [IntrNoMem],
  4284. MMA_NAME<ALayout, BLayout, Satfinite, b1op, A, B, C, D>.llvm>;
  4285. foreach layout_a = ["row", "col"] in {
  4286. foreach layout_b = ["row", "col"] in {
  4287. foreach satf = [0, 1] in {
  4288. foreach op = NVVM_MMA_OPS.all_mma_ops in {
  4289. foreach b1op = NVVM_MMA_B1OPS<op>.ret in {
  4290. if NVVM_MMA_SUPPORTED<op, layout_a, layout_b, satf>.ret then {
  4291. def MMA_NAME<layout_a, layout_b, satf, b1op, op[0], op[1], op[2], op[3]>.record
  4292. : NVVM_MMA<layout_a, layout_b, satf, b1op, op[0], op[1], op[2], op[3]>;
  4293. }
  4294. } // b1op
  4295. } // op
  4296. } // satf
  4297. } // layout_b
  4298. } // layout_a
  4299. // LDMATRIX
  4300. class NVVM_LDMATRIX<WMMA_REGS Frag, int Transposed>
  4301. : Intrinsic<Frag.regs, [llvm_anyptr_ty],
  4302. [IntrReadMem, IntrArgMemOnly, ReadOnly<ArgIndex<0>>,
  4303. NoCapture<ArgIndex<0>>],
  4304. LDMATRIX_NAME<Frag, Transposed>.intr>;
  4305. foreach transposed = [0, 1] in {
  4306. foreach frag = NVVM_MMA_OPS.all_ldmatrix_ops in {
  4307. if NVVM_LDMATRIX_SUPPORTED<frag>.ret then {
  4308. def LDMATRIX_NAME<frag, transposed>.record
  4309. : NVVM_LDMATRIX<frag, transposed>;
  4310. }
  4311. }
  4312. }
  4313. } // let TargetPrefix = "nvvm"