+
    ‹°³jË®  ã                  ó˜  € ^ RI HtHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHt ^ RIHt ^ RI H!t! ^R	I"H#t# ^R
I$H$t$ ^RI"H%t% ^RI&H't'H(t(H)t)H*t* ^RI+H,t, ^ RI-H.t.H/t/H0t0 Rt1Rt2]	Pf                  ! R]	Ph                  4      t5]! R4      t6]! R4      t7]! R4      t8]! R4      t9 ! R R]Pt                  4      t;R R lt< ! R R4      t=RDR lt> ! R R]]6,          4      t?R t@R  tAR! tB ! R" R#4      tC/ tD] ! R$ R%4      4       tER& tFR' tG ! R( R)]C]?]6,          4      tH]R* R+ l4       tI]R,RR-RR.RR/RR0RR1RR2R/R3 R4 ll4       tIRER,RR-RR.RR/RR0RR1RR2R/R5 R6 llltI ! R7 R84      tJ ! R9 R:4      tKR; tLR< tMR= tN ! R> R?]C4      tO ! R@ RA]C]]6,          4      tPRB RC ltQR# )Fé    )ÚannotationsÚdivisionN)Údefaultdict)Ú	dataclass)Úcached_property)ÚCallableÚConcatenateÚGenericÚIterableÚOptionalÚ	ParamSpecÚTYPE_CHECKINGÚTypeVarÚoverloadÚDictÚAnyÚTuple)ÚBaseBackend)Ú
ModuleType)Úknobs)Údriver)Ú_async_compile)Úfind_paths_ifÚget_iterable_pathÚtype_canonicalisation_dictÚis_namedtuple)Úget_cache_key)Úget_cache_invalidating_env_varsÚnative_specialize_implÚirztriton.languagez"triton.experimental.gluon.languagez!^(?P<indent>[ \t]*)def\s+\w+\s*\(ÚTÚPÚRÚUc                  óˆ   a € ] tR t^'tRtR V 3R llt]R 4       tR tRR lt	R t
R tR	 tR
 tR tR tR tR tR tRtV ;t# )ÚDependenciesFindera±  
This AST visitor is used to find dependencies of a JITFunction. This can
be used to invalidate a JITFunction's hash when its source code -- or
that of its dependencies -- changes.

This visitor also keeps track of the global variables touched by the
JITFunction.  When we launch the kernel, we check that these have the same
values as they did when we ran this visitor.  If not, we raise an error (or
otherwise we could recompile).
c               ó   € V ^8„  d   QhRR/# )é   ÚreturnÚNone© )Úformats   "ÚS/home/luca/screen-checking/.venv/lib/python3.14/site-packages/triton/runtime/jit.pyÚ__annotate__ÚDependenciesFinder.__annotate__3   s   € ÷ )0ñ )0¸ñ )0ó    c                	óð   <€ \         SV `  4        Wn        \        P                  ! VP                  R 4      4      V n        W n        W0n        0 RmV n	        \        \        RR0V n        / V n        RV n        R# )úutf-8ÚcopyÚmathFN>
   ÚintÚlenÚmaxÚminÚlistÚfloatÚprintÚrangeÚgetattrÚ
isinstance)ÚsuperÚ__init__ÚnameÚhashlibÚsha256ÚencodeÚhasherÚglobalsÚ	nonlocalsÚsupported_python_builtinsÚGLUON_MODULEÚTRITON_MODULEÚsupported_modulesÚused_global_valsÚvisiting_arg_default_value)ÚselfrA   rF   rG   ÚsrcÚ	__class__s   &&&&&€r-   r@   ÚDependenciesFinder.__init__3   sn   ø€ Ü‰ÑÔØŒ	Ü—n’n S§Z¡Z°Ó%8Ó9ˆŒð ŒØ"Œò*
ˆÔ&ô ÜØØð	"
ˆÔð" TVˆÔà*/ˆÖ'r0   c                	ó6   € V P                   P                  4       # ©N)rE   Ú	hexdigest©rN   s   &r-   ÚretÚDependenciesFinder.ret^   s   € à�{‰{×$Ñ$Ó&Ð&r0   c                	ól  € \        V\        4      '       g   Q hVP                  pV P                  P	                  4       VP                  P	                  4       ,           Ff  pVw  rEV P                  V,          w  reVP                  V,          w  ruWg8w  g   K9  \        R V RV RV P                   RVP                   RV R24      h	  V P                  P                  VP                  4       V\        \        VRR4      4      ,          pV P                  P                  VP                  R4      4       R	# )
úGlobal variable z has value z when compiling z, but inner kernel z has conflicting value z7 from when it was first compiled.  This is not allowed.ÚnoinlineFr2   N)r>   ÚJITCallableÚ	cache_keyrL   ÚkeysÚRuntimeErrorrA   Ú__name__ÚupdateÚstrr=   rE   rD   )rN   ÚfuncÚfunc_keyÚkÚvar_nameÚ_Úv1Úv2s   &&      r-   Ú_update_hashÚDependenciesFinder._update_hashb   s)  € Ü˜$¤×,Ò,Ð,Ð,Ø—>‘>ˆð ×&Ñ&×+Ñ+Ó-°×0EÑ0E×0JÑ0JÓ0L×LÐLˆAØ‰KˆHØ×)Ñ)¨!Õ,‰EˆBØ×)Ñ)¨!Õ,‰EˆBØŽxÜ"Ø& x j°¸B¸4Ð?OÐPT×PYÑPYÈ{ÐZmÐnr×n{Ñn{Ðm|ð  }Tð  UWð  TXð  XOð  Póð ñ Mð 	×Ñ×$Ñ$ T×%:Ñ%:Ô;à”Cœ  j°%Ó8Ó9Õ9ˆØ�‰×Ñ˜8Ÿ?™?¨7Ó3Ö4r0   c                	óð  € ^RI Hp Ve   \        V4      \        J d   R# \	        VRR4      '       dd   V P
                  P                  \        VP                  4      P                  R4      4       VP                   F  pV P                  V4       K  	  R# \	        VRR4      '       d   R# \	        VRR4      R	8X  d   R# \        V\        4      '       d   V P                  V4       R# \        V4      '       d6   \        V\        4      '       g    \        W4      '       g   \!        R
V 24      hV P"                  '       d   R# Ve1   \$        P&                  ! V4      V3V P(                  V\+        V4      3&   R# )r(   ©Ú	constexprNÚ__triton_aggregate__Fr2   Ú__triton_builtin__Ú
__module__Ú ztriton.language.extra.libdevicez!Unsupported function referenced: )Úlanguage.corerm   Útyper   r=   rE   r`   ra   Ú__annotations__rD   Ú
hash_attrsÚrecord_referencer>   r[   ri   Úcallabler^   rM   r3   ÚdeepcopyrL   Úid)rN   ÚvalÚvar_dictrA   rm   Úattrs   &&&&  r-   rv   Ú#DependenciesFinder.record_referencet   s,  € Ý-ð Š;œ$˜s›)¤zÓ1Ùä�3Ð.°×6Ò6Ø�K‰K×Ñœs 3×#6Ñ#6Ó7×>Ñ>¸wÓGÔHØŸœ�Ø×%Ñ% dÖ+ñ 'áä�3Ð,¨e×4Ò4Ùô �3˜ bÓ)Ð-NÔNÙä�cœ;×'Ò'Ø×Ñ˜cÔ"Ùä�C�=Š=¤¨C´×!6Ò!6¼zÈ#×?YÒ?YÜÐ!BÀ3À%ÐHÓIÐIð ×*×*Ð*ÙàÒÜ;?¿=º=ÈÓ;MÈxÐ:XˆD×!Ñ! 4¬¨H«Ð"6Ñ7Ùr0   c                	óN  a € \        VP                  4      \        P                  J d   VP                  # VP                  S P
                  9   d   R # V 3R lpV! VP                  4      w  r4VP                  S P                  9   d   V# S P                  W4VP                  4       V# )Nc                óÀ   <€ SP                   P                  V R 4      pVe   VSP                   3# SP                  P                  V R 4      pVe   VSP                  3# R# )N©NN)rF   ÚgetrG   )rA   rz   rN   s   & €r-   Úname_lookupÚ2DependenciesFinder.visit_Name.<locals>.name_lookup¤   s]   ø€ Ø—,‘,×"Ñ" 4¨Ó.ˆCØŠØ˜DŸL™LÐ(Ð(Ø—.‘.×$Ñ$ T¨4Ó0ˆCØŠØ˜DŸN™NÐ*Ð*ØÐr0   )rs   ÚctxÚastÚStorery   Úlocal_namesrH   rv   )rN   Únoder‚   rz   r{   s   f&   r-   Ú
visit_NameÚDependenciesFinder.visit_Nameœ   s|   ø€ Ü�—‘‹>œSŸY™YÓ&Ø—7‘7ˆNà�7‰7�d×&Ñ&Ô&áõ	ñ $ D§G¡GÓ,‰ˆØ�7‰7�d×4Ñ4Ô4ØˆJà×Ñ˜c¨T¯W©WÔ5Øˆ
r0   c                	ó`   € VP                    Uu. uF  q P                  V4      NK  	  up# u upi rS   )ÚeltsÚvisit)rN   rˆ   Úelts   && r-   Úvisit_TupleÚDependenciesFinder.visit_Tuple´   s&   € ð ,0¯9ª9Ó5©9 C—
‘
˜3–©9Ñ5Ð5ùÒ5s   �+c                	óJ  € V P                  VP                  4      p\        V\        P                  4      '       d   V P                  VP                  4      pK=  \        VR R4      pVe   W0P                  9   d   R# \        W!P                  R4      pV P                  V4       V# )r_   rq   N)	r�   Úvaluer>   r…   Ú	Attributer=   rK   r|   rv   )rN   rˆ   ÚlhsÚlhs_namerV   s   &&   r-   Úvisit_AttributeÚ"DependenciesFinder.visit_Attribute¹   s{   € Ø�j‰j˜Ÿ™Ó$ˆÜ˜œcŸm™m×,Ò,Ø—*‘*˜SŸY™YÓ'ŠCÜ˜3 
¨BÓ/ˆØŠ;˜(×&<Ñ&<Ô<ÙÜ�cŸ9™9 dÓ+ˆØ×Ñ˜cÔ"Øˆ
r0   c                	óš   € VP                   P                    Uu0 uF  q"P                  kK  	  upV n        V P                  V4       R # u upi rS   )ÚargsÚargr‡   Úgeneric_visit)rN   rˆ   rš   s   && r-   Úvisit_FunctionDefÚ$DependenciesFinder.visit_FunctionDefÄ   s6   € à/3¯y©y¯~ª~Ó>©~¨ŸGœG©~Ñ>ˆÔØ×Ñ˜4Ö ùò ?s   ™Ac                	óŠ  a € V 3R  lp\         P                  ! VP                  VP                  VP                  '       d   VP                  .M. VP
                  4       F  pS P                  V4       K  	  V! VP                  4       VP                  e   S P                  VP                  4       V! VP                  4       R# )c                ó¦   <€  SP                   '       d   Q hR Sn         V  F  pVf   K	  SP                  V4       K  	  RSn         R#   RSn         i ; i)TNF)rM   r�   )ÚdefaultsÚexprrN   s   & €r-   Úvisit_defaultsÚ:DependenciesFinder.visit_arguments.<locals>.visit_defaultsÕ   sQ   ø€ ð8Ø×:×:Ð:Ð:Ð:Ø26�Ô/Û$�DØÔ'ØŸ
™
 4Ö(ñ %ð 38�Ö/ø°%�Õ/ús   ƒA •A ©A Á	AN)
Ú	itertoolsÚchainÚposonlyargsr™   ÚvarargÚ
kwonlyargsr�   Úkw_defaultsÚkwargr    )rN   rˆ   r¢   rš   s   f&  r-   Úvisit_argumentsÚ"DependenciesFinder.visit_argumentsÉ   s‹   ø€ õ	8ô —?’? 4×#3Ñ#3°T·Y±YÐQU×Q\×Q\ÐQ\ÀÇÁÁÐbdÐfj×fuÑfuÖvˆCØ�J‰J�sŽOñ wñ 	�t×'Ñ'Ô(à�:‰:Ò!Ø�J‰J�t—z‘zÔ"á�t—}‘}Ö%r0   c                	óJ   a a€ S P                  V4      pVV 3R  loS! V4       R# )c                ó�   <€ \        V \        4      '       d   V  F  pS! V4       K  	  R # SP                  P                  V 4       R # rS   )r>   r9   r‡   Úadd)ÚtÚsubÚ_addrN   s   & €€r-   r²   Ú0DependenciesFinder.visitAssnTarget.<locals>._addí   s7   ø€ Ü˜!œT×"Ò"Û�CÙ˜–Ió ð × Ñ ×$Ñ$ QÖ'r0   N)r�   )rN   rˆ   Útargetr²   s   f& @r-   ÚvisitAssnTargetÚ"DependenciesFinder.visitAssnTargeté   s   ù€ à—‘˜DÓ!ˆö	(ñ 	ˆVŽr0   c                	ó¶   € \        VP                  4      ^8w  d   \        R4      hV P                  VP                  ^ ,          4       V P	                  V4       R# )é   z2Simultaneous multiple assignment is not supported.N)r6   ÚtargetsÚ	TypeErrorrµ   r›   ©rN   rˆ   s   &&r-   Úvisit_AssignÚDependenciesFinder.visit_Assignö   sG   € Üˆt�|‰|Ó Ô!ô
 ÐPÓQÐQà×Ñ˜TŸ\™\¨!�_Ô-ð 	×Ñ˜4Ö r0   c                	ó^   € V P                  VP                  4       V P                  V4       R # rS   ©rµ   r´   r›   r»   s   &&r-   Úvisit_AnnAssignÚ"DependenciesFinder.visit_AnnAssign  ó$   € Ø×Ñ˜TŸ[™[Ô)ð 	×Ñ˜4Ö r0   c                	ó^   € V P                  VP                  4       V P                  V4       R # rS   r¿   r»   s   &&r-   Ú	visit_ForÚDependenciesFinder.visit_For	  rÂ   r0   )	rF   rE   r‡   rA   rG   rK   rH   rL   rM   r€   )r_   rp   Ú__qualname__Ú__firstlineno__Ú__doc__r@   ÚpropertyrV   ri   rv   r‰   r�   r–   rœ   r«   rµ   r¼   rÀ   rÄ   Ú__static_attributes__Ú__classcell__©rP   s   @r-   r&   r&   '   se   ø† ñ	÷)0ð )0ðV ñ'ó ð'ò5ô$&òPò06ò
	ò!ò
&ò@ò!ò!÷!ð !r0   r&   c               ó   € V ^8„  d   QhRR/# ©r(   r)   ra   r+   )r,   s   "r-   r.   r.     s   € ÷ Dñ D˜ñ Dr0   c                ó”  € ^ RI Hu Hp \        V \        4      '       dû   V P                  4       p V P                  R4      '       dF   V P                  R4      p \        V 4      p V P                  R4      '       g   Q hRV R,          ,           # V P                  R4      '       d   R\        V RR
 4      ,           # V P                  R4      '       d   R\        V R,          4      ,           # V P                  R4      '       d   \        V P                  R4      4      # M‰\        WP                  4      '       d   R\        V P                  4       2# \        WP                  4      '       d   V P                  p M.\        V \        4      '       d   V P                  p M\	        V 4      p \         P"                  ! V P%                  RR	4      V 4      # )r   Nzconst ÚconstÚ*ú*kºr¸   NNztl.Ú_trq   éÿÿÿÿ)Útriton.language.coreÚlanguageÚcorer>   ra   ÚstripÚ
startswithÚremoveprefixÚ_normalize_tyÚendswithÚpointer_typeÚ
element_tyÚdtyperA   rs   r_   r   r�   Úreplace)ÚtyrØ   s   & r-   rÜ   rÜ     sW  € ß'Ð'Ü�"”c×ÒØ�X‰X‹ZˆØ�=‰=˜×"Ò"Ø—‘ Ó)ˆBÜ˜rÓ"ˆBØ—=‘= ×%Ò%Ð%Ð%Ø˜"˜R�&•=Ð Ø�;‰;�s×ÒØœ r¨#¨2 wÓ/Õ/Ð/Ø�=‰=˜×ÒØœ r¨"¥vÓ.Õ.Ð.Ø�=‰=˜×ÒÜ  §¡°Ó!7Ó8Ð8ð  ä	�B×)Ñ)×	*Ò	*Ø”= §¡Ó/Ð0Ð1Ð1Ü	�BŸ
™
×	#Ò	#Ø�W‰W‰Ü	�Bœ×	Ò	Ø�[‰[‰ä�‹WˆÜ%×)Ò)¨"¯*©*°T¸2Ó*>ÀÓCÐCr0   c                  ó¢   € ] tR tRtRtR R lt]R 4       t]R R l4       t]R R	 l4       t	]R
 4       t
]R 4       t]R 4       t]R 4       tRtR# )ÚKernelParami/  zBRepresents a parameter (name plus metadata) to a @jit'ed function.c               ó(   € V ^8„  d   QhRRRRRRRR/# )r(   Únumr5   Úparamzinspect.ParameterÚdo_not_specializeÚboolÚdo_not_specialize_on_alignmentr+   )r,   s   "r-   r.   ÚKernelParam.__annotate__2  s0   € ÷ Mñ M˜Cð MÐ(9ð MÈdð MØ15ñMr0   c                	ó6   € Wn         W n        W0n        W@n        R # rS   )ræ   Ú_paramrè   rê   )rN   ræ   rç   rè   rê   s   &&&&&r-   r@   ÚKernelParam.__init__2  s   € àŒØŒØ!2ÔØ.LÖ+r0   c                	ó.   € V P                   P                  # rS   )rí   rA   rU   s   &r-   rA   ÚKernelParam.name9  s   € à�{‰{×ÑÐr0   c               ó   € V ^8„  d   QhRR/# rÎ   r+   )r,   s   "r-   r.   rë   >  s   € ÷ 5ñ 5˜Cñ 5r0   c                	óâ   € V P                   P                  '       d4   V P                   P                  \        P                  P                  8X  d   R # \        V P                   P                  4      # )rq   )rí   Ú
annotationÚinspectÚ	ParameterÚemptyrÜ   rU   s   &r-   ró   ÚKernelParam.annotation=  sG   € à�{‰{×%×%Ð%¨¯©×)?Ñ)?Ä7×CTÑCT×CZÑCZÔ)ZÙÜ˜TŸ[™[×3Ñ3Ó4Ð4r0   c               ó   € V ^8„  d   QhRR/# rÎ   r+   )r,   s   "r-   r.   rë   D  s   € ÷ ñ  ñ r0   c                	óþ   € V P                   pVP                  R 4      '       d   VR,          pM VP                  R4      '       d
   VR,          pV\        \        P                  ! 4       4      9   d   V P                   # R# )rÒ   :r(   NNrÑ   rÓ   rq   )ró   rÚ   Úsetr   Úvalues)rN   Úas   & r-   Úannotation_typeÚKernelParam.annotation_typeC  s_   € à�O‰OˆØ�<‰<˜×ÒØ�"•‰AØ�\‰\˜#×ÒØ�"•ˆAØ”Ô.×5Ò5Ó7Ó8Ô8Ø—?‘?Ð"Ùr0   c                	ó    € R V P                   9   # rl   )ró   rU   s   &r-   Úis_constexprÚKernelParam.is_constexprN  s   € à˜dŸo™oÑ-Ð-r0   c                	óŽ   € V P                   '       d   R # RV P                  9   ;'       g    V P                  P                  R4      # )FrÐ   rÒ   )r   ró   rÚ   rU   s   &r-   Úis_constÚKernelParam.is_constR  s7   € à××ÐÙØ˜$Ÿ/™/Ñ)×MÐM¨T¯_©_×-GÑ-GÈÓ-MÐMr0   c                	ó.   € V P                   P                  # rS   )rí   ÚdefaultrU   s   &r-   r  ÚKernelParam.defaultX  s   € à�{‰{×"Ñ"Ð"r0   c                	ód   € V P                   P                  \        P                  P                  8g  # rS   )rí   r  rô   rõ   rö   rU   s   &r-   Úhas_defaultÚKernelParam.has_default\  s#   € à�{‰{×"Ñ"¤g×&7Ñ&7×&=Ñ&=Ñ=Ð=r0   )rí   rè   rê   ræ   N)r_   rp   rÆ   rÇ   rÈ   r@   r   rA   ró   rý   r   r  rÉ   r  r	  rÊ   r+   r0   r-   rä   rä   /  s™   † ÙLõMð ñ ó ð ð ô5ó ð5ð
 ôó ðð ñ.ó ð.ð ñNó ðNð
 ñ#ó ð#ð ñ>ó ô>r0   rä   c                ó:   € R pRp\        \        WW4      ^ ,          # )FT)r   r   )rš   Ú
specializer  Úaligns   &&  r-   Úmangle_typer  a  s!   € Ø€HØ€EÜ!¤+¨s¸jÓPÐQRÕSÐSr0   c                  ó:   € ] tR tRt$ R]R&   R tR tR R ltRtR	# )
ÚKernelInterfaceig  r!   Úrunc               	ó^   € V P                   ! \        \        P                  V4      R VRR/VB # )ÚgridÚwarmupT)r  ÚmapÚ
MockTensorÚ
wrap_dtype)rN   r  r™   Úkwargss   &$*,r-   r  ÚKernelInterface.warmupj  s.   € Ø�xŠx´´Z×5JÑ5JÈDÓ1QÐ\˜TÐ\¨$Ð\ÐU[Ñ\Ð\r0   c               	ó   € \        R 4      h)zrun not implemented)ÚNotImplementedError)rN   r  r  r™   r  s   &$$*,r-   r  ÚKernelInterface.runm  s   € Ü!Ð"7Ó8Ð8r0   c               ó   € V ^8„  d   QhRR/# )r(   r)   r!   r+   )r,   s   "r-   r.   ÚKernelInterface.__annotate__p  s   € ÷ Zñ Z 1ñ Zr0   c                ó   a a€ VV 3R l# )z�
A JIT function is launched with: fn[grid](*args, **kwargs).
Hence JITFunction.__getitem__ returns a callable proxy that
memorizes the grid.
c                 ó0   <€ SP                   ! V R SRR/VB # )r  r  F)r  )r™   r  r  rN   s   *,€€r-   Ú<lambda>Ú-KernelInterface.__getitem__.<locals>.<lambda>v  s   ø€  t§x¢xÈ$Ð'Y°TÐ'YÀ%Ð'YÐRXÒ'Yr0   r+   )rN   r  s   ffr-   Ú__getitem__ÚKernelInterface.__getitem__p  s   ù€ õ ZÐYr0   r+   N)	r_   rp   rÆ   rÇ   rt   r  r  r#  rÊ   r+   r0   r-   r  r  g  s   ‡ Ø	
ƒFò]ò9÷Zñ Zr0   r  c                ó   € VP                  4        UUu/ uF˜  w  rWYWP                  P                  R 8X  d   \        V4      MlVP                  P                  R8X  d   RVP                  /MCVP                  P                  R8X  d(   RVP
                   RVP                  P                   2/MTbKš  	  ppp^ RIpRT RTRVP                  4        U	u. uF  p	\        V	4      NK  	  up	R	\        VP                  4       4      R
VP                  4        U	u. uF  p	\        V	4      NK  	  up	R\        VP                  4       4      RVP                  RXRVP                  /	p
VP                  V
4      pV# u uppi u up	i u up	i )rà   rm   ÚJITFunctionÚjit_functionÚ:NrA   Ú	signatureÚconstant_keysÚconstant_valsÚ
attrs_keysÚ
attrs_valsÚoptionsÚkeyr´   )ÚitemsrP   r_   ra   r’   ÚmoduleÚfnrÆ   Újsonr]   r9   rû   Ú__dict__Údumps)rA   r)  Ú	constantsÚattrsr.  r/  r´   r’   r3  ÚxÚobjÚserialized_objs   &&&&&&&     r-   Úserialize_specialization_datar;  z  sh  € ð
 $Ÿ/™/Ô+ô	ñ ,‰JˆCð 	Ÿ?™?×3Ñ3°wÔ>ŒS�ŒZØ�?‰?×#Ñ# {Ô2ð FQÐRW×R]ÑR]ÑD^à�?‰?×#Ñ# }Ô4ð :HÈEÏLÉLÈ>ÐYZÐ[`×[cÑ[c×[pÑ[pÐZqÐIrÑ8sØ:?ò	@ñ ,ð	 ñ ó à��k 9¨oÐQZ×Q_ÑQ_ÔQaÓ?bÑQaÈAÄÀQÆÑQaÑ?bÐdsÜˆY×ÑÓÓ  ,À%Ç*Á*Ä,Ó0OÁ,¸Q´°a¶Á,Ñ0OÐQ]Ô_cÐdi×dpÑdpÓdrÓ_sØ�7×#Ñ# U¨C°¸6¿?¹?ð€Cð
 —Z‘Z “_€NØÐùóùò @cùÚ0Os   ”BE0ÃE6ÄE;c                óŒ  € \        V P                  4      \        V4      8X  g   Q h. p\        V P                  P                  4       V4       EF>  w  rEVP                  '       d   VP                  RV R24       K/  VP                  '       d   RMRpVP                  '       d   RMRpVP                  '       d   RMRpRV RV RV RV R2	p	VP                  '       d›   \        VP                  \        4      '       d,   VP                  R8X  g   VP                  R,          R9   d   R	pV'       d&   VP                  R
VP                   RV	 R24       EK
  VP                  R
VP                   R24       EK,  VP                  V	 4       EKA  	  R p
RRP                  \        \        W P                  P                  4       4      4      R.,           4       RRP                  V P                  P                  4        Uu. uF  pRV RV 2NK  	  up4       RRP                  V4       R2pV P                  P                  4        UUu/ uF?  w  rLVP                   \"        P$                  P&                  Jg   K/  RV 2VP                   bKA  	  ppp\(        pWíR&   W-R&   \*        VR&   \-        W½4       VR,          # u upi u uppi )a  
Equivalent to sig.bind followed by apply_defaults. This generates a
native Python function (using exec) which can be memoized on a per-kernel
basis to avoid having to run these expensive functions -- which constitute
much of the kernel launch overhead -- every time we run the kernel.
z("constexpr", Ú)ÚTrueÚFalsezspecialize_impl(backend, ú, Úu1:Nr(   NFz("z",) + z[1:]z", None)c                óÈ   € V w  rVP                   \        P                  P                  8X  d   R V 2# VP                  \        P                  P
                  J d   V# V RV 2# )rÑ   z	=default_)Úkindrô   rõ   ÚVAR_POSITIONALr  rö   )Ú
name_paramrA   rç   s   &  r-   rš   Ú+create_function_from_signature.<locals>.arg­  s\   € Ø ‰ˆØ�:‰:œ×*Ñ*×9Ñ9Ô9Ø�t�f�:ÐØ—}‘}¬×(9Ñ(9×(?Ñ(?Ó?ˆtÐ]ÈÀvÈYÐW[ÐV\ÐE]Ð]r0   z
def dynamic_func(z	**optionsz):
    params = {Ú'z': z}
    specialization = [Ú,z-]
    return params, specialization, options
Údefault_Úspecialize_implÚbackendr[   Údynamic_func)ÚfpÚbf)r6   Ú
parametersÚzipr]   r   Úappendr  rè   rê   rý   r>   ra   Újoinr9   r  r0  r  rô   rõ   rö   r   r[   Úexec)ÚsigÚkparamsrK  ÚspecializationrA   Úkpr  r  r  rV   rš   Ú	func_bodyrç   Úfunc_namespacerJ  s   &&&            r-   Úcreate_function_from_signaturerZ  Œ  sŒ  € ô ˆs�~‰~Ó¤# g£,Ô.Ð.Ð.à€Nä˜Ÿ™×+Ñ+Ó-¨w×7‰ˆØ�?�?ˆ?Ø×!Ñ! N°4°&¸Ð":Ö;à!#§§ ‘v°'ˆHØ$&×$8×$8Ð$8™¸fˆJØ!×@×@Ð@‘GÀfˆEØ-¨d¨V°2°h°Z¸rÀ*ÀÈRÐPUÈwÐVWÐXˆCØ×!×!Ð!Ü˜b×0Ñ0´#×6Ò6Ø×)Ñ)¨TÔ1°R×5GÑ5GÈÕ5KÈ|Ô5[à%*˜
ßØ"×)Ñ)¨B¨r×/AÑ/AÐ.BÀ&ÈÈÈTÐ*R×Sð #×)Ñ)¨B¨r×/AÑ/AÐ.BÀ(Ð*K×Là×%Ñ%¨¨×/ñ' 8ò,^ðØ—)‘)œD¤ S¯.©.×*>Ñ*>Ó*@Ó!AÓBÀkÀ]ÕRÓSÐTð UØ—	‘	¸3¿>¹>×;NÑ;NÔ;PÓQÑ;P°4˜Q˜t˜f C¨ vÓ.Ñ;PÑQÓRÐSð TØ—x‘x Ó/Ð0ð 1ð€Ið Ÿ>™>×/Ñ/Ô1ôá1‰KˆDØ�=‰=¤× 1Ñ 1× 7Ñ 7Ð7ô 	)ˆ(�4�&Ð˜5Ÿ=™=Ò(Ù1ð ñ ô -€OØ(7Ð$Ñ%Ø '�9ÑÜ$/€N�=Ñ!ô 	ˆÔ#ð ˜.Õ)Ð)ùò+ Rùós   Ç>J;É,K É9K c                ó8   € V P                    R V P                   2# )Ú.)rp   rÆ   ©r2  s   &r-   Úget_full_namer^  Í  s   € Ø�m‰mˆ_˜A˜bŸo™oÐ.Ð/Ð/r0   c                  ó†   € ] tR tRtR tR t]R R l4       tR tR t	]R 4       t
R	 R
 ltR tR tR t]! ]]R7      tRtR# )r[   iÑ  c                	ód  € Wn         \        P                  ! V4      V n         \        P                  ! V4      w  V n        V n        \        T4      T n	        \        P                  ! 4       T n        RP                  T P                  4      pTP                  P                  T n        \#        T P                  T P
                  4      T n        \'        T4      T n        \*        P,                  ! T4      pT\.        P0                  ! RT\.        P2                  4      P5                  4       R pY@n        RT n        / T n        TP<                  T n        TP>                  T n        TP@                  T n         TPB                  T n!        TPD                  T n"        R#   \         d   p\        R 4      ThRp?ii ; i)z1@jit functions should be defined in a Python fileNrq   z^def\s+\w+\s*\()#r2  rô   r)  ÚgetsourcelinesÚraw_srcÚstarting_line_numberÚOSErrorÚ
ValueErrorr^  Ú_fn_nameÚ	threadingÚRLockÚ
_hash_lockrR  Ú__code__Úco_filenameÚ	file_nameÚget_def_line_numberÚdef_file_line_numberÚget_def_col_numberÚdef_file_col_numberÚtextwrapÚdedentÚreÚsearchÚ	MULTILINEÚstartÚ_srcÚhashrL   rÈ   r_   rÆ   Ú__globals__rp   )rN   r2  ÚeÚraw_src_strrO   s   &&   r-   r@   ÚJITCallable.__init__Ó  sO  € ØŒÜ ×*Ò*¨2Ó.ˆŒð	YÜ6=×6LÒ6LÈRÓ6PÑ3ˆDŒL˜$Ô3ô & bÓ)ˆŒÜ#Ÿ/š/Ó+ˆŒð —g‘g˜dŸl™lÓ+ˆð Ÿ™×0Ñ0ˆŒÜ$7¸¿¹Àd×F_ÑF_Ó$`ˆÔ!Ü#5°kÓ#BˆÔ ä�oŠo˜kÓ*ˆØ”"—)’)Ð.°´R·\±\ÓB×HÑHÓJÐKÐLˆØŒ	ØˆŒ	ð TVˆÔð —z‘zˆŒØŸ™ˆŒØŸO™OˆÔØŸ>™>ˆÔØŸ-™-ˆŽøôE ô 	YÜÐPÓQÐWXÐXûð	Yús   £#F ÆF/ÆF*Æ*F/c                	ó  € V P                   pVP                  f   V P                  # \        VP                  P
                  VP                  4       UUu/ uF  w  r#W#P                  bK  	  pppV P                  V,          # u uppi rS   )r2  Ú__closure__ry  rP  rj  Úco_freevarsÚcell_contents)rN   r2  rA   ÚcellrG   s   &    r-   Úget_capture_scopeÚJITCallable.get_capture_scopeü  sq   € Ø�W‰WˆØ�>‰>Ò!Ø×#Ñ#Ð#Ü@CÀBÇKÁK×D[ÑD[Ð]_×]kÑ]kÔ@lÔmÑ@l±*°$�T×-Ñ-Ò-Ñ@lˆ	ÑmØ×Ñ )Õ+Ð+ùó ns   ÁBc               ó   € V ^8„  d   QhRR/# rÎ   r+   )r,   s   "r-   r.   ÚJITCallable.__annotate__  s   € ÷ ñ ˜3ñ r0   c                	ó<  € V P                   ;_uu_ 4        V P                  e   V P                  uuR R R 4       # RV P                   2V n        \        P                  ! V P
                  4      P                  p\        V P                  V P                  VV P                  R7      pVP                  V P                  4       4       VP                  \        V P                  4      ,           V n        \        \!        VP"                  P%                  4       4      4      V n        ^ RIHp V P"                  P%                  4        UUUu. uF   w  w  rEw  re\+        Wc4      '       g   K  WF3NK"  	  ppppVP-                  R R7       V ;P                  \        V4      ,          un        \.        P0                  ! V P                  P3                  R4      4      P5                  4       V n        R R R 4       V P                  # u upppi   + '       g   i     T P                  # ; i)Nz
recursion:)rA   rF   rG   rO   rl   c                ó8   € V ^ ,          \        V ^,          4      3# ©r   )Úrepr)Úitems   &r-   r!  Ú'JITCallable.cache_key.<locals>.<lambda>  s   € °T¸!µW¼dÀ4ÈÅ7»mÑ4Lr0   )r/  r2   )ri  rx  rf  rô   Úgetclosurevarsr2  rG   r&   ry  rO   r�   ÚparserV   ra   rc  ÚdictÚsortedrL   r0  rÖ   rm   r>   ÚsortrB   rC   rD   rT   )rN   rG   Údependencies_finderrm   rA   rf   rz   Úconstexpr_globalss   &       r-   r\   ÚJITCallable.cache_key  s�  € ð �_�_‹_Ø�y‰yÒ$Ø—y‘y÷ Š_ð
 % T§]¡] OÐ4ˆDŒIÜ×.Ò.¨t¯w©wÓ7×AÑAˆIÜ"4¸$¿-¹-ÐQU×QaÑQaÐmvØ9=¿¹ô#CÐà×%Ñ% d§j¡j£lÔ3Ø+×/Ñ/´#°d×6OÑ6OÓ2PÕPˆDŒIÜ$(¬Ð0C×0TÑ0T×0ZÑ0ZÓ0\Ó)]Ó$^ˆDÔ!å6à<@×<QÑ<Q×<WÑ<WÔ<Yõ!@Ù<YÑ%8¡Y d±°Ü$.¨s×$>ô "- $£Ù<Yð ò !@ð ×"Ñ"Ñ'LÐ"ÔMØ�IŠIœÐ.Ó/Õ/�IÜŸš t§y¡y×'7Ñ'7¸Ó'@ÓA×KÑKÓMˆDŒI÷' ð( �y‰yÐùô!@÷ Ž_ð( �y‰yÐús*   •H ºD
H ÅG9Å#G9Å*A;H Ç9H È H	c                	ó,   € \        V P                  4      # rS   )rx  r\   rU   s   &r-   Ú__hash__ÚJITCallable.__hash__  s   € Ü�D—N‘NÓ#Ð#r0   c                	ó(  € \         P                  ! V P                  4      p\        V\         P                  4      '       g   Q h\        VP                  4      ^8X  g   Q h\        VP                  ^ ,          \         P                  4      '       g   Q hV# )r¸   )r…   r�  rw  r>   ÚModuler6   ÚbodyÚFunctionDef)rN   Útrees   & r-   r�  ÚJITCallable.parse"  se   € Ü�yŠy˜Ÿ™Ó#ˆÜ˜$¤§
¡
×+Ò+Ð+Ð+Ü�4—9‘9‹~ Ô"Ð"Ð"Ü˜$Ÿ)™) A�,¬¯©×8Ò8Ð8Ð8Øˆr0   c                	ó   € ^ RI Hp V! V 4      # )r   )Úconstexpr_type)rÖ   rž  )rN   rž  s   & r-   rs   ÚJITCallable.type)  s   € å7Ù˜dÓ#Ð#r0   c               ó    € V ^8„  d   QhRRRR/# )r(   Úhandleszlist[ir.value]r)   r*   r+   )r,   s   "r-   r.   r…  .  s   € ÷ ñ  >ð °dñ r0   c                	ó   € R # rS   r+   )rN   r¡  s   &&r-   Ú_flatten_irÚJITCallable._flatten_ir.  s   € Ùr0   c                ó    € RV n         Wn        R# )a  
The only method allowed to modify src.
Bypasses the __setattr__ restriction by calling super().__setattr__ directly.

Note that it is the callers responsibility to make sure any triton functions that call this function have the `.hash` value reset to None.
N)rx  rw  )rN   Únew_srcs   &&r-   Ú_unsafe_update_srcÚJITCallable._unsafe_update_src1  s   € ð ˆŒ	ØŽ	r0   c                	ó   € \        R 4      h)zqCannot set attribute 'src' directly. Use '_unsafe_update_src()' and manually clear `.hash` of all callersinstead.)ÚAttributeErrorrU   s   &r-   Ú_set_srcÚJITCallable._set_src;  s   € Üð (ó )ð 	)r0   c                	ó   € V P                   # rS   )rw  rU   s   &r-   Ú_get_srcÚJITCallable._get_src@  s   € Ø�y‰yÐr0   )ÚfgetÚfset)rÈ   ry  rp   r_   rÆ   rf  ri  rw  rp  rn  rl  r2  rx  rb  r)  rc  rL   N)r_   rp   rÆ   rÇ   r@   r‚  rÉ   r\   r•  r�  rs   r£  r§  r«  r®  rO   rÊ   r+   r0   r-   r[   r[   Ñ  sa   † ò'(òR,ð ôó ðò0$òð ñ$ó ð$õòò)ò
ñ ˜ xÔ
0„Cr0   r[   c                  ó6   € ] tR tRt$ R]R&   R]R&   R]R&   RtR	# )
ÚJitFunctionInfoiI  r   r1  ra   rA   r&  r'  r+   N)r_   rp   rÆ   rÇ   rt   rÊ   r+   r0   r-   r³  r³  I  s   ‡ àÓØ
ƒIØ×r0   r³  c                óº   a€ \        V4      \        V4      3pV P                  VR 4      pVe   V# V3R lo\        S! V4      4      \        V4      ,           pW@V&   V# )Nc                ó¼  <€ \        V \        4      '       d   V  Uu. uF  pS! V4      NK  	  up# \        V 4      '       d(   V  Uu. uF  pS! V4      NK  	  ppV P                  ! V!  # \        V \        4      '       d3   \        ;QJ d    . V3R  lV  4       F  NK  	  5# ! V3R  lV  4       4      # \        V \
        4      '       d   V P                  # V # u upi u upi )c              3  ó4   <"  € T F  pS! V4      x € K  	  R # 5irS   r+   )Ú.0rš   Úreplace_callabless   & €r-   Ú	<genexpr>Ú?compute_cache_key.<locals>.replace_callables.<locals>.<genexpr>^  s   øé € Ð?¹3°CÑ*¨3×/Ð/»3ùs   ƒ)r>   r9   r   rP   Útupler[   r\   )r9  rš   Úresultsr¸  s   &  €r-   r¸  Ú,compute_cache_key.<locals>.replace_callablesW  s²   ø€ Ü�cœ4× Ò Ù69Ó:±c¨sÑ% cÖ*±cÑ:Ð:Ü˜3×ÒÙ9<Ó=¹°#Ñ(¨Ö-¹ˆGÐ=Ø—=’= 'Ñ*Ð*Ü˜œU×#Ò#ß”5Ô?¹3Ó?—5Ð?�5Ô?¹3Ó?Ó?Ð?Ü˜œ[×)Ò)Ø—=‘=Ð Øˆ
ùò ;ùâ=s   œCÁC)r»  ra   r�   )Úkernel_key_cacherV  r.  r/  r\   r¸  s   &&&  @r-   Úcompute_cache_keyr¿  P  sb   ø€ Ü�Ó ¤# g£,Ð
/€CØ ×$Ñ$ S¨$Ó/€IØÒØÐõ
ô Ñ% nÓ5Ó6¼¸W»ÕE€IØ%�SÑØÐr0   c                óŠ   € \        V \        4      '       g   V # \        V 4       F  w  r\        V4      W&   K  	  \	        V 4      # rS   )r>   r9   Ú	enumerateÚconvert_to_tuple_if_listr»  )rŠ  ÚiÚnested_values   &  r-   rÂ  rÂ  h  s>   € ä�dœD×!Ò!Øˆô % Tž?‰ˆÜ*¨<Ó8ˆ‹ñ +ô �‹;Ðr0   c                  óÈ   a € ] tR tRtR tR R ltR tR tR tR t	R	 t
RV 3R
 lltR tR tR R lt]'       d    ]RR R ll4       t]RR R ll4       tRR ltR tRtV ;t# )r&  it  c                	ó   € R # ©Fr+   rU   s   &r-   Úis_gluonÚJITFunction.is_gluonv  s   € Ùr0   c               ó   € V ^8„  d   QhRR/# )r(   r)   zbool | Noner+   )r,   s   "r-   r.   ÚJITFunction.__annotate__y  s   € ÷ .
ñ .
ð 
ñ.
r0   c
                	óä  € V'       g   R # V P                   P                  p
V P                   P                  pRP                  \	        V P
                  V^,          4       UUu. uF  w  rÍVP                   RV 2NK  	  upp4      pV
 RVP                   RVP                   RVP                   RVP                   RVP                   RV R	2p\        V P                   4      p\        VW6V^ ,          WrV4      pR
VRVRVRVP                  RVP                  RVP                  RVP                  RVP                  RVP                  RVRVRV	/pV! VV\        WºV 4      RV/VCV	RR7      # u uppi )Nr@  z: z[num_warps=z, num_ctas=z, num_stages=z, enable_fp_fusion=z, launch_cooperative_grid=ú](r=  r)  Údevicer6  Ú	num_warpsÚnum_ctasÚ
num_stagesÚenable_fp_fusionÚlaunch_cooperative_gridÚextern_libsÚconfigsÚspecialization_dataÚ	is_warmupr/  F)r/  r‰  r2  ÚcompileÚis_manual_warmupÚalready_compiled)r2  rÆ   rp   rR  rP  ÚparamsrA   rÏ  rÐ  rÑ  rÒ  rÓ  r^  r;  rÔ  r³  )rN   Úhookr/  r)  r´   rÎ  r6  r.  rÕ  r×  rA   r1  rç   râ   Ú	arg_reprsr‰  Ú	full_namerÖ  r  s   &&&&&&&&&&         r-   Ú
_call_hookÚJITFunction._call_hooky  sÑ  € ÷ Ùà�w‰w×#Ñ#ˆØ—‘×#Ñ#ˆØ—I‘IÄcÈ$Ï+É+ÐWZÐ[\ÕW]ÔF^Ô_ÑF^¹¸ %§*¡* ¨R°¨tÓ4ÑF^Ò_Ó`ˆ	Ø��{ 7×#4Ñ#4Ð"5°[À×AQÑAQÐ@RÐR_Ð`g×`rÑ`rÐ_sð  tGð  HO÷  H`ñ  H`ð  Gað  a{ð  |C÷  |[ñ  |[ð  {\ð  \^ð  _hð  ^ið  ijð  kˆÜ! $§'¡'Ó*ˆ	ä;¸IÀyÐ]dÐefÕ]gÐipØ<BóDÐð ˜Ø�fØ˜Ø˜×*Ñ*Ø˜×(Ñ(Ø˜'×,Ñ,Ø × 8Ñ 8Ø% w×'FÑ'FØ˜7×.Ñ.Ø�wØ!Ð#6Ø˜ð
ˆñ ØØÜ˜v¨TÓ2Ø˜CÐ* 6Ð*Ø&Ø"ô
ð 	
ùó- `s   Á"E,
c                ób   € \        V4      '       g   Q hV P                  P                  V4       R# )zu
Add a hook that will be executed prior to the execution of run
function with args and kwargs passed into the kernel
N)rw   Úpre_run_hooksrQ  )rN   rÜ  s   &&r-   Úadd_pre_run_hookÚJITFunction.add_pre_run_hook©  s&   € ô
 ˜�~Š~Ðˆ~Ø×Ñ×!Ñ! $Ö'r0   c                óØ   € ^RI HpHpHpHp \
        P                  P                  4       pV! V4      pWn        W n        W0n        \        V P                  V P                  V4      p/ / WVV3# )z!
Precompute as much as possible.
)ÚCompiledKernelrØ  Ú	ASTSourceÚmake_backend)Úcompilerræ  rØ  rç  rè  r   ÚactiveÚget_current_targetrZ  r)  rÛ  )rN   ræ  rØ  rç  rè  r´   rK  Úbinders   &       r-   Úcreate_binderÚJITFunction.create_binder±  s\   € ÷ 	PÓOÜ—‘×1Ñ1Ó3ˆÙ˜vÓ&ˆØ,ÔØŒØ"ŒÜ/°·±ÀÇÁÈWÓUˆØ�2�v¨Ð.Ð.r0   c           
     	ó  € VP                  V4      pV P                   Uu. uF  qfP                  NK  	  ppV Uu. uF  qf^ ,          NK  	  pp\        Wx4       U	U
u/ uF  w  ršWšbK	  	  pp	p
RV9  g   Q R4       hRV9  g   Q R4       hRV9  g   Q R4       hV F-  p	W•P                  9  g   K  W—9  g   K  \        RV	,          4      h	  \        VR 4      pV Uu/ uF&  qÝ\        \        VP                  4       4      V4      bK(  	  ppV Uu. uF  qf^ ,          R	8X  d   R
MV^,          NK  	  pp\        VR 4      pV U	u/ uF  q™VP                  \        Wé4      4      bK  	  pp	W[WÏ3# u upi u upi u up
p	i u upi u upi u up	i )r   Údevice_typez=device_type option is deprecated; current target will be usedrÎ  z8device option is deprecated; current device will be usedÚstreamz8stream option is deprecated; current stream will be usedz2Keyword argument %s was specified but unrecognisedc                ó   € VR 8H  # rl   r+   )rf   rz   s   &&r-   r!  Ú(JITFunction._pack_args.<locals>.<lambda>Í  s	   € ¸3À+Ò;Mr0   rm   rq   c                ó"   € \        V\        4      # rS   )r>   ra   )rf   r8  s   &&r-   r!  ró  Ñ  s   € ´ZÀÄ3Ô5Gr0   )Úparse_optionsrÛ  rA   rP  r4  ÚKeyErrorr   r   r9   rû   Ú
parse_attr)rN   rK  r  Ú
bound_argsrV  r.  r8  ÚsigkeysÚsigvalsrd   Úvr)  Ú
constexprsÚpathÚattrvalsr7  s   &&&&&&          r-   Ú
_pack_argsÚJITFunction._pack_args¾  sŠ  € à×'Ñ'¨Ó/ˆà#'§;¢;Ó/¡;˜a—6”6¡;ˆÐ/Ù!/Ó0¡˜A�Q—4�4¡ˆÐ0Ü(+¨GÔ(=Ô>Ñ(=™f˜q�Q’TÑ(=ˆ	Ñ>à FÔ*ÐkÐ,kÓkÐ*Ø˜vÔ%ÐaÐ'aÓaÐ%Ø˜vÔ%ÐaÐ'aÓaÐ%ÛˆAØ×(Ñ(Ö(¨QÖ-=ÜÐSÐVWÕWÓXÐXñ ô # 7Ñ,MÓNˆ
Ù[eÓfÑ[eÐSWÔ-¬d°:×3DÑ3DÓ3FÓ.GÈÓNÒNÑ[eˆ
ÐfáAOÓPÁ¸A˜A�$ +Ô-‘B°1°Qµ4Ò7ÁˆÐPÜ˜hÑ(GÓHˆÙPUÓVÑPUÈ1�G×&Ñ&Ô'8¸Ó'EÓFÒFÑPUˆÐVà :Ð4Ð4ùò% 0ùÚ0ùÛ>ùò gùâPùâVs"    E(ºE-ÁE2Ã,E8Ä!E=Ä?#Fc               	ó¨  € VP                  R V P                  4      ;'       g    \        P                  P                  VR &   \        P                  P
                  VR&   \        P                  P                  4       p\        P                  P                  V4      pV P                   F  pV! V/ VB  K  	  V P                  V,          w  r‰r«pV! V/ VB w  rÞp\        P                  P                  e7   \        P                  P                  4       w  ppVP                  RV R24       \        WžV4      pVP                  VR4      pVf6   V P                  W´WÞV4      w  ppppV P!                  VVVVVVV4      pVf   R# \#        4       pV P$                  P'                  4        F9  w  w  ppw  ppVP                  VV4      ;pV8w  g   K'  \)        RV RV RV 24      h	  V'       gè   Vf   Q h\+        V4      '       d	   V! V4      p\-        V4      pV^ ,          pV^8”  d
   V^,          M^pV^8”  d
   V^,          M^p VP.                  ! W.VP1                  4       O5!  p!VP2                  ! VVV VVP4                  VP6                  V!\        P                  P8                  \        P                  P:                  .	VP1                  4       O5!   V# )ÚdebugÚinstrumentation_modeNz("custom_pipeline", r=  rY   z1 has changed since we compiled this kernel, from z to )r�   r  r   ÚruntimeÚcompilationr  r   rê  Úget_current_deviceÚget_current_streamrâ  Údevice_cachesÚadd_stages_inspection_hookrQ  r¿  rÿ  Ú_do_compileÚobjectrL   r0  r^   rw   r6   Úlaunch_metadatarû   r  ÚfunctionÚpacked_metadataÚlaunch_enter_hookÚlaunch_exit_hook)"rN   r  r  r™   r  rÎ  rñ  rÜ  Úkernel_cacher¾  r´   rK  rì  rø  rV  r.  Úinspect_stages_keyÚinspect_stages_hashr/  Úkernelr)  rü  r7  Únot_presentrA   rf   rz   Úglobals_dictÚnewValÚ	grid_sizeÚgrid_0Úgrid_1Úgrid_2r  s"   &$$*,                             r-   r  ÚJITFunction.runÖ  s±  € Ø Ÿ*™* W¨d¯j©jÓ9×PÐP¼U¿]¹]×=PÑ=Pˆˆw‰Ü).×):Ñ):×)OÑ)OˆÐ%Ñ&ô —‘×1Ñ1Ó3ˆÜ—‘×1Ñ1°&Ó9ˆð ×&Ô&ˆDÙ�$Ð!˜&Ô!ñ 'ð CG×BTÑBTÐU[ÕB\Ñ?ˆ¨¸ñ /5°dÐ.E¸fÑ.EÑ+ˆ
 Gô �=‰=×3Ñ3Ò?Ü6;·m±m×6^Ñ6^Ó6`Ñ3ÐÐ 3Ø×!Ñ!Ð$8Ð9LÐ8MÈQÐ"OÔPäÐ 0À'ÓJˆØ×!Ñ! # tÓ,ˆð Š>Ø48·O±OÀGÐU_ØDKó5MÑ1ˆG�Y 
¨Eð ×%Ñ% c¨9°f¸jÈ'ÐSXÐZ`ÓaˆFØŠ~Ùô “hˆØ.2×.CÑ.C×.IÑ.IÖ.KÑ*‰IˆT�1Ñ*˜˜\Ø&×*Ñ*¨4°Ó=Ð=�À#ÖEÜ"Ø& t fÐ,]Ð^aÐ]bÐbfÐgmÐfnÐoóqð qñ /L÷
 àÒ#Ð#Ð#Ü˜�~Š~Ù˜JÓ'�Ü˜D›	ˆIØ˜!•WˆFØ )¨A¤�T˜!–W°1ˆFØ )¨A¤�T˜!–W°1ˆFà$×4Ò4°TÐXÀJ×DUÑDUÓDWÓXˆOØ�JŠJ�v˜v v¨v°v·±È×H^ÑH^Ð`oÜ—}‘}×6Ñ6¼¿¹×8VÑ8VðnØYc×YjÑYjÓYlônàˆr0   c                	óX   € V P                   f   V P                  # V P                  V4      # rS   )Ú_reprrf  )rN   rf   s   &&r-   r‰  ÚJITFunction.repr  s"   € Ø $§
¡
Ò 2ˆt�}‰}ÐE¸¿
¹
À1»ÐEr0   c	           	     	óˆ  <€ V'       d   TM. pV'       d   TM. p\         SV `  V4       VP                  V n        W n        W0n        W@n        Wpn        W€n        V \        V P                   R V P                  P                   2&   . V n        \        V P                  P                  P!                  4       4       F`  w  ršW“9   ;'       g    V
P"                  V9   pW”9   ;'       g    V
P"                  V9   pV P                  P%                  \'        WšW¼4      4       Kb  	  \)        V P*                  4      V n        RV n        WPn        W`n        V P                   Uu. uF  qÝP"                  NK  	  upV n        V P                   Uu. uF"  qÝP6                  '       g   K  VP8                  NK$  	  upV n        . V n        R# u upi u upi )r(  N)r?   r@   rp   r1  Úversionrè   rê   r  r  Ú_triton_jit_function_registryr2  rÆ   rÛ  rÁ  r)  rO  rû   rA   rQ  rä   r   rí  r  r  r  rZ   Ú	arg_namesr   ræ   rü  râ  )rN   r2  r!  rè   rê   r  rZ   r‰  r  rÃ  rç   ÚdnsÚdns_oaÚprP   s   &&&&&&&&&     €r-   r@   ÚJITFunction.__init__  sh  ø€ ç1BÑ-ÈÐßKiÑ)GÐoqÐ&ä‰Ñ˜ÔØ—m‘mˆŒØŒØ!2ÔØ.LÔ+ØŒ
Ø.ÔàQUÔ%¨¯©¨°Q°t·w±w×7KÑ7KÐ6LÐ&MÑNàˆŒÜ! $§.¡.×";Ñ";×"BÑ"BÓ"DÖE‰HˆAØÑ(×KÐK¨E¯J©JÐ:KÑ,KˆCØÑ8×hÐh¸E¿J¹JÐJhÑ<hˆFØ�K‰K×Ñœ{¨1°SÓAÖBñ Fô )¨×);Ñ);Ó<ˆÔð ˆŒØŒ
Ø Œð +/¯+ª+Ó6©+ QŸ&œ&©+Ñ6ˆŒØ*.¯+ª+ÓH©+ Q¿½œ5˜1Ÿ5œ5©+ÑHˆŒð  ˆÖùò	 7ùÚHs   ÅF:ÆF?ÆF?c           
     	óô  a€ ^ RI p^ RIHo \        P                  P                  4       pVP                  V4      pVR,          V P                  8w  d#   \        RVR,           RV P                   24      h\        \        VR,          4      pVR,          pV P                  V,          w   rxr—VR,          p
VP                  V
8w  d   \        RV
 RV 24      hV3R lp\        WV4       UUu/ uF  w  rÍWË! V4      bK  	  ppp\        \        VR	,          4      pVR
,          p\        \        VV4      4      pVR,          P                  4        UUu/ uF  w  rÍV\!        V4      bK  	  pppVR,          P                  4        UUu/ uF)  w  rÍT\#        V\$        4      '       d   \        V4      MTbK+  	  pppVR,          pV	P'                  V4      pV P)                  VVVVVVRR7      # u uppi u uppi u uppi )r   NrA   zSpecialization data is for z but trying to preload for r*  r+  r´   c                óh  <€ SP                   P                  V 4      '       d   SP                  V 4      # \        V \        4      '       d`   R V 9   d"   SP	                  \        V R ,          4      4      # RV 9   d1   V R,          pV\        9   d   \        V,          # \        RV R24      h\        V 4      # )rm   r'  zUnable to resolve JITFunction z for preload)rà   Úis_dtyper>   rŽ  rm   rÂ  r"  r^   )r’   Újf_keyÚtls   & €r-   Ú_decode_constantÚ-JITFunction.preload.<locals>._decode_constantI  s›   ø€ Ø�x‰x× Ñ  ×'Ò'Ø—x‘x “Ð&Ü˜%¤×&Ò&Ø %Ô'ØŸ<™<Ô(@ÀÀ{ÕASÓ(TÓUÐUØ! UÔ*Ø" >Õ2�FØÔ!>Ô>Ü<¸VÕDÐDÜ&Ð)GÈÀxÈ|Ð'\Ó]Ð]Ü+¨EÓ2Ð2r0   r,  r-  r)  r.  r/  T)r  )r3  Útriton.languager×   r   rê  r  Úloadsrf  r^   r  r»  r  r4  rP  rŽ  r0  rÂ  r>   r9   rõ  r
  )rN   rÖ  r3  rÎ  Údeserialized_objr*  r+  rf   r´   rK  Údeserialized_targetr-  r/  r’   rü  r,  r-  r7  r)  r.  r,  s   &&                  @r-   ÚpreloadÚJITFunction.preload8  s  ø€ ÛÝ$Ü—‘×1Ñ1Ó3ˆØŸ:™:Ð&9Ó:ÐØ˜FÕ# t§}¡}Ô4ÜØ-Ð.>¸vÕ.FÐ-GÐGbÐcg×cpÑcpÐbqÐrótð täœEÐ#3°OÕ#DÓEˆØ(¨Õ9ˆØ#'×#5Ñ#5°fÕ#=Ñ ˆˆ1�gØ.¨xÕ8Ðð �?‰?Ð1Ô1ÜÐ!<Ð=PÐ<QÐQlÐmsÐltÐuÓvÐvõ	3ô FIÈÔEfÔgÑEf±z°s�cÐ+¨EÓ2Ò2ÑEfˆ
ÑgÜœÐ 0°Õ >Ó?ˆ
Ø% lÕ3ˆ
Ü”S˜ ZÓ0Ó1ˆð M]Ð]hÕLi×LoÑLoÔLqÔrÑLq¹j¸c�SÔ2°5Ó9Ò9ÑLqˆ	Ñrð /¨yÕ9×?Ñ?ÔAô
áA‘
�ð ¤¨E´4×!8Ò!8”�u”¸eÒCÙAð 	ñ 
ð ˜uÕ%ˆØ×'Ñ'¨Ó0ˆØ×ÑØØØØØØØð  ó 
ð 	
ùó hùó sùó
s   Ã+G(ÅG.Æ/G4c                	ól  a aaaaaaaaaaa€ S P                   S,          w  opor˜S P                  \        P                  P                  SSSSSSS.S4	      '       d   R # S P                  S SSS4      o\        P                  P                  4       p
V
eK   \        4       o\        SV	SS4      pVVV VV3R lpVVVVVVV VVV3
R lpV
P                  W¼V4      pVSS&   V# S P                  SSSP                  R7      pVSS&   S P                  \        P                  P                  SSSSSSS.S4	       V# )Nc                 óB   <€ SP                  SSSP                  S R 7      # ))r´   r.  Ú	_env_vars)rØ  r4  )Úenv_varsr.  rN   rO   r´   s   €€€€€r-   Úasync_compileÚ.JITFunction._do_compile.<locals>.async_compile{  s!   ø€ Ø—|‘| C°À×@PÑ@PÐ\d�|ÓeÐer0   c                óv   <
€ V SS&   SP                  \        P                  P                  SSS	SSSS.S
4	       R # rS   )rß  r   r  Újit_post_compile_hook)r  r7  rü  rÎ  r  r/  r.  rN   r)  r´   r  s   &€€€€€€€€€€r-   Úfinalize_compileÚ1JITFunction._do_compile.<locals>.finalize_compile~  s;   ø€ Ø$*�˜SÑ!Ø—‘¤§¡× CÑ CÀSÈ)ÐU[Ð]cÐeoØ '¨%¨°&ö:r0   )r´   r.  )r  rß  r   r  Újit_cache_hookrç  r   Úactive_moder�   r   r   ÚsubmitrØ  r4  r<  )rN   r/  r)  rÎ  rü  r.  r7  r  rf   rK  Ú
async_moder\   r9  r=  r  r8  r  rO   r´   s   ffffffff       @@@@r-   r
  ÚJITFunction._do_compilem  s1  ÿû€ Ø.2×.@Ñ.@ÀÕ.HÑ+ˆ�a˜ à�?‰?œ5Ÿ=™=×7Ñ7¸¸iÈÐQWÐYcÐelÐotÐnuØ!÷#ò #áØ�n‰n˜T 9¨j¸%Ó@ˆä#×/Ñ/×3Ñ3Ó5ˆ
ØÒ!ä6Ó8ˆHÜ% c¨7°G¸XÓFˆI÷fñ f÷:ö :ð
  ×&Ñ& yÐAQÓRˆFØ &ˆL˜Ñð ˆð	 —\‘\ #¨f¸g×>NÑ>N�\ÓOˆFØ &ˆL˜ÑØ�O‰OœEŸM™M×?Ñ?ÀÀiÐQWÐY_ÐakÐmtØ"˜G Vô-àˆr0   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r(   rN   z'JITFunction[Callable[P, R]]'r™   úP.argsr  úP.kwargsr)   r#   r+   )r,   s   "r-   r.   rË  Œ  s0   € ÷ Yñ YÐ4ð Y¸Vð YÈxð YÐ\]ñ Yr0   c                	ó   € \        R 4      h)z:Cannot call @triton.jit'd outside of the scope of a kernel)r^   ©rN   r™   r  s   &*,r-   Ú__call__ÚJITFunction.__call__Œ  s   € ÜÐWÓXÐXr0   c               ó$   € V ^8„  d   QhRRRRRR/# )r(   Úinstancer*   ÚownerúOptional[type]r)   z'JITFunction[T]'r+   )r,   s   "r-   r.   rË  ’  s"   € ÷ 	ñ 	 Dð 	°ð 	ÐK[ñ 	r0   c                	ó   € R # rS   r+   ©rN   rL  rM  s   &&&r-   Ú__get__ÚJITFunction.__get__‘  s   € ár0   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r(   rN   z-'JITFunction[Callable[Concatenate[U, P], R]]'rL  r   rM  rN  r)   zCallable[P, R]r+   )r,   s   "r-   r.   rË  –  s,   € ÷ 	ñ 	ÐGð 	ÐSVð 	Ø)ð	Ø5Cñ	r0   c                	ó   € R # rS   r+   rP  s   &&&r-   rQ  rR  •  s   € ñ r0   c                	ó   € R # rS   r+   rP  s   &&&r-   rQ  rR  š  s   € Ùr0   c                	óP   € R V P                    RV P                  P                   R2# )zJITFunction(r(  r=  )r1  r2  rÆ   rU   s   &r-   Ú__repr__ÚJITFunction.__repr__�  s&   € Ø˜dŸk™k˜]¨!¨D¯G©G×,@Ñ,@Ð+AÀÐCÐCr0   )rç  ræ  r  r#  rØ  rü  r  r  rè   rê   r  r  r1  rZ   rÛ  râ  r!  )NNNNNNNrS   )r_   rp   rÆ   rÇ   rÈ  rß  rã  rí  rÿ  r  r‰  r@   r3  r
  rI  r   r   rQ  rW  rÊ   rË   rÌ   s   @r-   r&  r&  t  s|   ø† òõ.
ò`(ò/ò5ò07òrF÷$ òL3
òjõ>Y÷ à	ö	ó 
ð	ð 
ö	ó 
ð	ô	÷Dð Dr0   r&  c               ó    € V ^8„  d   QhRRRR/# ©r(   r2  r!   r)   zJITFunction[T]r+   )r,   s   "r-   r.   r.   §  s   € ÷ ñ ˆAð �.ñ r0   c                ó   € R # rS   r+   r]  s   &r-   Újitr\  ¦  s   € ár0   r!  r‰  r  rè   rê   r  rZ   c               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )r(   r‰  úOptional[Callable]r  rè   úOptional[Iterable[int | str]]rê   r  úOptional[bool]rZ   r)   zCallable[[T], JITFunction[T]]r+   )r,   s   "r-   r.   r.   ¬  sS   € ÷ 
ñ 
ð ð
ð (ð	
ð
 5ð
ð %Bð
ð ð
ð ð
ð #ñ
r0   c                ó   € R # rS   r+   )r!  r‰  r  rè   rê   r  rZ   s   $$$$$$$r-   r\  r\  «  s   € ñ r0   c               ó8   € V ^8„  d   QhRRRRRRRRRRR	R
RR
RR/# )r(   r2  zOptional[T]r‰  r^  r  rè   r_  rê   r  r`  rZ   r)   zKernelInterface[T]r+   )r,   s   "r-   r.   r.   ¹  s[   € ÷ 4ñ 4Øð4ð ð	4ð
 (ð4ð 5ð4ð %Bð4ð ð4ð ð4ð ñ4r0   c               óJ   aaaaaaa€ R VVVVVVV3R llpV e	   V! V 4      # V# )a  
Decorator for JIT-compiling a function using the Triton compiler.

:note: When a jit'd function is called, arguments are
    implicitly converted to pointers if they have a :code:`.data_ptr()` method
    and a `.dtype` attribute.

:note: This function will be compiled and run on the GPU. It will only have access to:

       * python primitives,
       * builtins within the triton package,
       * arguments to this function,
       * other jit'd functions

:param fn: the function to be jit-compiled
:type fn: Callable
c               ó    € V ^8„  d   QhRRRR/# rZ  r+   )r,   s   "r-   r.   Újit.<locals>.__annotate__Ö  s   € ÷ ñ �að ˜Nñ r0   c                ó¼   <€ \        V 4      '       g   Q h\        P                  P                  '       d   ^RIHp V! V SSSSSSSR7      # \        V SSSSSSSR7      # )r¸   )ÚInterpretedFunction)r!  rè   rê   r  rZ   r‰  r  )rw   r   r  Ú	interpretÚinterpreterrg  r&  )	r2  rg  r  rè   rê   r  rZ   r‰  r!  s	   & €€€€€€€r-   Ú	decoratorÚjit.<locals>.decoratorÖ  so   ø€ Ü˜�|Š|Ðˆ|Ü�=‰=×"×"Ð"Ý8Ù& r°7ÐN_ØFdÐlqØ08¸tÐUdôfð fô ØØØ"3Ø/MØØ!ØØ /ô	ð 	r0   r+   )	r2  r!  r‰  r  rè   rê   r  rZ   rj  s	   &ddddddd r-   r\  r\  ¹  s&   þ€ ÷:ö ð& 
‚~Ù˜‹}Ðð Ðr0   c                  óZ   € ] tR tRtRt]R 4       tR
R ltR t]R 4       t	]R 4       t
R	tR# )r  iõ  zf
Can be used in place of real tensors when calling:
    kernel.warmup(MockTensor(torch.float32), ...)
c                	ót   € V P                   P                  R 8X  d   V P                  R8X  d   \        V 4      # V # )rà   Útorch)rP   r_   rp   r  )rš   s   &r-   r  ÚMockTensor.wrap_dtypeû  s.   € à�=‰=×!Ñ! WÔ,°·±À7Ô1JÜ˜c“?Ð"Øˆ
r0   Nc                	ó,   € Vf   ^.pWn         W n        R # rS   ©rà   Úshape)rN   rà   rr  s   &&&r-   r@   ÚMockTensor.__init__  s   € ØŠ=Ø�CˆEØŒ
ØŽ
r0   c                	ó¢   € ^.pV P                   R,           F"  pVP                  VR,          V,          4       K$  	  \        \        V4      4      # )r¸   rÓ   rÕ   )rr  rQ  r»  Úreversed)rN   ÚstridesÚsizes   &  r-   ÚstrideÚMockTensor.stride  sB   € Ø�#ˆØ—J‘J˜r—N�NˆDØ�N‰N˜7 2�;¨Õ-Ö.ñ #ä”X˜gÓ&Ó'Ð'r0   c                 	ó   € ^ # rˆ  r+   r+   r0   r-   Údata_ptrÚMockTensor.data_ptr  ó   € ár0   c                 	ó   € ^ # rˆ  r+   r+   r0   r-   Ú	ptr_rangeÚMockTensor.ptr_range  r}  r0   rq  rS   )r_   rp   rÆ   rÇ   rÈ   Ústaticmethodr  r@   rx  r{  r  rÊ   r+   r0   r-   r  r  õ  sM   † ñð
 ñó ðô
ò(ð ñó ðð ñó ôr0   r  c                  óX   € ] tR tRtR tR tR tR R ltR tR t	R	 t
R
 tR tR tRtR# )ÚTensorWrapperi  c                	ó˜   € W n         Wn        VP                  V n        VP                  V n        V P                  P                  V n        R # rS   )rà   ÚbaseÚdatarÎ  rr  )rN   r…  rà   s   &&&r-   r@   ÚTensorWrapper.__init__  s1   € ØŒ
ØŒ	Ø—I‘IˆŒ	Ø—k‘kˆŒØ—Y‘Y—_‘_ˆŽ
r0   c                	ó6   € V P                   P                  4       # rS   )r…  r{  rU   s   &r-   r{  ÚTensorWrapper.data_ptr  s   € Ø�y‰y×!Ñ!Ó#Ð#r0   c                	ó6   € V P                   P                  ! V!  # rS   )r…  rx  )rN   r™   s   &*r-   rx  ÚTensorWrapper.stride"  s   € Ø�y‰y×Ò Ñ&Ð&r0   c               ó   € V ^8„  d   QhRR/# rÎ   r+   )r,   s   "r-   r.   ÚTensorWrapper.__annotate__%  s   € ÷ ;ñ ;˜ñ ;r0   c                	ó<   € R V P                    RV P                   R2# )zTensorWrapper[rÍ  r=  )rà   r…  rU   s   &r-   Ú__str__ÚTensorWrapper.__str__%  s   € Ø §
¡
˜|¨2¨d¯i©i¨[¸Ð:Ð:r0   c                	ó6   € V P                   P                  4       # rS   )r…  Úelement_sizerU   s   &r-   r’  ÚTensorWrapper.element_size(  s   € Ø�y‰y×%Ñ%Ó'Ð'r0   c                	ó^   € \        V P                  P                  4       V P                  4      # rS   )rƒ  r…  Úcpurà   rU   s   &r-   r•  ÚTensorWrapper.cpu+  s   € Ü˜TŸY™YŸ]™]›_¨d¯j©jÓ9Ð9r0   c                	óP   € V P                   P                  VP                   4       R # rS   )r…  Úcopy_)rN   Úothers   &&r-   r˜  ÚTensorWrapper.copy_.  s   € Ø�	‰	�‰˜Ÿ
™
Ö#r0   c                	ó^   € \        V P                  P                  4       V P                  4      # rS   )rƒ  r…  Úclonerà   rU   s   &r-   rœ  ÚTensorWrapper.clone1  s   € Ü˜TŸY™YŸ_™_Ó.°·
±
Ó;Ð;r0   c                	ó`   € \        V P                  P                  V4      V P                  4      # rS   )rƒ  r…  Útorà   )rN   rÎ  s   &&r-   rŸ  ÚTensorWrapper.to4  s    € Ü˜TŸY™YŸ\™\¨&Ó1°4·:±:Ó>Ð>r0   c                	ó`   € \        V P                  P                  V4      V P                  4      # rS   )rƒ  r…  Ú	new_emptyrà   )rN   Úsizess   &&r-   r¢  ÚTensorWrapper.new_empty7  s"   € Ü˜TŸY™Y×0Ñ0°Ó7¸¿¹ÓDÐDr0   )r…  r†  rÎ  rà   rr  N)r_   rp   rÆ   rÇ   r@   r{  rx  r�  r’  r•  r˜  rœ  rŸ  r¢  rÊ   r+   r0   r-   rƒ  rƒ    s5   † ò%ò$ò'õ;ò(ò:ò$ò<ò?öEr0   rƒ  c                ó  € \        V \        4      '       d=   WP                  P                  8X  d   V P                  # \        V P                  V4      # \	        V R 4      '       d   \        W4      # \        R\        V 4       R24      h)r{  zCannot reinterpret a r\  )r>   rƒ  r…  rà   Úhasattrrº   rs   )Útensorrà   s   &&r-   Úreinterpretr¨  ;  sm   € Ü�&œ-×(Ò(Ø—K‘K×%Ñ%Ô%à—;‘;Ðô ! §¡¨eÓ4Ð4Ü	�˜×	$Ò	$ä˜VÓ+Ð+äÐ/´°V³¨~¸QÐ?Ó@Ð@r0   c                ó’   € Tp\        V 4       F5  w  r4VP                  4       P                  R 4      '       g   K,  W#,          p V# 	  V# )zdef )rÁ  rÙ   rÚ   )rb  rc  rn  ÚidxÚlines   &&   r-   rm  rm  J  sL   € Ø/Ðô ˜wÖ'‰	ˆØ�:‰:‹<×"Ñ" 6×*Ô*Ø Õ'Ð ØØÐñ	 (ð  Ðr0   c                óœ   € \         P                  V 4      pV'       g   \        R 4      h\        VP	                  R4      4      pV^,          pV# )z'No function definition found for kernelÚindent)ÚINDENT_PATTERNrt  re  r6   Úgroup)r{  Úindented_defrp  s   &  r-   ro  ro  X  sH   € ä!×(Ñ(¨Ó5€LßÜÐBÓCÐCä˜l×0Ñ0°Ó:Ó;Ðà˜1ÕÐØÐr0   c                  ó2   € ] tR tRtR t]R 4       tR tRtR# )ÚBoundConstexprFunctionid  c                	ó   € Wn         W n        R # rS   )Ú__self__Ú__func__)rN   rL  r2  s   &&&r-   r@   ÚBoundConstexprFunction.__init__f  s   € Ø ŒØŽr0   c                	ó.   € V P                   P                  # rS   )rµ  r\   rU   s   &r-   r\   Ú BoundConstexprFunction.cache_keyj  s   € à�}‰}×&Ñ&Ð&r0   c                	óB   € V P                   ! V P                  .VO5/ VB # rS   ©rµ  r´  rH  s   &*,r-   rI  ÚBoundConstexprFunction.__call__n  s   € Ø�}Š}˜TŸ]™]Ð<¨TÒ<°VÑ<Ð<r0   rº  N)	r_   rp   rÆ   rÇ   r@   rÉ   r\   rI  rÊ   r+   r0   r-   r²  r²  d  s    † òð ñ'ó ð'ö=r0   r²  c                  óR   a € ] tR tRtV 3R ltR t]R R l4       tRR/R ltR	tV ;t	# )
ÚConstexprFunctionir  c                	ó&   <€ \         SV `  V4       R # rS   )r?   r@   )rN   r2  rP   s   &&€r-   r@   ÚConstexprFunction.__init__t  s   ø€ Ü‰Ñ˜Ör0   c                	ó$   € Ve   \        W4      # V # rS   )r²  )rN   r9  Úobjclasss   &&&r-   rQ  ÚConstexprFunction.__get__w  s   € àŠ?Ü)¨#Ó4Ð4Øˆr0   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	r(   rN   z#'ConstexprFunction[Callable[P, R]]'r™   rE  r  rF  r)   r#   r+   )r,   s   "r-   r.   ÚConstexprFunction.__annotate__~  s+   € ÷ ñ Ð:ð À6ð ÐU]ð Ðbcñ r0   c                	ó   € R # rS   r+   rH  s   &*,r-   rI  ÚConstexprFunction.__call__}  s   € ár0   Ú	_semanticNc               	ó*  € ^ RI HpHp V Uu. uF
  qd! V4      NK  	  ppVP                  4        UUu/ uF  w  rxWt! V4      bK  	  pppV P                  ! V/ VB p	Vf   V	# \
        P                  P                  '       d   V	# V! V	4      # u upi u uppi )r   )Ú_unwrap_if_constexprrm   )rÖ   rÉ  rm   r0  r2  r   r  rh  )
rN   rÇ  r™   r  rÉ  rm   r8  rd   rû  Úress
   &$*,      r-   rI  rÆ  �  s�   € ßHá15Ó6±¨AÐ$ QÖ'±ˆÐ6Ø;A¿<¹<¼>ÔJ¹>±°!�!Ð)¨!Ó,Ò,¹>ˆÑJð �gŠg�tÐ&˜vÑ&ˆàÒàˆJô �=‰=×"×"Ð"ØˆJÙ˜‹~Ðùò 7ùÛJs
   �B
²Br+   )
r_   rp   rÆ   rÇ   r@   rQ  r   rI  rÊ   rË   rÌ   s   @r-   r½  r½  r  s2   ø† õòð ôó ðð¨÷ ò r0   r½  c               ó    € V ^8„  d   QhRRRR/# )r(   r2  r!   r)   zConstexprFunction[T]r+   )r,   s   "r-   r.   r.   ”  s   € ÷ !ñ !˜1ð !Ð!5ñ !r0   c                ó   € \        V 4      # )z™
Wraps an arbitrary Python function so that it can be called at
compile-time on constexpr arguments in a Triton function and
returns a constexpr result.
)r½  r]  s   &r-   Úconstexpr_functionrÍ  ”  s   € ô ˜RÓ Ð r0   rÇ  rS   )RÚ
__future__r   r   r…   r3   rB   rô   r¤   rg  rs  rq  Úcollectionsr   Údataclassesr   Ú	functoolsr   Útypingr   r	   r
   r   r   r   r   r   r   r   r   r   Útriton.backendsr   Útypesr   rq   r   r   r   Ú_utilsr   r   r   r   Úcacher   Útriton._C.libtritonr   r   r    rJ   rI   rØ  ru  r®  r!   r"   r#   r$   ÚNodeVisitorr&   rÜ   rä   r  r  r;  rZ  r^  r[   r"  r³  r¿  rÂ  r&  r\  r  rƒ  r¨  rm  ro  r²  r½  rÍ  r+   r0   r-   Ú<module>rÙ     sK  ðß ,Û 
Û Û Û Û Û Û 	Û Ý #Ý !Ý %÷ E÷  E÷  Eó  Eå 'Ý Ý Ý Ý ß `Ó `Ý  ß [Ñ [à!€Ø3€à—’Ð@À"Ç,Á,ÓO€áˆCƒL€ÙˆcƒN€ÙˆCƒL€ÙˆCƒL€ôf!˜Ÿ™ô f!õ\D÷4/>ñ />ôdTôZ�g˜a•jô Zò&ò$>*òB0÷r1ñ r1ðj !#Ð ð ÷ð ó ðòò0	ôjD�+˜¨qÕ1ô jDðd	 
ôó 
ðð 
ð
àð
ð  $ð
ð +/ð	
ð
 8<ð
ð EIð
ð !ð
ð  $ö
ó 
ð
ñ4ð ð4ð  $ð	4ð
 +/ð4ð 8<ð4ð EIð4ð !ð4ð  $÷4ð 4÷xñ ÷B"Eñ "EòJAò ò	ô=˜[ô =ô˜ W¨Q¥Zô ÷D!r0   