IntrinsicsNVVM.td 193 KB

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