+
    –°³jP¾ ã                  ó  a€ 0 t $ ^ RI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t^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIHtHt ^ RIHt ^ RIHtHtHtHtHtHt ^ RIHtH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+ ^ RI,H-t- ^ RI.H/t/ ^ RI0H1t2 ^ RI3H4t4H5t5H6t6 ^ RI7H8t8H9t9 ^RI:H;t;H<t< ^RI=H>t> ^RI?H@t@HAtA ^RIBHCtC ^RIDHEtEHFtFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtNHOtOHPtP ^RIQHRtRHStSHTtTHUtUHVtVHWtWHXtX ]'       dz   ^ RIYHZtZH[t[H\t\H]t] ^ RI"H^t^ ^RI_H`t` ^RIaHbtbHctcHdtdHete ^RIfHgtg ^RIhHitiHjtjHktk ^RIBHltl ^RImHntn ]! R4      to]Z]jR,          .]i3,          tp]q]n,          tr]s] Pè                  ,          tu]stv]!Pî                  Pñ                  ]yR 4      tz]	Pö                  ! ]y4      t|R! R" lt}]Pü                   ! R# R$4      4       t ! R% R&]P(                  4      t€ ! R' R(]4      t�]J! R)R*7       ! R+ R,]�4      4       t‚ ! R- R.4      tƒ]Pü                   ! R/ R04      4       t„]Pü                   ! R1 R24      4       t…]Pü                   ! R3 R44      4       t†]Pü                   ! R5 R64      4       t‡]Pü                   ! R7 R84      4       tˆ]‚]„,          ]…,          ]‡,          ]†,          t‰]Š]s,          t‹/ tŒR9]�R:&    ! R; R<4      tŽ]EP                  ! 4       t�/ t‘R=]�R>&   R?s’/ t“R@]�RA&   / t”RB]�RC&   ER(RD RE llt• ! RF RG]4      t–RH RI lt—RJ RK lt˜RL RM lt™ER)RN RO lltšRP RQ lt›RR RS ltœ]EP:                  RT RU l4       tžRV RW ltŸRX RY lt RZ t¡R[ R\ lt¢]!EPF                  ]!EPH                  ]!EPJ                  ]!EPH                  /]!EPL                  ]!EPN                  ]!EPP                  ]!EPR                  ]!EPT                  ]!EPV                  ]!EPX                  ]!EPZ                  ]!EP\                  ]!EP^                  ]!EP`                  3 U u/ uF  p W bK  	  up Ct±R]]�R^&   R_ R` lt²Ra Rb lt³Rc Rd lt´Re Rf ltµRg Rh lt¶ ! Ri Rj4      t· ! Rk Rl]24      t1 ! Rm Rn4      t¸]EPr                  ! Ro]EPt                  Rp7      t»Rq Rr lt¼ ! Rs Rt]@]¸]T],          4      t½]Pü                   ! Ru Rv4      4       t¾Rw Rx lt¿Ry Rz ltÀ]Á! ER*/ R{]¾! ]$EP„                  R| R}R~7      bR]¾! ]$EP„                  R€ R� R‚Rƒ7      bR„]¾! ]$EP„                  R… R† R‡Rƒ7      bRˆ]¾! ]$EP„                  R‰ RŠ R‹Rƒ7      bRŒ]¾! ]$EP„                  R� RŽ R�Rƒ7      bR�]¾! ]$EP„                  R‘ R’ R�R“7      bR”]¾! ]$EP„                  R• R– R—Rƒ7      bR˜]¾! ]$EP„                  R™ Rš R› R˜Rœ7      bR�]¾! ]$EP†                  Rž RŸ R�Rƒ7      bR ]¾! ]$EP„                  R¡ R R~7      bR¢]¾! ]$EP„                  R£ R¢R~7      bR¤]¾! ]$EP„                  R¥ R¦R~7      bR§]¾! ]$EP„                  R¨ R©R~7      bRª]¾! ]$EP„                  R« R¬ R­ RªR®7      bR¯]¾! ]$EP„                  R° R± R²R“7      bR³]¾! ]$EP„                  R´ Rµ R¶Rƒ7      bR·]¾! ]$EP„                  R¸ R¹R~7      bRº]¾! ]$EP„                  R» R¼R~7      bR½]¾! ]$EP„                  R¾ R¿ RÀRƒ7      bRÁ]¾! ]$EP„                  RÂ RÃ RÄRƒ7      bRÅ]¾! ]$EP„                  RÆ RÇR~7      bRÈ]¾! ]$EP„                  RÉ RÊR~7      bRË]¾! ]$EP„                  RÌ RÍR~7      bRÎ]¾! ]$EP„                  RÏ RÐR~7      bRÑ]¾! ]$EP„                  RÒ RÑR~7      bRÓ]¾! ]$EP„                  RÔ RÕR~7      bRÖ]¾! ]$EP„                  R× RØR~7      bRÙ]¾! ]$EP„                  RÚ RÛR~7      bRÜ]¾! ]$EP„                  RÝ RÞR~7      bRß]¾! ]$EP„                  Rà RáR~7      bRâ]¾! ]$EP„                  Rã RäR~7      bRå]¾! ]$EP„                  Ræ RçR~7      bRè]¾! ]$EP„                  Ré RêR~7      bRë]¾! ]$EP„                  Rì RíR~7      bRî]¾! ]$EP„                  Rï RðR~7      bRñ]¾! ]$EP„                  Rò RóR~7      bRô]¾! ]$EP„                  Rõ RöR~7      bR÷]¾! ]$EP„                  Rø RùR~7      bRú]¾! ]$EP„                  Rû RüR~7      bRý]¾! ]$EP„                  Rþ RÿR~7      bER ]¾! ]$EP„                  ER ERR~7      b tÄER]�ER&   ER ER ltÅ ! ER ER]F4      tÆ ! ER	 ER
]I4      tÇ ! ER ER]4      tÈ]Pü                   ! ER ER4      4       tÉ ! ER ER4      tÊ]Ê! 4       tË ! ER ER4      tÌ ! ER ER4      tÍ]! ER]sER7      tÎ]! ER]Í]ÍER7      tÏ]'       d)   ]Ð]!EP¢                  ]V]Í]Ð]ÍER3,          ,          3,          tÒ ! ER ER]]Ï]Î3,          4      tÓ ! ER ER4      tÔ ! ER ER]Ô]]Ï,          4      tÕ]Pü                   ! ER  ER!4      4       tÖ]EP:                  ER" ER# l4       t× ! ER$ ER%4      tØ ! ER& ER']A4      tÙR# u up i (+  é    )ÚannotationsN)ÚABCÚabstractmethod)ÚautoÚEnum)Úchain)ÚAnyÚcastÚClassVarÚGenericÚ
NamedTupleÚTYPE_CHECKING)ÚSelfÚTypeVar)ÚELEMENTWISE_TYPE_PROMOTION_KIND)Ú_pytree)ÚConfigModule)Ú
OrderedSet)ÚMax)Úint_oo)ÚPythonPrinter)Úfree_symbol_is_typeÚsymbol_is_typeÚSymT)Úbound_sympyÚValueRanges)ÚconfigÚmetrics)ÚDtypePropagationOpsHandler)ÚBasicMathOpsMixinÚDefaultHandler)ÚShapePropagationOpsHandler)Úboolean_opsÚDeferredLineBaseÚgenerate_assertÚget_current_backendÚIndentedBufferÚir_dataclassÚ
ScopedDictÚ	sympy_dotÚsympy_index_symbolÚ
sympy_subsÚtriton_typeÚunique)ÚNullHandlerÚopsÚ
OpsHandlerÚOpsValueÚReductionTypeÚ	StoreModeÚV)ÚCallableÚIteratorÚMutableMappingÚSequence)ÚGraphModule)ÚCustomGraphModulePass)ÚBufferÚChoiceCallerÚFixedLayoutÚIRNode©ÚLoopBody)ÚBaseSchedulingÚ	SchedulerÚSchedulerNode)ÚBlockShapeType©ÚPythonWrapperCodegenÚ_TÚschedulec               ó    € V ^8„  d   QhRRRR/# )é   ÚmsgÚstrÚreturnÚNone© )Úformats   "Ú_/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/_inductor/codegen/common.pyÚ__annotate__rS   Z   s   € ÷ =ñ =˜#ð = $ñ =ó    c                óˆ   € \         P                  \        P                  4      '       d   \         P	                  R V 4       R# R# )zData type propagation: %sN)Úschedule_logÚisEnabledForÚloggingÚDEBUGÚdebug)rL   s   &rR   Údata_type_loggerr[   Z   s-   € Ü× Ñ ¤§¡×/Ò/Ü×ÑÐ6¸Ö<ñ 0rT   c                  ót   € ] tR t^_t$ RtR]R&   R]R&   R R lt]R R	 l4       tR
 R lt	]R R l4       t
RtR# )ÚFileBackedGraphModulez…
Output of FX wrapper codegen. Exposes the same methods as ModuleType, but these
map back to a GraphModule instead of Python source.
r:   ÚgmzCallable[..., Any]Úcompiled_fnc               ó   € V ^8„  d   QhRR/# ©rK   rN   rO   rP   )rQ   s   "rR   rS   Ú"FileBackedGraphModule.__annotate__i   s   € ÷  ñ  ˜tñ  rT   c                	óL  € \         P                  ! R RRR7      V n         \        P                  ! \        P
                  V P                   P                  4       V P                   ;_uu_ 4       pVP                  V P                  4       RRR4       R#   + '       g   i     R# ; i)zw+z.pyF)ÚmodeÚsuffixÚdeleteN)	ÚtempfileÚNamedTemporaryFileÚatexitÚregisterÚosÚremoveÚnameÚwriteÚvalue)ÚselfÚfs   & rR   Ú__post_init__Ú#FileBackedGraphModule.__post_init__i   sb   € ô !×3Ò3Ø˜e¨Eô
ˆŒô 	�ŠœŸ	™	 4§=¡=×#5Ñ#5Ô6Ø�]�]Š]˜aØ�G‰G�D—J‘JÔ÷ �]�]Š]ús   Á,BÂB#	c               ó   € V ^8„  d   QhRR/# ©rK   rN   rM   rP   )rQ   s   "rR   rS   rb   t   s   € ÷ "ñ "˜#ñ "rT   c                	ó.   € V P                   P                  # ©N)rg   rm   ©rp   s   &rR   Ú__file__ÚFileBackedGraphModule.__file__s   s   € à�}‰}×!Ñ!Ð!rT   c               ó    € V ^8„  d   QhRRRR/# )rK   Úargsú	list[Any]rN   r	   rP   )rQ   s   "rR   rS   rb   w   s   € ÷ 'ñ '˜ð ' sñ 'rT   c                	ó"   € V P                   ! V!  # rw   )r_   ©rp   r|   s   &&rR   ÚcallÚFileBackedGraphModule.callw   s   € Ø×Ò Ñ&Ð&rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rb   {   s   € ÷ ñ �sñ rT   c                	ó.   € V P                   P                  # rw   )r^   Úcoderx   s   &rR   ro   ÚFileBackedGraphModule.valuez   s   € à�w‰w�|‰|ÐrT   )rg   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__rr   Úpropertyry   r€   ro   Ú__static_attributes__rP   rT   rR   r]   r]   _   sF   ‡ ñð
 	ƒOØ#Ó#õ ð ô"ó ð"õ'ð ôó ôrT   r]   c                  óN   € ] tR t^t^ t^t^t]R R l4       t]R R l4       t	Rt
R# )ÚWorkspaceZeroModec               ó$   € V ^8„  d   QhRRRRRR/# )rK   Úar�   ÚbrN   rP   )rQ   s   "rR   rS   ÚWorkspaceZeroMode.__annotate__…   s)   € ÷ Nñ NÐ$ð NÐ):ð NÐ?Pñ NrT   c                	ó’   € W8X  g   V\         P                  8X  d   V # V \         P                  8X  d   V# \        R V : RV: R24      h)zWorkspaceZeroMode.combine(ú, Ú))r�   ÚUNINITIALIZEDÚNotImplementedError©r‘   r’   s   &&rR   ÚcombineÚWorkspaceZeroMode.combine„   sI   € àŒ6�QÔ+×9Ñ9Ô9ØˆHØÔ!×/Ñ/Ô/ØˆHÜ!Ð$>¸q¹eÀ2ÀaÁUÈ!Ð"LÓMÐMrT   c               ó    € V ^8„  d   QhRRRR/# )rK   Ú	zero_fillÚboolrN   r�   rP   )rQ   s   "rR   rS   r“   �   s   € ÷ /ñ /˜Tð /Ð&7ñ /rT   c                	óR   € V '       d   \         P                  # \         P                  # rw   )r�   ÚZERO_ON_CALLr—   )r�   s   &rR   Ú	from_boolÚWorkspaceZeroMode.from_boolŒ   s   € çÜ$×1Ñ1Ð1Ü ×.Ñ.Ð.rT   rP   N)r†   r‡   rˆ   r‰   r—   r    ÚZERO_PER_GRAPHÚstaticmethodrš   r¡   r�   rP   rT   rR   r�   r�      s9   † Ø€MØ€LØ€NàôNó ðNð ô/ó ô/rT   r�   c                  óF   € ] tR t^“tRt]R R l4       t]R R l4       tRtR# )ÚCodegenSymbolzH
An IR object possibly corresponding to a variable in the wrapper code.
c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   ÚCodegenSymbol.__annotate__™   s   € ÷ ñ ˜#ñ rT   c                	ó   € R # rw   rP   rx   s   &rR   Úget_nameÚCodegenSymbol.get_name˜   ó   € árT   c               ó   € V ^8„  d   QhRR/# ©rK   rN   ztorch.Tensor | sympy.SymbolrP   )rQ   s   "rR   rS   r¨   �   s   € ÷ ñ Ð8ñ rT   c                	ó   € R # rw   rP   rx   s   &rR   Úget_exampleÚCodegenSymbol.get_exampleœ   r¬   rT   rP   N)	r†   r‡   rˆ   r‰   rŠ   r   rª   r°   r�   rP   rT   rR   r¦   r¦   “   s/   † ñð ôó ðð ôó ôrT   r¦   T)Úfrozenc                  ón  € ] tR t^¡t$ RtR]R&   R]R&   R]R&   R]R	&   R
tR]R&   ]P                  t	R]R&   ]
R.R R ll4       t]
R R l4       t]
R R l4       t]
R R l4       tR R lt]tR R ltR R ltR R lt]R R l4       t]t]t]tR  R! ltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltR,tR-# )/ÚWorkspaceArga  A temporary buffer used for a single kernel, then discarded.

Not registered as a traditional buffer since there are no users,
so it would be dead code eliminated.

Args:
    nbytes: The size of the buffer in bytes.
    zero_fill: Whether the buffer should be initialized to zero.

ú
sympy.ExprÚcountr�   Ú	zero_modeútorch.deviceÚdevicerM   Ú
outer_nameÚws_ptrÚ
inner_nameútorch.dtypeÚdtypec               ó    € V ^8„  d   QhRRRR/# )rK   ÚprefixrM   rN   rP   )rQ   s   "rR   rS   ÚWorkspaceArg.__annotate__¶   s   € ÷ 7ñ 7˜Cð 7°3ñ 7rT   c                	óP   € V  \        \        P                  P                  4       2# rw   )Únextr5   ÚgraphÚworkspace_id)rÀ   s   &rR   Úunique_nameÚWorkspaceArg.unique_nameµ   s!   € à�œ$œqŸw™w×3Ñ3Ó4Ð5Ð6Ð6rT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   r‘   r´   r’   rN   rž   rP   )rQ   s   "rR   rS   rÁ   º   s!   € ÷ 
ñ 
�Lð 
 \ð 
°dñ 
rT   c                	ó¸   € V P                   VP                   8H  ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # rw   )r¼   r¾   r¹   r™   s   &&rR   Úcan_joinÚWorkspaceArg.can_join¹   sF   € ð �L‰L˜AŸL™LÑ(×XÐX¨Q¯W©W¸¿¹Ñ-?×XÐXÀAÇHÁHÐPQ×PXÑPXÑDXð	
rT   c               ó$   € V ^8„  d   QhRRRRRR/# ©rK   r‘   r´   r’   rN   rP   )rQ   s   "rR   rS   rÁ   À   s!   € ÷ 
ñ 
�ð 
 ð 
°,ñ 
rT   c           	     	óú   € \        V P                  VP                  ,           \        P                  V P                  VP                  4      V P
                  V P                  V P                  V P                  R 7      # )©r¶   r·   r¾   r¹   r¼   rº   )	r´   r¶   r�   rš   r·   r¾   r¹   r¼   rº   r™   s   &&rR   ÚjoinÚWorkspaceArg.join¿   sS   € äØ—'‘'˜AŸG™GÕ#Ü'×/Ñ/°·±¸Q¿[¹[ÓIØ—'‘'Ø—8‘8Ø—|‘|Ø—|‘|ô
ð 	
rT   c               ó$   € V ^8„  d   QhRRRRRR/# rÍ   rP   )rQ   s   "rR   rS   rÁ   Ë   s!   € ÷ 
ñ 
�<ð 
 Lð 
°\ñ 
rT   c           	     	ó¸  € V P                   VP                   8X  d7   V P                  VP                  8X  d   V P                  VP                  8X  g   \        R 4      h\	        \        V P                  VP                  4      \        P                  V P                  VP                  4      V P                   V P                  V P                  V P                  R7      # )zDWorkspaceArg.maximum requires matching dtype, device, and inner_namerÏ   )r¾   r¹   r¼   ÚAssertionErrorr´   r   r¶   r�   rš   r·   rº   r™   s   &&rR   ÚmaximumÚWorkspaceArg.maximumÊ   s—   € ð �G‰G�q—w‘wÔ 1§8¡8¨q¯x©xÔ#7¸A¿L¹LÈAÏLÉLÔ<Xä ØVóð ô Ü�a—g‘g˜qŸw™wÓ'Ü'×/Ñ/°·±¸Q¿[¹[ÓIØ—'‘'Ø—8‘8Ø—|‘|Ø—|‘|ô
ð 	
rT   c               ó   € V ^8„  d   QhRR/# )rK   rN   r¸   rP   )rQ   s   "rR   rS   rÁ   Ü   s   € ÷ ñ ˜Lñ rT   c                	ó   € V P                   # rw   ©r¹   rx   s   &rR   Ú
get_deviceÚWorkspaceArg.get_deviceÜ   s   € Ø�{‰{ÐrT   c               ó   € V ^8„  d   QhRR/# )rK   rN   r½   rP   )rQ   s   "rR   rS   rÁ   á   s   € ÷ ñ ˜;ñ rT   c                	ó   € V P                   # rw   )r¾   rx   s   &rR   Ú	get_dtypeÚWorkspaceArg.get_dtypeá   s   € Ø�z‰zÐrT   c               ó   € V ^8„  d   QhRR/# r®   rP   )rQ   s   "rR   rS   rÁ   ä   s   € ÷ /ñ /Ð8ñ /rT   c                	ó>   € V P                  4       P                  4       # rw   )Ú
get_layoutr°   rx   s   &rR   r°   ÚWorkspaceArg.get_exampleä   s   € Ø�‰Ó ×,Ñ,Ó.Ð.rT   c               ó   € V ^8„  d   QhRR/# ©rK   rN   r>   rP   )rQ   s   "rR   rS   rÁ   ç   s   € ÷ 
ñ 
˜Kñ 
rT   c                	óf   € ^RI Hp V! V P                  V P                  V P                  .^.R7      # )rK   )r>   )r¹   r¾   ÚsizeÚstride)Úirr>   r¹   r¾   r¶   )rp   r>   s   & rR   râ   ÚWorkspaceArg.get_layoutç   s.   € Ý$áØ—;‘;Ø—*‘*Ø—*‘*�Ø�3ô	
ð 	
rT   c               ó   € V ^8„  d   QhRR/# rå   rP   )rQ   s   "rR   rS   rÁ   ò   s   € ÷ !ñ !˜ñ !rT   c                	ó"   € V P                  4       # rw   )râ   rx   s   &rR   ÚlayoutÚWorkspaceArg.layoutñ   s   € à�‰Ó Ð rT   c               ó   € V ^8„  d   QhRR/# )rK   rN   rµ   rP   )rQ   s   "rR   rS   rÁ   ù   s   € ÷ ñ ˜Jñ rT   c                	ó6   € \         P                  P                  # rw   )ÚsympyÚSÚZerorx   s   &rR   Ú
get_offsetÚWorkspaceArg.get_offsetù   s   € Ü�w‰w�|‰|ÐrT   c               ó   € V ^8„  d   QhRR/# ©rK   rN   úlist[sympy.Expr]rP   )rQ   s   "rR   rS   rÁ   ü   s   € ÷ ñ Ð*ñ rT   c                	ó   € V P                   .# rw   )r¶   rx   s   &rR   Úget_sizeÚWorkspaceArg.get_sizeü   s   € Ø—
‘
ˆ|ÐrT   c               ó   € V ^8„  d   QhRR/# r÷   rP   )rQ   s   "rR   rS   rÁ   ÿ   s   € ÷ ñ Ð,ñ rT   c                	ó8   € \         P                  P                  .# rw   )rñ   rò   ÚOnerx   s   &rR   Ú
get_strideÚWorkspaceArg.get_strideÿ   s   € Ü—‘—‘ˆ}ÐrT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rÁ     ó   € ÷ ñ ˜#ñ rT   c                	ó   € V P                   # rw   )rº   rx   s   &rR   rª   ÚWorkspaceArg.get_name  s   € Ø�‰ÐrT   c               ó   € V ^8„  d   QhRR/# ©rK   rN   rž   rP   )rQ   s   "rR   rS   rÁ     s   € ÷ ñ ˜tñ rT   c                	ó   € R # ©FrP   rx   s   &rR   Úget_is_pinnedÚWorkspaceArg.get_is_pinned  s   € ÙrT   c               ó   € V ^8„  d   QhRR/# )rK   rN   ú	list[str]rP   )rQ   s   "rR   rS   rÁ     s   € ÷ ñ ¨iñ rT   c                	ó   € . # rw   rP   rx   s   &rR   Úget_inputs_that_alias_outputÚ)WorkspaceArg.get_inputs_that_alias_output  s   € Øˆ	rT   rP   N)Ú
workspace_) r†   r‡   rˆ   r‰   rŠ   r‹   r¼   ÚtorchÚuint8r¾   r¤   rÆ   rÊ   rÐ   rÕ   rÚ   Úget_device_or_errorrÞ   r°   râ   rŒ   rí   Úget_output_specÚmaybe_get_output_specÚmaybe_get_layoutrô   rú   rÿ   rª   r	  r  r�   rP   rT   rR   r´   r´   ¡   sì   ‡ ñ	ð ÓØ Ó ØÓØƒOØ€J�ÓØŸ™€Eˆ;Ó$àö7ó ð7ð ô
ó ð
ð
 ô
ó ð
ð ô
ó ð
õ"ð %Ðõõ/õ
ð ô!ó ð!ð !€OØ&ÐØ!Ðõõõõõ÷ñ rT   r´   c                  ó.   € ] tR tRtR R ltR R ltRtR# )ÚTritonScratchWorkspacei  c               ó    € V ^8„  d   QhRRRR/# )rK   rç   ÚintÚgenerate_dtype_strúCallable[..., str]rP   )rQ   s   "rR   rS   Ú#TritonScratchWorkspace.__annotate__  s   € ÷ 6ñ 6˜Sð 6Ð6Hñ 6rT   c                	ó   € Wn         W n        R # rw   )rç   Ú_generate_dtype_str)rp   rç   r  s   &&&rR   Ú__init__ÚTritonScratchWorkspace.__init__  s   € ØŒ	Ø#5Ö rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   r    s   € ÷ *ñ * Cñ *rT   c                	ó"   € V P                  4       # rw   )r  rx   s   &rR   r  Ú)TritonScratchWorkspace.generate_dtype_str  s   € Ø×'Ñ'Ó)Ð)rT   )r  rç   N)r†   r‡   rˆ   r‰   r   r  r�   rP   rT   rR   r  r    s   † õ6÷*ñ *rT   r  c                  óz   € ] tR tRt$ R]R&   R]R&   R]R&   ]P                  P                  tR]R&   R	t	R
]R&   Rt
R	# )Ú	TensorArgi  rM   rm   Úbufferr½   r¾   rµ   ÚoffsetNú
str | NoneÚalias_ofrP   )r†   r‡   rˆ   r‰   r‹   rñ   rò   ró   r(  r*  r�   rP   rT   rR   r&  r&    s.   ‡ à
ƒIØƒKØÓØŸ™Ÿ™€FˆJÓ%Ø€Hˆj×rT   r&  c                  óB   € ] tR tRt$ R]R&   R]R&   ]R R l4       tRtR	# )
ÚSizeArgi  rM   rm   rµ   Úexprc               ó   € V ^8„  d   QhRR/# ©rK   rN   r)  rP   )rQ   s   "rR   rS   ÚSizeArg.__annotate__$  s   € ÷ ñ ˜*ñ rT   c                	ó   € R # rw   rP   rx   s   &rR   r*  ÚSizeArg.alias_of#  s   € árT   rP   N)r†   r‡   rˆ   r‰   r‹   rŒ   r*  r�   rP   rT   rR   r,  r,    s   ‡ à
ƒIØ
Óàôó ôrT   r,  c                  ó"   € ] tR tRt$ R]R&   RtR# )ÚConstexprArgi(  rM   rm   rP   N©r†   r‡   rˆ   r‰   r‹   r�   rP   rT   rR   r4  r4  (  s   ‡ à
‡IrT   r4  c                  ó@   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	tR
# )ÚTMADescriptorArgi-  rM   rm   Úapi_typezlist[sympy.Expr] | NoneÚblock_shapeútorch.dtype | Noner¾   rP   Nr5  rP   rT   rR   r7  r7  -  s   ‡ à
ƒIØƒMØ(Ó(Ø×rT   r7  c                  óH   € ] tR tRt$ R]R&   R]R&   RtR]R&   RtR]R	&   R
tR# )ÚDeviceCodegeni5  ÚSchedulingConstructorÚ
schedulingÚWrapperConstructorÚwrapper_codegenNúWrapperConstructor | NoneÚcpp_wrapper_codegenÚfx_wrapper_codegenrP   )r†   r‡   rˆ   r‰   r‹   rB  rC  r�   rP   rT   rR   r<  r<  5  s&   ‡ à%Ó%Ø'Ó'Ø59ÐÐ2Ó9Ø48ÐÐ1×8rT   r<  zdict[str, DeviceCodegen]Údevice_codegensc                  ó
  € ] tR tRtR R ltR R ltR R ltR R	 ltR
 R ltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltR& R' ltR,R) R* lltR+tR(# )-ÚDeviceOpOverridesiG  c               ó    € V ^8„  d   QhRRRR/# ©rK   rm   rM   rN   rP   )rQ   s   "rR   rS   ÚDeviceOpOverrides.__annotate__H  s   € ÷ "ñ "¨Sð "°Sñ "rT   c                	ó   € \         hrw   ©r˜   ©rp   rm   s   &&rR   Úimport_get_raw_stream_asÚ*DeviceOpOverrides.import_get_raw_stream_asH  ó   € Ü!Ð!rT   c               ó    € V ^8„  d   QhRRRR/# ©rK   Ú
device_idxÚ	DeviceIdxrN   rM   rP   )rQ   s   "rR   rS   rI  K  s   € ÷ "ñ " Yð "°3ñ "rT   c                	ó   € \         hrw   rK  ©rp   rR  s   &&rR   Ú
set_deviceÚDeviceOpOverrides.set_deviceK  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  N  s   € ÷ "ñ "˜Sñ "rT   c                	ó   € \         hrw   rK  rx   s   &rR   ÚsynchronizeÚDeviceOpOverrides.synchronizeN  rO  rT   c               ó    € V ^8„  d   QhRRRR/# rQ  rP   )rQ   s   "rR   rS   rI  Q  s   € ÷ "ñ " yð "°Sñ "rT   c                	ó   € \         hrw   rK  rU  s   &&rR   Údevice_guardÚDeviceOpOverrides.device_guardQ  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  T  s   € ÷ 
ñ 
¨ñ 
rT   c                	óF   € \        R \        V 4      P                   R24      h)z>compile-on-one-rank (device-as-parameter) is not supported on z‚: it has no current_device_idx_expr(), so the generated wrapper would bake the compile-time device index and not be rank-portable.)ÚRuntimeErrorÚtyper†   rx   s   &rR   Úcurrent_device_idx_exprÚ)DeviceOpOverrides.current_device_idx_exprT  s.   € ô ØLÜ�D‹z×"Ñ"Ð#ð $ðó
ð 	
rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  a  ó   € ÷ "ñ " ñ "rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úcurrent_streamÚ DeviceOpOverrides.current_streama  rO  rT   c               ó    € V ^8„  d   QhRRRR/# )rK   Ústream_namerM   rN   rP   )rQ   s   "rR   rS   rI  d  s   € ÷ .ñ .¨ð .°ñ .rT   c                	ó   € V R 2# )z.native_handlerP   )rp   rl  s   &&rR   Ústream_handleÚDeviceOpOverrides.stream_handled  s   € Ø�˜nÐ-Ð-rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  g  ó   € ÷ "ñ " #ñ "rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úcpp_device_guardÚ"DeviceOpOverrides.cpp_device_guardg  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  j  ó   € ÷ "ñ " sñ "rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úcpp_aoti_device_guardÚ'DeviceOpOverrides.cpp_aoti_device_guardj  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  m  rq  rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úcpp_stream_guardÚ"DeviceOpOverrides.cpp_stream_guardm  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  p  rv  rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úcpp_aoti_stream_guardÚ'DeviceOpOverrides.cpp_aoti_stream_guardp  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  s  s   € ÷ "ñ "¨3ñ "rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úcpp_getStreamFromExternalÚ+DeviceOpOverrides.cpp_getStreamFromExternals  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  v  ó   € ÷ "ñ "˜sñ "rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úkernel_headerÚDeviceOpOverrides.kernel_headerv  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  y  r‡  rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úkernel_driverÚDeviceOpOverrides.kernel_drivery  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  |  ó   € ÷ "ñ " ñ "rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úcpp_stream_typeÚ!DeviceOpOverrides.cpp_stream_type|  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI    r�  rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úaoti_get_streamÚ!DeviceOpOverrides.aoti_get_stream  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  ‚  r�  rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úcpp_kernel_typeÚ!DeviceOpOverrides.cpp_kernel_type‚  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  …  rg  rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úcpp_device_ptrÚ DeviceOpOverrides.cpp_device_ptr…  rO  rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rI  ˆ  s   € ÷ "ñ "¨ñ "rT   c                	ó   € \         hrw   rK  rx   s   &rR   Útma_descriptor_helpersÚ(DeviceOpOverrides.tma_descriptor_helpersˆ  rO  rT   Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )	rK   Úidxr  Ú	workspacer  rÀ   r)  rN   ztuple[list[str], str] | NonerP   )rQ   s   "rR   rS   rI  ‹  s,   € ÷ "ñ "Øð"Ø#9ð"ØCMð"à	%ñ"rT   c                	ó   € \         hrw   rK  )rp   r¥  r¦  rÀ   s   &&&&rR   Úcpp_scratchÚDeviceOpOverrides.cpp_scratch‹  s
   € ô "Ð!rT   rP   rw   )r†   r‡   rˆ   r‰   rM  rV  rZ  r^  rd  ri  rn  rs  rx  r|  r€  r„  r‰  r�  r’  r–  rš  rž  r¢  r¨  r�   rP   rT   rR   rF  rF  G  sk   † õ"õ"õ"õ"õ
õ"õ.õ"õ"õ"õ"õ"õ"õ"õ"õ"õ"õ"õ"÷"ó "rT   rF  zdict[str, DeviceOpOverrides]Údevice_op_overrides_dictFz'dict[str, CustomGraphModulePass | None]Úcustom_backend_passeszdict[str, ConfigModule | None]Úcustom_backend_codegen_configsc               ó8   € V ^8„  d   QhRRRRRRRRR	RR
RRRRR/# )rK   r¹   rM   Údevice_schedulingr=  Údevice_wrapper_codegenr?  Údevice_cpp_wrapper_codegenrA  Údevice_fx_wrapper_codegenÚdevice_custom_passúCustomGraphModulePass | NoneÚdevice_custom_configúConfigModule | NonerN   rO   rP   )rQ   s   "rR   rS   rS   ¯  sb   € ÷ Bñ BØðBà,ðBð /ðBð !:ð	Bð
  9ðBð 5ðBð .ðBð 
ñBrT   c                óÒ   € \        VVVV4      \        V &   V\        V &   V'       d8   \        V\        4      '       d   V\
        Jg   \        R V: R\
        : 24      hV\        V &   R# )zdevice_custom_config=z: cannot be the same as the default inductor config config=N)r<  rD  r«  Ú
isinstancer   r   rÔ   r¬  )r¹   r®  r¯  r°  r±  r²  r´  s   &&&&&&&rR   Úregister_backend_for_devicer¸  ¯  su   € ô ,ØØØ"Ø!ó	„O�FÑð %7Ô˜&Ñ!ßäÐ+¬\×:Ò:Ø$¬FÓ2ä Ø(Ð'Ñ)Ð)dÔ]cÑ\eÐfóð ð .BÔ" 6Ó*rT   c                  ó¢   € ] tR tRt]! 4       t]! 4       t]! 4       t]! 4       t]! 4       t	]! 4       t
]! 4       t]! 4       t]! 4       t]! 4       tRtR# )ÚBackendFeatureiÊ  rP   N)r†   r‡   rˆ   r‰   r   ÚFOREACHÚ	BUCKETIZEÚINPLACE_BUFFERSÚMASKED_SCATTER_WITH_INDEXÚSCANÚSORTÚTUPLE_REDUCTIONÚPREFER_STORE_LOOP_ORDERÚTRITON_TEMPLATESÚREDUCE_TO_SINGLE_ELEMENTr�   rP   rT   rR   rº  rº  Ê  sL   † Ù‹f€GÙ“€IÙ“f€OÙ $£ÐÙ‹6€DÙ‹6€DÙ“f€OÙ"›fÐÙ“vÐÙ#›vÔrT   rº  c               ó    € V ^8„  d   QhRRRR/# )rK   r¹   útorch.device | str | NonerN   zOrderedSet[BackendFeature]rP   )rQ   s   "rR   rS   rS   ×  s   € ÷ 3ñ 3Ø%ð3àñ3rT   c                ó„  € V f   \        4       # \        4        \        V \        P                  4      '       d   V P
                  pMB\        V \        4      '       g   \        \        V 4      4      hT p\        P                  ! V4      p \        V4      pV'       g   \        RV 24      hV! R 4      pVP                  V 4      # )Nz$no scheduling registered for device )
r   Úinit_backend_registrationr·  r  r¹   rc  rM   rÔ   Úget_scheduling_for_deviceÚget_backend_features)r¹   Údevice_typeÚscheduling_ctorr>  s   &   rR   rÊ  rÊ  ×  s›   € ð ‚~Ü‹|ÐÜÔÜ�&œ%Ÿ,™,×'Ò'Ø—k‘k‰ä˜&¤#×&Ò&Ü ¤ f£Ó.Ð.ØˆÜ—’˜kÓ*ˆÜ/°Ó<€OßÜÐCÀKÀ=ÐQÓRÐRÙ  Ó&€JØ×*Ñ*¨6Ó2Ð2rT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   r¹   rÆ  Úfeaturerº  rN   rž   rP   )rQ   s   "rR   rS   rS   ë  s$   € ÷ 3ñ 3Ø%ð3Ø0>ð3à	ñ3rT   c                óx   € \        V\        4      '       g   \        R\        V4       24      hV\	        V 4      9   # )zSee also V.graph.has_featurezexpected BackendFeature, got )r·  rº  rÔ   rc  rÊ  )r¹   rÎ  s   &&rR   Úhas_backend_featurerÐ  ë  s9   € ô �gœ~×.Ò.ÜÐ<¼TÀ'»]¸OÐLÓMÐMØÔ*¨6Ó2Ñ2Ð2rT   c               ó    € V ^8„  d   QhRRRR/# )rK   r¹   rM   rN   zSchedulingConstructor | NonerP   )rQ   s   "rR   rS   rS   ô  s   € ÷ Uñ U cð UÐ.Jñ UrT   c                óJ   € V \         9   d   \         V ,          P                  # R # rw   )rD  r>  rÙ   s   &rR   rÉ  rÉ  ô  s    € Ø17¼?Ô1JŒ?˜6Õ"×-Ñ-ÐTÐPTÐTrT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   r¹   rM   Úcpp_wrapperrž   Ú
fx_wrapperrN   rA  rP   )rQ   s   "rR   rS   rS   ø  s,   € ÷ ñ ØðØ"ðØ8<ðàñrT   c                ó  € V \         9   d~   \         V ,          pV'       d   VP                  # V'       dI   VP                  pV R 8X  d4   \        P                  P
                  '       d   ^RIHp ^RIH	p WEJ d   V# V# VP                  # R# )Úcpu©ÚCppWrapperCpu)ÚCppWrapperCpuArrayRefN)rD  rC  rB  r   Úaot_inductorÚallow_stack_allocationÚcpp_wrapper_cpurÙ  Úcpp_wrapper_cpu_array_refrÚ  r@  )r¹   rÔ  rÕ  Úwrapper_codegen_objrB  rÙ  rÚ  s   &&&    rR   Úget_wrapper_codegen_for_devicerà  ø  sv   € ð ”Ô Ü-<¸VÕ-DÐßØ&×9Ñ9Ð9ßØ"5×"IÑ"IÐð ˜Œ¤6×#6Ñ#6×#M×#MÐ#MÝ:ÝLà&Ó7Ø0Ð0Ø&Ð&à&×6Ñ6Ð6ÙrT   c               ó    € V ^8„  d   QhRRRR/# )rK   r¹   rM   rN   r³  rP   )rQ   s   "rR   rS   rS     s   € ÷ -ñ -¨sð -Ð7Sñ -rT   c                ó,   € \         P                  V 4      # rw   )r«  ÚgetrÙ   s   &rR   Ú"get_custom_backend_pass_for_devicerä    s   € Ü ×$Ñ$ VÓ,Ð,rT   c               ó    € V ^8„  d   QhRRRR/# )rK   r¹   rM   rN   rµ  rP   )rQ   s   "rR   rS   rS     s   € ÷ 6ñ 6°ð 6Ð9Lñ 6rT   c                ó,   € \         P                  V 4      # rw   )r¬  rã  rÙ   s   &rR   Ú$get_custom_backend_config_for_devicerç    s   € Ü)×-Ñ-¨fÓ5Ð5rT   c               ó   € V ^8„  d   QhRR/# ra   rP   )rQ   s   "rR   rS   rS     s   € ÷ xñ x 4ñ xrT   c                 ó¤  aaa€ ^RI Hp  ^RIHp ^RIHp ^RIHp ^RIH	p ^RI
Hp ^RIHp ^RIHp ^R	IHp ^R
IHp	 ^RIHp
 ^RIHp ^RIHp \5        R4      f   RV RVRV	RV/o\7        RV3R lV
VV4       \5        R4      f   RVRVRV/o\7        RV3R lV
VV4       \5        R4      f   \7        RVV
4       \5        R4      f   \7        RVV
VV4       \5        R4      f   RV/o\7        RV3R lV
4       \5        R4      f   \7        RVV
VV4       \5        R4      f   \7        RV	VVV4       \8        P:                  P=                  4       pVR8w  df   \5        V4      fW   ^ RIH p  V! R4      pV! R4      pV! R 4      pV! R!4      pV'       d&   V'       d   V'       d   \7        VVVVV4       R# R# R# R# R# R#   \B         d     R# i ; i)"zŒ
Register the backend for different devices, including the scheduling
for kernel code generation and the host side wrapper code generation.
)ÚCppSchedulingrØ  )ÚCppWrapperGpu)ÚCppWrapperMps)ÚCUDACombinedScheduling)ÚHalideScheduling)ÚMetalScheduling)ÚPallasScheduling)ÚPythonWrapperMtia)ÚTritonSchedulingrF   )ÚWrapperFxCodegen)ÚXPUCombinedSchedulingr×  NÚcppÚhalideÚtritonÚpallasc                ó>   <€ S\         P                  ,          ! V 4      # rw   )r   Úcpu_backend)r>  Úcpu_backendss   &€rR   Ú<lambda>Ú+init_backend_registration.<locals>.<lambda>5  ó   ø€ ˜|¬F×,>Ñ,>Ö?À
ÔKrT   Úcudac                ó>   <€ S\         P                  ,          ! V 4      # rw   )r   Úcuda_backend)r>  Úcuda_backendss   &€rR   rü  rý  H  s   ø€ ˜}¬V×-@Ñ-@ÖAÀ*ÔMrT   ÚtpuÚxpuc                ó>   <€ S\         P                  ,          ! V 4      # rw   )r   Útpu_backend)r>  Útpu_backendss   &€rR   rü  rý  f  rþ  rT   ÚmpsÚmtiaÚprivateuseone)Ú_get_custom_mod_funcÚ
SchedulingrG   ÚCppWrapperCodegenró  )"rõ  rê  rÝ  rÙ  Úcpp_wrapper_gpurë  Úcpp_wrapper_mpsrì  Úcuda_combined_schedulingrí  rö  rî  r  rï  rø  rð  Úpython_wrapper_mtiarñ  r÷  rò  ÚwrapperrG   Úwrapper_fxirró  Úxpu.xpu_combined_schedulingrô  rÉ  r¸  r  Ú_CÚ_get_privateuse1_backend_nameÚ torch.utils.backend_registrationr  rb  )rê  rÙ  rë  rì  rí  rî  rï  rð  rñ  rò  rG   ró  rô  Úprivate_backendr  r®  r@  rB  rC  rû  r  r  s                      @@@rR   rÈ  rÈ    s  ú€ õ #Ý.Ý.Ý.Ý@Ý(Ý$Ý(Ý6Ý(Ý-Ý.ÝBä  Ó'Ò/à�=ØÐ&ØÐ&ØÐ&ð	
ˆô 	$ØÜKØ ð
 Øô
	
ô ! Ó(Ò0ð Ð,ØÐ&ØÐ&ð
ˆô
 	$ØÜMØ ØØô	
ô ! Ó'Ò/Ü#ØØØ ô	
ô ! Ó'Ò/Ü#ØØ!Ø ØØô	
ô ! Ó'Ò/àÐ&ð
ˆô 	$ØÜKØ ô	
ô ! Ó'Ò/Ü#ØØØ ØØô	
ô ! Ó(Ò0Ü#ØØØØØô	
ô —h‘h×<Ñ<Ó>€Oà˜?Ô*Ü% oÓ6Ò>åIð	Ù 4°\Ó BÐÙ2Ð3IÓJˆOÙ"6Ð7JÓ"KÐÙ!5Ð6HÓ!IÐß §_×9LÜ+Ø#Ø%Ø#Ø'Ø&öñ :M¡_Ñ ñ ?ñ 	+øô$ ô 	Úð	ús$   Å-'G  ÆG  ÆG  Æ%G  Ç GÇGc               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   ÚindexzSequence[sympy.Expr]Ú
index_varsÚsizesrN   rø   rP   )rQ   s   "rR   rS   rS   ”  s6   € ÷ Uñ UØðUà$ðUð  ðUð ñ	UrT   c                óJ   € ^RI Hp . V O\        WP                  V4      4      N# )rK   )ÚFlexibleLayout)ré   r  r*   Úcontiguous_strides)r  r  r  r  s   &&& rR   Úindex_prevent_reorderingr   ”  s*   € õ
 $ð UˆUÐT”I˜j×*KÑ*KÈEÓ*RÓSÐTÐTrT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   r¹   rM   Údevice_op_overridesrF  rN   rO   rP   )rQ   s   "rR   rS   rS   Ÿ  s$   € ÷ ?ñ ?Øð?Ø&7ð?à	ñ?rT   c                ón   € \         ;_uu_ 4        V\        V &   R R R 4       R #   + '       g   i     R # ; irw   )Údevice_op_overrides_lockrª  )r¹   r"  s   &&rR   Úregister_device_op_overridesr%  Ÿ  s$   € ÷ 
"Ö	!Ø+>Ô  Ñ(÷ 
"×	!×	!Ò	!ús   �
#£4	c                 ó  € \         '       d   R # \        ;_uu_ 4        \         '       d    R R R 4       R # ^RIHp  ^RIHp ^RIHp ^RIHp ^RI	Hp \        RV! 4       4       Rs R R R 4       R #   + '       g   i     R # ; i)N)Úmps_device_op_overrides)ÚCpuDeviceOpOverrides)r"  r  T)Ú _device_op_overrides_initializedr$  Ú r'  Úcpu_device_op_overridesr(  rÿ  r"  r	  r  r%  )r'  r(  r"  Úmtia_op_overridesÚxpu_op_overridess        rR   Ú_initialize_device_op_overridesr.  ¦  sZ   € ÷ (Ó'Ùç	!Ö	!ß+Ó+Ø÷ 
"Ñ	!õ 	.ÝAÝ-ÝBÝ@ô 	% UÑ,@Ó,BÔCà+/Ð(÷ 
"×	!×	!Ò	!ús   �A0µ1A0Á0B	c               ó    € V ^8„  d   QhRRRR/# )rK   r¹   rM   rN   rF  rP   )rQ   s   "rR   rS   rS   ½  s   € ÷ ,ñ , Cð ,Ð,=ñ ,rT   c                ó„   € \        V \        4      '       g   \        \        V 4      4      h\	        4        \
        V ,          # rw   )r·  rM   rÔ   rc  r.  rª  rÙ   s   &rR   Úget_device_op_overridesr1  ½  s/   € Ü�fœc×"Ò"ÜœT &›\Ó*Ð*Ü#Ô%Ü# FÕ+Ð+rT   zdict[torch.dtype, torch.dtype]ÚDTYPE_TO_COMPUTATION_DTYPEc               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   Úop_namerM   r|   r	   ÚkwargsrN   r:  rP   )rQ   s   "rR   rS   rS   Ú  s0   € ÷ (ñ (Øð(àð(ð ð(ð ñ	(rT   c                óþ  € V \        4       9   d   \        P                  # V R9   d   RV9   d
   VR,          # VR,          # V R9   d   \        P                  # V R	9   d   \        P                  # V R8X  d   RV9   d
   VR,          # V^,          # V R8X  d   RV9   d
   VR,          # VR,          # V R
9   d)   V^,          p\
        P                  P                  V4      # V R8X  d   RV9   d
   VR,          # VR,          # R# )zC
Given op name and a list of input dtypes, deduce the output dtype
r¾   Ú	reductionÚconstantÚto_dtype_bitcastN)Úto_dtypeÚ
index_exprÚ
value_expréÿÿÿÿ)ÚrandÚrandn)Ú	get_indexÚ	randint64Ú	load_seed)ÚloadÚstoreÚstore_reductionéþÿÿÿ)r#   r  rž   ÚfloatÚint64r5   rÄ   rÞ   )r4  r|   r5  Úbuf_names   &*, rR   Údeduce_output_dtype_by_namerJ  Ú  s
  € ð ”+“-ÔÜ�z‰zÐØ	ð ô 
ð
 #*¨VÔ"3ˆv�g�ÐA¸¸b½ÐAØ	ð ô 
ô �{‰{ÐØ	ð ô 
ô
 �{‰{ÐØ	�KÔ	Ø")¨VÔ"3ˆv�g�Ð@¸¸a½Ð@Ø	�JÔ	Ø")¨VÔ"3ˆv�g�ÐA¸¸b½ÐAØ	ð ô 
ð
 ˜•7ˆÜ�w‰w× Ñ  Ó*Ð*Ø	Ð&Ô	&Ø")¨VÔ"3ˆv�g�ÐA¸¸b½ÐAÙrT   c               ó   € V ^8„  d   QhRR/# r  rP   )rQ   s   "rR   rS   rS     s   € ÷ ñ ¨$ñ rT   c                 óÆ   € \        4       R 8H  ;'       dN    \        P                  P                  4       P                  R8g  ;'       d    \        \        P                  R4      # )r÷  r×  Útriton_tensor_ndim)r&   r5   rÄ   Úget_current_device_or_throwrc  ÚhasattrÚkernelrP   rT   rR   Ú _is_runtime_triton_assert_targetrQ    sP   € äÓ Ñ)÷ 	4ð 	4Ü�G‰G×/Ñ/Ó1×6Ñ6¸%Ñ?÷	4ð 	4ä”A—H‘HÐ2Ó3ðrT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rK   r'  r'   ÚvarÚCSEVariableTyper¾   r½   rN   rO   rP   )rQ   s   "rR   rS   rS     s,   € ÷ :ñ :Øð:Ø!0ð:Ø9Dð:à	ñ:rT   c                ód  € \        4       p\        P                  P                  '       d4   \	        4       '       d$   V P                  R V R\        V4       R24       R# \        P                  P                  '       d³   VR8X  dª   ^RIH	pH
p \        W4      '       g   \        \        V4      4      hV\        P                  8X  d$   VP                   '       d   RV R2pM7RV RV R	2pM-R
V R2pVP                   '       d   RV R2pRV RWR,           R2pV P                  RV R24       R# R# R# )útl.static_assert(z
.dtype == r–   rõ  )ÚCppCSEVariableÚDTYPE_TO_CPPzIsVecMaskType<decltype(z	)>::valuezstd::is_same_v<decltype(z$), bool> || std::is_same_v<decltype(z), int>z	decltype(z	typename z::value_typezstd::is_same_v<r•   Ú>zstatic_assert(z);N)r&   r   Útest_configsÚruntime_triton_dtype_assertrQ  Ú	writeliner-   Ústatic_cpp_dtype_assertÚ	cpp_utilsrW  rX  r·  rÔ   rc  r  rž   Úis_vec)r'  rS  r¾   ÚbackendrW  rX  Ú
is_same_dtÚ
c_var_types   &&&     rR   Úcheck_dtyperc    s  € ô "Ó#€Gä×Ñ×7×7Ð7Ü,×.Ò.à×ÑÐ,¨S¨E°¼KÈÓ<NÐ;OÈqÐQÖRÜ	×	Ñ	×	4×	4Ð	4¸ÀEÔ9Iß;ä˜#×.Ò.Ü ¤ c£Ó+Ð+Ø”E—J‘JÔØ�z�zˆzØ6°s°e¸9ÐE‘
ð  8¸°uÐ<`ÐadÐ`eÐelÐm‘
à$ S E¨Ð+ˆJØ�z�zˆzØ(¨¨°LÐA�
Ø*¨:¨,°b¸Õ9LÐ8MÈQÐOˆJà×Ñ˜>¨*¨°RÐ8Ö9ñ# :JÑ	4rT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rK   r'  r'   rS  rT  ÚshaperE   rN   rO   rP   )rQ   s   "rR   rS   rS   *  s2   € ÷ Lñ LØðLØ!0ðLØ9GðLà	ñLrT   c                ó$  € Vf   \        R4      h\        P                  P                  '       da   \	        4       '       dO   \        V4      ^8w  d   RP                  R V 4       4      MV^ ,           R2pV P                  RV RV R24       R # R # R # )Nzexpected shape to be not Noner•   c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5irw   ©rM   )Ú.0Úds   & rR   Ú	<genexpr>Úcheck_shape.<locals>.<genexpr>4  s   é € Ð,¡e ”c˜!—f�f£eùs   ‚Ú,rV  z.shape == (ú)))rÔ   r   rZ  Úruntime_triton_shape_assertrQ  ÚlenrÐ   r\  )r'  rS  re  Ú	shape_strs   &&& rR   Úcheck_shaperr  *  sŠ   € ð ‚}ÜÐ<Ó=Ð=ä×Ñ×7×7Ð7Ü,×.Ò.ô 14°E³
¸a´ˆD�I‰IÑ,¡eÓ,Ô,ÈÈaÍÀzÐQRÀ^ð 	ð 	×ÑÐ,¨S¨E°¸Y¸KÀrÐJÖKñ /ñ 	8rT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   r'  r'   rS  rT  rN   rO   rP   )rQ   s   "rR   rS   rS   9  s!   € ÷ 
ñ 
�nð 
¨?ð 
¸tñ 
rT   c                ór   € \        4       pVR 8X  d&   RpV P                  RV RV RV RV RV R24       R# R# )	r÷  zNaN or Inf foundztl.device_assert((z == ú) & (z != float('inf')) & (z != float('-inf')), 'z')N)r&   r\  )r'  rS  r`  rL   s   &&  rR   Ú	check_nanrv  9  sS   € Ü!Ó#€GØ�(ÔØ ˆØ×ÑØ    T¨#¨¨e°C°5Ð8MÈcÈUÐRgÐhkÐglÐlnÐoö	
ñ rT   c                  óŠ   € ] tR tRtR R ltR R ltR R ltR R	 ltR
 R ltR R lt	]
R R l4       t]
R R l4       tRtR# )ÚDataTypePropagationiB  c               ó    € V ^8„  d   QhRRRR/# )rK   ÚbodyrA   rN   rO   rP   )rQ   s   "rR   rS   Ú DataTypePropagation.__annotate__C  s   € ÷ %ñ %˜Xð %¨$ñ %rT   c                	óÄ   € Wn         R VP                  P                  /V n        VP                  P                  4        F  w  r#VP                  V P                  V&   K   	  R# )ÚrootN)rz  Ú
root_blockrÄ   ÚgraphsÚ	subblocksÚitems)rp   rz  ÚkÚvs   &&  rR   r   ÚDataTypePropagation.__init__C  sK   € ØŒ	à�D—O‘O×)Ñ)ð<
ˆŒð —N‘N×(Ñ(Ö*‰DˆAØŸW™WˆD�K‰K˜‹Nó +rT   c               ó    € V ^8„  d   QhRRRR/# ©rK   Únodeútorch.fx.NoderN   r:  rP   )rQ   s   "rR   rS   r{  K  s   € ÷ 
ñ 
°ð 
ÐBTñ 
rT   c                	ó(  € VP                   pV Uu. uFD  p\        V\        P                  P                  4      '       g   K/  VP
                  R 8w  g   KB  VNKF  	  pp\        V4      ^ 8X  d   R# \        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      pV'       g   R# \        P                  ! \        P                  V Uu. uF-  q3P                  \        P                  ,          P                  NK/  	  up4      # u upi u upi )ÚplaceholderNc              3  óÆ   "  € T FW  p\         P                  VP                  9   ;'       d.    VP                  \         P                  ,          P                  R Jx € KY  	  R # 5irw   )ÚOptimizationContextÚkeyÚmetar¾   )ri  Úns   & rR   rk  ÚBDataTypePropagation.deduce_node_dtype_by_inputs.<locals>.<genexpr>S  sX   é € ð )
ñ !�ô  ×#Ñ# q§v¡vÑ-÷ Bð BØ—‘Ô*×.Ñ.Õ/×5Ñ5¸TÐAôBã ùs
   ‚(A!«6A!FT)Úall_input_nodesr·  r  ÚfxÚNodeÚoprp  ÚallÚ	functoolsÚreduceÚpromote_typesrŽ  rŒ  r�  r¾   )rp   r‡  Úinputsr�  Úinput_nodesÚall_input_nodes_propagateds   &&    rR   Údeduce_node_dtype_by_inputsÚ/DataTypePropagation.deduce_node_dtype_by_inputsK  sá   € Ø×%Ñ%ˆáó
Ù�!¤¨A¬u¯x©x¯}©}×!=ŒAÀ!Ç$Á$È-ÑBW�AˆA‘vð 	ð 
ô ˆ{Ó˜qÔ Ùç%(£Sñ )
ñ !ó)
§S§S¢Sñ )
ñ !ó)
ó &
Ð"÷
 *Ùä×ÒÜ×ÑÙ<GÓH¹K°q�V‰VÔ'×+Ñ+Õ,×2Ô2¹KÑHó
ð 	
ùò
ùò  Is   ‘,D
ÁD
ÁD
Ã3D
c               ó    € V ^8„  d   QhRRRR/# )rK   r‡  rˆ  rN   r½   rP   )rQ   s   "rR   rS   r{  `  s   € ÷ ñ °-ð ÀKñ rT   c                	óˆ   € V P                   VP                  ,          pV P                  V4      pV'       g   \        R 4      hV# )z&expected subgraph to propagate a dtype)r  ÚtargetÚpropagate_graphrÔ   )rp   r‡  Ú	sub_graphr¾   s   &&  rR   Údeduce_node_dtype_by_subgraphÚ1DataTypePropagation.deduce_node_dtype_by_subgraph`  s8   € Ø—K‘K §¡Õ,ˆ	Ø×$Ñ$ YÓ/ˆßÜ Ð!IÓJÐJØˆrT   c               ó    € V ^8„  d   QhRRRR/# r†  rP   )rQ   s   "rR   rS   r{  g  s   € ÷ 6ñ 6 mð 6Ð8Jñ 6rT   c                	óì  € VP                   R 8X  d   R# VP                  R8X  d   \        VP                  4      ^8w  d   R# VP                  \        P
                  J dc   VP                  ^ ,          p\        V\        P                  P                  4      '       g   \        \        V4      4      hV P                  V4      # \        VP                  \        4      '       g   \        \        VP                  4      4      hVP                  P                  R4      '       d   V P                  V4      # \!        VP                  .VP                  O5/ VP"                  B ;p e   V# V P%                  V4      # )rŠ  NÚoutputÚmasked_subblock)r”  r   rp  r|   ÚoperatorÚgetitemr·  r  r’  r“  rÔ   rc  Údeduce_node_dtyperM   Ú
startswithr£  rJ  r5  rœ  )rp   r‡  Únode_argÚoutput_dtypes   &&  rR   r«  Ú%DataTypePropagation.deduce_node_dtypeg  s$  € Ø�7‰7�mÔ#Ùà�;‰;˜(Ô"¤s¨4¯9©9£~¸Ô':áà�;‰;œ(×*Ñ*Ó*Ø—y‘y •|ˆHÜ˜h¬¯©¯©×6Ò6Ü$¤T¨(£^Ó4Ð4Ø×)Ñ)¨(Ó3Ð3ä˜$Ÿ+™+¤s×+Ò+Ü ¤ d§k¡kÓ!2Ó3Ð3à�;‰;×!Ñ!Ð"3×4Ò4Ø×5Ñ5°dÓ;Ð;ô 8Ø—‘ðà—‘òð —+‘+ñð ˆLð
 òð  Ðà×/Ñ/°Ó5Ð5rT   c               ó    € V ^8„  d   QhRRRR/# )rK   rÄ   ztorch.fx.GraphrN   r:  rP   )rQ   s   "rR   rS   r{  †  s   € ÷ ñ  ^ð Ð8Jñ rT   c                	ó¢  € VP                   '       g   \        R 4      hRpVP                    FŸ  p\        P                  VP                  9   d#   VP                  \        P                  ,          pM
\        4       pV P                  V4      Vn        WCP                  \        P                  &   VP                  R8X  g   K“  VP                  pK¡  	  V# )zexpected graph to have nodesNr§  )ÚnodesrÔ   rŒ  r�  rŽ  r«  r¾   r   )rp   rÄ   Úgraph_dtyper‡  Úopt_ctxs   &&   rR   r¡  Ú#DataTypePropagation.propagate_graph†  s�   € Ø�{�{ˆ{Ü Ð!?Ó@Ð@Ø*.ˆð —K”KˆDÜ"×&Ñ&¨$¯)©)Ô3ØŸ)™)Ô$7×$;Ñ$;Õ<‘ä-Ó/�à ×2Ñ2°4Ó8ˆGŒMØ18�I‰IÔ)×-Ñ-Ñ.Ø�{‰{˜hÖ&Ø%Ÿm™m’ñ  ð ÐrT   c               ó   € V ^8„  d   QhRR/# )rK   rN   r:  rP   )rQ   s   "rR   rS   r{  ™  s   € ÷ 9ñ 9Ð-ñ 9rT   c                	óF   € V P                  V P                  R ,          4      # )r}  )r¡  r  rx   s   &rR   Ú	propagateÚDataTypePropagation.propagate™  s   € Ø×#Ñ# D§K¡K°Õ$7Ó8Ð8rT   c               ó    € V ^8„  d   QhRRRR/# )rK   rz  rA   rN   r:  rP   )rQ   s   "rR   rS   r{  �  s   € ÷ %ñ % hð %Ð3Eñ %rT   c                	ó.   € V ! V4      P                  4       # rw   )r¸  )Úclsrz  s   &&rR   Úpropagate_loopbodyÚ&DataTypePropagation.propagate_loopbodyœ  s   € á�4‹y×"Ñ"Ó$Ð$rT   c               ó    € V ^8„  d   QhRRRR/# )rK   r‡  rD   rN   r:  rP   )rQ   s   "rR   rS   r{  ¡  s   € ÷ Bñ B¨Mð BÐ>Pñ BrT   c                	ó  € ^RI Hp ^RIHp \	        W4      '       g   \        \        V4      4      h\	        VP                  V4      '       g   \        \        VP                  4      4      h\        P                  VP                  4      # )rK   r@   )rD   )
Ú	loop_bodyrA   Ú	schedulerrD   r·  rÔ   rc  Ú_bodyrx  r½  )r¼  r‡  rA   rD   s   &&  rR   Úpropagate_scheduler_nodeÚ,DataTypePropagation.propagate_scheduler_node   s\   € å(Ý-ä˜$×.Ò.Ü ¤ d£Ó,Ð,Ü˜$Ÿ*™* h×/Ò/Ü ¤ d§j¡jÓ!1Ó2Ð2Ü"×5Ñ5°d·j±jÓAÐArT   )rz  r  N)r†   r‡   rˆ   r‰   r   rœ  r£  r«  r¡  r¸  Úclassmethodr½  rÄ  r�   rP   rT   rR   rx  rx  B  sJ   † õ%õ
õ*õ6õ>õ&9ð ô%ó ð%ð ôBó ôBrT   rx  c                  óP   a € ] tR tRtRRRR/R V 3R llltR
R V 3R llltR	tV ;t# )r   i¬  ÚsimplifyTÚpc               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   r-  rµ   rÈ  rž   rÉ  rN   rM   rP   )rQ   s   "rR   rS   ÚPythonPrinter.__annotate__­  s,   € ÷ %ñ %Øð%Ø-1ð%Ø=Að%à	ñ%rT   c               	ó  <€ V'       dj   \        V\        P                  4      '       dJ   \        \        P
                  R 4      '       d*   \        P
                  P                  P                  V4      p\        SV `%  V4      # )Úsizevars)
r·  rñ   ÚExprrO  r5   rÄ   rÍ  rÈ  ÚsuperÚdoprint)rp   r-  rÈ  rÉ  Ú	__class__s   &&$$€rR   rÐ  ÚPythonPrinter.doprint­  sQ   ø€ ÷ œ
 4¬¯©×4Ò4¼ÄÇÁÈ*×9UÒ9UÜ—7‘7×#Ñ#×,Ñ,¨TÓ2ˆDÜ‰w‰˜tÓ$Ð$rT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rK   Úitemrµ   Úlevelr  Ústrictrž   rN   rM   rP   )rQ   s   "rR   rS   rË  µ  s)   € ÷ =ñ = ð =°Cð =Àð =ÐRUñ =rT   c                	óŽ   <€ \        V\        P                  4      '       d   R V P                  V4       R2# \        SV `  WV4      # ©Ú(r–   )r·  rñ   ÚModÚ_printrÏ  Úparenthesize)rp   rÔ  rÕ  rÖ  rÑ  s   &&&&€rR   rÜ  ÚPythonPrinter.parenthesizeµ  sA   ø€ Ü�dœEŸI™I×&Ò&ð �t—{‘{ 4Ó(Ð)¨Ð+Ð+ä‘7Ñ'¨°VÓ<Ð<rT   rP   r  )r†   r‡   rˆ   r‰   rÐ  rÜ  r�   Ú__classcell__©rÑ  s   @rR   r   r   ¬  s,   ø† ð%Ø48ð%ØDH÷%ò %÷=÷ =ð =rT   r   c                  óÒ  € ] tR tRtRt]R R l4       t]R R l4       t]R R l4       t]R	 R
 l4       t	]R R l4       t
]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R  l4       t]R! R" l4       t]R# R$ l4       t]R% R& l4       t]R' R( l4       t]R) R* l4       tR+tR,# )-ÚOpDecompositionsi¿  z
Decomposes inductor ops
c               ó    € V ^8„  d   QhRRRR/# )rK   ro   ÚOpVarTrN   rP   )rQ   s   "rR   rS   ÚOpDecompositions.__annotate__Å  s   € ÷ ñ ˜ð  6ñ rT   c                	ó   € V # rw   rP   )ro   s   &rR   ÚidentityÚOpDecompositions.identityÄ  s	   € ð ˆrT   c               ó    € V ^8„  d   QhRRRR/# ©rK   Úxrã  rN   rP   )rQ   s   "rR   rS   rä  Ê  s   € ÷ @ñ @�fð @ ñ @rT   c                	óv   € \         P                  ! \         P                  ! R \        P                  4      V 4      # )g      ð?)r0   Útruedivr8  r  Úfloat32©rê  s   &rR   Ú
reciprocalÚOpDecompositions.reciprocalÉ  s$   € ô �{Š{œ3Ÿ<š<¨¬U¯]©]Ó;¸QÓ?Ð?rT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  Ð  s   € ÷ ñ �&ð ˜Vñ rT   c                	ó.   € \         P                  ! W 4      # rw   ©r0   Úmulrî  s   &rR   ÚsquareÚOpDecompositions.squareÏ  s   € ä�wŠw�q‹}ÐrT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  Ô  s   € ÷ Cñ C�ð C˜6ñ CrT   c                	óž   € \         P                  ! \         P                  ! ^\        P                  4      \         P
                  ! V 4      4      # ©é   )r0   Úsubr8  r  rí  Úerfrî  s   &rR   ÚerfcÚOpDecompositions.erfcÓ  s*   € ä�wŠw”s—|’| A¤u§}¡}Ó5´s·w²w¸q³zÓBÐBrT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  Ø  s   € ÷ <ñ <�ð <˜Fñ <rT   c                	ó¨   € \         P                  ! \         P                  ! \         P                  ! V 4      4      \         P                  ! V 4      4      # rw   )r0   rô  Úexprõ  rý  rî  s   &rR   ÚerfcxÚOpDecompositions.erfcx×  s,   € ä�wŠw”s—w’wœsŸzšz¨!›}Ó-¬s¯xªx¸«{Ó;Ð;rT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  Ü  s   € ÷ Cñ C�ð C˜Fñ CrT   c                	óž   € \         P                  ! \         P                  ! V 4      \         P                  ! ^\        P
                  4      4      # rù  )r0   rû  r  r8  r  rí  rî  s   &rR   Úexpm1ÚOpDecompositions.expm1Û  s*   € ä�wŠw”s—w’w˜q“z¤3§<¢<°´5·=±=Ó#AÓBÐBrT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  à  s   € ÷ Rñ R�ð R˜Fñ RrT   c           	     	óÔ   € \         P                  ! \         P                  ! V 4      \         P                  ! ^\        P                  ! ^
4      ,          \
        P                  4      4      # rù  ©r0   rô  Úlogr8  Úmathr  rí  rî  s   &rR   Úlog10ÚOpDecompositions.log10ß  s7   € ä�wŠw”s—w’w˜q“z¤3§<¢<°´D·H²H¸R³LÕ0@Ä%Ç-Á-Ó#PÓQÐQrT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  ä  s   € ÷ Qñ Q�ð Q˜6ñ QrT   c           	     	óÔ   € \         P                  ! \         P                  ! V 4      \         P                  ! ^\        P                  ! ^4      ,          \
        P                  4      4      # rù  r
  rî  s   &rR   Úlog2ÚOpDecompositions.log2ã  s6   € ä�wŠw”s—w’w˜q“z¤3§<¢<°´D·H²H¸Q³KµÄÇÁÓ#OÓPÐPrT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  è  s   € ÷ Mñ M�ð M˜6ñ MrT   c           
     	óÆ   € \         P                  ! \         P                  ! V \         P                  ! \        P
                  ! ^4      \        P                  4      4      4      # )rK   )r0   r  rô  r8  r  r  r  rí  rî  s   &rR   Úexp2ÚOpDecompositions.exp2ç  s3   € ä�wŠw”s—w’w˜q¤#§,¢,¬t¯xªx¸«{¼E¿M¹MÓ"JÓKÓLÐLrT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  ì  s   € ÷ Añ A�ð A˜Fñ ArT   c           	     	óž   € \         P                  ! \         P                  ! V \         P                  ! ^\        P
                  4      4      4      # rù  )r0   r  Úaddr8  r  Úint32rî  s   &rR   Úlog1pÚOpDecompositions.log1pë  s+   € ä�wŠw”s—w’w˜q¤#§,¢,¨q´%·+±+Ó">Ó?Ó@Ð@rT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  ð  s   € ÷ Cñ C�6ð C˜fñ CrT   c                	óô   € \         P                  ! ^\        P                  4      p\         P                  ! V\         P
                  ! V\         P                  ! \         P                  ! V 4      4      4      4      # rù  )r0   r8  r  r  rì  r  r  Úneg)rê  Úones   & rR   ÚsigmoidÚOpDecompositions.sigmoidï  sC   € ä�lŠl˜1œeŸk™kÓ*ˆÜ�{Š{˜3¤§¢¨¬S¯WªW´S·W²W¸Q³ZÓ-@Ó AÓBÐBrT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rä  õ  s   € ÷ <ñ <�ð <˜6ñ <rT   c                	óv   € \         P                  ! V \         P                  ! ^ \        P                  4      4      # ©r   )r0   rÕ   r8  r  r  rî  s   &rR   ÚreluÚOpDecompositions.reluô  s"   € ä�{Š{˜1œcŸlšl¨1¬e¯k©kÓ:Ó;Ð;rT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   rê  rã  ÚyÚzrN   rP   )rQ   s   "rR   rS   rä  ù  s(   € ÷ )ñ )ˆvð )˜&ð ) Vð )°ñ )rT   c                	óX   € \         P                  ! \         P                  ! W4      V4      # rw   )r0   r  rô  ©rê  r)  r*  s   &&&rR   ÚfmaÚOpDecompositions.fmaø  s   € ô �wŠw”s—w’w˜q“} aÓ(Ð(rT   c               ó$   € V ^8„  d   QhRRRRRR/# ©rK   rê  rã  r)  rN   rP   )rQ   s   "rR   rS   rä  þ  s!   € ÷ ñ �&ð ˜Vð ¨ñ rT   c                	ó.   € \         P                  ! W4      # rw   ró  ©rê  r)  s   &&rR   Úmul_rnÚOpDecompositions.mul_rný  s   € ô �wŠw�q‹}ÐrT   c               ó$   € V ^8„  d   QhRRRRRR/# r0  rP   )rQ   s   "rR   rS   rä    s!   € ÷ !ñ !�&ð !˜Vð !¨ñ !rT   c                	ó.   € \         P                  ! W4      # rw   ©r0   rì  r2  s   &&rR   Údiv_rnÚOpDecompositions.div_rn  s   € ô �{Š{˜1Ó Ð rT   c               ó$   € V ^8„  d   QhRRRRRR/# ©rK   r‘   rã  r¾   r½   rN   rP   )rQ   s   "rR   rS   rä    ó!   € ÷ 1ñ 1˜ð 1 {ð 1°vñ 1rT   c                	óX   € \         P                  ! \         P                  ! V 4      V4      # rw   )r0   r:  Úfloor©r‘   r¾   s   &&rR   Úfloor_to_intÚOpDecompositions.floor_to_int  ó   € ä�|Š|œCŸIšI a›L¨%Ó0Ð0rT   c               ó$   € V ^8„  d   QhRRRRRR/# r;  rP   )rQ   s   "rR   rS   rä    s!   € ÷ 0ñ 0�vð 0 kð 0°fñ 0rT   c                	óX   € \         P                  ! \         P                  ! V 4      V4      # rw   )r0   r:  Úceilr?  s   &&rR   Úceil_to_intÚOpDecompositions.ceil_to_int  s   € ä�|Š|œCŸHšH Q›K¨Ó/Ð/rT   c               ó$   € V ^8„  d   QhRRRRRR/# r;  rP   )rQ   s   "rR   rS   rä    r<  rT   c                	óX   € \         P                  ! \         P                  ! V 4      V4      # rw   )r0   r:  Útruncr?  s   &&rR   Útrunc_to_intÚOpDecompositions.trunc_to_int  rB  rT   c               ó$   € V ^8„  d   QhRRRRRR/# ©rK   r‘   rã  r’   rN   rP   )rQ   s   "rR   rS   rä    s!   € ÷ 1ñ 1�Vð 1 ð 1¨6ñ 1rT   c           	     	óž  € \         P                  ! W4      p\         P                  ! \         P                  ! V\         P                  ! ^ \
        P                  4      4      \         P                  ! \         P                  ! V4      \         P                  ! V4      4      4      p\         P                  ! V\         P                  ! W!4      V4      # r%  )
r0   ÚmodÚand_Úner8  r  r  ÚsignbitÚwherer  )r‘   r’   ÚrÚconds   &&  rR   Ú	remainderÚOpDecompositions.remainder  su   € ä�GŠG�A‹MˆÜ�xŠxÜ�FŠF�1”c—l’l 1¤e§k¡kÓ2Ó3Ü�FŠF”3—;’;˜q“>¤3§;¢;¨q£>Ó2ó
ˆô �yŠy˜œsŸwšw q›}¨aÓ0Ð0rT   c               ó$   € V ^8„  d   QhRRRRRR/# r;  rP   )rQ   s   "rR   rS   rä    r<  rT   c                	óX   € \         P                  ! \         P                  ! V 4      V4      # rw   )r0   r:  Úroundr?  s   &&rR   Úround_to_intÚOpDecompositions.round_to_int  rB  rT   rP   N)r†   r‡   rˆ   r‰   rŠ   r¤   ræ  rï  rõ  rý  r  r  r  r  r  r  r!  r&  r-  r3  r8  r@  rF  rK  rW  r\  r�   rP   rT   rR   rá  rá  ¿  s§  † ñð ôó ðð ô@ó ð@ð
 ôó ðð ôCó ðCð ô<ó ð<ð ôCó ðCð ôRó ðRð ôQó ðQð ôMó ðMð ôAó ðAð ôCó ðCð ô<ó ð<ð ô)ó ð)ð ôó ðð ô!ó ð!ð ô1ó ð1ð ô0ó ð0ð ô1ó ð1ð ô1ó ð1ð ô1ó ô1rT   rá  z[a-z0-9_.]+|\([^)]*\)|)Úflagsc               ó    € V ^8„  d   QhRRRR/# )rK   ÚstringrM   rN   rž   rP   )rQ   s   "rR   rS   rS   $  s   € ÷ ñ ˜3ð  4ñ rT   c                ó2  € V ^ ,          R8w  g   \        V 4      ^8  d   R# ^p\        V R,          4       FI  w  r#VR8X  d   V^,          pMVR8X  d
   V^,          pV^ 8X  g   K/  V\        V 4      ^,
          8w  g   KH   R# 	  V^ 8w  d   \        RV 24      hR# )r   rÙ  Fºrú  NNr–   z"expected balanced count == 0, got T)rp  Ú	enumeraterÔ   )r`  r¶   ÚiÚchars   &   rR   Ú_all_in_parensrf  $  s�   € Øˆa…y�CÔœ3˜v›;¨œ?ÙØ€EÜ˜V B�ZÖ(‰ˆØ�3Œ;Ø�Q�J‰EØ�SŒ[Ø�Q�JˆEØ�AŽ:˜!œs 6›{¨Q�Ö.Úñ )ð �„zÜÐAÀ%ÀÐIÓJÐJÙrT   c            
      ó6  € ] tR tRt]R R l4       t]R R l4       t]R R l4       t]R R	 l4       t]R
 R l4       t	]R R l4       t
]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       tRDR R lltR R ltR R ltRER  R! lltR" R# ltR$ R% ltR& R' ltR( R) ltR* R+ ltRFR, R- lltR. R/ ltR0 R1 ltR2RR3]P:                  R4RR5^R6R/R7 R8 lltR9 R: ltR; R< lt ]R= R> l4       t!]"R? R@ l4       t#]"RA RB l4       t$RCt%R# )GÚOpOverridesi5  c               ó    € V ^8„  d   QhRRRR/# )rK   r`  rã  rN   rP   )rQ   s   "rR   rS   ÚOpOverrides.__annotate__7  s   € ÷ 	ñ 	�fð 	 ñ 	rT   c                	ó–   € \        V \        4      '       g-   \        P                  V 4      '       g   \	        V 4      '       d   V # R V  R2# rØ  )r·  ÚCSEVariableÚ_RE_PAREN_NOT_NEEDEDÚ	fullmatchrf  )r`  s   &rR   ÚparenÚOpOverrides.paren6  sB   € ô �vœ{×+Ò+Ü#×-Ñ-¨f×5Ò5Ü˜f×%Ò%ð ˆMØ�6�(˜!ˆ}ÐrT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   ro   zbool | float | intr¾   r½   rN   rã  rP   )rQ   s   "rR   rS   rj  C  s"   € ÷ ñ Ð*ð °;ð À6ñ rT   c                	ó   € \        V 4      # rw   )Úrepr)ro   r¾   s   &&rR   r8  ÚOpOverrides.constantB  s   € ä�E‹{ÐrT   c               ó    € V ^8„  d   QhRRRR/# ré  rP   )rQ   s   "rR   rS   rj  H  s   € ÷ *ñ *�vð * &ñ *rT   c                	ó2   € R \         P                  V 4       2# )Ú~©rh  ro  rî  s   &rR   Úbitwise_notÚOpOverrides.bitwise_notF  s   € ð ”;×$Ñ$ QÓ'Ð(Ð)Ð)rT   c               ó    € V ^8„  d   QhRRRR/# )rK   r‘   rã  rN   rP   )rQ   s   "rR   rS   rj  M  s   € ÷ .ñ .�vð . &ñ .rT   c                	ó2   € \         P                  V 4       R 2# )z == 0rx  )r‘   s   &rR   Úlogical_notÚOpOverrides.logical_notK  s   € ô ×#Ñ# AÓ&Ð' uÐ-Ð-rT   c               ó$   € V ^8„  d   QhRRRRRR/# r0  rP   )rQ   s   "rR   rS   rj  R  ó&   € ÷ Bñ B�vð B &ð B¨Vñ BrT   c                	ó\   € \         P                  V 4       R \         P                  V4       2# )z & rx  r2  s   &&rR   Úbitwise_andÚOpOverrides.bitwise_andP  ó-   € ô ×#Ñ# AÓ&Ð' s¬;×+<Ñ+<¸QÓ+?Ð*@ÐAÐArT   c               ó$   € V ^8„  d   QhRRRRRR/# r0  rP   )rQ   s   "rR   rS   rj  W  s&   € ÷ Bñ B�fð B ð B¨Fñ BrT   c                	ó\   € \         P                  V 4       R \         P                  V4       2# )z | rx  r2  s   &&rR   Ú
bitwise_orÚOpOverrides.bitwise_orU  r„  rT   c               ó$   € V ^8„  d   QhRRRRRR/# r0  rP   )rQ   s   "rR   rS   rj  \  r€  rT   c                	ó\   € \         P                  V 4       R \         P                  V4       2# )z ^ rx  r2  s   &&rR   Úbitwise_xorÚOpOverrides.bitwise_xorZ  r„  rT   c               ó$   € V ^8„  d   QhRRRRRR/# r0  rP   )rQ   s   "rR   rS   rj  a  s&   € ÷ Cñ C˜fð C¨ð C°Fñ CrT   c                	ó\   € \         P                  V 4       R \         P                  V4       2# )z << rx  r2  s   &&rR   Úbitwise_left_shiftÚOpOverrides.bitwise_left_shift_  ó-   € ô ×#Ñ# AÓ&Ð' t¬K×,=Ñ,=¸aÓ,@Ð+AÐBÐBrT   c               ó$   € V ^8„  d   QhRRRRRR/# r0  rP   )rQ   s   "rR   rS   rj  f  s&   € ÷ Cñ C˜vð C¨&ð C°Vñ CrT   c                	ó\   € \         P                  V 4       R \         P                  V4       2# )z >> rx  r2  s   &&rR   Úbitwise_right_shiftÚOpOverrides.bitwise_right_shiftd  r‘  rT   c               ó$   € V ^8„  d   QhRRRRRR/# rN  rP   )rQ   s   "rR   rS   rj  k  s!   € ÷ !ñ !�vð ! &ð !¨Vñ !rT   c                	ó.   € \         P                  ! W4      # rw   r7  r™   s   &&rR   Úint_truedivÚOpOverrides.int_truedivi  s   € ô �{Š{˜1Ó Ð rT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   rm   rM   r(  rã  rN   rP   )rQ   s   "rR   rS   rj  r  s!   € ÷ 5ñ 5˜ð 5 Vð 5°ñ 5rT   c                	óX   € \         P                  ! V \        P                  ! V4      4      # rw   )r0   rC  rñ   ÚInteger)rm   r(  s   &&rR   rB  ÚOpOverrides.load_seedq  s   € ä�xŠx˜œeŸmšm¨FÓ3Ó4Ð4rT   Tc          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
rK   rS  rã  rç   úsympy.Expr | intÚcheckrž   Úwrap_negrN   úsympy.SymbolrP   )rQ   s   "rR   rS   rj  u  s<   € ÷ ,ñ ,àð,ð ð,ð ð	,ð
 ð,ð 
ñ,rT   c                	ó*   € \        \        V4      4      # rw   )r+   rM   )rp   rS  rç   r   r¡  s   &&&&&rR   Úindirect_indexingÚOpOverrides.indirect_indexingu  s   € ô "¤# c£(Ó+Ð+rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# ©	rK   r-  rµ   rç   Úlowerrž   ÚupperrN   rO   rP   )rQ   s   "rR   rS   rj  ~  s4   € ÷ 
ñ 
Øð
Ø&0ð
Ø9=ð
ØFJð
à	ñ
rT   c                	óD   € \        \        V 4      P                   R 24      h)z,: check_bounds should be handled by CSEProxy©r˜   rc  r†   ©rp   r-  rç   r¨  r©  s   &&&&&rR   Úcheck_boundsÚOpOverrides.check_bounds~  s'   € ô "Ü�D‹z×"Ñ"Ð#Ð#OÐPó
ð 	
rT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   rm   rM   r  rµ   rN   rã  rP   )rQ   s   "rR   rS   rj  …  s!   € ÷ 
ñ 
˜ð 
 Zð 
°Fñ 
rT   c                	óD   € \        \        V 4      P                   R 24      h)z$: load should be handled by CSEProxyr«  ©rp   rm   r  s   &&&rR   rC  ÚOpOverrides.load…  s%   € Ü!Ü�D‹z×"Ñ"Ð#Ð#GÐHó
ð 	
rT   Nc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )rK   rm   rM   r  rµ   ro   rã  rd   r4   rN   rO   rP   )rQ   s   "rR   rS   rj  Š  s4   € ÷ 
ñ 
Øð
Ø *ð
Ø39ð
ØAJð
à	ñ
rT   c                	óD   € \        \        V 4      P                   R 24      h)z%: store should be handled by CSEProxyr«  ©rp   rm   r  ro   rd   s   &&&&&rR   rD  ÚOpOverrides.storeŠ  s'   € ô "Ü�D‹z×"Ñ"Ð#Ð#HÐIó
ð 	
rT   c               ó$   € V ^8„  d   QhRRRRRR/# ©rK   rV  rl  rL   rM   rN   rO   rP   )rQ   s   "rR   rS   rj  ‘  ó!   € ÷ 
ñ 
¨ð 
¸#ð 
À$ñ 
rT   c                	óD   € \        \        V 4      P                   R 24      h©z3: device_assert_async should be handled by CSEProxyr«  ©rp   rV  rL   s   &&&rR   Údevice_assert_asyncÚOpOverrides.device_assert_async‘  ó%   € Ü!Ü�D‹z×"Ñ"Ð#Ð#VÐWó
ð 	
rT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rK   rm   rM   r  rµ   ro   rã  rN   rO   rP   )rQ   s   "rR   rS   rj  –  s(   € ÷ 
ñ 
 Cð 
°
ð 
À6ð 
Èdñ 
rT   c                	óD   € \        \        V 4      P                   R 24      h)z/: store_reduction should be handled by CSEProxyr«  ©rp   rm   r  ro   s   &&&&rR   rE  ÚOpOverrides.store_reduction–  s%   € Ü!Ü�D‹z×"Ñ"Ð#Ð#RÐSó
ð 	
rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	rK   r¾   r½   Ú	src_dtypeÚreduction_typer3   ro   zOpVarT | tuple[OpVarT, ...]rN   rP   )rQ   s   "rR   rS   rj  ›  s<   € ÷ 	
ñ 	
àð	
ð ð	
ð &ð		
ð
 +ð	
ð 
%ñ	
rT   c                	óD   € \        \        V 4      P                   R 24      h)z): reduction should be handled by CSEProxyr«  ©rp   r¾   rÅ  rÆ  ro   s   &&&&&rR   r7  ÚOpOverrides.reduction›  s'   € ô "Ü�D‹z×"Ñ"Ð#Ð#LÐMó
ð 	
rT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   Údtypesútuple[torch.dtype, ...]Ú
combine_fnzFCallable[[tuple[OpVarT, ...], tuple[OpVarT, ...]], tuple[OpVarT, ...]]Úvaluesútuple[OpVarT, ...]rN   rP   )rQ   s   "rR   rS   rj  ¦  s2   € ÷ 
ñ 
à'ð
ð
ð
ð #ð
ð 
ñ
rT   c                	óD   € \        \        V 4      P                   R 24      h)z$: scan should be handled by CSEProxyr«  ©rp   rË  rÍ  rÎ  s   &&&&rR   ÚscanÚOpOverrides.scan¦  s'   € ô "Ü�D‹z×"Ñ"Ð#Ð#GÐHó
ð 	
rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	rK   rË  rÌ  rÎ  rÏ  Ústablerž   Ú
descendingrN   rP   )rQ   s   "rR   rS   rj  ³  s<   € ÷ 	
ñ 	
à'ð	
ð #ð	
ð ð		
ð
 ð	
ð 
ñ	
rT   c                	óD   € \        \        V 4      P                   R 24      h)z$: sort should be handled by CSEProxyr«  ©rp   rË  rÎ  rÕ  rÖ  s   &&&&&rR   ÚsortÚOpOverrides.sort³  s'   € ô "Ü�D‹z×"Ñ"Ð#Ð#GÐHó
ð 	
rT   c               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# )rK   rÎ  rã  Ú
boundariesú.tuple[str, sympy.Expr, sympy.Expr, sympy.Expr]Úboundary_indicesÚindexing_dtyper½   Úrightrž   Úsorterútuple[str, sympy.Expr] | NoneÚsorter_indiceszOpVarT | NonerN   rP   )rQ   s   "rR   rS   rj  ¾  s[   € ÷ 
ñ 
àð
ð Cð
ð !ð	
ð
 $ð
ð ð
ð .ð
ð &ð
ð 
ñ
rT   c                	óD   € \        \        V 4      P                   R 24      h)z): bucketize should be handled by CSEProxyr«  ©rp   rÎ  rÜ  rÞ  rß  rà  rá  rã  s   &&&&&&&&rR   Ú	bucketizeÚOpOverrides.bucketize¾  s'   € ô "Ü�D‹z×"Ñ"Ð#Ð#LÐMó
ð 	
rT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   ro   rã  rç   rµ   r   rž   rN   rP   )rQ   s   "rR   rS   rj  Ì  s(   € ÷ 
ñ 
 &ð 
°
ð 
À4ð 
ÈFñ 
rT   c                	óD   € \        \        V 4      P                   R 24      h)z2: halide_clamp only implemented for Halide backendr«  )rp   ro   rç   r   s   &&&&rR   Úhalide_clampÚOpOverrides.halide_clampÌ  s%   € Ü!Ü�D‹z×"Ñ"Ð#Ð#UÐVó
ð 	
rT   c               ó$   € V ^8„  d   QhRRRRRR/# r0  rP   )rQ   s   "rR   rS   rj  Ñ  s!   € ÷ 
ñ 
�Vð 
 ð 
¨6ñ 
rT   c                	óD   € \        \        V 4      P                   R 24      h)z): dot only implemented for Triton backendr«  )rp   rê  r)  s   &&&rR   ÚdotÚOpOverrides.dotÑ  s%   € Ü!Ü�D‹z×"Ñ"Ð#Ð#LÐMó
ð 	
rT   Úconstraintsr¾   Úis_pureÚpackÚinput_dtypesc               ó8   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR/# )rK   r™  rã  ÚasmrM   rð  r)  r¾   r½   rñ  rž   rò  r  ró  ztuple[torch.dtype, ...] | NonerN   rP   )rQ   s   "rR   rS   rj  Ö  sZ   € ÷ 
ñ 
àð
ð ð
ð  ð	
ð
 ð
ð ð
ð ð
ð 5ð
ð 
ñ
rT   c               	óD   € \        \        V 4      P                   R 24      h)z<: inline_asm_elementwise only implemented for Triton backendr«  )rp   rõ  rð  r¾   rñ  rò  ró  r™  s   &$$$$$$*rR   Úinline_asm_elementwiseÚ"OpOverrides.inline_asm_elementwiseÖ  s'   € ô "Ü�D‹z×"Ñ"Ð#Ð#_Ð`ó
ð 	
rT   c               ó    € V ^8„  d   QhRRRR/# )rK   r|   rã  rN   rO   rP   )rQ   s   "rR   rS   rj  ä  s   € ÷ 
ñ 
˜Fð 
 tñ 
rT   c                	óD   € \        \        V 4      P                   R 24      h)z.: ops.output should not appear at codegen time©rÔ   rc  r†   r   s   &*rR   r§  ÚOpOverrides.outputä  s%   € ÜÜ�D‹z×"Ñ"Ð#Ð#QÐRó
ð 	
rT   c               ó    € V ^8„  d   QhRRRR/# )rK   r  r  rN   rã  rP   )rQ   s   "rR   rS   rj  é  s   € ÷ 
ñ 
 ð 
¨ñ 
rT   c                	óD   € \        \        V 4      P                   R 24      h)z3: ops.placeholder should not appear at codegen timerû  ©rp   r  s   &&rR   rŠ  ÚOpOverrides.placeholderé  s%   € ÜÜ�D‹z×"Ñ"Ð#Ð#VÐWó
ð 	
rT   c               ó    € V ^8„  d   QhRRRR/# )rK   rm   rM   rN   zCallable[..., OpVarT]rP   )rQ   s   "rR   rS   rj  ï  s   € ÷ ñ ˜Sð Ð%:ñ rT   c                	ó6   a € R  V 3R llpS Vn         RVn        V# )c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   rp   rh  r|   r	   r5  rN   rã  rP   )rQ   s   "rR   rS   Ú0OpOverrides._unimplemented.<locals>.__annotate__ð  s(   € ÷ 	ñ 	 ð 	°Cð 	À3ð 	È6ñ 	rT   c                óJ   <€ \        \        V 4      P                   R S 24      h)z does not implement ops.r«  )rp   r|   r5  rm   s   &*,€rR   ÚunimplementedÚ1OpOverrides._unimplemented.<locals>.unimplementedð  s*   ø€ Ü%Ü˜“:×&Ñ&Ð'Ð'?À¸vÐFóð rT   T)r†   Úis_unimplemented)rm   r  s   f rR   Ú_unimplementedÚOpOverrides._unimplementedî  s%   ø€ ÷	ð 	ð
 "&ˆÔØ)-ˆÔ&ØÐrT   c               ó    € V ^8„  d   QhRRRR/# ©rK   rm   rM   rN   rž   rP   )rQ   s   "rR   rS   rj  ú  s   € ÷ Tñ T Sð T¨Tñ TrT   c                	óŒ   € \        WR 4      p\        \        VR 4      pV'       * ;'       g    W#8H  ;'       g    \        VRR4      # )Nr  F)Úgetattrr1   )r¼  rm   ÚfnÚ
default_fns   &&  rR   Ú_is_unimplementedÚOpOverrides._is_unimplementedù  sA   € ä�S Ó%ˆÜœZ¨¨tÓ4ˆ
ØŒv×SÐS˜Ñ)×SÐS¬W°RÐ9KÈUÓ-SÐSrT   c               ó    € V ^8„  d   QhRRRR/# )rK   r   rM   rN   rO   rP   )rQ   s   "rR   rS   rj     s   € ÷ ;ñ ;°Sð ;¸Tñ ;rT   c                	óz  € VR9  d   \        V4      h\        P                  4        F�  w  r#\        W14      pVf7   V P	                  V4      '       d   \        WV P                  V4      4       KH  KJ  W P                  9   d   \        RV RV P                   24      hW$n        \        W\        V4      4       K’  	  R# )r÷  Nzmultiple definitions of z on )r÷  rõ  Úcppvecrö  r  )
rÔ   Úpointwise_overrides_datar�  r  r  Úsetattrr	  Ú__dict__r†   r¤   )r¼  r   ÚfuncnameÚdataÚimpls   &&   rR   Ú_initialize_pointwise_overridesÚ+OpOverrides._initialize_pointwise_overridesÿ  s¨   € àÐEÔEÜ  Ó(Ð(ä6×<Ñ<Ö>‰NˆHÜ˜4Ó(ˆDØŠ|Ø×(Ñ(¨×2Ò2Ü˜C¨3×+=Ñ+=¸hÓ+GÖHñ 3ð Ÿ|™|Ô+Ü(Ø2°8°*¸DÀÇÁÀÐOóð ð !)”Ü˜¤|°DÓ'9Ö:ó ?rT   rP   ©TTrw   ©NN)&r†   r‡   rˆ   r‰   r¤   ro  r8  ry  r}  r‚  r‡  r‹  r�  r”  r˜  rB  r¤  r­  rC  rD  r½  rE  r7  rÒ  rÙ  ræ  rê  rî  r  rí  r÷  r§  rŠ  r	  rÆ  r  r  r�   rP   rT   rR   rh  rh  5  s¥  † Øô	ó ð	ð ôó ðð ô*ó ð*ð ô.ó ð.ð ôBó ðBð ôBó ðBð ôBó ðBð ôCó ðCð ôCó ðCð ô!ó ð!ð ô5ó ð5÷,õ
õ
÷

õ
õ

õ
	
õ
õ	
÷
õ
õ

ð

ð #'ð	
ð
 #Ÿ]™]ð
ð ð
ð ð
ð 8<÷
õ
õ

ð
 ôó ðð ôTó ðTð
 ô;ó ô;rT   rh  c                  ó†   € ] tR tRt$ R]R&   R]R&   RtR]R&   RtR]R	&   ]P                  t	R
]R&   Rt
R]R&   RtR]R&   RtR# )ÚOverridesDatai  rM   rm   r  rõ  NzCallable[..., str] | Noner÷  r  r   Útype_promotion_kindrö  r  rP   )r†   r‡   rˆ   r‰   r‹   r÷  r  r   ÚDEFAULTr"  rö  r  r�   rP   rT   rR   r!  r!    sQ   ‡ à
ƒIØ	Óà(,€FÐ%Ó,à(,€FÐ%Ó,à'×/Ñ/ð Ð8ó ð )-€FÐ%Ó,Ø%)€CÐ	"×)rT   r!  c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   Úorderr  ÚkindrM   rê  rN   rP   )rQ   s   "rR   rS   rS   !  s(   € ÷ ñ ˜#ð  Sð ¨Sð °Sñ rT   c                ó*   € R V RV RV RV V  RV R2# )ztl.where(tl_math.abs(ú) == float('inf'), ú - z, libdevice.rÙ  rn  rP   )r%  r&  rê  s   &&&rR   Ú_triton_besselr*  !  s9   € ð
   ˜sÐ"5Øˆ#ˆS��ð Ø�F˜5˜'  1 # Rð	)ðrT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   r%  r  rê  rM   rN   rP   )rQ   s   "rR   rS   rS   ,  s!   € ÷ ñ  ð ¨ð °ñ rT   c                ó&   € R V RV RV RV  RV R2# )ztl.where(tl.abs(r(  r)  z, libdevice.cyl_bessel_irÙ  rn  rP   )r%  rê  s   &&rR   Ú_triton_cyl_bessel_ir-  ,  s5   € ð ˜1˜#Ð0Øˆ#ˆS��ð !Ø!&  q¨¨¨2ð	/ðrT   Úairy_aic                ó   € R V  R2# )zairy_ai_forward(r–   rP   rî  s   &rR   rü  rü  ;  s   € Ð(¨¨¨1Ñ-rT   Úspecial_airy_ai)r"  rõ  rm   Ú	bessel_j0c                ó   € R V  R2# )zbessel_j0_forward(r–   rP   rî  s   &rR   rü  rü  @  ó   € Ð*¨1¨#¨QÑ/rT   c                ó   € \        ^ RV 4      # )r   Új©r*  rî  s   &rR   rü  rü  A  ó   € œ¨¨3°Ô2rT   Úspecial_bessel_j0)r"  rõ  r÷  rm   Ú	bessel_j1c                ó   € R V  R2# )zbessel_j1_forward(r–   rP   rî  s   &rR   rü  rü  F  r3  rT   c                ó   € \        ^RV 4      # )rú  r5  r6  rî  s   &rR   rü  rü  G  r7  rT   Úspecial_bessel_j1Ú	bessel_y0c                ó   € R V  R2# )zbessel_y0_forward(r–   rP   rî  s   &rR   rü  rü  L  r3  rT   c                ó   € \        ^ RV 4      # )r   r)  r6  rî  s   &rR   rü  rü  M  r7  rT   Úspecial_bessel_y0Ú	bessel_y1c                ó   € R V  R2# )zbessel_y1_forward(r–   rP   rî  s   &rR   rü  rü  R  r3  rT   c                ó   € \        ^RV 4      # )rú  r)  r6  rî  s   &rR   rü  rü  S  r7  rT   Úspecial_bessel_y1Údigammac                ó   € R V  R2# )zcalc_digamma(r–   rP   rî  s   &rR   rü  rü  X  s   € ˜ a S¨Ñ*rT   c                ó   € V  R 2# )z
.digamma()rP   rî  s   &rR   rü  rü  Y  s   € ˜A˜3˜jÑ)rT   )r"  rõ  r  rm   r  c                ó   € R V  R2# )zcalc_erfcx(r–   rP   rî  s   &rR   rü  rü  `  ó   € ˜ A 3 aÑ(rT   c                ó   € R V  R2# )zlibdevice.erfcx(r–   rP   rî  s   &rR   rü  rü  a  s   € Ð+¨A¨3¨aÑ0rT   Úspecial_erfcxr-  c                ó   € R V  RV RV R2# )z	std::fma(r•   r–   rP   r,  s   &&&rR   rü  rü  f  s   € ˜i¨ s¨"¨Q¨C¨r°!°°AÑ6rT   c                ó   € R V  RV RV R2# )zfmadd(r•   r–   rP   r,  s   &&&rR   rü  rü  g  s   €  ¨ s¨"¨Q¨C¨r°!°°AÑ6rT   c                ó   € R V  RV RV R2# )ztl.fma(r•   r–   rP   r,  s   &&&rR   rü  rü  l  s   €  ¨¨¨2¨a¨S°°1°#°QÑ7rT   )r"  rõ  r  r÷  rm   r3  c                ó   € R V  RV R2# )rÙ  ú) * (r–   rP   r2  s   &&rR   rü  rü  w  s   € ˜1˜Q˜C˜u Q C qÑ)rT   c                óf   € \         P                  P                  '       d
   R V  RV R2# RV  RV R2# )rÙ  rP  r–   zlibdevice.mul_rn(r•   )r  ÚversionÚhipr2  s   &&rR   rü  rü  x  sB   € Ü�=‰=××Ðð   ˜s %¨ s¨!Ð,ð +à    2 a S¨Ð*ð+rT   Úigammac                ó   € R V  RV R2# ©zcalc_igamma(r•   r–   rP   r2  s   &&rR   rü  rü  €  ó   € ˜<¨ s¨"¨Q¨C¨qÑ1rT   Úigammacc                ó   € R V  RV R2# ©zcalc_igammac(r•   r–   rP   r2  s   &&rR   rü  rü  …  ó   € ˜=¨¨¨2¨a¨S°Ñ2rT   Úgammaincc                ó   € R V  RV R2# rV  rP   r2  s   &&rR   rü  rü  Š  rW  rT   Úspecial_gammaincÚ	gammainccc                ó   € R V  RV R2# rZ  rP   r2  s   &&rR   rü  rü  �  r[  rT   Úspecial_gammainccÚi0c                ó   € R V  R2# )zcalc_i0(r–   rP   rî  s   &rR   rü  rü  ”  ó   € ˜   1‘orT   c                ó   € \        ^ V 4      # r%  ©r-  rî  s   &rR   rü  rü  •  ó   € Ô-¨a°Ô3rT   c                ó   € V  R 2# )z.i0()rP   rî  s   &rR   rü  rü  –  s
   € ˜A˜3˜e™rT   )r"  rõ  r÷  r  rm   Úi0ec                ó   € R V  R2# )z	calc_i0e(r–   rP   rî  s   &rR   rü  rü  ›  ó   € ˜	 !  AÑ&rT   c                ó   € V  R 2# )z.i0e()rP   rî  s   &rR   rü  rü  œ  s
   € ˜A˜3˜f™rT   Úspecial_i0eÚi1c                ó   € R V  R2# )zcalc_i1(r–   rP   rî  s   &rR   rü  rü  ¡  rd  rT   c                ó   € \        ^V 4      # rù  rf  rî  s   &rR   rü  rü  ¢  rg  rT   Ú
special_i1Úi1ec                ó   € R V  R2# )z	calc_i1e(r–   rP   rî  s   &rR   rü  rü  §  rk  rT   Úspecial_i1eÚlog_ndtrc                ó   € R V  R2# )zcalc_log_ndtr(r–   rP   rî  s   &rR   rü  rü  ¬  s   € ˜ q c¨Ñ+rT   Úspecial_log_ndtrÚmodified_bessel_i0c                ó   € R V  R2# )zmodified_bessel_i0_forward(r–   rP   rî  s   &rR   rü  rü  ²  ó   € Ð3°A°3°aÑ8rT   c                ó   € \        ^ V 4      # r%  rf  rî  s   &rR   rü  rü  ³  rg  rT   Úspecial_modified_bessel_i0Úmodified_bessel_i1c                ó   € R V  R2# )zmodified_bessel_i1_forward(r–   rP   rî  s   &rR   rü  rü  ¸  rz  rT   c                ó   € \        ^V 4      # rù  rf  rî  s   &rR   rü  rü  ¹  rg  rT   Úspecial_modified_bessel_i1Úmodified_bessel_k0c                ó   € R V  R2# )zmodified_bessel_k0_forward(r–   rP   rî  s   &rR   rü  rü  ¾  rz  rT   Úspecial_modified_bessel_k0Úmodified_bessel_k1c                ó   € R V  R2# )zmodified_bessel_k1_forward(r–   rP   rî  s   &rR   rü  rü  Ã  rz  rT   Úspecial_modified_bessel_k1Úndtrc                ó   € R V  R2# )z
calc_ndtr(r–   rP   rî  s   &rR   rü  rü  É  s   € ˜
 1 # QÑ'rT   Úspecial_ndtrÚndtric                ó   € R V  R2# )zcalc_ndtri(r–   rP   rî  s   &rR   rü  rü  Î  rI  rT   Úspecial_ndtriÚ	polygammac                ó*   € V  R V RV  RV RV RV  R2# )z == 0 ? calc_digamma(z) : (z == 1 ? trigamma(z) : calc_polygamma(r•   rn  rP   r2  s   &&rR   rü  rü  Ó  s3   € ØˆSÐ% a S¨¨a¨SÐ0AÀ!ÀÐDWÐXYÐWZÐZ\Ð]^Ð\_Ð_aÑbrT   Úscaled_modified_bessel_k0c                ó   € R V  R2# )z"scaled_modified_bessel_k0_forward(r–   rP   rî  s   &rR   rü  rü  Û  ó   € Ð:¸1¸#¸QÑ?rT   Ú!special_scaled_modified_bessel_k0Úscaled_modified_bessel_k1c                ó   € R V  R2# )z"scaled_modified_bessel_k1_forward(r–   rP   rî  s   &rR   rü  rü  à  r‘  rT   Ú!special_scaled_modified_bessel_k1Úspherical_bessel_j0c                ó   € R V  R2# )zspherical_bessel_j0_forward(r–   rP   rî  s   &rR   rü  rü  æ  s   € Ð4°Q°C°qÑ9rT   Úspecial_spherical_bessel_j0Úzetac                ó   € R V  RV R2# )zzeta(r•   r–   rP   r2  s   &&rR   rü  rü  ë  s   € ˜5   2 a S¨Ñ*rT   Úspecial_zetaÚchebyshev_polynomial_tc                ó   € R V  RV R2# )zchebyshev_polynomial_t_forward(r•   r–   rP   r2  s   &&rR   rü  rü  ð  ó   € Ð:¸1¸#¸RÀ¸sÀ!ÑDrT   Úspecial_chebyshev_polynomial_tÚchebyshev_polynomial_uc                ó   € R V  RV R2# )zchebyshev_polynomial_u_forward(r•   r–   rP   r2  s   &&rR   rü  rü  õ  rž  rT   Úspecial_chebyshev_polynomial_uÚchebyshev_polynomial_vc                ó   € R V  RV R2# )zchebyshev_polynomial_v_forward(r•   r–   rP   r2  s   &&rR   rü  rü  ú  rž  rT   Úspecial_chebyshev_polynomial_vÚchebyshev_polynomial_wc                ó   € R V  RV R2# )zchebyshev_polynomial_w_forward(r•   r–   rP   r2  s   &&rR   rü  rü  ÿ  rž  rT   Úspecial_chebyshev_polynomial_wÚlegendre_polynomial_pc                ó   € R V  RV R2# )zlegendre_polynomial_p_forward(r•   r–   rP   r2  s   &&rR   rü  rü    ó   € Ð9¸!¸¸B¸q¸cÀÑCrT   Úspecial_legendre_polynomial_pÚshifted_chebyshev_polynomial_tc                ó   € R V  RV R2# )z'shifted_chebyshev_polynomial_t_forward(r•   r–   rP   r2  s   &&rR   rü  rü  	  ó   € ÐBÀ1À#ÀRÈÀsÈ!ÑLrT   Ú&special_shifted_chebyshev_polynomial_tÚshifted_chebyshev_polynomial_uc                ó   € R V  RV R2# )z'shifted_chebyshev_polynomial_u_forward(r•   r–   rP   r2  s   &&rR   rü  rü    r¯  rT   Ú&special_shifted_chebyshev_polynomial_uÚshifted_chebyshev_polynomial_vc                ó   € R V  RV R2# )z'shifted_chebyshev_polynomial_v_forward(r•   r–   rP   r2  s   &&rR   rü  rü    r¯  rT   Ú&special_shifted_chebyshev_polynomial_vÚshifted_chebyshev_polynomial_wc                ó   € R V  RV R2# )z'shifted_chebyshev_polynomial_w_forward(r•   r–   rP   r2  s   &&rR   rü  rü    r¯  rT   Ú&special_shifted_chebyshev_polynomial_wÚhermite_polynomial_hc                ó   € R V  RV R2# )zhermite_polynomial_h_forward(r•   r–   rP   r2  s   &&rR   rü  rü    s   € Ð8¸¸¸2¸a¸SÀÑBrT   Úspecial_hermite_polynomial_hÚhermite_polynomial_hec                ó   € R V  RV R2# )zhermite_polynomial_he_forward(r•   r–   rP   r2  s   &&rR   rü  rü  "  r«  rT   Úspecial_hermite_polynomial_heÚlaguerre_polynomial_lc                ó   € R V  RV R2# )zlaguerre_polynomial_l_forward(r•   r–   rP   r2  s   &&rR   rü  rü  '  r«  rT   Úspecial_laguerre_polynomial_lzdict[str, OverridesData]r  c               ó    € V ^8„  d   QhRRRR/# r  rP   )rQ   s   "rR   rS   rS   -  s   € ÷ 	ñ 	˜Cð 	 Dñ 	rT   c                ó  a € \         ;QJ dƒ    V 3R  l\        P                  P                  \        P                  P                  \        P                  P
                  \        P                  P
                  3 4       F  '       g   K   R# 	  R# ! V 3R  l\        P                  P                  \        P                  P                  \        P                  P
                  \        P                  P
                  3 4       4      # )c              3  ó.   <"  € T F
  pSV9   x € K  	  R # 5irw   rP   )ri  rê  rm   s   & €rR   rk  Ú$is_buffer_removed.<locals>.<genexpr>.  s    øé € ð ñ
ˆAð 	�Ž	ó
ùs   ƒTF)Úanyr5   rÄ   Úremoved_buffersrP  Úinplaced_to_remove©rm   s   frR   Úis_buffer_removedrË  -  s®   ø€ ß‹3ô ô �G‰G×#Ñ#Ü�H‰H×$Ñ$Ü�G‰G×&Ñ&Ü�H‰H×'Ñ'ñ	
ó�3Œ3ð Š3ð ˆ3ô ô �G‰G×#Ñ#Ü�H‰H×$Ñ$Ü�G‰G×&Ñ&Ü�H‰H×'Ñ'ñ	
óó ð rT   c                  óJ   a € ] tR tRtRtR V 3R lltR R ltR R ltR	tV ;t	# )
ÚDeferredLinei9  zHA line that can be 'unwritten' by adding name to V.graph.removed_buffersc               ó    € V ^8„  d   QhRRRR/# )rK   rm   rM   ÚlinerP   )rQ   s   "rR   rS   ÚDeferredLine.__annotate__<  s   € ÷ Hñ H˜Sð H¨ñ HrT   c                	ót   <€ \         SV `  V4       Wn        \        V\        4      '       d   \        R 4      hR# )z#line must not be a DeferredLineBaseN)rÏ  r   rm   r·  r$   rÔ   )rp   rm   rÏ  rÑ  s   &&&€rR   r   ÚDeferredLine.__init__<  s4   ø€ Ü‰Ñ˜ÔØŒ	Ü�dÔ,×-Ò-Ü Ð!FÓGÐGñ .rT   c               ó   € V ^8„  d   QhRR/# r/  rP   )rQ   s   "rR   rS   rÐ  B  s   € ÷ ñ ˜*ñ rT   c                	óT   € \        V P                  4      '       g   V P                  # R # rw   )rË  rm   rÏ  rx   s   &rR   Ú__call__ÚDeferredLine.__call__B  s   € Ü  §¡×+Ò+Ø—9‘9ÐÙrT   c               ó    € V ^8„  d   QhRRRR/# )rK   rÏ  rM   rN   rÍ  rP   )rQ   s   "rR   rS   rÐ  G  s   € ÷ -ñ -˜cð - lñ -rT   c                	ó.   € \        V P                  V4      # rw   )rÍ  rm   )rp   rÏ  s   &&rR   Ú	_new_lineÚDeferredLine._new_lineG  s   € Ü˜DŸI™I tÓ,Ð,rT   rÊ  )
r†   r‡   rˆ   r‰   rŠ   r   rÕ  rÙ  r�   rÞ  rß  s   @rR   rÍ  rÍ  9  s!   ø† ÙR÷Hð Hõ÷
-ó -rT   rÍ  c                  ó&   € ] tR tRtRR R lltRtR# )ÚBracesBufferiK  c               ó    € V ^8„  d   QhRRRR/# )rK   r(  r  rN   z'contextlib.AbstractContextManager[None]rP   )rQ   s   "rR   rS   ÚBracesBuffer.__annotate__L  s   € ÷ ñ ˜Sð Ð)Pñ rT   c                	óN   a a€ \         P                  R  VV 3R ll4       pV! 4       # )c               ó   € V ^8„  d   QhRR/# )rK   rN   úIterator[None]rP   )rQ   s   "rR   rS   Ú)BracesBuffer.indent.<locals>.__annotate__N  s   € ÷ 	$ñ 	$�^ñ 	$rT   c               3  óü  <"  € \        S4       F-  p SP                  R 4       S;P                  ^,          un        K/  	  \        S) 4       F-  p S;P                  ^,          un        SP                  R4       K/  	  Rx € \        S) 4       F-  p SP                  R 4       S;P                  ^,          un        K/  	  \        S4       F-  p S;P                  ^,          un        SP                  R4       K/  	  R# 5i)Ú{Ú}N)Úranger\  Ú_indent)Ú_r(  rp   s    €€rR   ÚctxÚ BracesBuffer.indent.<locals>.ctxM  s³   øé € ä˜6–]�Ø—‘˜sÔ#Ø—’ Õ!—ñ #ô ˜F˜7–^�Ø—’ Õ!•Ø—‘˜sÖ#ñ $ó Ü˜F˜7–^�Ø—‘˜sÔ#Ø—’ Õ!—ñ $ô ˜6–]�Ø—’ Õ!•Ø—‘˜sÖ#ó #ùs   ƒC9C<)Ú
contextlibÚcontextmanager)rp   r(  ré  s   ff rR   ÚindentÚBracesBuffer.indentL  s)   ù€ Ü	×	"Ñ	"÷	$ð 	$ó 
#ð	$ñ ‹uˆrT   rP   Nrù  )r†   r‡   rˆ   r‰   rí  r�   rP   rT   rR   rÜ  rÜ  K  s   † ÷ó rT   rÜ  c                  ó,   € ] tR tRt$ R]R&   R]R&   RtR# )ÚInplacedBufferi`  rM   r¼   r  Úother_namesrP   Nr5  rP   rT   rR   rð  rð  `  s   ‡ ØƒOØ×rT   rð  c                  ó<   € ] tR tRt$ R]R&   RtR]R&   R R ltR	tR
# )ÚArgNameie  rM   rm   Frž   Úis_constexprc               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   ÚArgName.__annotate__k  s   € ÷ Nñ N˜3ñ NrT   c                	óN   € V P                    V P                  '       d   R  2# R 2# )z : tl.constexprr*  )rm   rô  rx   s   &rR   Ú	full_nameÚArgName.full_namek  s-   € Ø—)‘)�°$×2C×2CÐ2CÐ.ÐLÐMÐMÈÐLÐMÐMrT   rP   N)r†   r‡   rˆ   r‰   r‹   rô  rø  r�   rP   rT   rR   ró  ró  e  s   ‡ à
ƒIà€L�$Ó÷Nñ NrT   ró  c                  ó"   € ] tR tRtR R ltRtR# )Ú
RemovedArgio  c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   ÚRemovedArg.__annotate__p  ó   € ÷ ñ ˜ñ rT   c                	ó   € R # )ÚREMOVEDrP   rx   s   &rR   Ú__str__ÚRemovedArg.__str__p  s   € ÙrT   rP   N)r†   r‡   rˆ   r‰   r  r�   rP   rT   rR   rû  rû  o  s   † ÷ñ rT   rû  c                  ó8  € ] tR tRt]R R l4       tR R ltR R lt]R R	 l4       tR
 R lt	R R lt
R R lt]P                  3R R lltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR,R! R" lltR# R$ ltR% R& ltR' R( ltR) R* ltR+tR # )-Ú
KernelArgsiw  c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   rÀ   rM   Úodictz*dict[_T, str | RemovedArg] | dict[_T, str]rm   rH   rN   rP   )rQ   s   "rR   rS   ÚKernelArgs.__annotate__y  s0   € ÷ 	ñ 	Øð	à9ð	ð ð	ð 
ñ		rT   c                	óˆ   € VP                  V\        4      p\        V\        4      '       d   V  \	        V4       2;W&   pV# V# rw   )rã  r   r·  rû  rp  )rÀ   r  rm   ÚresultÚ
new_results   &&&  rR   Ú_lookupÚKernelArgs._lookupx  sE   € ð $)§9¡9¨T´7Ó#;ˆÜ�fœj×)Ò)Ø*0¨´#°e³*°Ð'>Ð>ˆE‰K˜*ØÐØˆrT   c               ó   € V ^8„  d   QhRR/# ra   rP   )rQ   s   "rR   rS   r  „  s   € ÷ 5ñ 5˜$ñ 5rT   c                	óL   € / V n         / V n        / V n        / V n        . V n        R # rw   )Úinput_buffersÚoutput_buffersÚinplace_buffersrÍ  Úworkspace_argsrx   s   &rR   r   ÚKernelArgs.__init__„  s)   € Ø-/ˆÔØ;=ˆÔØGIˆÔØ/1ˆŒØ24ˆÖrT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   r  ‹  s   € ÷ 
ñ 
˜#ñ 
rT   c                	ó¶   € R P                  RP                  \        \        V P                  V P
                  V P                  V P                  .4      4      4      # )zKernelArgs({})r•   )rQ   rÐ   Úmaprs  r  r  r  rÍ  rx   s   &rR   Ú__repr__ÚKernelArgs.__repr__‹  sS   € Ø×&Ñ&Ø�I‰IÜÜà×*Ñ*Ø×+Ñ+Ø×,Ñ,ØŸ™ð	óó
ó
ð 	
rT   c               ó    € V ^8„  d   QhRRRR/# )rK   rm   r	   rN   rž   rP   )rQ   s   "rR   rS   r  ›  s   € ÷ ,ñ ,¨ð ,°ñ ,rT   c                	ó"   € \        V \        4      # rw   )r·  rû  rÊ  s   &rR   Ú_buffer_is_marked_removedÚ$KernelArgs._buffer_is_marked_removedš  s   € ô ˜$¤
Ó+Ð+rT   c               ó    € V ^8„  d   QhRRRR/# rH  rP   )rQ   s   "rR   rS   r  Ÿ  s   € ÷ @ñ @˜#ð @ #ñ @rT   c                	óv  € \         P                  P                  '       d4   \         P                  P                  P                  P	                  W4      pV\         P                  P
                  9   d   \        V4      hWP                  9   d"   \        \        V P                  V,          4      # WP                  9   d,   \        \        V P                  V,          4      P                  # VP                  R 4      '       d   V P                  R V P                  V4      # V P                  RV P                  V4      # )ÚseedÚin_ptr)r5   rÄ   rÂ  Úmutation_real_namerã  rÈ  rÔ   r  r
   rM   r  rð  r¼   r¬  r  r  rL  s   &&rR   ÚinputÚKernelArgs.inputŸ  sÞ   € Ü�7‰7××ÐÜ—7‘7×$Ñ$×7Ñ7×;Ñ;¸DÓGˆDØ”1—7‘7×*Ñ*Ô*Ü  Ó&Ð&Ø×&Ñ&Ô&Üœ˜T×0Ñ0°Õ6Ó7Ð7Ø×'Ñ'Ô'Üœ¨×(<Ñ(<¸TÕ(BÓC×NÑNÐNØ�?‰?˜6×"Ò"Ø—<‘< ¨×(:Ñ(:¸DÓAÐAØ�|‰|˜H d×&8Ñ&8¸$Ó?Ð?rT   c               ó    € V ^8„  d   QhRRRR/# rH  rP   )rQ   s   "rR   rS   r  ¬  s   € ÷ Bñ B˜3ð B 3ñ BrT   c                	ó¬  € \         P                  P                  '       d4   \         P                  P                  P                  P	                  W4      pV\         P                  P
                  9   d   \        V4      hWP                  9   d,   \        \        V P                  V,          4      P                  # V P                  R V P                  V4      # )Úout_ptr)r5   rÄ   rÂ  r!  rã  rÈ  rÔ   r  r
   rð  r¼   r  r  rL  s   &&rR   r§  ÚKernelArgs.output¬  s’   € Ü�7‰7××ÐÜ—7‘7×$Ñ$×7Ñ7×;Ñ;¸DÓGˆDØ”1—7‘7×*Ñ*Ô*Ü  Ó&Ð&Ø×'Ñ'Ô'Üœ¨×(<Ñ(<¸TÕ(BÓC×NÑNÐNØ�|‰|˜I t×':Ñ':¸DÓAÐArT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   Ú
input_namerM   Úoutput_namerN   rO   rP   )rQ   s   "rR   rS   r  µ  s!   € ÷ 4ñ 4 sð 4¸ð 4Àñ 4rT   c                	ób  € V\         P                  P                  9   d*   \         P                  P                  P                  V4       W P                  9   d   \        V4      hWP                  9   d`   V P                  V,          p\        V\        4      '       d   \        R 4      hVP                  P                  V4       W0P                  V&   R# V P                  P                  4        Uu. uF  p\        V\        4      '       d   K  VNK  	  ppV P                  P                  4        Uu. uF  p\        V\        4      '       g   K  VNK  	  pp\        \        V4      4      \        V4      ,           p\        RV 2W.4      pW0P                  V&   W0P                  V&   R# u upi u upi )zbuf must not be a RemovedArgÚ
in_out_ptrN)r5   rÄ   Úunaligned_buffersr  r  rÔ   r·  rû  rñ  ÚappendrÎ  rp  r.   rð  )rp   r)  r*  ÚbufÚvalÚalive_buffersrÈ  Úinplace_buffer_idxs   &&&     rR   Úmake_inplaceÚKernelArgs.make_inplaceµ  sr  € ØœŸ™×2Ñ2Ô2Ü�G‰G×%Ñ%×)Ñ)¨+Ô6Ø×.Ñ.Ô.Ü  Ó-Ð-Ø×-Ñ-Ô-Ø×&Ñ& zÕ2ˆCÜ˜#œz×*Ò*Ü$Ð%CÓDÐDØ�O‰O×"Ñ" ;Ô/Ø03× Ñ  Ó-ð  ×/Ñ/×6Ñ6Ô8óá8�CÜ! #¤z×2÷ �Ù8ð ð ð  ×/Ñ/×6Ñ6Ô8óá8�CÜ˜c¤:×.÷ �Ù8ð ð ô
 "%¤V¨MÓ%:Ó!;¼cÀ/Ó>RÕ!RÐÜ ØÐ/Ð0Ð1ØÐ)óˆCð 03× Ñ  Ñ,Ø03× Ñ  Ó-ùò!ùò
s   Ã/F'ÄF'Ä0F,ÅF,c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rK   Únelemrµ   r�   rž   r¾   r½   rN   ztuple[str, str, int]rP   )rQ   s   "rR   rS   r  Ó  s,   € ÷ .1ñ .1Øð.1Ø,0ð.1Ø9Dð.1à	ñ.1rT   c                ó’  € \        V\        P                  V4      \        P                  P                  4       \         P                  4       VR7      p\        V P                  4       Fª  w  rV\         P                  Wd4      '       dJ   VP                  p\         P                  Wd4      V P                  V&   VP                  VP                  V3u # VP                  VP                  8w  d   VP                  VP                  8w  d   K¡  \        V4      h	  V P                  P                  V4       VP                  VP                  ^ 3# )a»  
Allocate or extend a workspace buffer of nelem elements.

This function manages the allocation of a workspace buffer. It either creates
a new WorkspaceArg or extends an existing one.

Note:
- Calling this function will in-place mutate the args by adding or updating
a WorkspaceArg.
- The codegen for generating the Python argdefs and call_defs will check
this field and allocate the buffer accordingly.
- A new argument "ws_ptr" will be present in the generated code.

Args:
    nelem (sympy.Expr): The number of elements to allocate.
    zero_fill (bool): Whether to initialize the buffer to zero.
    dtype (torch.dtype): the dtype of the workspace tensor

Returns:
    Tuple[str, str, int]: A tuple containing:
        - "ws_ptr": A string identifier for the workspace pointer.
        - "workspace_{i}": a graph level unique identifier for
            the workspace tensor.
        - offset: An integer representing the item offset in the workspace.
)r¶   r·   r¹   rº   r¾   )r´   r�   r¡   r5   rÄ   rN  rÆ   rc  r  rÊ   r¶   rÐ   r¼   rº   rÔ   r.  )rp   r6  r�   r¾   Úargrd  Úexisting_argr(  s   &&&&    rR   r¦  ÚKernelArgs.workspaceÓ  s  € ô8 ØÜ'×1Ñ1°)Ó<Ü—7‘7×6Ñ6Ó8Ü#×/Ñ/Ó1Øô
ˆô  )¨×)<Ñ)<Ö=‰OˆAÜ×$Ñ$ \×7Ò7Ø%×+Ñ+�Ü)5×):Ñ):¸<Ó)M�×#Ñ# AÑ&Ø#×.Ñ.°×0GÑ0GÈÐOÒOà×'Ñ'¨3¯>©>Ô9Ø ×+Ñ+¨s¯~©~Ö=ä$ \Ó2Ð2ñ  >ð 	×Ñ×"Ñ" 3Ô'Ø�~‰~˜sŸ~™~¨qÐ0Ð0rT   c               ó    € V ^8„  d   QhRRRR/# )rK   Úmin_sizerµ   rN   rM   rP   )rQ   s   "rR   rS   r    s   € ÷ !ñ ! :ð !°#ñ !rT   c           	     óÐ  € ^ RI Hp \        P                  P	                  4       pV! 4       '       d   RMRVP
                   2p\        V\        P                  \        P                  RRVP                   V 2VR7      pV P                   F2  pVP                  VP                  8X  g   K   WV8w  g   K(  \        WV34      h	  V P                  P                  V4       VP                  # )a„  
Lazily allocate a graph-wide semaphores buffer with at least min_size.  This is a single buffer shared by
all kernels and zero initialized once at graph start.  Each kernel must leave the buffer zeroed on exit.

Warning: multiple calls to this function will return the same buffer.

Args:
    min_size: the number of int32 semaphores required

Returns:
    name of the semaphores buffer
)Ú_coor_enabledr*  rè  Úsem_ptrÚsemaphores_)r¶   r·   r¾   r¼   rº   r¹   )Ú"torch.fx.experimental.proxy_tensorr>  r5   rÄ   rN  r  r´   r�   r£   r  Úuint32rc  r  r¼   rÔ   r.  )rp   r<  r>  Úcurrent_devicere   r8  r9  s   &&     rR   Ú
semaphoresÚKernelArgs.semaphores  sÇ   € õ 	EäŸ™×<Ñ<Ó>ˆñ %—’‘¨a°×0DÑ0DÐ/EÐ,FˆÜØÜ'×6Ñ6Ü—,‘,Ø Ø$ ^×%8Ñ%8Ð$9¸&¸ÐBØ!ô
ˆð !×/Ô/ˆLØ×&Ñ&¨#¯.©.Ö8ØÖ&Ü(¨#Ð)<Ó=Ð=ñ 0ð 	×Ñ×"Ñ" 3Ô'Ø�~‰~ÐrT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   rm   rM   ro   r  rN   rP   )rQ   s   "rR   rS   r  &  s!   € ÷ ñ  ð ¨Cð °Cñ rT   c                	ó�  a€ \        V\        4      '       g   \        \        V4      V34      h\        P
                  ! V4      pW P                  9   d   V P                  V,          # SV P                  P                  4       9   d2   S \        V3R  lV P                  P                  4        4       4       2oSV P                  V&   S# )c              3  óX   <"  € T F  qP                  S4      '       g   K  ^x € K!  	  R# 5i©rú  N)r¬  )ri  rƒ  rm   s   & €rR   rk  Ú)KernelArgs.seed_offset.<locals>.<genexpr>/  s   øé € ÐUÑ(> 1Ç,Á,Èt×BTŸQšQÓ(>ùs   ƒ* 
*)	r·  r  rÔ   rc  rñ   rœ  rÍ  rÎ  Úsum)rp   rm   ro   s   &f&rR   Úseed_offsetÚKernelArgs.seed_offset&  sŸ   ø€ Ü˜%¤×%Ò%Ü ¤$ u£+¨uÐ!5Ó6Ð6ä—’˜eÓ$ˆØ—M‘MÔ!Ø—=‘= Õ'Ð'Ø�4—=‘=×'Ñ'Ó)Ô)à�&œÔU¨¯©×(<Ñ(<Ô(>ÓUÓUÐVÐWð ð  $ˆ�‰�eÑØˆrT   c               ó    € V ^8„  d   QhRRRR/# )rK   rm   r¢  rN   rM   rP   )rQ   s   "rR   rS   r  4  s   € ÷ 7ñ 7˜ð 7¨#ñ 7rT   c                	óì   € \        V\        P                  4      '       g   \        \	        V4      V34      hVP
                  R 8X  d   R V P                  V&   R # V P                  RV P                  V4      # )r  Úks)r·  rñ   ÚSymbolrÔ   rc  rm   rÍ  r  rL  s   &&rR   rç   ÚKernelArgs.size4  s[   € Ü˜$¤§¡×-Ò-Ü ¤$ t£*¨dÐ!3Ó4Ð4Ø�9‰9˜ÔØ"(ˆD�M‰M˜$ÑÙØ�|‰|˜D $§-¡-°Ó6Ð6rT   c               ó   € V ^8„  d   QhRR/# )rK   rN   zIterator[str]rP   )rQ   s   "rR   rS   r  <  s   € ÷ 
ñ 
˜Mñ 
rT   c                	ó¬   € \        V P                  P                  4       V P                  P                  4       V P                  P                  4       4      # rw   )r   r  Úkeysr  rÍ  rx   s   &rR   Ú
call_namesÚKernelArgs.call_names<  sA   € ÜØ×Ñ×#Ñ#Ó% t×':Ñ':×'?Ñ'?Ó'AÀ4Ç=Á=×CUÑCUÓCWó
ð 	
rT   c               ó    € V ^8„  d   QhRRRR/# )rK   rm   rM   rN   r)  rP   )rQ   s   "rR   rS   r  A  s   € ÷ 
2ñ 
2˜Sð 
2 Zñ 
2rT   c                ó.  € V P                   P                  VR4      pVe#   \        V\        4      '       g   VP                  # V P
                  P                  VR4      pVe   \        V\        4      '       g   V# V P                  P                  VR4      # )z+
Returns inner name of a given outer name.
N)r  rã  r·  rû  r¼   r  r  )rp   rm   Úinplacedr*  s   &&  rR   Úarg_nameÚKernelArgs.arg_nameA  sƒ   € ð ×'Ñ'×+Ñ+¨D°$Ó7ˆØÒ¬
°8¼Z×(HÒ(HØ×&Ñ&Ð&Ø×)Ñ)×-Ñ-¨d°DÓ9ˆØÒ"¬:°kÄ:×+NÒ+NØÐØ×!Ñ!×%Ñ% d¨DÓ1Ð1rT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   r/  rM   r¾   r½   rN   rP   )rQ   s   "rR   rS   r  M  s!   € ÷ ñ  ð ¨Kð ¸Cñ rT   c                	ó   € V# rw   rP   )rp   r/  r¾   s   &&&rR   Úwrap_ptr_argÚKernelArgs.wrap_ptr_argM  s   € Øˆ
rT   c               ó    € V ^8„  d   QhRRRR/# )rK   rç   Ú
SymbolLikerN   rM   rP   )rQ   s   "rR   rS   r  P  s   € ÷ ñ  *ð °ñ rT   c                	ó   € \        V4      # rw   rh  )rp   rç   s   &&rR   Úwrap_size_argÚKernelArgs.wrap_size_argP  s   € Ü�4‹yÐrT   Nc               ó    € V ^8„  d   QhRRRR/# )rK   Údtype_to_cpp_typezdict[torch.dtype, str] | NonerN   z&tuple[list[str], list[str], list[str]]rP   )rQ   s   "rR   rS   r  S  s   € ÷ 5.ñ 5.Ø!>ð5.à	/ñ5.rT   c                	ó"  € ^RI Hp Vf	   ^RI Hp Tp. p. p. p\        V P                  P                  4       4       F«  p\        V\        4      '       d   K  VP                  R
,          pVP                  p	\        P                  P                  V4      p
W,          pVP                  V RV	 24       VP                  V P                  WŠ4      4       VP                  V R24       K­  	  V P                  P!                  4        FŠ  w  r‰W€P                  9   d   K  \        P                  P                  V4      p
W,          pVP                  RV RV	 24       VP                  V P                  WŠ4      4       VP                  RV R24       KŒ  	  V P"                  P!                  4        Fž  w  rŒW€P                  9   g   \        V\        4      '       d   K-  \        P                  P                  V4      p
W,          pVP                  V RV 24       VP                  V P                  WŠ4      4       VP                  V R24       K   	  V P$                  P!                  4        EF  w  r‰\        V\&        P(                  4      '       dG   \+        V\,        P.                  4      '       d'   VP                  RV	 24       VP                  R4       M+VP                  RV RV	 24       VP                  RV 24       VP                  V P1                  V4      4       \        P                  P2                  '       g   KÙ  \        P                  P2                  P5                  V4       EK  	  V P6                  '       d   \9        R	4      hWTV3# )rú  )Ú
INDEX_TYPE)rX  z* Ú*zconst zconst float zconst floatÚ zWorkspace not supported on CPU r=  )r^  ri  rX  r.   r  rÎ  r·  rû  rñ  r¼   r5   rÄ   rÞ   r.  r_  r  r�  r  rÍ  rñ   rQ  r   r   ÚUNBACKED_FLOATrd  Úwrapper_codeÚensure_size_computedr  rÔ   )rp   rg  ri  rX  Ú	call_argsÚarg_defsÚ	arg_typesrZ  ÚouterÚinnerr¾   Ú	cpp_dtypeÚmaybe_inners   &&           rR   Úcpp_argdefsÚKernelArgs.cpp_argdefsS  sò  € õ 	*àÒ$Ý/à ,Ðàˆ	ØˆØˆ	Ü˜t×3Ñ3×:Ñ:Ó<Ö=ˆHÜ˜(¤J×/Ò/ÙØ×(Ñ(¨Õ,ˆEØ×'Ñ'ˆEÜ—G‘G×%Ñ% eÓ,ˆEØ)Õ0ˆIØ�O‰O˜y˜k¨¨E¨7Ð3Ô4Ø×Ñ˜T×.Ñ.¨uÓ<Ô=Ø×Ñ 	˜{¨!˜_Ö-ñ >ð !×.Ñ.×4Ñ4Ö6‰LˆEØ×,Ñ,Ô,ÙÜ—G‘G×%Ñ% eÓ,ˆEØ)Õ0ˆIØ�O‰O˜f Y K¨r°%°Ð9Ô:Ø×Ñ˜T×.Ñ.¨uÓ<Ô=Ø×Ñ˜v i [°Ð2Ö3ñ 7ð #'×"5Ñ"5×";Ñ";Ö"=ÑˆEØ×,Ñ,Ô,´
¸;Ì
×0SÒ0SÙÜ—G‘G×%Ñ% eÓ,ˆEØ)Õ0ˆIØ�O‰O˜y˜k¨¨K¨=Ð9Ô:Ø×Ñ˜T×.Ñ.¨uÓ<Ô=Ø×Ñ 	˜{¨!˜_Ö-ñ #>ð !ŸM™M×/Ñ/×1‰LˆEÜ˜%¤§¡×.Ò.´>Øœ×+Ñ+÷4ò 4ð —‘ ,¨u¨gÐ 6Ô7Ø× Ñ  Õ/à—‘ &¨¨°A°e°WÐ =Ô>Ø× Ñ  6¨*¨Ð!6Ô7Ø×Ñ˜T×/Ñ/°Ó6Ô7Ü�w‰w×#×#Ò#Ü—‘×$Ñ$×9Ñ9¸%×@ñ 2ð ××ÐÜ Ð!BÓCÐCØ IÐ-Ð-rT   c               ó   € V ^8„  d   QhRR/# )rK   rN   z?tuple[list[ArgName], list[str], list[KernelArgType], list[Any]]rP   )rQ   s   "rR   rS   r  Š  s   € ÷ 1?ñ 1?à	Hñ1?rT   c                	ó  € . p. p. p. p\        V P                  P                  4       4       EF  p\        V\        4      '       d   K  VP                  \        VP                  4      4       VP                  VP                  R,          4       VP                  \        P                  P                  VP                  R,          4      4       VP                  \        VP                  VP                  R,          \        P                  P                  VP                  R,          4      R7      4       EK
  	  \        V P                  P                  4       V P                   P                  4       4       FÀ  w  rgW`P                  9   g   \        V\        4      '       d   K-  VP                  \        V4      4       VP                  V4       VP                  \        P                  P                  V4      4       VP                  \        VV\        P                  P                  V4      R7      4       KÂ  	  V P"                  P                  4        F¯  w  rgVP                  \        V4      4       VP                  V4       VP                  \%        V4      4       VP                  \'        Wv4      4       \        P                  P(                  '       g   K†  \        P                  P(                  P+                  V4       K±  	  V P,                   Fn  pVP                  \        VP                  4      4       VP                  VP.                  4       VP                  V4       VP                  VP0                  4       Kp  	  WWC3# )rú  )rm   r'  r¾   r=  )r.   r  rÎ  r·  rû  r.  ró  r¼   rñ  r5   rÄ   rÞ   r&  r   r  r�  r  rÍ  rc  r,  rm  rn  r  rº   r¾   )	rp   rp  ro  rq  Úprecompile_argsrZ  rr  rs  r8  s	   &        rR   Úpython_argdefsÚKernelArgs.python_argdefsŠ  s‘  € ð #%ˆØ!ˆ	Ø!ˆ	Ø/1ˆÜ˜t×3Ñ3×:Ñ:Ó<×=ˆHÜ˜(¤J×/Ò/ÙØ�O‰OœG H×$7Ñ$7Ó8Ô9Ø×Ñ˜X×1Ñ1°"Õ5Ô6Ø×ÑœQŸW™W×.Ñ.¨x×/CÑ/CÀBÕ/GÓHÔIØ×"Ñ"ÜØ!×,Ñ,Ø#×/Ñ/°Õ3ÜŸ'™'×+Ñ+¨H×,@Ñ,@ÀÕ,DÓEô÷ñ >ô "Ø×Ñ×$Ñ$Ó&à×Ñ×%Ñ%Ó'ö
‰LˆEð
 ×,Ñ,Ô,´
¸5Ä*×0MÒ0MÙØ�O‰OœG E›NÔ+Ø×Ñ˜UÔ#Ø×ÑœQŸW™W×.Ñ.¨uÓ5Ô6Ø×"Ñ"ÜØØ ÜŸ'™'×+Ñ+¨EÓ2ôöñ
ð" !ŸM™M×/Ñ/Ö1‰LˆEØ�O‰OœG E›NÔ+Ø×Ñ˜UÔ#Ø×ÑœT %›[Ô)Ø×"Ñ"¤7¨5Ó#8Ô9Ü�w‰w×#×#Ò#Ü—‘×$Ñ$×9Ñ9¸%Ö@ñ 2ð ×&Ô&ˆCØ�O‰OœG C§N¡NÓ3Ô4Ø×Ñ˜SŸ^™^Ô,Ø×"Ñ" 3Ô'Ø×Ñ˜SŸY™YÖ'ñ	 'ð
  OÐ>Ð>rT   c               ó   € V ^8„  d   QhRR/# )rK   rN   zIterator[tuple[str, str]]rP   )rQ   s   "rR   rS   r  ½  s   € ÷ Uñ UÐ2ñ UrT   c              #  	ó  "  € \        V P                  P                  4       4       Fà  p\        V\        4      '       d   K  VP
                   Fµ  pV\        P                  P                  9   g    V\        P                  P                  9   d   KC  W P                  9   d"   V P                  V,          VP                  3x € W P                  9   g   K†  \        \        V P                  V,          4      VP                  3x € K·  	  Kâ  	  R # 5irw   )r.   r  rÎ  r·  rû  rñ  r5   rÄ   rÉ  rP  r  r¼   r  r
   rM   )rp   rZ  Úothers   &  rR   ÚaliasesÚKernelArgs.aliases½  sÁ   é € Ü˜t×3Ñ3×:Ñ:Ó<Ö=ˆHÜ˜(¤J×/Ò/ÙØ!×-Ô-�àœQŸW™W×7Ñ7Ô7Ø¤§¡× ;Ñ ;Ô;áØ×.Ñ.Ô.Ø×,Ñ,¨UÕ3°X×5HÑ5HÐHÒHØ×/Ñ/Ö/Üœs D×$7Ñ$7¸Õ$>Ó?À×ATÑATÐTÔTó .ó >ùs   ‚CDÃ9Dc               ó    € V ^8„  d   QhRRRR/# r  rP   )rQ   s   "rR   rS   r  Ì  s   € ÷ Nñ N˜sð N tñ NrT   c                	óÊ   € \        V P                  P                  V\        4      \        4      ;'       d/    \        V P
                  P                  V\        4      \        4      # rw   )r·  r  rã  r   rû  r  rL  s   &&rR   Ú
is_removedÚKernelArgs.is_removedÌ  sQ   € ÜØ×Ñ×#Ñ# D¬'Ó2´Jó
÷ Nð Nä˜×-Ñ-×1Ñ1°$¼Ó@Ä*ÓMð	NrT   c               ó   € V ^8„  d   QhRR/# )rK   rN   zOrderedSet[str]rP   )rQ   s   "rR   rS   r  Ô  s   € ÷ 
ñ 
 _ñ 
rT   c                	óš  € \        4       p\        V P                  P                  4       4       F=  p\	        V\
        4      '       d   K  VP                  VP                  R,          4       K?  	  V P                  P                  4        F>  w  r4W0P                  9   g   \	        V\
        4      '       d   K-  VP                  V4       K@  	  V# )rú  r=  )
r   r.   r  rÎ  r·  rû  r  rñ  r  r�  )rp   Ú	live_outsrZ  rr  rs  s   &    rR   Úlive_output_buffersÚKernelArgs.live_output_buffersÔ  sš   € Ü%/£\ˆ	Ü˜t×3Ñ3×:Ñ:Ó<Ö=ˆHÜ˜(¤J×/Ò/ÙØ�M‰M˜(×.Ñ.¨rÕ2Ö3ñ >ð !×/Ñ/×5Ñ5Ö7‰LˆEØ×,Ñ,Ô,´
¸5Ä*×0MÒ0MÙØ�M‰M˜%Ö ñ 8ð ÐrT   )r  r  r  rÍ  r  rw   )r†   r‡   rˆ   r‰   r¤   r  r   r  r  r"  r§  r3  r  r  r¦  rD  rL  rç   rV  r[  r_  rd  rv  r{  r€  r„  r‰  r�   rP   rT   rR   r  r  w  sš   † Øô	ó ð	õ5õ
ð ô,ó ð,õ@õBõ4ð> HMÇ{Á{÷.1õ`!õFõ7õ
õ

2õõ÷5.õn1?õfUõN÷
ñ 
rT   r  c                  ór   a € ] tR tRtRtRR V 3R llltR R ltR R ltR	 R
 ltR R lt	R R lt
RtV ;t# )rl  iá  a4  A CSEVariable is just a name for an expression but it is useful to be able to annotate them on a backend dependent basis.
To do so, the backends can simply overload `Kernel.create_cse_var`
The "CSEVariable.update_on_args" method gives you a hook for annotations
See example of TritonCSEVariable in triton.py
c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rK   rm   rM   ÚboundsúValueRanges[Any]r¾   r:  re  rE   rP   )rQ   s   "rR   rS   ÚCSEVariable.__annotate__è  s2   € ÷ ñ àðð !ðð "ð	ð
 ñrT   c                	ó¶   <€ \         SV `  4        \        V\        4      '       g   \	        \        V4      4      hWn        W n        ^V n        W0n	        W@n
        R# rI  )rÏ  r   r·  r   rÔ   rc  rm   r�  Ú	use_countr¾   re  )rp   rm   r�  r¾   re  rÑ  s   &&&&&€rR   r   ÚCSEVariable.__init__è  sG   ø€ ô 	‰ÑÔÜ˜&¤+×.Ò.Ü ¤ f£Ó.Ð.ØŒ	ØŒØˆŒØŒ
ØŽ
rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   r�  ø  rþ  rT   c                	ó   € V P                   # rw   rÊ  rx   s   &rR   r  ÚCSEVariable.__str__ø  s   € Ø�y‰yÐrT   c               ó   € V ^8„  d   QhRR/# )rK   rN   r  rP   )rQ   s   "rR   rS   r�  û  r  rT   c                	ó,   € \        V P                  4      # rw   )Úhashrm   rx   s   &rR   Ú__hash__ÚCSEVariable.__hash__û  s   € Ü�D—I‘I‹ÐrT   c               ó    € V ^8„  d   QhRRRR/# )rK   r  ÚobjectrN   rž   rP   )rQ   s   "rR   rS   r�  þ  s   € ÷ Jñ J˜Fð J tñ JrT   c                	ód   € \        V\        4      ;'       d    VP                  V P                  8H  # rw   )r·  rl  rm   )rp   r  s   &&rR   Ú__eq__ÚCSEVariable.__eq__þ  s$   € Ü˜%¤Ó-×IÐI°%·*±*ÀÇ	Á	Ñ2IÐIrT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   rm   rM   r|   r	   r5  rN   rO   rP   )rQ   s   "rR   rS   r�    s(   € ÷ ñ  3ð ¨cð ¸3ð À4ñ rT   c                	ó   € R # rw   rP   )rp   rm   r|   r5  s   &&&&rR   Úupdate_on_argsÚCSEVariable.update_on_args  s   € ÙrT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   r�    s   € ÷ ;ñ ;˜#ñ ;rT   c                	óP   € V P                   P                   R V P                  : R2# rØ  )rÑ  r†   rm   rx   s   &rR   r  ÚCSEVariable.__repr__  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯I©I©=¸Ð:Ð:rT   )r�  r¾   rm   re  r‘  r  )r†   r‡   rˆ   r‰   rŠ   r   r  r™  rž  r¢  r  r�   rÞ  rß  s   @rR   rl  rl  á  s1   ø† ñ÷ò õ õõJõ÷;ó ;rT   rl  ÚAugmentedKeyT)ÚdefaultrT  )Úboundr¨  .c            
      ó4  € ] tR tRtRtR#R R lltR R ltR R	 ltR
 R ltR R lt	R R lt
R R ltR R ltR R ltR]P                  ! 4       RRRRRRRR/R R llt]P                  ! 4       RR3R R llt]P                  ! 4       RR3R  R! lltR"tR# )$ÚCSEi  z Common subexpression eliminationNc               ó4   € V ^8„  d   QhRRRRRRRRRRR	R
RR/# )rK   rÀ   rM   re   Úname_prefixÚiter_bufferszitertools.count[int] | NoneÚstore_cachez+MutableMapping[str, CSEVariableType] | NoneÚreduction_cachez9MutableMapping[ReductionCacheKey, CSEVariableType] | NoneÚvarname_mapz!dict[str, CSEVariableType] | NonerP   )rQ   s   "rR   rS   ÚCSE.__annotate__  sZ   € ÷ Iñ IàðIð ðIð ð	Ið
 2ðIð AðIððIð 7ñIrT   c                	ó  € Wn         W n        / V n        W0n        T;'       g    / V n        T;'       g    / V n        T;'       g    \        P                  ! 4       V n        \        4       V n
        T;'       g    / V n        R # rw   )rÀ   re   Ú_cacher­  r¯  r°  Ú	itertoolsr¶   Úiter_buffer_idsr   Úinvalidated_storesr±  )rp   rÀ   re   r­  r®  r¯  r°  r±  s   &&&&&&&&rR   r   ÚCSE.__init__  ss   € ð ŒØŒØFHˆŒØ&ÔØAL×ARÐARÐPRˆÔà×!Ð!˜rð 	Ôð 6B×5VÐ5VÄYÇ_Â_ÓEVˆÔÜ3=³<ˆÔØ7B×7HÐ7HÀbˆÖrT   c               ó    € V ^8„  d   QhRRRR/# )rK   Ú	keep_varszOrderedSet[CSEVariable]rN   rO   rP   )rQ   s   "rR   rS   r²  -  s   € ÷ ñ Ð$;ð Àñ rT   c                	óT  € . V P                   P                  4       O F5  w  r#W19  g   K  V P                   V V P                  P                  V4       K7  	  V'       d>   V P                  P                  4        UUu/ uF  w  rEWQ9   g   K  WEbK  	  uppV n        R # / V n        R # u uppi rw   )r¯  r�  r·  r  r´  )rp   rº  rm   Útmpr‚  rƒ  s   &&    rR   Ú
invalidateÚCSE.invalidate-  s‹   € Ø4˜4×+Ñ+×1Ñ1Ó3Ó4‰IˆDØÖ#Ø×$Ñ$ TÐ*Ø×'Ñ'×+Ñ+¨DÖ1ñ 5÷ Ø,0¯K©K×,=Ñ,=Ô,?ÔRÑ,?¡D AÀ1Á>œ4˜1š4Ñ,?ÒRˆDŽKàˆDŽKùó Ss   Á;
B$Â
B$c               ó   € V ^8„  d   QhRR/# ©rK   rN   r   rP   )rQ   s   "rR   rS   r²  7  s   € ÷ 	
ñ 	
�tñ 	
rT   c           
     	ó¾   € \        V 4      ! V P                  V P                  V P                  V P                  V P
                  V P                  V P                  R 7      # ))rÀ   re   r­  r®  r¯  r±  r°  )rc  rÀ   re   r­  r¶  r¯  r±  r°  rx   s   &rR   ÚcloneÚ	CSE.clone7  sN   € Ü�DŒzØ—;‘;Ø—;‘;Ø×(Ñ(Ø×-Ñ-Ø×(Ñ(Ø×(Ñ(Ø ×0Ñ0ô
ð 	
rT   c               ó   € V ^8„  d   QhRR/# rÀ  rP   )rQ   s   "rR   rS   r²  B  s   € ÷ ñ ˜Tñ rT   c                óÂ   € V P                  4       p\        V P                  4      Vn        \        V P                  4      Vn        \        V P                  4      Vn        V# )zNReturn a copy of using ScopedDict so changes to *_cache aren't visible in self)rÂ  r)   r´  r°  r¯  )rp   Únew_cses   & rR   Úscoped_copyÚCSE.scoped_copyB  sH   € à—*‘*“,ˆÜ# D§K¡KÓ0ˆŒÜ",¨T×-AÑ-AÓ"BˆÔÜ(¨×)9Ñ)9Ó:ˆÔØˆrT   c               ó    € V ^8„  d   QhRRRR/# )rK   Ú	cache_keyrM   rN   r§  rP   )rQ   s   "rR   rS   r²  J  s   € ÷ .ñ . Sð .¨]ñ .rT   c                ó"   € \        \        V4      # )z@Override this method to augment cache key with backend specifics)r
   r§  ©rp   rÊ  s   &&rR   Úaugment_keyÚCSE.augment_keyJ  s   € ä”M 9Ó-Ð-rT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   rÊ  rM   r0  rT  rN   rO   rP   )rQ   s   "rR   rS   r²  N  s!   € ÷ 7ñ 7˜Sð 7 ð 7¸4ñ 7rT   c                	ó@   € W P                   V P                  V4      &   R # rw   ©r´  rÍ  )rp   rÊ  r0  s   &&&rR   ÚputÚCSE.putN  s   € Ø36�‰�D×$Ñ$ YÓ/Ó0rT   c               ó    € V ^8„  d   QhRRRR/# )rK   rÊ  rM   rN   rž   rP   )rQ   s   "rR   rS   r²  Q  s   € ÷ :ñ : #ð :¨$ñ :rT   c                	ó>   € V P                  V4      V P                  9   # rw   )rÍ  r´  rÌ  s   &&rR   ÚcontainsÚCSE.containsQ  s   € Ø×Ñ 	Ó*¨d¯k©kÑ9Ð9rT   c               ó    € V ^8„  d   QhRRRR/# )rK   rÊ  rM   rN   zCSEVariableType | NonerP   )rQ   s   "rR   rS   r²  T  s   € ÷ Bñ B ð BÐ)?ñ BrT   c                	óX   € V P                   P                  V P                  V4      R 4      # rw   )r´  rã  rÍ  rÌ  s   &&rR   Útry_getÚCSE.try_getT  s"   € Ø�{‰{�‰˜t×/Ñ/°	Ó:¸DÓAÐArT   c               ó    € V ^8„  d   QhRRRR/# )rK   rÊ  rM   rN   rT  rP   )rQ   s   "rR   rS   r²  W  s   € ÷ 8ñ 8˜Sð 8 _ñ 8rT   c                	óF   € V P                   V P                  V4      ,          # rw   rÑ  rÌ  s   &&rR   rã  ÚCSE.getW  s   € Ø�{‰{˜4×+Ñ+¨IÓ6Õ7Ð7rT   r�  rn   TÚ
assignmentr¾   re  c               ó8   € V ^8„  d   QhRRRRRRRRR	RR
RRRRR/# )rK   r'  r'   r-  z@str | CSEVariable | OpsValue | IndentedBuffer | DeferredLineBaser�  rŽ  rn   rž   rß  r¾   r:  re  rE   rN   rT  rP   )rQ   s   "rR   rS   r²  Z  se   € ÷ Nñ NàðNð OðNð
 !ðNð ðNð ðNð "ðNð ðNð 
ñNrT   c          	     	ó   € \        V\        4      '       d   VP                  pV'       g   V'       g   \        R 4      h\        V\        4      '       dJ   VP
                  P                  V4      Vn        V;P                  ^,          un        \        \        V4      # \        V\        4      '       d   VP                  4       pMR\        V\        4      '       d   VP                  pM/\        V\        4      '       g   \        R\        V4       24      hTpV P!                  V4      p	Vf   V'       g   RpV	'       Eg   V P#                  W6V4      p	V P%                  W‰4       V'       EdÚ   \&        P(                  P*                  '       d,   \&        P(                  P*                  P-                  VRR7       \        V\        4      '       dW   V'       d!   VP/                  V P0                   V	 R24       VP3                  V4       VP/                  V P4                  4       V	# \        V\        4      '       d]   V'       g   \        R4      hVP/                  VP7                  V P0                   V	 RVP                   V P4                   24      4       V	# V'       d!   V P0                   V	 RV V P4                   2p
MV V P4                   2p
VP/                  V
4       V'       d`   \8        P:                  P<                  '       g!   \8        P:                  P>                  '       d    Ve   \A        4       R8w  d   \C        WV4       V	# V	P
                  P                  V4      V	n        V	;P                  ^,          un        V	# )	z&expected write or assignment to be setzexpected str, got T)Ú	only_oncez =zexpected assignment to be setz = rõ  rP   )"r·  r2   ro   rÔ   rl  r�  Útightenr‘  r
   rT  r'   Úgetvaluer$   rÏ  rM   rc  rÚ  ÚnewvarrÒ  r5   rP  Úcurrent_nodeÚcodegen_originating_infor\  rÀ   Úsplicere   rÙ  r   rZ  r[  r]  r&   rc  )rp   r'  r-  r�  rn   rß  r¾   re  rÊ  rS  rÏ  s   &&&$$$$$   rR   ÚgenerateÚCSE.generateZ  s¦  € ô �dœH×%Ò%Ø—:‘:ˆDçŸÜ Ð!IÓJÐJÜ�dœK×(Ò(ð Ÿ+™+×-Ñ-¨fÓ5ˆDŒKØ�NŠN˜aÕ�NÜœ¨Ó.Ð.Ü˜œn×-Ò-ØŸ™›‰IÜ˜Ô.×/Ò/ØŸ	™	‰Iä˜d¤C×(Ò(Ü$Ð'9¼$¸t»*¸Ð%FÓGÐGØˆIØ�l‰l˜9Ó%ˆØŠ=§ð ˆEßˆsØ—+‘+˜f¨UÓ3ˆCØ�H‰H�YÔ$ßˆuÜ—8‘8×(×(Ð(Ü—H‘H×)Ñ)×BÑBØ¨$ð Cô ô ˜d¤N×3Ò3ß!Ø×(Ñ(¨D¯K©K¨=¸¸¸RÐ)@ÔAØ—M‘M $Ô'Ø×$Ñ$ T§[¡[Ô1ð< ˆ
ô;   Ô&6×7Ò7ß%Ü,Ð-LÓMÐMØ×$Ñ$ØŸ™¨$¯+©+¨°s°e¸3¸t¿y¹y¸kÈ$Ï+É+ÈÐ'WÓXôð4 ˆ
÷- "Ø"&§+¡+ ¨s¨e°3°t°f¸T¿[¹[¸MÐJ™à"& ¨¯© }Ð5˜Ø×$Ñ$ TÔ*÷ #ä"×/Ñ/×K×KÐKÜ%×2Ñ2×J×JÐJà!Ò-Ü/Ó1°UÔ:ä# F°Ô7ð ˆ
ð Ÿ™×+Ñ+¨FÓ3ˆCŒJØ�MŠM˜QÕ�Màˆ
rT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rK   r�  rŽ  r¾   r:  re  rE   rN   rT  rP   )rQ   s   "rR   rS   r²  ª  s2   € ÷ ñ à ðð "ðð ð	ð
 
ñrT   c           	     	ó¼   € V P                    \        V P                  4       2p\        R \        P
                  P                  WAW#4      4      pWPP                  V&   V# )rT  )r­  rÃ   r¶  r
   r5   rP  Úcreate_cse_varr±  )rp   r�  r¾   re  Úvar_namerS  s   &&&&  rR   rå  Ú
CSE.newvarª  sZ   € ð ×&Ñ&Ð'¬¨T×-AÑ-AÓ(BÐ'CÐDˆÜØœqŸx™x×6Ñ6°xÈÓVó
ˆð &)×Ñ˜Ñ"Øˆ
rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )rK   rm   rM   r�  rŽ  r¾   r:  re  rE   rN   rT  rP   )rQ   s   "rR   rS   r²  ·  s<   € ÷ ñ àðð !ðð "ð	ð
 ðð 
ñrT   c           	     	óÊ   a€ \         P                  ! SV P                  9  V3R  l4       \        R\        P
                  P                  SW#V4      4      pWPP                  S&   V# )c                 ó   <€ R S  2# )zduplicate name: rP   rÊ  s   €rR   rü  ÚCSE.namedvar.<locals>.<lambda>¿  s   ø€ Ð4DÀTÀFÑ2KrT   rT  )r  Ú_check_valuer±  r
   r5   rP  rí  )rp   rm   r�  r¾   re  rS  s   &f&&& rR   ÚnamedvarÚCSE.namedvar·  s]   ø€ ô 	×ÒØ˜×(Ñ(Ñ(Ô*Kô	
ô ØœqŸx™x×6Ñ6°t¸VÈEÓRó
ˆð "%×Ñ˜ÑØˆ
rT   )	r´  r·  r¶  r­  rÀ   r°  r¯  re   r±  )r*  r*  r¼  NNNN)r†   r‡   rˆ   r‰   rŠ   r   r½  rÂ  rÇ  rÍ  rÒ  rÖ  rÚ  rã  r   Úunknownré  rå  rõ  r�   rP   rT   rR   r«  r«    s²   † Ù*÷Iõ.õ	
õõ.õ7õ:õBõ8ðNð
 $/×#6Ò#6Ó#8ðNð ðNð  ðNð %)ðNð !%÷Nðd $/×#6Ò#6Ó#8Ø$(Ø $÷	ð  $/×#6Ò#6Ó#8Ø$(Ø $÷ó rT   r«  c                  óF   a € ] tR tRtR V 3R lltR R ltR R ltRtV ;t# )	ÚCodeGeniÈ  c               ó   € V ^8„  d   QhRR/# ra   rP   )rQ   s   "rR   rS   ÚCodeGen.__annotate__É  s   € ÷ 1ñ 1˜$ñ 1rT   c                	óX   <€ \         SV `  4        \        P                  ! 4       V n        R # rw   )rÏ  r   rë  Ú	ExitStackÚ
exit_stack©rp   rÑ  s   &€rR   r   ÚCodeGen.__init__É  s   ø€ Ü‰ÑÔÜ$×.Ò.Ó0ˆŽrT   c               ó   € V ^8„  d   QhRR/# rÀ  rP   )rQ   s   "rR   rS   rû  Í  s   € ÷ ñ ˜4ñ rT   c                	ó:   € V P                   P                  4        V # rw   )rþ  Ú	__enter__rx   s   &rR   r  ÚCodeGen.__enter__Í  s   € Ø�‰×!Ñ!Ô#ØˆrT   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©rK   Úexc_typer	   Úexc_valÚexc_tbrN   rO   rP   )rQ   s   "rR   rS   rû  Ñ  s(   € ÷ <ñ < ð <¨sð <¸Cð <ÀDñ <rT   c                	ó>   € V P                   P                  WV4       R # rw   )rþ  Ú__exit__)rp   r  r  r	  s   &&&&rR   r  ÚCodeGen.__exit__Ñ  s   € Ø�‰× Ñ  °FÖ;rT   )rþ  )	r†   r‡   rˆ   r‰   r   r  r  r�   rÞ  rß  s   @rR   rù  rù  È  s   ø† ÷1ð 1õ÷<ó <rT   rù  c                  ó  a € ] tR tRt$ RtRtR]R&   RtR]R&   RtR]R	&   RCR
 V 3R lllt	]
P                  R R l4       t]
P                  RDR R ll4       tR R ltR R ltR R ltR R ltRER R lltR R ltR R ltR R ltR  R! ltR" R# ltR$ R% ltRDR& R' llt]R( R) l4       tRER* R+ lltR, R- ltR. R/ ltR0 V 3R1 lltR2 V 3R3 llt R4 R5 lt!R6 R7 lt"R8 R9 lt#R: R; lt$R< R= lt%R> R? lt&RER@ RA llt'RBt(V ;t)# )FÚKerneliÕ  z8Base class for generated kernels and their code buffers.r*  rM   Únewvar_prefixre   Nz$Callable[[], OpsHandler[Any]] | NoneÚ	overridesc               ó$   € V ^8„  d   QhRRRRRR/# )rK   r|   zKernelArgs | NoneÚincrease_kernel_countrž   rN   rO   rP   )rQ   s   "rR   rS   ÚKernel.__annotate__Ü  s$   € ÷ #,ñ #,Ø%ð#,ØEIð#,à	ñ#,rT   c                	óV  <€ \         SV `  4        V'       d   \        ;P                  ^,          un        T;'       g    \	        4       V n        \        4       V n        \        4       V n        \        4       V n	        RV n
        ^ V n        ^ V n        ^ V n        \        V P                  V P                   4      V n        \%        4       V n        \%        4       V n        RV n        RV n        RV n        RV n        \%        4       V n        \%        4       V n        / V n        ^V n        RV n        R# )rú  FN)rÏ  r   r   Úgenerated_kernel_countr  r|   r'   ÚloadsÚcomputeÚstoresÚatomic_add_foundÚnum_loadÚ	num_storeÚnum_reductionr«  r  re   Úcser   Úmust_keep_buffersÚstore_buffer_namesÚ
_load_maskÚ_load_otherræ  Únode_to_boundsrÈ  rÉ  Úinplace_update_buffersÚmin_elem_per_threadÚkernel_name)rp   r|   r  rÑ  s   &&&€rR   r   ÚKernel.__init__Ü  sê   ø€ ô 	‰ÑÔß ä×*Ò*¨aÕ/Õ*Ø×(Ð(œJ›LˆŒ	Ü#Ó%ˆŒ
Ü%Ó'ˆŒÜ$Ó&ˆŒà %ˆÔØˆŒØˆŒØˆÔä.1°$×2DÑ2DÀdÇkÁkÓ.RˆŒÜ2<³,ˆÔÜ3=³<ˆÔØ&*ˆŒØ/3ˆÔà26ˆÔØLPˆÔä0:³ˆÔÜ3=³<ˆÔð
 79ˆÔ#à#$ˆÔ Ø'+ˆÖrT   c               ó    € V ^8„  d   QhRRRR/# )rK   r‡  rD   rN   rá  rP   )rQ   s   "rR   rS   r  	  s   € ÷ &ñ & ]ð &°~ñ &rT   c              #  	ó¸   "  € V P                   pWn         VP                  P                  4       P                  4       V n         R x € W n         R #   Y n         i ; i5irw   )ræ  rÃ  r�  Ú
get_boundsr"  )rp   r‡  Úpriors   && rR   Úset_current_nodeÚKernel.set_current_node	  sH   é € à×!Ñ!ˆØ ÔØ"Ÿj™j×/Ñ/Ó1×<Ñ<Ó>ˆÔð	&Ûà %Öø Õüs   ‚A AÁA ÁAÁAÁAc               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   Úlbr'   ÚcbzIndentedBuffer | NoneÚsbrN   rá  rP   )rQ   s   "rR   rS   r  	  s8   € ÷ Qñ QàðQð "ðQð "ð	Qð
 
ñQrT   c              #  	óÚ  "  € Vf   TpVR J ;p'       d   \        4       pV P                  pV P                  pV P                  pV P                  pWn        W n        W0n        VP                  4       V n         R x € WPn        W`n        Wpn        W€n        V'       d   V'       d   \        R4      hR # R #   YPn        Y`n        Ypn        Y€n        T'       d   T'       d   \        R4      hi i ; i5i)Nz$unexpected store inside swap_buffers)r'   r  r  r  r  rÇ  rÔ   )	rp   r.  r/  r0  Údisallow_storesr  r  r  r  s	   &&&&     rR   Úswap_buffersÚKernel.swap_buffers	  sÕ   é € ð Š:ØˆBØ  D˜jÐ(ˆ?Ö(ÜÓ!ˆBØ—
‘
ˆØ—,‘,ˆØ—‘ˆØ�h‰hˆØŒ
ØŒØŒØ—?‘?Ó$ˆŒð
	QÛàŒJØ"ŒLØ ŒKØŒHçßÜ(Ð)OÓPÐPñ ñ øð ŒJØ"ŒLØ ŒKØŒHçßÜ(Ð)OÓPÐPð ð üs/   ‚C+•A!C+Á7B2 Á;'C+Â#C+Â2(C(ÃC(Ã(C+c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   Úsrc_coderM   r%  Úkernel_pathrN   rž   rP   )rQ   s   "rR   rS   r  *	  s4   € ÷ ñ ð ðð ð	ð ðð 
ñrT   c                ó   € R# )zÂOverride kernel emission. Return True if overridden, False to use default.

External template handlers (e.g. Helion) can override this method
to implement custom kernel emission to the wrapper.
FrP   )rp   r  r6  r%  Únode_scheduler7  Úget_kernel_metadatas   &&&&&&&rR   Úemit_kernel_overrideÚKernel.emit_kernel_override*	  s   € ñ rT   c               ó$   € V ^8„  d   QhRRRRRR/# ©rK   rm   rM   r  rµ   rN   rl  rP   )rQ   s   "rR   rS   r  :	  s!   € ÷ "ñ "˜ð " Zð "°Kñ "rT   c                	ó   € \         hrw   rK  r±  s   &&&rR   rC  ÚKernel.load:	  rO  rT   c               ó$   € V ^8„  d   QhRRRRRR/# r>  rP   )rQ   s   "rR   rS   r  =	  s!   € ÷ ñ  #ð ¨jð ¸[ñ rT   c                ó‚   € V P                   p V P                  V n         V P                  W4      W0n         #   Y0n         i ; i)z,A load that depends on an index we have read)r  r  rC  )rp   rm   r  r*  s   &&& rR   Úindirect_loadÚKernel.indirect_load=	  s2   € à—
‘
ˆð	àŸ™ˆDŒJØ—9‘9˜TÓ)à�Jø˜�Jús   Ž!6 ¶>c               ó(   € V ^8„  d   QhRRRRRRRR/# ©	rK   rm   rM   r  rµ   ro   rl  rN   rO   rP   )rQ   s   "rR   rS   r  G	  s)   € ÷ "ñ " Cð "°
ð "À;ð "ÐSWñ "rT   c                	ó   € \         hrw   rK  rÂ  s   &&&&rR   rE  ÚKernel.store_reductionG	  rO  rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# ©rK   rm   rM   r  rµ   ro   rl  rd   r4   rN   rO   rP   )rQ   s   "rR   rS   r  J	  s4   € ÷ "ñ "Øð"Ø *ð"Ø3>ð"ØFOð"à	ñ"rT   c                	ó   € \         hrw   rK  rµ  s   &&&&&rR   rD  ÚKernel.storeJ	  ó
   € ô "Ð!rT   c               ó$   € V ^8„  d   QhRRRRRR/# r¸  rP   )rQ   s   "rR   rS   r  O	  r¹  rT   c                	óD   € \        \        V 4      P                   R 24      hr»  r«  r¼  s   &&&rR   r½  ÚKernel.device_assert_asyncO	  r¿  rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# ©	rK   r¾   r½   rÅ  rÆ  r3   ro   z%CSEVariable | tuple[CSEVariable, ...]rN   rP   )rQ   s   "rR   rS   r  T	  s<   € ÷ "ñ "àð"ð ð"ð &ð	"ð
 5ð"ð 
/ñ"rT   c                	ó   € \         hrw   rK  rÈ  s   &&&&&rR   r7  ÚKernel.reductionT	  ó
   € ô "Ð!rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )rK   rm   rM   rÆ  r3   ro   rl  Ú
extra_metaúdict[str, Any]rN   rO   rP   )rQ   s   "rR   rS   r  ]	  s<   € ÷ "ñ "àð"ð &ð"ð ð	"ð
 #ð"ð 
ñ"rT   c                	ó   € \         hrw   rK  )rp   rm   rÆ  ro   rW  s   &&&&&rR   Úpartial_accumulateÚKernel.partial_accumulate]	  rU  rT   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©rK   rË  rÌ  rÍ  zUCallable[[tuple[CSEVariable, ...], tuple[CSEVariable, ...]], tuple[CSEVariable, ...]]rÎ  útuple[CSEVariable, ...]rN   rP   )rQ   s   "rR   rS   r  f	  s2   € ÷ "ñ "à'ð"ð
ð"ð (ð"ð 
!ñ"rT   c                	ó   € \         hrw   rK  rÑ  s   &&&&rR   rÒ  ÚKernel.scanf	  s
   € ô "Ð!rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# ©	rK   rË  rÌ  rÎ  r^  rÕ  rž   rÖ  rN   rP   )rQ   s   "rR   rS   r  p	  s<   € ÷ "ñ "à'ð"ð (ð"ð ð	"ð
 ð"ð 
!ñ"rT   c                	ó   € \         hrw   rK  rØ  s   &&&&&rR   rÙ  ÚKernel.sortp	  rU  rT   c               ó   € V ^8„  d   QhRR/# )rK   rN   zdict[sympy.Symbol, sympy.Expr]rP   )rQ   s   "rR   rS   r  y	  s   € ÷ "ñ "Ð:ñ "rT   c                	ó   € \         hrw   rK  rx   s   &rR   Ú
var_rangesÚKernel.var_rangesy	  rO  rT   c               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# ©rK   rÎ  rl  rÜ  rÝ  rÞ  rß  r½   rà  rž   rá  râ  rã  zCSEVariable | NonerN   rP   )rQ   s   "rR   rS   r  |	  s[   € ÷ "ñ "àð"ð Cð"ð &ð	"ð
 $ð"ð ð"ð .ð"ð +ð"ð 
ñ"rT   c                ó   € \         h)z#
See [Note: Inductor bucketize op]
rK  rå  s   &&&&&&&&rR   ræ  ÚKernel.bucketize|	  s
   € ô "Ð!rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   r  Œ	  r�  rT   c                	ó   € \         hrw   rK  rx   s   &rR   Úassert_functionÚKernel.assert_function‹	  s   € ä!Ð!rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
rK   rS  zCSEVariable | strr¨  r)  r©  ÚmaskzCSEVariable | str | NonerN   rM   rP   )rQ   s   "rR   rS   r  �	  sC   € ÷  Vñ  Vàð Vð ð Vð ð	 Vð
 'ð Vð 
ñ VrT   c           	     	óX  € \        V\        4      '       d   \        V4      p\        V\        4      '       g   \        \	        V4      4      hVe.   \        V\        4      '       g   \        R\	        V4       24      hVe.   \        V\        4      '       g   \        R\	        V4       24      hV'       d#   V'       d   RV RV RV RV R2	pV RV RV 2pM.V'       d   V RV 2pTpMV'       g   \        R4      hV RV 2pTpV'       d
   RV R	V R2pV P
                   RV R
V R2# )Nz&expected lower to be None or str, got z&expected upper to be None or str, got rÙ  z <= ru  z < r–   zexpected upper to be setz) | ~(z, "index out of bounds: z"))r·  rl  rM   rÔ   rc  ro  )rp   rS  r¨  r©  rr  rV  Ú
cond_prints   &&&&&  rR   Úindirect_assertÚKernel.indirect_assert�	  s8  € ô �cœ;×'Ò'Ü�c“(ˆCÜ˜#œs×#Ò#Ü ¤ c£Ó+Ð+Ø’¤¨E´3×!7Ò!7Ü Ð#IÌ$ÈuË+ÈÐ!WÓXÐXØ’¤¨E´3×!7Ò!7Ü Ð#IÌ$ÈuË+ÈÐ!WÓXÐXß—Uð �u�g˜T #  e¨C¨5°°E°7¸!Ð<ˆDØ!˜7 $ s e¨3¨u¨gÐ6‰JßØ�W˜D  Ð&ˆDØ‰JçÜ$Ð%?Ó@Ð@Ø�U˜#˜e˜WÐ%ˆDØˆJçØ�t�f˜F 4 &¨Ð*ˆDà×&Ñ&Ð' q¨¨Ð.FÀzÀlÐRTÐUÐUrT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# r§  rP   )rQ   s   "rR   rS   r  ±	  s4   € ÷ "ñ "Øð"Ø&0ð"Ø9=ð"ØFJð"à	ñ"rT   c                	ó   € \         hrw   rK  r¬  s   &&&&&rR   r­  ÚKernel.check_bounds±	  rM  rT   c               ó    € V ^8„  d   QhRRRR/# )rK   r  rµ   rN   rM   rP   )rQ   s   "rR   rS   r  ¶	  s   € ÷ "ñ " *ð "°ñ "rT   c                	ó   € \         hrw   rK  rÿ  s   &&rR   Úindex_to_strÚKernel.index_to_str¶	  rO  rT   c               ó   € V ^8„  d   QhRR/# rÀ  rP   )rQ   s   "rR   rS   r  ¹	  s   € ÷ ñ ˜4ñ rT   c           	     	óH  <€ \         SV `  4        V P                  '       g   \        R 4      hV P                  P                  \        P                  ! \        W P                  4       4      4      4       V P                  P                  \        P                  ! V 4      4       V # )zexpected overrides to be set)
rÏ  r  r  rÔ   rþ  Úenter_contextr5   Úset_ops_handlerÚCSEProxyÚset_kernel_handlerrÿ  s   &€rR   r  ÚKernel.__enter__¹	  ss   ø€ Ü‰ÑÔØ�~�~ˆ~Ü Ð!?Ó@Ð@Ø�‰×%Ñ%Ü×Òœh t¯^©^Ó-=Ó>Ó?ô	
ð 	�‰×%Ñ%¤a×&:Ò&:¸4Ó&@ÔAØˆrT   c               ó(   € V ^8„  d   QhRRRRRRRR/# r  rP   )rQ   s   "rR   rS   r  Ã	  s(   € ÷ 4ñ 4 ð 4¨sð 4¸Cð 4ÀDñ 4rT   c                	óH   <€ V P                  4        \        SV `	  WV4       R # rw   )Úremove_kernel_local_buffersrÏ  r  )rp   r  r  r	  rÑ  s   &&&&€rR   r  ÚKernel.__exit__Ã	  s   ø€ Ø×(Ñ(Ô*Ü‰Ñ˜¨FÖ3rT   c               ó   € V ^8„  d   QhRR/# ra   rP   )rQ   s   "rR   rS   r  Ç	  s   € ÷ &)ñ &)¨Tñ &)rT   c                ó†  aa€ \         P                  P                  oS'       g   R# \        V3R lV P                   4       4      p\        4       oV P                   Ft  pW P
                  9  g   K  W P                  P                  9  g   K1  SP                  W!4      '       g   KJ  V ;P                  ^,          un	        SP                  V4       Kv  	  S Fç  pW P                  P                  9   dº   V P                  P                  V,          p\        V\        4      '       d   KR  \        ;QJ d)    V3R lVP                   4       F  '       d   K   RM	  RM! V3R lVP                   4       4      pV'       d   V P!                  V4       V P"                  P                  V4       KÖ  V P%                  V4       Ké  	  R# )z¬
Any buffers that are both created and have a last use in the
same kernel can be removed.

Note that V.graph.scheduler can be None when codegening triton template
kernels.
Nc              3  óŒ   <"  € T F9  pVSP                   9   g   K  SP                   V,          P                  4       x € K;  	  R # 5irw   )Úname_to_bufÚdefining_op_name)ri  r/  rÂ  s   & €rR   rk  Ú5Kernel.remove_kernel_local_buffers.<locals>.<genexpr>Ò	  s?   øé € ð &
á.�Ø�i×+Ñ+Ñ+ô :ˆI×!Ñ! #Õ&×7Ñ7×9Ð9Û.ùs
   ƒA›)Ac              3  ó,   <"  € T F	  qS9   x € K  	  R # 5irw   rP   )ri  r�  Únames_to_removes   & €rR   rk  rŽ  è	  s   øé € ÐK¹?°a /Ö1»?ùs   ƒFT)r5   rÄ   rÂ  r   r  r  r|   r  Ú$can_buffer_be_removed_through_fusionr  r  r  r·  rû  r•  rñ  Úremove_inplace_bufferrÉ  Úremove_buffer)rp   Úfused_node_namesrm   r/  rl   r�  rÂ  s   &    @@rR   r‡  Ú"Kernel.remove_kernel_local_buffersÇ	  s<  ù€ ô —G‘G×%Ñ%ˆ	ßÙÜ%ô &
à×.Ò.ó&
ó 
Ðô
 ,6«<ˆØ×+Ô+ˆDà×2Ñ2Ö2Ø§	¡	× 7Ñ 7Ö7Ø×BÑBØ÷ô ð —’ !Õ#•Ø×#Ñ# DÖ)ñ ,ó $ˆDØ—y‘y×0Ñ0Ô0Ø—i‘i×/Ñ/°Õ5�Ü˜c¤:×.Ò.Ùß›ÔK¸3¿?º?ÓKŸŸšÔK¸3¿?º?ÓKÓK�ßØ×.Ñ.¨tÔ4Ø×'Ñ'×+Ñ+¨DÖ1à×"Ñ" 4Ö(ó $rT   c               ó    € V ^8„  d   QhRRRR/# ©rK   rm   rM   rN   rO   rP   )rQ   s   "rR   rS   r  ï	  s   € ÷ 'ñ ' #ð '¨$ñ 'rT   c                	ó¢   € \         P                  R V4       \        V P                  P                  V&   V P
                  P                  V4       R# )zremove_buffer(%r)N)r  rZ   r   r|   r  rÈ  r  rL  s   &&rR   r“  ÚKernel.remove_bufferï	  s;   € ô 	�	‰	Ð% tÔ,Ü)0ˆ�	‰	× Ñ  Ñ&Ø×Ñ× Ñ  Ö&rT   c               ó    € V ^8„  d   QhRRRR/# r—  rP   )rQ   s   "rR   rS   r  ÷	  s   € ÷ 'ñ '¨#ð '°$ñ 'rT   c                	ó¢   € \         P                  R V4       \        V P                  P                  V&   V P
                  P                  V4       R# )zremoving_inplace_buffer(%r)N)r  rZ   r   r|   r  rÈ  r  rL  s   &&rR   r’  ÚKernel.remove_inplace_buffer÷	  s9   € Ü�	‰	Ð/°Ô6Ü*1ˆ�	‰	×!Ñ! $Ñ'Ø×Ñ× Ñ  Ö&rT   c               ó    € V ^8„  d   QhRRRR/# )rK   r  z6list[sympy.Expr] | tuple[sympy.Expr, ...] | sympy.ExprrN   rµ   rP   )rQ   s   "rR   rS   r  ü	  s   € ÷ /ñ /ØKð/à	ñ/rT   c           
     	ó  € \        V\        \        34      '       d!   V Uu. uF  q P                  V4      NK  	  up# \        P
                  P                  P                  V4      p\        VP                  R  R7      pV Uu/ uFn  p\        V\        P                  \        P                  \        P                  \        P                  34      '       g   KS  W P                   P#                  V4      bKp  	  pp\%        W4      # u upi u upi )c                ó   € V P                   # rw   rÊ  )Úss   &rR   rü  Ú(Kernel.rename_indexing.<locals>.<lambda>
  s   € À!Ç&Â&rT   )r�  )r·  ÚlistÚtupleÚrename_indexingr5   rÄ   rÍ  rÈ  ÚsortedÚfree_symbolsr   r   ÚUNBACKED_INTÚSIZEÚPRECOMPUTED_SIZErl  r|   rç   r,   )rp   r  rê  Úsorted_symbolsÚreplacementss   &&   rR   r¤  ÚKernel.rename_indexingü	  sÝ   € ô
 �eœd¤E˜]×+Ò+Ù5:Ó;±U°×(Ñ(¨Ö+±UÑ;Ð;Ü—‘× Ñ ×)Ñ)¨%Ó0ˆÜ × 2Ñ 2Ñ8HÔIˆñ $ó
á#�ÜØä×%Ñ%Ü—I‘IÜ×)Ñ)Ü×'Ñ'ð	÷ô !ˆA�y‰y�~‰~˜aÓ Ò Ù#ð 	ð 
ô ˜%Ó.Ð.ùò! <ùò
s   ¡DÂADÃDc               ó$   € V ^8„  d   QhRRRRRR/# )rK   r|   r	   r5  rN   rl  rP   )rQ   s   "rR   rS   r  
  s!   € ÷ ,ñ , Cð ,°3ð ,¸;ñ ,rT   c                	ó   € \        V/ VB # rw   )rl  )rp   r|   r5  s   &*,rR   rí  ÚKernel.create_cse_var
  s   € Ü˜DÐ+ FÑ+Ð+rT   c               ó    € V ^8„  d   QhRRRR/# )rK   r‡  r?   rN   r)  rP   )rQ   s   "rR   rS   r  
  s   € ÷ 3ñ 3˜Vð 3¨
ñ 3rT   c                ó`   € Vf   R# V P                   P                  VP                  4       4      # )z3
Returns arg name of a given input or output node.
N)r|   r[  rª   )rp   r‡  s   &&rR   r[  ÚKernel.arg_name
  s'   € ð Š<ÙØ�y‰y×!Ñ! $§-¡-£/Ó2Ð2rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )rK   rm   rM   r|   útuple[Any, ...]r5  rX  r	  r	   rN   rO   rP   )rQ   s   "rR   rS   r  
  s<   € ÷ ñ àðð ðð ð	ð
 ðð 
ñrT   c                	ó   € R # rw   rP   )rp   rm   r|   r5  r	  s   &&&&&rR   Úrecord_op_traceÚKernel.record_op_trace
  s   € ñ 	rT   )r   r!  r|   r  r  r  ræ  r#  rÉ  r%  r  r$  r  r"  r  r  r  rÈ  r  r  )NTr  rw   )*r†   r‡   rˆ   r‰   rŠ   r  r‹   re   r  r   rë  rì  r+  r3  r;  rC  rC  rE  rD  r½  r7  rZ  rÒ  rÙ  rg  ræ  rŒ   ro  ru  r­  r|  r  r  r‡  r“  r’  r¤  rí  r[  r¶  r�   rÞ  rß  s   @rR   r  r  Õ  s  ø‡ ÙBà€M�3ÓØ€FˆCÓØ6:€IÐ3Ó:÷#,ò #,ðJ ×Ñô&ó ð&ð ×ÑöQó ðQõ<õ "õõ"÷"õ

õ
"õ"õ"õ"õ"÷"ð ô"ó ð"÷ VõD"õ
"÷ð ÷4ð 4õ&)õP'õ'õ
/õ0,õ3÷õ rT   r  c                  óB   € ] tR tRt$ RtR]R&   RtR]R&   RtR	]R
&   RtR# )rŒ  i)
  r´  zClassVar[str]r�  Nr:  r¾   r*  rM   Úops_namerP   )	r†   r‡   rˆ   r‰   r�  r‹   r¾   r¹  r�   rP   rT   rR   rŒ  rŒ  )
  s!   ‡ à"€CˆÓ"à $€EÐÓ$Ø€Hˆc×rT   rŒ  c               ó   € V ^8„  d   QhRR/# )rK   rN   r	   rP   )rQ   s   "rR   rS   rS   2
  s   € ÷ ñ �Cñ rT   c                 óh   €  ^ RI p V P                  V P                  R7      #   \         d     R# i ; i)r   N)Ú	undefined)Újinja2ÚEnvironmentÚStrictUndefinedÚImportError)r½  s    rR   Ú
jinja2_envrÁ  1
  s?   € ðÛà×!Ñ!Ø×,Ñ,ð "ó 
ð 	
øô ô Úðús   ‚" ¢1°1c                  óÀ   € ] tR tRtRt]RR R ll4       t]R R l4       t]R R l4       tRR
 R llt	]
R R l4       t]
R R l4       tR R ltR R ltR R ltRtR	# )ÚKernelTemplatei=
  z^
Base class for defining kernel templates.

Children classes: TritonTemplate, CUTLASSTemplate
c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   ÚsourcerM   Únum_indentsr  Úindents_spacingrN   rP   )rQ   s   "rR   rS   ÚKernelTemplate.__annotate__E
  s,   € ÷ ñ ØðØ"%ðØ8;ðà	ñrT   c                	óÒ   € V P                  R 4      p\        V4      ^8”  d2   VR,           Uu. uF  pRV,          V,          V,           NK  	  upVR&   RP                  V4      # u upi )Trb  rk  r*  )Ú
splitlinesrp  rÐ   )rÅ  rÆ  rÇ  ÚlinesrÏ  s   &&&  rR   Úindent_except_firstÚ"KernelTemplate.indent_except_firstD
  sg   € ð ×!Ñ! $Ó'ˆÜˆu‹:˜Œ>àINÈrÎóÙIRÀ��Õ&¨Õ4¸×<Ð<ÉñˆE�"‰Ið �w‰w�u‹~Ðùòs   ­ A$c               ó    € V ^8„  d   QhRRRR/# )rK   rÅ  rM   rN   r	   rP   )rQ   s   "rR   rS   rÈ  P
  s   € ÷ *8ñ *8 cð *8¨cñ *8rT   c                	óÒ   € \        4       pVf   R # \        P                  VP                  R&   ^ RIHp  VP                  V 4      #   T d   p ! R RT4      pT! T4      ThR p?ii ; i)NrÌ  )ÚTemplateSyntaxErrorc                  ó:   a € ] tR tRtR V 3R lltR R ltRtV ;t# )ÚIKernelTemplate._template_from_string.<locals>.DetailedTemplateSyntaxErrori[
  c               ó    € V ^8„  d   QhRRRR/# )rK   Úoriginal_errorrÐ  rN   rO   rP   )rQ   s   "rR   rS   ÚVKernelTemplate._template_from_string.<locals>.DetailedTemplateSyntaxError.__annotate__\
  s   € ÷ 9ñ 9Ð3Fð 9È4ñ 9rT   c                	óˆ   <€ \         SV `  VP                  VP                  VP                  VP
                  4       Wn        R # rw   )rÏ  r   ÚmessageÚlinenorm   ÚfilenamerÔ  )rp   rÔ  rÑ  s   &&€rR   r   ÚRKernelTemplate._template_from_string.<locals>.DetailedTemplateSyntaxError.__init__\
  s<   ø€ Ü‘GÑ$Ø&×.Ñ.Ø&×-Ñ-Ø&×+Ñ+Ø&×/Ñ/ô	ð +9Ö'rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rÕ  e
  s   € ÷ &ñ & Sñ &rT   c                	óà  € R V P                    R2pVRV P                   R2,          p\        V P                  R4      '       Ed*   V P                  P                  P                  R4      pVR,          p\        ^ V P                   ^,
          4      p\        \        V4      V P                   ^,           4      p\        W44       F©  pWPP                   ^,
          8X  du   W^,            RW%,           R2,          p\        V P                  R4      '       d<   VRRV P                  P                  ^,
          ,          ,           R	,           ,          pKŒ  KŽ  W^,            R
W%,           R2,          pK«  	  V# )zError in template at line Ú
zError message: rÅ  z	Context:
z: --> Úcolumnz     rk  z^
z:     )rØ  r×  rO  rÔ  rÅ  ÚsplitÚmaxÚminrp  ræ  rÞ  )rp   Ú
error_inforË  ÚstartÚendrd  s   &     rR   r  ÚQKernelTemplate._template_from_string.<locals>.DetailedTemplateSyntaxError.__str__e
  s:  € Ø#=¸d¿k¹k¸]È"Ð!M�JØ O°D·L±L°>ÀÐ"DÕD�JÜ˜t×2Ñ2°H×=Ó=Ø $× 3Ñ 3× :Ñ :× @Ñ @ÀÓ F˜Ø" lÕ2˜
Ü # A t§{¡{°Q¥Ó 7˜Ü!¤# e£*¨d¯k©k¸A­oÓ>˜Ü!& uÖ!2˜AØ §K¡K°!¥OÔ3Ø *°Qµ°°v¸e½h¸ZÀrÐ.JÕ J 
Ü#*¨4×+>Ñ+>À×#IÒ#IØ$.Ø(/Ø*-°×1DÑ1D×1KÑ1KÈaÕ1OÕ*Põ)Qà*/õ)0õ%&¢Jñ $Jð !+°Qµ°°v¸e½h¸ZÀrÐ.JÕ J¢
ñ "3ð &Ð%rT   )rÔ  )r†   r‡   rˆ   r‰   r   r  r�   rÞ  rß  s   @rR   ÚDetailedTemplateSyntaxErrorrÒ  [
  s   ø† ÷9ð 9÷&ó &rT   ræ  )rÁ  rÃ  rÌ  Úfiltersr½  rÐ  Úfrom_string)rÅ  ÚenvrÐ  Úeræ  s   &    rR   Ú_template_from_stringÚ$KernelTemplate._template_from_stringO
  sj   € ä‹lˆØŠ;ÙÜ-;×-OÑ-Oˆ�‰Ð)Ñ*Ý.ð#	8Ø—?‘? 6Ó*Ð*øØ"ô !	8ô&Ð.Aô &ñ> .¨aÓ0°aÐ7ûðC!	8ús   µA ÁA&ÁA!Á!A&c               ó    € V ^8„  d   QhRRRR/# )rK   Ú	fake_outszlist[Buffer] | BufferrN   zCallable[[str], torch.dtype]rP   )rQ   s   "rR   rS   rÈ  }
  s   € ÷ ñ Ø(ðà	%ñrT   c                	ó2  aa€ \         P                  P                  o\        V \        \
        34      '       d0   V  Uu/ uF!  qP                  4       VP                  4       bK#  	  upoM V P                  4       V P                  4       /oR  VV3R llpV# u upi )c               ó    € V ^8„  d   QhRRRR/# )rK   rm   rM   rN   r½   rP   )rQ   s   "rR   rS   Ú4KernelTemplate._fake_get_dtype.<locals>.__annotate__†
  s   € ÷ 	)ñ 	)˜Cð 	) Kñ 	)rT   c                óB   <€ SP                  V 4      pVe   V# S! V 4      # rw   )rã  )rm   r	  Ú_get_dtype_realÚlookups   & €€rR   rÞ   Ú1KernelTemplate._fake_get_dtype.<locals>.get_dtype†
  s'   ø€ Ø—Z‘Z Ó%ˆFØÒ!Ø�Ù" 4Ó(Ð(rT   )r5   rÄ   rÞ   r·  r¢  r£  rª   )rî  r/  rÞ   ró  rô  s   &  @@rR   Ú_fake_get_dtypeÚKernelTemplate._fake_get_dtype|
  s|   ù€ ô Ÿ'™'×+Ñ+ˆÜ�i¤$¬ ×/Ò/ÙAJÓKÁ¸#—l‘l“n c§m¡m£oÒ5ÁÑK‰Fà×(Ñ(Ó*¨I×,?Ñ,?Ó,AÐBˆF÷	)ñ 	)ð Ðùò Ls   ½'BNc               ó$   € V ^8„  d   QhRRRRRR/# )rK   rm   rM   r˜  r)  rN   rO   rP   )rQ   s   "rR   rS   rÈ  Ž
  s!   € ÷ ñ ˜Sð ¨
ð ¸dñ rT   c                	ó   € Wn         W n        R # rw   )rm   Ú_hash)rp   rm   r˜  s   &&&rR   r   ÚKernelTemplate.__init__Ž
  s   € ØŒ	ØŽ
rT   c               ó   € V ^8„  d   QhRR/# ru   rP   )rQ   s   "rR   rS   rÈ  “
  s   € ÷ ñ �Sñ rT   c                ó   € V P                   # )zí
entry point to override for templates to ensure a uid e.g. through a prefix

the purpose of this is that every KernelTemplate/ExternKernelChoice is unique
in the system, but reproducible e.g. restarting pytorch should yield the same id
rÊ  rx   s   &rR   ÚuidÚKernelTemplate.uid’
  s   € ð �y‰yÐrT   c               ó   € V ^8„  d   QhRR/# r/  rP   )rQ   s   "rR   rS   rÈ  ž
  s   € ÷ ñ ˜*ñ rT   c                ó   € V P                   # )zó
source hash for a Template.

Templates can optionally provide a src hash to make it easier to cache/validate that
a template has not changed from one version to another. Override this if that detection
is different for your specific Template
)rú  rx   s   &rR   Úsrc_hashÚKernelTemplate.src_hash�
  s   € ð �z‰zÐrT   c               ó    € V ^8„  d   QhRRRR/# )rK   r5  r	   rN   zChoiceCaller | NonerP   )rQ   s   "rR   rS   rÈ  ¨
  s   € ÷ 
ñ 
 sð 
Ð/Bñ 
rT   c                ój   € . pV P                   ! V3/ VB pVf   \        V4      ^8X  d
   V^ ,          # R# )z¬
Maybe generates a new ChoiceCaller and returns it, or None if generation fails.

kwargs: Additional kwargs to be passed to self.generate() to generate a new ChoiceCaller.
N)Úmaybe_append_choicerp  )rp   r5  Útemp_choicesr	  s   &,  rR   Úchoice_or_noneÚKernelTemplate.choice_or_none¨
  s<   € ð #%ˆØ×)Ò)¨,ÑA¸&ÑAˆØŠ>œc ,Ó/°1Ô4Ø •?Ð"ÙrT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   Úchoicesr}   r5  r	   rN   zNotImplementedError | NonerP   )rQ   s   "rR   rS   rÈ  ´
  s$   € ÷ ñ Ø ðØ,/ðà	#ñrT   c                ó  €  VP                  V P                  ! R/ VB 4       R#   \         dR   p\        P	                  RT\        T 4      \        P                  4       \        P                  8  R7       Tu Rp?# Rp?ii ; i)zý
Maybe generates a new ChoiceCaller and appends it into existing choices.
Returns None if success, otherwise returns the error.

choices: A list of ChoiceCallers.
kwargs: Additional kwargs to be passed to self.generate() to generate a new ChoiceCaller.
Nz3Cannot Append Choice: %s. KernelTemplate type is %s)Ú
stack_inforP   )	r.  ré  r˜   r  Úinforc  ÚgetEffectiveLevelrX   ÚINFO)rp   r  r5  rê  s   &&, rR   r  Ú"KernelTemplate.maybe_append_choice´
  sl   € ð
	Ø�N‰N˜4Ÿ=š=Ñ2¨6Ñ2Ô3ÙøÜ"ô 	Ü�H‰HØEØÜ�T“
Ü×0Ñ0Ó2´W·\±\ÑAð	 ô ð �Hûð	ús   ‚!% ¥B°AA<Á6BÁ<Bc               ó    € V ^8„  d   QhRRRR/# )rK   r5  r	   rN   r=   rP   )rQ   s   "rR   rS   rÈ  Ë
  s   € ÷ "ñ " ð "¨ñ "rT   c                ó   € \         h)z=
Generates a ChoiceCaller instance from the given arguments.
rK  )rp   r5  s   &,rR   ré  ÚKernelTemplate.generateË
  s
   € ô
 "Ð!rT   )rú  rm   )é   rw   )r†   r‡   rˆ   r‰   rŠ   r¤   rÌ  rë  rö  r   rŒ   rþ  r  r  r  ré  r�   rP   rT   rR   rÃ  rÃ  =
  s…   † ñð öó ðð ô*8ó ð*8ðX ôó ð÷"ð ôó ðð ôó ðõ
õ÷."ñ "rT   rÃ  c                  óê   a € ] tR tRtRtR tR V 3R lltR R ltR R ltR"R	 R
 llt	R R lt
R R ltR R ltR#R R lltR R ltR R ltR R ltR R ltR R ltR R ltR$R R  lltR!tV ;t# )%r‚  iÓ
  zvA ops handler that proxies calls to `kernel` and its
handler and returns `CSEVariable`s with correct shape and dtype.
c               ó    € V ^8„  d   QhRRRR/# )rK   rP  zKernel[Any]Úparent_handlerzOpsHandler[Any]rP   )rQ   s   "rR   rS   ÚCSEProxy.__annotate__Ú
  s   € ÷ -ñ -˜{ð -¸Oñ -rT   c                	ó`   <€ \         SV `  4        ^RIHp V! 4       V n        Wn        W n        R# )rK   ©ÚValueRangeAnalysisN)rÏ  r   r�  r  Úvr_analysisrP  r  )rp   rP  r  r  rÑ  s   &&& €rR   r   ÚCSEProxy.__init__Ú
  s'   ø€ Ü‰ÑÔÝ/á-Ó/ˆÔØŒØ,ÖrT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )	rK   rm   rM   r|   r´  r5  rX  rN   r	   rP   )rQ   s   "rR   rS   r  â
  s/   € ÷ Zñ Z˜Sð Z¨ð ZÀð ZÐTWñ ZrT   c           	     	óÜ  aaaaaaaa€ V P                   ! S.SO5/ SB o\        V P                  S4      ! S/ SB p\        4       p\	        4       p\        4       o\        VS4      pR oR oSR8X  d!   SR8X  d   VP                  oVP                  oM€SR8X  dW   SR8X  dP   \        P                  P                  P                  P                  \        P                  R 4      P                  oR oM#SR9   d   \        VS4      pV! S/ SB oV! S/ SB oSR9   d   Sf   \        R4      h^ oR VVVVVVVV3R llp	\         P"                  ! W”4      p
V P$                  P'                  SSSV
4       V
# )	NÚmaskedr÷  rõ  z$expected output_dtype to be not Nonec               ó    € V ^8„  d   QhRRRR/# )rK   rƒ  zstr | CSEVariablerN   rl  rP   )rQ   s   "rR   rS   Ú'CSEProxy._default.<locals>.__annotate__  s   € ÷ 4	ñ 4	Ð'ð 4	¨Kñ 4	rT   c                ó„  <€ \        S
\        \        34      '       d
   S
S,          MS
p\        S\        \        34      '       d=   \        S4      ^ 8”  d-   \        S^ ,          \        \        34      '       d
   SS,          MSpS^,          o\        V \        4      '       d0   SR8X  d   V P
                  f   Wn        V P                  f   W n        \        P                  P                  P                  \        P                  P                  V SS
SR7      pVP                  S	SS4       \        P                  P                  '       g!   \        P                  P                   '       d)   Ve%   \#        \        P                  P                  W14       \        P                  P$                  '       dU   \'        4       '       dE   VP                  e   VP                  MTpVe%   \)        \        P                  P                  W44       \        P*                  '       d%   \-        \        P                  P                  V4       V# )r   rõ  ©r�  r¾   re  )r·  r¢  r£  rp  rl  r¾   re  r5   rP  r  ré  r  r¢  r   rZ  r[  r]  rc  ro  rQ  rr  Úruntime_triton_nan_assertsrv  )rƒ  Ú	var_dtypeÚ	var_shapeÚcsevarÚshape_to_checkr|   r`  r�  r5  rm   r®  Ú
output_idxÚoutput_shapes   &    €€€€€€€€rR   Údo_cseÚ!CSEProxy._default.<locals>.do_cse  s¨  ø€ ô
 ˜l¬T´5¨M×:Ò:ð ˜ZÖ(à!ð ô ˜l¬T´5¨M×:Ò:Ü˜Ó%¨Ô)Ü˜|¨A�´´u°×>Ò>ð ˜ZÖ(ð "ð ð ˜!�OˆJô ˜!œ[×)Ò)Ø˜eÔ#¨¯©ªØ'”GØ—7‘7’?Ø'”Gä—X‘X—\‘\×*Ñ*Ü—‘× Ñ ØØà"Ø"ð +ó ˆFð ×!Ñ! $¨¨fÔ5ô ×#Ñ#×?×?Ð?Ü×&Ñ&×>×>Ð>ØÒ'ÜœAŸH™H×,Ñ,¨fÔ@ô ×#Ñ#×?×?Ð?Ü4×6Ò6à17·±Ò1I §¢Èy�Ø!Ò-Ü¤§¡× 0Ñ 0°&ÔIä×0×0Ð0Üœ!Ÿ(™(×*Ñ*¨FÔ3àˆMrT   )r÷  rõ  r  )r÷  rõ  )Ú_bound_variabler  r  r   r"   r&   r¾   re  r5   Úinterpreterræ  rŽ  rã  rŒ  r�  rÔ   ÚpytreeÚtree_maprP  r¶  )rp   rm   r|   r5  ro   Údtype_handlerÚshape_handlerÚshape_opÚdtype_opr-  r	  r`  r�  r®  r+  r,  s   &fff       @@@@@rR   Ú_defaultÚCSEProxy._defaultâ
  s\  ÿ€ Ø×%Ò% dÐ<¨TÒ<°VÑ<ˆä˜×+Ñ+¨TÔ2°DÐC¸FÑCˆÜ2Ó4ˆÜ2Ó4ˆä%Ó'ˆä˜=¨$Ó/ˆØˆØˆà�8Ô ¨8Ô 3Ø Ÿ;™;ˆLØ Ÿ;™;‰LØ�XÔ '¨UÔ"2ÜŸ=™=×5Ñ5×:Ñ:×>Ñ>Ü#×'Ñ'¨óç‰eð ð  ‰LØÐ0Ô0Ü˜}¨dÓ3ˆHÙ# TÐ4¨VÑ4ˆLÙ# TÐ4¨VÑ4ˆLàÐ'Ô'àÒ#Ü$Ð%KÓLÐLàˆ
÷4	÷ 4	ôl —’ Ó/ˆØ�‰×#Ñ# D¨$°¸Ô?ØˆrT   c               ó(   € V ^8„  d   QhRRRRRRRR/# )rK   rm   rM   r|   r	   r5  rN   rŽ  rP   )rQ   s   "rR   rS   r  >  s)   € ÷ .%ñ .% Cð .%°ð .%¸sð .%ÐGWñ .%rT   c                óº  a	€ ^RI Hp ^RIHp ^RIHp \        \        P                  V4      '       d   \        P                  ! 4       # \        \        P                  V4      '       d   \        P                  ! 4       # \        \        P                  \        4      '       d   \        P                  ! 4       # \        P                  P                  o	S	P                  V8X  d¤   V P                  P                  eŒ   \        V P                  P                  \         4      '       g)   \#        \%        V P                  P                  4      4      hV P                  P                  P'                  S	\        P                  ! 4       4      # \(        P*                  '       d®   \-        WA4      '       d�   \.        ;QJ d    V	3R lR
 4       F  '       g   K   RM	  RM! V	3R lR
 4       4      '       d   \        P                  ! 4       # V'       d   \#        R4      hR R	 lp\1        \3        Wr4      4      p\5        V P6                  V4      ! V!  # \        P                  ! 4       # )z¦
If the variable comes from an FX node, we forward the bound we have already computed
Else, if the variable when codegen'ing another op, we try to compute its bounds
r  )ÚTritonTemplateKernel)ÚCUTLASSTemplateKernelc              3  ó@   <"  € T F  qSP                   9   x € K  	  R # 5irw   )r   )ri  r   Úfx_nodes   & €rR   rk  Ú+CSEProxy._bound_variable.<locals>.<genexpr>X  s   øé € ÐVÑ0U¨1˜Ÿ™Ö&Ó0Uùs   ƒTFzexpected no kwargsc               ó    € V ^8„  d   QhRRRR/# )rK   rê  r	   rN   rP   )rQ   s   "rR   rS   Ú.CSEProxy._bound_variable.<locals>.__annotate__b  s   € ÷ ñ  ð ¨ñ rT   c                ó    € \        V \        4      '       d   V P                  # \        V \        P                  4      '       d   \        V 4      # V # rw   )r·  rl  r�  rñ   rÎ  r   rî  s   &rR   Úarg_to_boundÚ.CSEProxy._bound_variable.<locals>.arg_to_boundb  s8   € Ü˜a¤×-Ò-ØŸ8™8�OÜ ¤5§:¡:×.Ò.Ü& q›>Ð)à�HrT   )Úset_indirectr7  rÒ  )r�  r  Úselect_algorithmr;  Úcutlass.kernelr<  r·  r5   rP  r   r÷  r0  r/   ræ  r   r"  ÚdictrÔ   rc  rã  r   Úcompute_all_boundsrO  rÇ  r¢  r  r  r  )
rp   rm   r|   r5  r  r;  r<  rC  Ú
arg_boundsr>  s
   &&*,     @rR   r/  ÚCSEProxy._bound_variable>  sŠ  ø€ õ
 	0Ý;Ý9ä”a—h‘hÐ 4×5Ò5Ü×&Ò&Ó(Ð(ä”a—h‘hÐ 5×6Ò6Ü×&Ò&Ó(Ð(ä”a—m‘m¤[×1Ò1Ü×&Ò&Ó(Ð(ä—-‘-×,Ñ,ˆØ�>‰>˜TÔ! d§k¡k×&@Ñ&@Ò&LÜ˜dŸk™k×8Ñ8¼$×?Ò?Ü$¤T¨$¯+©+×*DÑ*DÓ%EÓFÐFØ—;‘;×-Ñ-×1Ñ1°'¼;×;NÒ;NÓ;PÓQÐQÜ×&×&Ð&¬7Ð3E×+LÒ+L÷ ‹sÔVÑ0UÓV�s�sŠsÔVÑ0UÓV×VÒVÜ"×*Ò*Ó,Ð,÷ Ü$Ð%9Ó:Ð:õô œc ,Ó5Ó6ˆJÜ˜4×+Ñ+¨TÔ2°JÑ?Ð?Ü×"Ò"Ó$Ð$rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
rK   rS  rl  rç   rŸ  r   rž   r¡  rN   r¢  rP   )rQ   s   "rR   rS   r  n  s<   € ÷ <ñ <àð<ð ð<ð ð	<ð
 ð<ð 
ñ<rT   c                	ó  € \        V\        4      '       d   \        P                  ! V4      p\        V\        P                  4      '       g   \        \        V4      V34      hVP                  P                  ^ 8  Edê   V'       d…   \        P                  ! V\        P                  ! V\        P                  4      4      pVP                  P                  ^ 8¼  d/   \        P                  ! V^ 4      p\        P                   ! WeV4      pMTpV'       g   VP                  M\"        P$                  ! 4       pV'       dÙ   VP                  \"        P$                  ! 4       8w  dµ   \        V\        P&                  4      '       d•   VP                  \#        \(        ) R4      ,          p\#        VP                  V,           VP                  V,           4      pVP                  P                  ^ 8¼  d*   VP                  \#        ^ \(        4      ,          p	Wy,          pV P*                  P,                  P/                  V P*                  P0                  VVVP2                  VP4                  R7      pV P6                  P9                  WV4      p
\;        V4      '       dx   VP                  P                  ^ 8¼  * p\        V\        P&                  4      '       * ;'       g    VP                  P                  V8  * pV P*                  P=                  W¢W¼4       V
# )r   r%  r=  )r·  r  rñ   rœ  rÎ  rÔ   rc  r�  r¨  r0   r  r;  r  Úlongr©  ÚltrT  r   r÷  ÚNumberr   rP  r  ré  r  r¾   re  r  r¤  r%   r­  )rp   rS  rç   r   r¡  ÚstmrO  Ú
new_boundsÚ
neg_boundsÚposÚ	sympy_varÚassert_lowerÚassert_uppers   &&&&&        rR   r¤  ÚCSEProxy.indirect_indexingn  s&  € ô �dœC× Ò Ü—=’= Ó&ˆDÜ˜$¤§
¡
×+Ò+Ü ¤$ t£*¨dÐ!3Ó4Ð4ð �:‰:×Ñ˜aÕßÜ—g’g˜c¤3§>¢>°$¼¿
¹
Ó#CÓD�à—:‘:×#Ñ# qÔ(ÜŸš  Q›�BÜŸ)š) B¨SÓ1�Cøà�÷
 ,4˜Ÿš¼×9LÒ9LÓ9NˆJçØ—J‘J¤+×"5Ò"5Ó"7Ô7Ü˜t¤U§\¡\×2Ò2ð
 !ŸZ™Z¬+´v°g¸rÓ*BÕB�
Ü(Ø×$Ñ$ tÕ+¨Z×-=Ñ-=ÀÕ-Dó�
ð —:‘:×#Ñ# qÔ(ØŸ*™*¤{°1´fÓ'=Õ=�CØ!+Õ!1�Jà—+‘+—/‘/×*Ñ*Ø—‘×#Ñ#ØØ!Ø—i‘iØ—i‘ið +ó ˆCð ×'Ñ'×9Ñ9¸#ÀUÓKˆ	Ü˜5×!Ò!Ø #§
¡
× 0Ñ 0°AÒ6ˆLä)¨$´·±Ó=Ô=÷ ð Ø—
‘
× Ñ  4òBˆLð �K‰K×$Ñ$ Y°lÔQØÐrT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# r§  rP   )rQ   s   "rR   rS   r  ¬  s;   € ÷ Bñ BØðBØ&0ðBØ9=ðBØFJðBà	ñBrT   c                	ó:   € V P                   P                  WW44      # rw   )rP  r­  r¬  s   &&&&&rR   r­  ÚCSEProxy.check_bounds¬  s   € ð �{‰{×'Ñ'¨°EÓAÐArT   c               ó$   € V ^8„  d   QhRRRRRR/# r>  rP   )rQ   s   "rR   rS   r  ±  s!   € ÷ ñ ˜ð  Zð °Kñ rT   c                	óN  € WP                   P                  P                  9   d*   \        P                   P                  P                  V4       \        V\        P                  4      '       d   V P                   P                  W4      # V P                   P                  P                  pW9   d	   W1,          # V P                   P                  W4      pVP                  ^8X  d$   V P                   ;P                  ^,          un        V P                   P                  RW3/ V4       V# )rú  rC  )rP  r  r·  r5   r  r  r   r   ÚTMPrC  r¯  rC  r‘  r  r¶  )rp   rm   r  r¯  Úouts   &&&  rR   rC  ÚCSEProxy.load±  sÎ   € Ø—;‘;—?‘?×5Ñ5Ô5ô �H‰H×&Ñ&×*Ñ*¨4Ô0Ü˜u¤d§h¡h×/Ò/Ø—;‘;×,Ñ,¨TÓ9Ð9Ø—k‘k—o‘o×1Ñ1ˆØÔØÕ$Ð$Ø�k‰k×Ñ˜tÓ+ˆð �=‰=˜AÔØ�K‰K× Ò  AÕ%Õ Ø�‰×#Ñ# F¨T¨M¸2¸sÔCØˆ
rT   c               ó$   € V ^8„  d   QhRRRRRR/# )rK   rm   rM   ro   rl  rN   rO   rP   )rQ   s   "rR   rS   r  Ã  s&   € ÷ @ñ @¨ð @°Kð @ÀDñ @rT   c                	ó„  € W P                   P                  P                  V&   V P                   P                  '       d‚   V\        P
                  P                  9   da   V P                   P                  P                  V4      pVP                  4        F%  pW P                   P                  P                  V&   K'  	  R # R # R # rw   )	rP  r  r¯  ræ  r5   rÄ   Úname_to_bufferÚ
get_outputÚget_mutations)rp   rm   ro   r/  Ú
other_names   &&&  rR   Ú_update_store_cacheÚCSEProxy._update_store_cacheÃ  s…   € Ø,1�‰�‰×#Ñ# DÑ)Ø�;‰;×#×#Ð#¨´·±×0FÑ0FÔ(FØ—+‘+×*Ñ*×5Ñ5°dÓ;ˆCØ!×/Ñ/Ö1�
Ø:?—‘—‘×+Ñ+¨JÓ7ó 2ñ )GÑ#rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# rJ  rP   )rQ   s   "rR   rS   r  Ê  s;   € ÷ 
Mñ 
MØð
MØ *ð
MØ3>ð
MØFOð
Mà	ñ
MrT   c                	ó|  € V P                   P                  P                  V4       VR 8w  d   V P                  W4       V\        P
                  P                  9  dA   V P                   P                  WW4R7       V P                   ;P                  ^,          un        V P                   P                  RWW43/ 4       R# )Ú
atomic_add)rd   rD  N)
rP  r  r  rg  r5   rÄ   rÈ  rD  r  r¶  rµ  s   &&&&&rR   rD  ÚCSEProxy.storeÊ  s‹   € ð 	�‰×&Ñ&×*Ñ*¨4Ô0à�<ÔØ×$Ñ$ TÔ1Ø”q—w‘w×.Ñ.Ô.Ø�K‰K×Ñ˜d¨5ÐÔ<Ø�K‰K×!Ò! QÕ&Õ!Ø�‰×#Ñ# G¨d¸5Ð-GÈÖLrT   c               ó$   € V ^8„  d   QhRRRRRR/# r¸  rP   )rQ   s   "rR   rS   r  Ö  s&   € ÷ Lñ L¨ð L¸#ð LÀ$ñ LrT   c                	óx   € V P                   P                  W4       V P                   P                  R W3/ 4       R# )r½  N)rP  r½  r¶  r¼  s   &&&rR   r½  ÚCSEProxy.device_assert_asyncÖ  s-   € Ø�‰×'Ñ'¨Ô2Ø�‰×#Ñ#Ð$9¸D¸;ÈÖKrT   c               ó    € V ^8„  d   QhRRRR/# )rK   r|   r	   rN   rO   rP   )rQ   s   "rR   rS   r  Û  s   € ÷ .ñ .¨ð .°ñ .rT   c                	ó:   € V P                   P                  ! V!   R # rw   )rP  rZ  r   s   &*rR   rZ  ÚCSEProxy.partial_accumulateÛ  s   € Ø�‰×&Ò&¨Ô-rT   c               ó(   € V ^8„  d   QhRRRRRRRR/# rF  rP   )rQ   s   "rR   rS   r  Þ  s/   € ÷ Cñ C Cð C°
ð CÀ;ð CÐSWñ CrT   c                	ó.  € V P                   P                  P                  V4       V P                  W4       V\        P
                  P                  9  d@   V P                   ;P                  ^,          un        V P                   P                  WV4      # R# rI  )	rP  r  r  rg  r5   rÄ   rÈ  r  rE  rÂ  s   &&&&rR   rE  ÚCSEProxy.store_reductionÞ  sk   € Ø�‰×&Ñ&×*Ñ*¨4Ô0Ø× Ñ  Ô-à”q—w‘w×.Ñ.Ô.Ø�K‰K×!Ò! QÕ&Õ!Ø—;‘;×.Ñ.¨t¸EÓBÐBñ /rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# rR  rP   )rQ   s   "rR   rS   r  æ  sC   € ÷ Nñ NàðNð ðNð &ð	Nð
 5ðNð 
/ñNrT   c                	ó€   € V P                   ;P                  ^,          un        V P                   P                  WW44      # rù  )rP  r  r7  rÈ  s   &&&&&rR   r7  ÚCSEProxy.reductionæ  s0   € ð 	�‰×!Ò! QÕ&Õ!Ø�{‰{×$Ñ$ U°~ÓMÐMrT   c               ó(   € V ^8„  d   QhRRRRRRRR/# r]  rP   )rQ   s   "rR   rS   r  ð  s2   € ÷ 	<ñ 	<à'ð	<ð
ð	<ð (ð	<ð 
!ñ	<rT   c                	ó:   € V P                   P                  WV4      # rw   )rP  rÒ  rÑ  s   &&&&rR   rÒ  ÚCSEProxy.scanð  s   € ð �{‰{×Ñ °FÓ;Ð;rT   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# rb  rP   )rQ   s   "rR   rS   r  û  sC   € ÷ Dñ Dà'ðDð (ðDð ð	Dð
 ðDð 
!ñDrT   c                	ó:   € V P                   P                  WW44      # rw   )rP  rÙ  rØ  s   &&&&&rR   rÙ  ÚCSEProxy.sortû  s   € ð �{‰{×Ñ °ÓCÐCrT   c               ó8   € V ^8„  d   QhRRRRRRRRRR	R
RRRRR/# rj  rP   )rQ   s   "rR   rS   r    se   € ÷ N
ñ N
àðN
ð CðN
ð &ð	N
ð
 $ðN
ð ðN
ð .ðN
ð +ðN
ð 
ñN
rT   c           	     óD   € V P                   P                  VVVVVVV4      # )a
  
[Note: Inductor bucketize op]

Inputs:
-------
values: the values to be bucketized.
boundaries: a tuple containing
  (a) the name of the boundaries tensor (which must be sorted, unless
  the sorting tensor is present),
  (b) the length of the tensor in the last dimension (i.e. the length of
  one set of boundaries),
  (c) the number of elements in the underlying storage (i.e. the length
  of the flattened tensor, ignoring striding), and
  (d) the stride of the tensor in the last dimension.
boundary_indices: indices into a flattened version of the boundaries
tensor, of the same size and shape as "values".  Each index points to
the first element in the set of boundaries to be used for the
corresponding value.
indexing_dtype: the dtype to use when indexing into the boundaries
tensor.  This must be int64 or int32.  This additionally specifies the
dtype of the return value.
right: see "Details" below.
sorter: an optional tuple containing
  (a) the name of an optional sorting tensor, used to access unsorted
  boundaries without reordering the boundaries tensor, and
  (b) the stride of the tensor in the last dimension.
The values in the sorting tensor are used as indices into the *last*
dimension of the boundaries tensor, with all other indices matching.
The size of the sorting and boundaries tensors must be equivalent.
sorter_indices: must be present if the sorting array is present; see
"boundary_indices" for the equivalent definition for the boundaries
tensor.

Output:
-------
The buckets each value belongs in, within a given set of boundaries.  0
indicates a position before the first boundary, and len(boundaries_set)
represents a position after the last boundary.

Details:
--------
Given a value and a set of boundaries, calculate the bucket that each
value belongs to.  This works differently in 1-D and N-D cases.

for values [[-1, 0, 1, 2], [3, 4, 5, 9]], boundaries [0, 4, 4, 8], right=True
return =   [[ 0, 1, 1, 1], [1, 3, 3, 4]].

for values [[-1, 0, 1, 2], [3, 4, 5, 9]], boundaries [[0, 4], [4, 8]], right=True
return =   [[ 0, 1, 1, 1], [0, 1, 1, 2]]

Note that in the N-D boundaries case, the shape of "values" and
"boundaries" must match in every dimension _except_ the last.

When right == False, bucket i refers to range (boundaries[i], boundaries[i+1]].
When right == True,  bucket i refers to range [boundaries[i], boundaries[i+1]).

Boundaries must be non-decreasing, or a sorter must be provided which
would re-index offsets in a non-decreasing order (e.g. the second output
of torch.sort(offsets)).  Otherwise, the result is undefined.
)rP  ræ  rå  s   &&&&&&&&rR   ræ  ÚCSEProxy.bucketize  s1   € ðL �{‰{×$Ñ$ØØØØØØØó
ð 	
rT   )rP  r  r  r  rw   r  )r†   r‡   rˆ   r‰   rŠ   rm   r   r7  r/  r¤  r­  rC  rg  rD  r½  rZ  rE  r7  rÒ  rÙ  ræ  r�   rÞ  rß  s   @rR   r‚  r‚  Ó
  sq   ø† ñð €D÷-ð -õZõx.%÷`<õ|Bõ
õ$@÷
MõLõ
.õCõNõ	<õD÷N
õ N
rT   r‚  )NNNN)FFrP   )ÚÚ__conditional_annotations__Ú
__future__r   ri   rë  ÚdataclassesÚenumr–  rµ  rX   r  r©  rk   Úrerg   Ú	threadingÚabcr   r   r   r   r   Útypingr	   r
   r   r   r   r   Útyping_extensionsr   r   rñ   r  Útorch.fxÚtorch._prims_commonr   Útorch.utilsr   r1  Útorch.utils._config_moduler   Útorch.utils._ordered_setr   Útorch.utils._sympy.functionsr   Útorch.utils._sympy.numbersr   Útorch.utils._sympy.printersr   Ú_PythonPrinterÚtorch.utils._sympy.symbolr   r   r   Útorch.utils._sympy.value_rangesr   r   r*  r   r   Údtype_propagationr   Úops_handlerr    r!   Úshape_propagationr"   Úutilsr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Úvirtualizedr/   r0   r1   r2   r3   r4   r5   Úcollections.abcr6   r7   r8   r9   r:   Úcustom_graph_passr;   ré   r<   r=   r>   r?   rÁ  rA   rÂ  rB   rC   rD   rE   r  rG   rH   r=  rc  r?  rM   rQ  rb  rã  Ú_loggingÚgetArtifactLoggerr†   rV   Ú	getLoggerr  r[   Ú	dataclassr]   r�   r¦   r´   r  r&  r,  r4  r7  r<  ÚKernelArgTyper  rS  rD  r‹   rF  ÚRLockr$  rª  r)  r«  r¬  r¸  rº  rÊ  rÐ  rÉ  rà  rä  rç  ÚcacherÈ  r   r%  r.  r1  Úbfloat16rG  Úfloat16rž   rí  Úfloat64Úint8Úint16r  rH  r  Úuint16rB  Úuint64r2  rJ  rQ  rc  rr  rv  rx  rá  ÚcompileÚ
IGNORECASErm  rf  rh  r!  r*  r-  rH  ÚINT_TO_FLOATr#  r  rË  rÍ  rÜ  rð  ró  rû  r   r  rl  r§  rT  r£  r¾   ÚReductionCacheKeyr«  rù  r  rŒ  rÁ  rÃ  r‚  )r¾   r‚  s   0@rR   Ú<module>r¯     s9  øðß "Ð "ã Û Û Û Û Û Û Û Û Û 	Û 	Û Û ß #ß Ý ß J× Jß +ã ã Û Ý ?Ý )Ý 3Ý /Ý ,Ý -Ý Gß OÑ Oß Dç Ý :ß ;Ý :÷÷ ÷ ó ÷÷ ñ ÷ ßLÓLå$å9ß>Ó>Ý$ßDÑDÝ2Ý-á	�‹€BØ$ i°$Õ&6Ð%7¸Ð%GÕHÐØÐ2Õ3ÐØ�u—|‘|Õ#€Jð €Fà�~‰~×/Ñ/°¸*ÓE€Ø×Ò˜Ó!€õ=ð
 ×Ñ÷ð ó ðô>/˜Ÿ	™	ô /ô(�Cô ñ �TÔôg�=ó gó ðg÷T*ñ *ð ×Ñ÷ ð  ó ð ð ×Ñ÷ð ó ðð ×Ñ÷ð ó ðð ×Ñ÷ð ó ðð ×Ñ÷9ð 9ó ð9ð ˜yÕ(¨7Õ2Ð5EÕEÈÕT€ð
 �#�I€	à,.€Ð)Ó .÷H"ñ H"ðX %Ÿ?›?Ó,Ð Ø9;Ð Ð6Ó ;Ø#(Ð  ØACÐ Ð>Ó CØACÐ Ð >Ó C÷0Bð Bô6
&�Tô 
&õ3õ(3õU÷ð õ0-õ6ð ‡‚ôxó ðxõvUõ?ò0õ.,ð 
‡N‚N�E—K’KØ	‡M‚M�5—;’;ð>ð �JŠJØ�MŠMØ�MŠMØ�JŠJØ�KŠKØ�KŠKØ�KŠKØ�KŠKØ�LŠLØ�LŠLØ�LŠLñ
óñ
ˆEð 	Šñ
ñð>Ð Ð:ó õ,(õVõ:õ:Lõ
÷gBñ gBôT=�Nô =÷&_1ñ _1ðD —z“zÐ";À2Ç=Â=ÔQÐ õô"Z;Ð#Ð%5°zÀ#µô Z;ðz ×Ñ÷*ð *ó ð*õõñ 6:ó r6ÙØ;×HÒHÙ-Øõðr6ñ Ø;×HÒHÙ/Ù2Ø õ	ðr6ñ Ø;×HÒHÙ/Ù2Ø õ	ðr6ñ$ Ø;×HÒHÙ/Ù2Ø õ	ð%r6ñ0 Ø;×HÒHÙ/Ù2Ø õ	ð1r6ñ< Ø;×HÒHÙ*Ù)Øõ	ð=r6ñL Ø;×HÒHÙ(Ù0Øõ	ðMr6ñX 	Ø;×HÒHÙ6Ù6ñ
 8Øõ
	ðYr6ñz Ø;×CÒCÙ)ñ+ð õð{r6ñL Ø;×HÒHÙ1ØõðMr6ñV Ø;×HÒHÙ2ØõðWr6ñ` Ø;×HÒHÙ1Øõðar6ñj Ø;×HÒHÙ2Ø õðkr6ñt Ø;×HÒHÙ%Ù3Ù$Øõður6ñB 	Ø;×HÒHÙ&Ù%Øõ		ðCr6ñN Ø;×HÒHÙ%Ù3Øõ	ðOr6ñZ 	Ø;×HÒHÙ&Øõ	ð[r6ñd Ø;×HÒHÙ+Øõðer6ñp %Ø;×HÒHÙ8Ù3Ø)õ	ðqr6ñ| %Ø;×HÒHÙ8Ù3Ø)õ	ð}r6ñH %Ø;×HÒHÙ8Ø)õðIr6ñR %Ø;×HÒHÙ8Ø)õðSr6ñ^ 
Ø;×HÒHÙ'Øõ
ð_r6ñh Ø;×HÒHÙ(Øõðir6ñr Ø;×HÒHñcàõ	ðsr6ñB ,Ø;×HÒHÙ?Ø0õðCr6ñL ,Ø;×HÒHÙ?Ø0õðMr6ñX &Ø;×HÒHÙ9Ø*õðYr6ñb 
Ø;×HÒHÙ*Øõ
ðcr6ñl )Ø;×HÒHÙDØ-õðmr6ñv )Ø;×HÒHÙDØ-õðwr6ñ@ )Ø;×HÒHÙDØ-õðAr6ñJ )Ø;×HÒHÙDØ-õðKr6ñT (Ø;×HÒHÙCØ,õðUr6ñ^ $1Ø;×HÒHÙLØ5õ$ð_r6ñh $1Ø;×HÒHÙLØ5õ$ðir6ñr $1Ø;×HÒHÙLØ5õ$ðsr6ñ| $1Ø;×HÒHÙLØ5õ$ð}r6ñF 'Ø;×HÒHÙBØ+õðGr6ñP (Ø;×HÒHÙCØ,õñQr6ñZ (Ø;×HÒHÚCÙ,õð[r6Ð Ñ2ô r÷j	ö-Ð#ô -ö$�>ô ö*�Zô ð
 ×Ñ÷Nò Nó ðN÷ó ñ
 ‹,€÷gó g÷T$;ó $;ñN ™°Õ5€ÙÑ+°;ÈÕT€çØØ�ŠØØ�e˜K©Ð,Õ-Õ-ð	/õÐörˆ'�/ =Ð0Õ
1ô r÷j
<ó 
<öQˆW�g˜oÕ.ô Qðh
 ×Ñ÷ò ó ðð ‡‚öó ð÷S"ó S"öl
ˆ~ö 
ùòY@s   Ðh