+
    ‹°³j0 ã                  ó¶  € ^ RI Ht ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
HtHt ^ RIt^ RIHtHtHtHtHtHtHtHt ^ RIHt ^ RIt^R	IHt ^R
IHt ^ RIt^RIHt ^RI H!t!H"t"H#t#H$t$ ]! R4      t%Rt&]PN                  t(RèR lt)R R lt*R R lt+R t,R R lt-]*RéR l4       t. ! R R4      t/ ! R R4      t0 ! R R4      t1 ! R R ]14      t2 ! R! R"]04      t3]3! ^ 4      t4R# t5R$ t6R% t7 ! R& R']14      t8]8t9 ! R( R)]84      t: ! R* R+]84      t; ! R, R-]14      t< ! R. R/]84      t=]8! R04      t>]8! R14      t?]8! R24      t@]8! R34      tA]8! R44      tB]8! R54      tC]8! R64      tD]8! R74      tE]8! R84      tF]8! R94      tG]8! R:4      tH]8! R;4      tI]8! R<4      tJ]8! R=4      tK]8! R>4      tL]8! R?4      tM]8! R@4      tN]8! RA4      tO]8! RB4      tP]:! ]B4      tQRC RD ltR ! RE RF]04      tSRéRG ltT ! RH RI]04      tU ! RJ RK4      tV ! RL RM]14      tW ! RN RO]04      tX ! RP RQ]W4      tY ! RR RS]X4      tZ]! RRT7       ! RU RV]14      4       t[RW t\]'       d   ^ RXI]H^t^ MRY t^]_! 4       t`RZ ta]^! R[R\7      R] 4       tbR^ tcR_ R` ltdRa teRbR[/Rc Rd lltfRe Rf ltgRg Rh lth]b ! Ri Rj4      4       tiR]inj        ]k! Rk 4      ]in8        ]*RéRl l4       tl]*RéRm l4       tm]*RéRn l4       tnRo]! Rp2]nno        Rq tpRr tq]*RéRs l4       tr]*RéRt l4       ts]+]*RuR/Rv l4       4       tt]+]*RuR/Rw Rx ll4       4       tu]+]*RuR/Ry l4       4       tv]*RêRz l4       tw]*RéR{ l4       txRëR| lty]+]*RëR} R~ ll4       4       tz]+]*RuR/R l4       4       t{]+]*RëR€ l4       4       t|]+]*R�R[RuRR‚R/Rƒ l4       4       t}R„ t~]+]*RéR… l4       4       t]+]*RìR† R‡ ll4       4       t€]*RíRˆ l4       t�]*RR[RR]OR3R‰ l4       t‚]*RîRŠ l4       tƒ]*RéR‹ RŒ ll4       t„]*RéR� RŽ ll4       t…]+]*RïR� l4       4       t†]*RéR� R‘ ll4       t‡])! R’4      ]+]*RéR“ l4       4       4       tˆ]*RðR” R• ll4       t‰RñR– R— lltŠ]+]*]Š! R˜RR™7      RòRš l4       4       4       t‹]+]*]Š! R›4      RóRœ l4       4       4       tŒ]+]*]Š! R�4      RóRž l4       4       4       t�]+]*]Š! RŸ4      RóR  l4       4       4       tŽ]+]*]Š! R¡4      RóR¢ l4       4       4       t�]+]*]Š! R£4      RóR¤ l4       4       4       t�]+]*]Š! R¥4      RóR¦ l4       4       4       t‘]+]*]Š! R§4      RóR¨ l4       4       4       t’]*RéR© l4       t“]*RéRª l4       t”]*RôR« R¬ ll4       t•]*RôR­ R® ll4       t–]*RôR¯ R° ll4       t—]*](EP0                  R3R± R² ll4       t™]*](EP0                  R3R³ R´ ll4       tš]*](EP0                  R3Rµ R¶ ll4       t›RòR· R¸ lltœ]R¹ 4       t�]+]*RõRº l4       4       tž]*RéR» l4       tŸ]*RõR¼ l4       t RéR½ R¾ llt¡]+]*RõR¿ l4       4       t¢]+]*RòRÀ l4       4       t£]+]*RéRÁ l4       4       t¤]*RÂ^RuR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4       t©]*RéRÉ l4       tª]*RÊRËRÌRÍRÎRRÏR[RuR/RÐ RÑ ll4       t«]*RöRÒ l4       t¬]*RÓR[RuR/RÔ l4       t­]*R÷RÕ l4       t®]*RéRÖ R× ll4       t¯ ! RØ RÙ]04      t° ! RÚ RÛ]04      t± ! RÜ RÝ]04      t²RÞ Rß lt³]*RéRà Rá ll4       t´Râ tµRã t¶]_! 4       t·Rä t¸]*Rå]·RuR/Ræ l4       t¹]*Rå]·RuR/Rç l4       tºR# )øé    )ÚannotationsN)Úwarn)Úcontextmanager)ÚEnum)ÚpartialÚwrapsÚcached_property)ÚUnionÚCallableÚListÚSequenceÚTypeVarÚOptionalÚTupleÚTYPE_CHECKING)Ú	dataclass)Úknobs)ÚJITCallable)Úir)ÚTRITON_MAX_TENSOR_NUMELÚvalidate_block_shapeÚget_primitive_bitwidthÚ_tuple_createÚTÚ__triton_builtin__Tc                óN   a € \        S \        4      '       d   V 3R l# VS n        S # )z9If the result of this function is unused, throw an error.c                ó   <€ \        V S4      # ©N)Úmust_use_result)ÚfnÚxs   &€ÚU/home/luca/screen-checking/.venv/lib/python3.14/site-packages/triton/language/core.pyÚ<lambda>Ú!must_use_result.<locals>.<lambda>   s   ø€ œ?¨2¨qÔ1ó    )Ú
isinstanceÚstrÚ_must_use_result)r!   Úss   f&r"   r   r      s#   ø€ ä�!”S×ÒÜ1Ð2Ø€AÔØ€Hr%   c               ó    € V ^8„  d   QhRRRR/# ©é   r    r   Úreturn© )Úformats   "r"   Ú__annotate__r0   "   s   € ÷ ñ �ð �añ r%   c                ó®   a € \        S 4      '       g   Q h\        S 4      V 3R l4       p\        V\        R4       \        P
                  ! S 4      Vn        V# )zMark a function as a builtin.c                 óN   <€ R V9  g   VR ,          f   \        R4      hS! V / VB # )Ú	_semanticzeDid you forget to add @triton.jit ? (`_semantic` argument must be provided outside of JIT functions.)©Ú
ValueError©ÚargsÚkwargsr    s   *,€r"   ÚwrapperÚbuiltin.<locals>.wrapper&   s:   ø€ à˜fÔ$¨¨{Õ(;Ò(CÜð aó bð bá�4Ð"˜6Ñ"Ð"r%   T)Úcallabler   ÚsetattrÚTRITON_BUILTINÚinspectÚ	signature)r    r9   s   f r"   Úbuiltinr@   "   sM   ø€ ä�B�<Š<Ðˆ<ä
ˆ2ƒYô#ó ð#ô ˆG”^ TÔ*Ü×)Ò)¨"Ó-€GÔà€Nr%   c               ó    € V ^8„  d   QhRRRR/# r+   r.   )r/   s   "r"   r0   r0   3   s   € ÷ *ñ *˜!ð * ñ *r%   c                ó,  a € \        S 4      '       g   Q h\        P                  ! S 4      p\        VP                  P                  4       RR0,
          4      ^8„  pS P                  '       g   RS n        S ;P                  RS P                   RV'       d   RMR RS P                   RV'       d   R	MR R
2	,          un        V 3R lp\        VP                  P                  4       4      pV^ ,          P                  RR7      V^ &   VP                  VR7      pWSn        WSn        RS P                   R2Vn        \        S 4      '       d   \        V\        R4       \        \        S P                  \!        S \"        4      '       d	   S 4       S # T4       S # )aÎ  Decorator that adds this free function as a member fn on class tensor.

When called as a member function on class tensor, the first argument to `fn`
is `self`, i.e. the tensor object.

If there are multiple decorators on a function, you probably want this one
to be the highest one (i.e. furthest from the function's `def`), so it's
applied last.

Unfortunately you still need to add a type stub to the body of class tensor
in order for pytype to know about it.
r3   Ú
_generatorÚ zb
    This function can also be called as a member function on :py:class:`tensor`,
    as :code:`x.Ú(z...z)` instead of
    :code:`z(xz, ...z)`.
    c                 ó   <€ S! V / VB # r   r.   r6   s   *,€r"   r9   Ú"_tensor_member_fn.<locals>.wrapperM   s   ø€ Ù�4Ð"˜6Ñ"Ð"r%   Úself©Úname)Ú
parameterszForwards to :py:func:`z` free functionT)r;   r>   r?   ÚlenrK   ÚkeysÚ__doc__Ú__name__ÚlistÚvaluesÚreplaceÚ__signature__Ú
is_builtinr<   r=   Útensorr&   r   )r    Úorig_sigÚhas_argsr9   Ú
new_paramsÚnew_sigs   f     r"   Ú_tensor_member_fnrZ   3   sX  ø€ ô �B�<Š<Ðˆ<Ü× Ò  Ó$€Hä�8×&Ñ&×+Ñ+Ó-°¸lÐ0KÕKÓLÈqÑP€Hà�:�:ˆ:ØˆŒ
Ø‡J‚Jð à—‘�˜Q¯™u°bÐ9ð :Ø�K‰Kˆ=˜§h™7°BÐ7ð 8ðõ …Jõ#ô
 �h×)Ñ)×0Ñ0Ó2Ó3€JØ˜q•M×)Ñ)¨vÐ)Ó6€Jˆq�MØ×Ñ¨*ÐÓ5€GØ#ÔØÔØ.¨r¯{©{¨m¸?ÐK€G„Oä�"‡~‚~Ü�œ¨Ô.äŒF�B—K‘K¤z°"´k×'BÒ'B ÔPØ€Ið IPÔPØ€Ir%   c                ó˜   € \        V 4      p \        V 4      ^8X  d    \        V ^ ,          4       V ^ ,          # V #   \         d     T # i ; i)z7Returns x[0] if x has one element and x[0] is iterable.)Ú_unwrap_if_constexprrL   ÚiterÚ	TypeError©r!   s   &r"   Ú_unwrap_iterabler`   `   sP   € ä˜QÓ€AÜ
ˆ1ƒv�„{ð	Ü��1•ŒJØ�Q•4ˆKð €Høô ô 	Øà€Hð	ús   �: ºA	ÁA	c               ó   € V ^8„  d   QhRR/# ©r,   r-   Úboolr.   )r/   s   "r"   r0   r0   w   s   € ÷ .ñ .�dñ .r%   c                ó$   € \        V \        R4      # )z-Is this a registered triton builtin function?F)Úgetattrr=   ©r    s   &r"   rT   rT   w   s   € ä�2”~ uÓ-Ð-r%   c                ó$   € VP                  V 4      # r   )Ú	to_tensor)r!   r3   s   &&r"   rh   rh   |   s   € à×Ñ˜qÓ!Ð!r%   c                  ó   € ] tR t^†tRtRtR# )Úconstaf  
This class is used as a type annotation to mark pointers to constant data.
The `store` function cannot be called with a pointer to const. Constness
is part of the pointer type and the usual Triton type consistency rules
apply. For example you cannot have a function that returns constant pointer
in one return statement and non-constant pointer in another.
r.   N)rO   Ú
__module__Ú__qualname__Ú__firstlineno__rN   Ú__static_attributes__r.   r%   r"   rj   rj   †   s   † ñó 	r%   rj   c                  ó>   € ] tR t^‘t$ RtR]R&   R R ltR R ltRtR	# )
Ú
base_valuezLBase class of values that exist in the triton IR (i.e. not constexprs).
    Ú	base_typeÚtypec               ó$   € V ^8„  d   QhRRRRRR/# ©r,   Úbuilderú
ir.builderrJ   r'   r-   ÚNoner.   )r/   s   "r"   r0   Úbase_value.__annotate__–   s!   € ÷ "ñ " ð "°3ð "¸4ñ "r%   c                	ó   € \         hr   ©ÚNotImplementedError©rH   ru   rJ   s   &&&r"   Ú	_set_nameÚbase_value._set_name–   ó   € Ü!Ð!r%   c               ó    € V ^8„  d   QhRRRR/# ©r,   ÚhandlesúList[ir.value]r-   rw   r.   )r/   s   "r"   r0   rx   ™   s   € ÷ "ñ " >ð "°dñ "r%   c                ó   € \         h)z^Flatten frontend value into a sequence of mlir handles, which are appended
to the output list
rz   ©rH   r‚   s   &&r"   Ú_flatten_irÚbase_value._flatten_ir™   s
   € ô "Ð!r%   r.   N)	rO   rk   rl   rm   rN   Ú__annotations__r}   r†   rn   r.   r%   r"   rp   rp   ‘   s   ‡ ñà
ƒOõ"÷"ñ "r%   rp   c                  óR   € ] tR t^ tR R ltR R ltR R ltR R ltR	 R
 ltRt	R# )rq   c               ó   € V ^8„  d   QhRR/# rb   r.   )r/   s   "r"   r0   Úbase_type.__annotate__¢   s   € ÷ Añ A˜tñ Ar%   c                	ó   € \        R 4      h)zTypes must implement __eq__rz   ©rH   Úothers   &&r"   Ú__eq__Úbase_type.__eq__¢   s   € Ü!Ð"?Ó@Ð@r%   c               ó   € V ^8„  d   QhRR/# rb   r.   )r/   s   "r"   r0   r‹   ¥   s   € ÷ #ñ #˜tñ #r%   c                	ó   € W8X  * # r   r.   r�   s   &&r"   Ú__ne__Úbase_type.__ne__¥   ó   € ØÒ"Ð"r%   c               ó$   € V ^8„  d   QhRRRRRR/# ©r,   r‚   rƒ   ÚcursorÚintr-   zTuple[base_value, int]r.   )r/   s   "r"   r0   r‹   ¨   s"   € ÷ "ñ " ^ð "¸Sð "ÐE[ñ "r%   c                ó   € \         h)a   Build a frontend value with the current dtype, wrapping a list of existing handles.
cursor is the index of the first handle relevant to this value, and the function
should return the updated cursor position after any handles consumed by the created value.
rz   ©rH   r‚   r˜   s   &&&r"   Ú_unflatten_irÚbase_type._unflatten_ir¨   s
   € ô
 "Ð!r%   c               ó   € V ^8„  d   QhRR/# ©r,   r-   r'   r.   )r/   s   "r"   r0   r‹   ¯   s   € ÷ Sñ S˜ñ Sr%   c                	ó2   € \        R V P                   24      h)zNYI: Type mangling for type )r{   Ú	__class__©rH   s   &r"   ÚmangleÚbase_type.mangle¯   s   € Ü!Ð$@ÀÇÁÐ@PÐ"QÓRÐRr%   c               ó$   € V ^8„  d   QhRRRRRR/# ©r,   ru   rv   ÚoutúList[ir.type]r-   rw   r.   )r/   s   "r"   r0   r‹   ²   s!   € ÷ "ñ "¨ð "¸-ð "ÈDñ "r%   c                	ó   € \         hr   rz   ©rH   ru   r§   s   &&&r"   Ú_flatten_ir_typesÚbase_type._flatten_ir_types²   r   r%   r.   N)
rO   rk   rl   rm   r�   r“   rœ   r£   r«   rn   r.   r%   r"   rq   rq       s"   † õAõ#õ"õS÷"ñ "r%   rq   c                  óX   € ] tR t^¶tR tR tR R ltR tR R ltR R	 lt	R
 R lt
RtR# )Úconstexpr_typec                	ó   € Wn         R # r   ©Úvalue©rH   r±   s   &&r"   Ú__init__Úconstexpr_type.__init__¸   s   € ØŽ
r%   c                	ód   € \        V\        4      ;'       d    V P                  VP                  8H  # r   )r&   r®   r±   r�   s   &&r"   r�   Úconstexpr_type.__eq__»   s$   € Ü˜%¤Ó0×NÐN°T·Z±ZÀ5Ç;Á;Ñ5NÐNr%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   Úconstexpr_type.__annotate__¾   s   € ÷ /ñ /˜#ñ /r%   c                	ó"   € R V P                    R2# )zconstexpr_type[Ú]r°   r¢   s   &r"   Ú__repr__Úconstexpr_type.__repr__¾   s   € Ø  §¡ ¨AÐ.Ð.r%   c                	ó,   € \        V P                  4      # r   )Úhashr±   r¢   s   &r"   Ú__hash__Úconstexpr_type.__hash__Á   ó   € Ü�D—J‘JÓÐr%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   r¸   Ä   s   € ÷ ñ ˜ñ r%   c                	ó¤   € \        V P                  R 4      '       d   V P                  P                  4       pM\        V P                  4      pRV 2# )r£   Úc)Úhasattrr±   r£   Úrepr)rH   Úvals   & r"   r£   Úconstexpr_type.mangleÄ   s?   € Ü�4—:‘:˜x×(Ò(Ø—*‘*×#Ñ#Ó%‰Cä�t—z‘zÓ"ˆCØ�3�%ˆyÐr%   c               ó$   € V ^8„  d   QhRRRRRR/# r¦   r.   )r/   s   "r"   r0   r¸   Ë   s!   € ÷ ñ ¨ð ¸-ð ÈDñ r%   c                	ó   € R # r   r.   rª   s   &&&r"   r«   Ú constexpr_type._flatten_ir_typesË   ó   € Ùr%   c               ó$   € V ^8„  d   QhRRRRRR/# r—   r.   )r/   s   "r"   r0   r¸   Î   s"   € ÷ -ñ - ^ð -¸Sð -ÐE[ñ -r%   c                	ó0   € \        V P                  4      V3# r   ©Ú	constexprr±   r›   s   &&&r"   rœ   Úconstexpr_type._unflatten_irÎ   s   € Ü˜Ÿ™Ó$ fÐ,Ð,r%   r°   N)rO   rk   rl   rm   r³   r�   r»   r¿   r£   r«   rœ   rn   r.   r%   r"   r®   r®   ¶   s+   † òòOõ/ò õõ÷-ñ -r%   r®   c                  ó4  € ] tR t^ÒtRtR tR R ltR tR R ltR R	 lt	R
 t
R tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR  t R! t!R" t"R# t#R$ t$R% t%R& t&R' t'R( t(R) t)R* t*R+ t+R, t,R- t-R. t.R/ t/R0 t0R1t1R2# )3rÐ   zD
This class is used to store a value that is known at compile-time.
c                	óz   € \        V\        4      '       d   VP                  pK$  Wn        \        V4      V n        R # r   )r&   rÐ   r±   r®   rr   r²   s   &&r"   r³   Úconstexpr.__init__×   s)   € Ü˜¤	×*Ò*Ø—K‘KŠEØŒ
Ü" 5Ó)ˆŽ	r%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   Úconstexpr.__annotate__Ý   s   € ÷ *ñ *˜#ñ *r%   c                	ó"   € R V P                    R2# )z
constexpr[rº   r°   r¢   s   &r"   r»   Úconstexpr.__repr__Ý   s   € Ø˜DŸJ™J˜< qÐ)Ð)r%   c                	óD   € \        V P                  V P                  34      # r   )r¾   r±   rr   r¢   s   &r"   r¿   Úconstexpr.__hash__à   s   € Ü�T—Z‘Z §¡Ð+Ó,Ð,r%   c               ó$   € V ^8„  d   QhRRRRRR/# rt   r.   )r/   s   "r"   r0   rÖ   ã   s!   € ÷ ñ  ð °3ð ¸4ñ r%   c                	ó   € R # r   r.   r|   s   &&&r"   r}   Úconstexpr._set_nameã   rÌ   r%   c               ó    € V ^8„  d   QhRRRR/# r�   r.   )r/   s   "r"   r0   rÖ   æ   s   € ÷ ñ  >ð °dñ r%   c                	ó   € R # r   r.   r…   s   &&r"   r†   Úconstexpr._flatten_iræ   rÌ   r%   c                	ó   € V P                   # r   r°   r¢   s   &r"   Ú	__index__Úconstexpr.__index__é   ó   € Ø�z‰zÐr%   c                	óL   € \        V P                  \        V4      ,           4      # r   ©rÐ   r±   r\   r�   s   &&r"   Ú__add__Úconstexpr.__add__ð   ó   € Ü˜Ÿ™Ô&:¸5Ó&AÕAÓBÐBr%   c                	óL   € \        \        V4      V P                  ,           4      # r   ©rÐ   r\   r±   r�   s   &&r"   Ú__radd__Úconstexpr.__radd__ó   ó   € ÜÔ-¨eÓ4°t·z±zÕAÓBÐBr%   c                	óL   € \        V P                  \        V4      ,
          4      # r   ræ   r�   s   &&r"   Ú__sub__Úconstexpr.__sub__ö   ré   r%   c                	óL   € \        \        V4      V P                  ,
          4      # r   rë   r�   s   &&r"   Ú__rsub__Úconstexpr.__rsub__ù   rî   r%   c                	óL   € \        V P                  \        V4      ,          4      # r   ræ   r�   s   &&r"   Ú__mul__Úconstexpr.__mul__ü   ré   r%   c                	óL   € \        V P                  \        V4      ,          4      # r   ræ   r�   s   &&r"   Ú__mod__Úconstexpr.__mod__ÿ   ré   r%   c                	óL   € \        \        V4      V P                  ,          4      # r   rë   r�   s   &&r"   Ú__rmul__Úconstexpr.__rmul__  rî   r%   c                	óL   € \        V P                  \        V4      ,          4      # r   ræ   r�   s   &&r"   Ú__truediv__Úconstexpr.__truediv__  ré   r%   c                	óL   € \        \        V4      V P                  ,          4      # r   rë   r�   s   &&r"   Ú__rtruediv__Úconstexpr.__rtruediv__  rî   r%   c                	óL   € \        V P                  \        V4      ,          4      # r   ræ   r�   s   &&r"   Ú__floordiv__Úconstexpr.__floordiv__  ó   € Ü˜Ÿ™Ô';¸EÓ'BÕBÓCÐCr%   c                	óL   € \        \        V4      V P                  ,          4      # r   rë   r�   s   &&r"   Ú__rfloordiv__Úconstexpr.__rfloordiv__  s   € ÜÔ-¨eÓ4¸¿
¹
ÕBÓCÐCr%   c                	óD   € \        V P                  \        V4      8„  4      # r   ræ   r�   s   &&r"   Ú__gt__Úconstexpr.__gt__  ó   € Ü˜Ÿ™Ô&:¸5Ó&AÑAÓBÐBr%   c                	óD   € \        \        V4      V P                  8„  4      # r   rë   r�   s   &&r"   Ú__rgt__Úconstexpr.__rgt__  ó   € ÜÔ-¨eÓ4°t·z±zÑAÓBÐBr%   c                	óD   € \        V P                  \        V4      8¬  4      # r   ræ   r�   s   &&r"   Ú__ge__Úconstexpr.__ge__  ó   € Ü˜Ÿ™Ô';¸EÓ'BÑBÓCÐCr%   c                	óD   € \        \        V4      V P                  8¬  4      # r   rë   r�   s   &&r"   Ú__rge__Úconstexpr.__rge__  ó   € ÜÔ-¨eÓ4¸¿
¹
ÑBÓCÐCr%   c                	óD   € \        V P                  \        V4      8  4      # r   ræ   r�   s   &&r"   Ú__lt__Úconstexpr.__lt__  r  r%   c                	óD   € \        \        V4      V P                  8  4      # r   rë   r�   s   &&r"   Ú__rlt__Úconstexpr.__rlt__   r  r%   c                	óD   € \        V P                  \        V4      8*  4      # r   ræ   r�   s   &&r"   Ú__le__Úconstexpr.__le__#  r  r%   c                	óD   € \        \        V4      V P                  8*  4      # r   rë   r�   s   &&r"   Ú__rle__Úconstexpr.__rle__&  r  r%   c                	óD   € \        V P                  \        V4      8H  4      # r   ræ   r�   s   &&r"   r�   Úconstexpr.__eq__)  r  r%   c                	óD   € \        V P                  \        V4      8g  4      # r   ræ   r�   s   &&r"   r“   Úconstexpr.__ne__,  r  r%   c                	ó,   € \        V P                  4      # r   )rc   r±   r¢   s   &r"   Ú__bool__Úconstexpr.__bool__/  rÁ   r%   c                	ó.   € \        V P                  ) 4      # r   rÏ   r¢   s   &r"   Ú__neg__Úconstexpr.__neg__2  ó   € Ü˜$Ÿ*™*˜Ó%Ð%r%   c                	óL   € \        V P                  \        V4      ,          4      # r   ræ   r�   s   &&r"   Ú__and__Úconstexpr.__and__5  ré   r%   c                	óR   € \        V P                  ;'       d    \        V4      4      # r   ræ   r�   s   &&r"   Úlogical_andÚconstexpr.logical_and8  s   € Ü˜Ÿ™×CÐCÔ(<¸UÓ(CÓDÐDr%   c                	óL   € \        V P                  \        V4      ,          4      # r   ræ   r�   s   &&r"   Ú__or__Úconstexpr.__or__;  ré   r%   c                	óL   € \        V P                  \        V4      ,          4      # r   ræ   r�   s   &&r"   Ú__xor__Úconstexpr.__xor__>  ré   r%   c                	óR   € \        V P                  ;'       g    \        V4      4      # r   ræ   r�   s   &&r"   Ú
logical_orÚconstexpr.logical_orA  s   € Ü˜Ÿ™×BÐBÔ';¸EÓ'BÓCÐCr%   c                	ó.   € \        V P                  54      # r   rÏ   r¢   s   &r"   Ú__pos__Úconstexpr.__pos__D  r1  r%   c                	ó.   € \        V P                  ( 4      # r   rÏ   r¢   s   &r"   Ú
__invert__Úconstexpr.__invert__G  r1  r%   c                	óL   € \        V P                  \        V4      ,          4      # r   ræ   r�   s   &&r"   Ú__pow__Úconstexpr.__pow__J  s   € Ü˜Ÿ™Ô%9¸%Ó%@Õ@ÓAÐAr%   c                	óL   € \        \        V4      V P                  ,          4      # r   rë   r�   s   &&r"   Ú__rpow__Úconstexpr.__rpow__M  s   € ÜÔ-¨eÓ4°d·j±jÕ@ÓAÐAr%   c                	óL   € \        V P                  \        V4      ,	          4      # r   ræ   r�   s   &&r"   Ú
__rshift__Úconstexpr.__rshift__P  r  r%   c                	óL   € \        V P                  \        V4      ,          4      # r   ræ   r�   s   &&r"   Ú
__lshift__Úconstexpr.__lshift__S  r  r%   c                	ó6   € \        V P                  '       * 4      # r   rÏ   r¢   s   &r"   Ú__not__Úconstexpr.__not__V  s   € Ü˜TŸZ™ZœÓ(Ð(r%   c                	ó,   € \        V P                  4      # r   )r]   r±   r¢   s   &r"   Ú__iter__Úconstexpr.__iter__Y  rÁ   r%   c                	ó&   € V P                   ! V/ VB # r   r°   )rH   r7   Úkwdss   &*,r"   Ú__call__Úconstexpr.__call__\  s   € Ø�zŠz˜4Ð( 4Ñ(Ð(r%   c                	óZ   € R  \        V4       4       pV P                  P                  ! V!  # )c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir   ©r\   ©Ú.0r!   s   & r"   Ú	<genexpr>Ú(constexpr.__getitem__.<locals>.<genexpr>`  s   é € ÐHÑ1G¨AÔ$ Q×'Ð'Ó1Gùó   ‚)Ú_normalize_tupler±   Ú__getitem__)rH   r7   s   &*r"   rf  Úconstexpr.__getitem___  s'   € ÙHÔ1AÀ$Ô1GÓHˆØ�z‰z×%Ò% tÑ,Ð,r%   )rr   r±   N)2rO   rk   rl   rm   rN   r³   r»   r¿   r}   r†   râ   rç   rì   rð   ró   rö   rù   rü   rÿ   r  r  r	  r  r  r  r  r  r  r"  r%  r�   r“   r,  r/  r3  r6  r9  r<  r?  rB  rE  rH  rK  rN  rQ  rT  rW  r[  rf  rn   r.   r%   r"   rÐ   rÐ   Ò   s  † ñò*õ*ò-õõòòCòCòCòCòCòCòCòCòCòDòDòCòCòDòDòCòCòDòDòDòDò ò&òCòEòCòCòDò&ò&òBòBòDòDò)ò ò)ö-r%   rÐ   c           	     óÜ  € \        V \        4      '       d   V  Uu. uF  p\        V4      NK  	  up# \        V \        P                  4      '       d%   \        Y  Uu. uF  p\        V4      NK  	  up4      # \        V \        4      '       d0   \	        V  Uu. uF  p\        V4      NK  	  upV P                  4      # \        V \        4      '       d   V P                  # T # u upi u upi u upi r   )	r&   rP   r\   ÚbuiltinsÚtupler   rr   rÐ   r±   )Úor!   s   & r"   r\   r\   g  s¶   € Ü�!”T×ÒÙ12Ó3±¨AÔ$ QÖ'±Ñ3Ð3Ü�!”X—^‘^×$Ò$Ü˜QÀ!Ó DÁ!¸QÔ!5°aÖ!8Á!Ñ DÓEÐEÜ�!”U×ÒÜ±qÓ9±q°!Ô*¨1Ö-±qÑ9¸1¿6¹6ÓBÐBÜ  ¤I×.Ò.ˆ1�7‰7Ð5°AÐ5ùò 4ùâ Dùâ9s   ›CÁC$
ÂC)c                ó~   € \        V 4      p\        V\        \        P                  34      '       d   \	        V4      pV# r   )r\   r&   rP   ri  rj  )ÚtÚnormalized_tuples   & r"   re  re  q  s6   € Ü+¨AÓ.ÐÜÐ"¤T¬8¯>©>Ð$:×;Ò;Ü Ð!1Ó2ÐØÐr%   c           	     ó  € \        V \        4      '       dw   \        V\        4      '       d_   V P                  P                  P
                  pVP                  V8¼  d,   \        R VP                   RV RV P                   R24       R# R# R# R# )zValue z exceeds the maximum bitwidth (z) for type 'z)'. This may result in undefined behavior.N)	r&   rU   rÐ   rr   ÚscalarÚprimitive_bitwidthr±   r   Údtype)r±   Úshift_valueÚbitwidths   && r"   Úcheck_bit_widthru  x  s…   € Ü�%œ× Ò ¤Z°¼Y×%GÒ%GØ—:‘:×$Ñ$×7Ñ7ˆØ×Ñ Ô(ÜØ˜×*Ñ*Ð+Ð+JÈ8È*ÐT`Ðaf×alÑalÐ`mð  nWð  Xöñ )ñ &HÑ r%   c                  óø  a € ] tR tRt. R=Ot. R>Ot. R?Ot. R@OtR.t ! R R]	4      t
 ! R R]	4      tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R  t%R! t&R" t'R# t(])R$ 4       t*])R% 4       t+])R& 4       t,])R' 4       t-])R( 4       t.R) R* lt/R+ t0]1R, 4       t2R- R. lt3R/ R0 lt4R1 t5R2 t6]1R3 R4 l4       t7R5 t8R6 R7 lt9R8 V 3R9 llt:R: R; lt;R<t<V ;t=# )Arr  i†  Úvoidc                  ó   € ] tR tRt^ t^tRtR# )Údtype.SIGNEDNESSi�  r.   N)rO   rk   rl   rm   ÚSIGNEDÚUNSIGNEDrn   r.   r%   r"   Ú
SIGNEDNESSry  �  s   † ØˆØŒr%   r|  c                  ó"   € ] tR tRt^ t^t^tRtR# )Ú
dtype.KINDi‘  r.   N)rO   rk   rl   rm   ÚBOOLEANÚINTEGRALÚFLOATINGrn   r.   r%   r"   ÚKINDr~  ‘  s   † ØˆØˆØŒr%   r‚  c                	ó.  € \        V4      pWn        V\        P                  \        P                  ,           \        P
                  ,           \        P                  ,           9   g   Q V4       h\        V4      V n        V P                  ^,          V n	        V\        P                  9   d3   \        P                  P                  V n        V P                  V n        R# V\        P                  9   d3   \        P                  P                  V n        V P                  V n        R# V\        P
                  9   dÞ   VR8X  d   ^V n        ^V n        R# VR8X  d   ^V n        ^V n        R# VR8X  d   ^V n        ^V n        R# VR8X  d   ^V n        ^V n        R# VR8X  d   ^V n        ^V n        R# VR8X  d   ^
V n        ^V n        R# VR8X  d   ^V n        ^V n        R# VR8X  d   ^V n        ^V n        R# VR	8X  d   ^4V n        R
V n        R# \#        RV 24      hR# )é   Úfp8e4b15Úfp8e4nvÚfp8e4b8Úfp8e5Úfp8e5b16Úfp16Úbf16Úfp32Úfp64iÿ  z Unsupported floating-point type N)r\   rJ   rr  Ú
SINT_TYPESÚ
UINT_TYPESÚFP_TYPESÚOTHER_TYPESr   rq  Úitemsizer|  rz  Úint_signednessÚint_bitwidthr{  Úfp_mantissa_widthÚexponent_biasÚRuntimeError)rH   rJ   s   &&r"   r³   Údtype.__init__–  sÀ  € Ü# DÓ)ˆØŒ	Ø”u×'Ñ'¬%×*:Ñ*:Õ:¼U¿^¹^ÕKÌe×N_ÑN_Õ_Ô_ÐeÐaeÓeÐ_Ü"8¸Ó">ˆÔØ×/Ñ/°1Õ4ˆŒØ”5×#Ñ#Ô#Ü"'×"2Ñ"2×"9Ñ"9ˆDÔØ $× 7Ñ 7ˆDÖØ”U×%Ñ%Ô%Ü"'×"2Ñ"2×";Ñ";ˆDÔØ $× 7Ñ 7ˆDÖØ”U—^‘^Ô#Ø�zÔ!Ø)*�Ô&Ø%'�Ö"Ø˜Ô"Ø)*�Ô&Ø%&�Ö"Ø˜Ô"Ø)*�Ô&Ø%&�Ö"Ø˜”Ø)*�Ô&Ø%'�Ö"Ø˜Ô#Ø)*�Ô&Ø%'�Ö"Ø˜”Ø)+�Ô&Ø%'�Ö"Ø˜”Ø)*�Ô&Ø%(�Ö"Ø˜”Ø)+�Ô&Ø%(�Ö"Ø˜”Ø)+�Ô&Ø%)�Ö"ä"Ð%EÀdÀVÐ#LÓMÐMñ; $r%   c                	ó    € R V P                   9   # )Úfp8rI   r¢   s   &r"   Úis_fp8Údtype.is_fp8Á  s   € Ø˜Ÿ	™	Ñ!Ð!r%   c                	ó    € V P                   R 8H  # )r†  rI   r¢   s   &r"   Ú
is_fp8e4nvÚdtype.is_fp8e4nvÄ  ó   € Ø�y‰y˜IÑ%Ð%r%   c                	ó    € V P                   R 8H  # )r‡  rI   r¢   s   &r"   Ú
is_fp8e4b8Údtype.is_fp8e4b8Ç  r   r%   c                	ó    € V P                   R 8H  # )r…  rI   r¢   s   &r"   Úis_fp8e4b15Údtype.is_fp8e4b15Ê  ó   € Ø�y‰y˜JÑ&Ð&r%   c                	ó    € V P                   R 8H  # )rˆ  rI   r¢   s   &r"   Úis_fp8e5Údtype.is_fp8e5Í  ó   € Ø�y‰y˜GÑ#Ð#r%   c                	ó    € V P                   R 8H  # )r‰  rI   r¢   s   &r"   Úis_fp8e5b16Údtype.is_fp8e5b16Ð  r§  r%   c                	ó    € V P                   R 8H  # )rŠ  rI   r¢   s   &r"   Úis_fp16Údtype.is_fp16Ó  ó   € Ø�y‰y˜FÑ"Ð"r%   c                	ó    € V P                   R 8H  # )r‹  rI   r¢   s   &r"   Úis_bf16Údtype.is_bf16Ö  r²  r%   c                	ó    € V P                   R 8H  # )rŒ  rI   r¢   s   &r"   Úis_fp32Údtype.is_fp32Ù  r²  r%   c                	ó    € V P                   R 8H  # )r�  rI   r¢   s   &r"   Úis_fp64Údtype.is_fp64Ü  r²  r%   c                	ó    € V P                   R 8H  # )Úint1rI   r¢   s   &r"   Úis_int1Údtype.is_int1ß  r²  r%   c                	ó    € V P                   R 8H  # )Úint8rI   r¢   s   &r"   Úis_int8Údtype.is_int8â  r²  r%   c                	ó    € V P                   R 8H  # )Úint16rI   r¢   s   &r"   Úis_int16Údtype.is_int16å  r«  r%   c                	ó    € V P                   R 8H  # )Úint32rI   r¢   s   &r"   Úis_int32Údtype.is_int32è  r«  r%   c                	ó    € V P                   R 8H  # )Úint64rI   r¢   s   &r"   Úis_int64Údtype.is_int64ë  r«  r%   c                	ó    € V P                   R 8H  # )Úuint8rI   r¢   s   &r"   Úis_uint8Údtype.is_uint8î  r«  r%   c                	ó    € V P                   R 8H  # )Úuint16rI   r¢   s   &r"   Ú	is_uint16Údtype.is_uint16ñ  ó   € Ø�y‰y˜HÑ$Ð$r%   c                	ó    € V P                   R 8H  # )Úuint32rI   r¢   s   &r"   Ú	is_uint32Údtype.is_uint32ô  rØ  r%   c                	ó    € V P                   R 8H  # )Úuint64rI   r¢   s   &r"   Ú	is_uint64Údtype.is_uint64÷  rØ  r%   c                	ó<   € V P                   \        P                  9   # r   )rJ   rr  r�  r¢   s   &r"   Úis_floatingÚdtype.is_floatingú  s   € Ø�y‰yœEŸN™NÑ*Ð*r%   c                	ó<   € V P                   \        P                  9   # r   )rJ   rr  ÚSTANDARD_FP_TYPESr¢   s   &r"   Úis_standard_floatingÚdtype.is_standard_floatingý  s   € Ø�y‰yœE×3Ñ3Ñ3Ð3r%   c                	ó<   € V P                   \        P                  9   # r   )rJ   rr  rŽ  r¢   s   &r"   Úis_int_signedÚdtype.is_int_signed   ó   € Ø�y‰yœE×,Ñ,Ñ,Ð,r%   c                	ó<   € V P                   \        P                  9   # r   )rJ   rr  r�  r¢   s   &r"   Úis_int_unsignedÚdtype.is_int_unsigned  rë  r%   c                	óf   € V P                   \        P                  \        P                  ,           9   # r   )rJ   rr  rŽ  r�  r¢   s   &r"   Úis_intÚdtype.is_int  s"   € Ø�y‰yœE×,Ñ,¬u×/?Ñ/?Õ?Ñ?Ð?r%   c                	ó"   € V P                  4       # r   )r¾  r¢   s   &r"   Úis_boolÚdtype.is_bool	  ó   € Ø�|‰|‹~Ðr%   c                	ó&  € V P                  4       '       d   \        P                  P                  # V P	                  4       '       d   \        P                  P
                  # V P                  4       '       g   Q h\        P                  P                  # r   )ró  rr  r‚  r  rð  r€  râ  r�  r¢   s   &r"   ÚkindÚ
dtype.kind  s]   € à�<‰<�>Š>Ü—:‘:×%Ñ%Ð%Ø�[‰[�]Š]Ü—:‘:×&Ñ&Ð&à×#Ñ#×%Ò%Ð%Ð%Ü—:‘:×&Ñ&Ð&r%   c                	óÔ   € V P                  4       '       d"   ^V P                  ^,
          ,          ^,
          # V P                  4       '       d   ^V P                  ,          ^,
          # Q h©r,   ©ré  r”  rí  r¢   s   &r"   Úget_int_max_valueÚdtype.get_int_max_value  sV   € Ø×Ñ×ÒØ�t×(Ñ(¨1Õ,Õ-°Õ1Ð1Ø×Ñ×!Ò!Ø�d×'Ñ'Õ'¨!Õ+Ð+Øˆur%   c                	ó˜   € V P                  4       '       d   ^V P                  ^,
          ,          ) # V P                  4       '       d   ^ # Q hrú  rû  r¢   s   &r"   Úget_int_min_valueÚdtype.get_int_min_value  sA   € Ø×Ñ×ÒØ˜×)Ñ)¨AÕ-Õ.Ð.Ð.Ø×Ñ×!Ò!ÙØˆur%   c                	ó¦   € V \         P                  \         P                  ,           \         P                  ,           \         P                  ,           9   # r   )rr  rŽ  r�  r�  r‘  )Útype_strs   &r"   Úis_dtypeÚdtype.is_dtype$  s3   € àœ5×+Ñ+¬e×.>Ñ.>Õ>ÄÇÁÕOÔRW×RcÑRcÕcÑcÐcr%   c                 	ó   € \        R 4      h)zNot implemented©r—  r.   r%   r"   Úis_voidÚdtype.is_void(  s   € äÐ,Ó-Ð-r%   c                 	ó   € R # ©Fr.   r.   r%   r"   Úis_blockÚdtype.is_block,  ó   € ár%   c                 	ó   € R # r
  r.   r.   r%   r"   Úis_ptrÚdtype.is_ptr0  r  r%   c                 	ó   € R # r
  r.   r.   r%   r"   Úis_constÚdtype.is_const4  r  r%   c               ó   € V ^8„  d   QhRR/# rb   r.   )r/   s   "r"   r0   Údtype.__annotate__8  s   € ÷ 'ñ '˜tñ 'r%   c                	óz   € \        V4      p\        V\        4      '       g   R # V P                  VP                  8H  # r
  )r\   r&   rr  rJ   r�   s   &&r"   r�   Údtype.__eq__8  s/   € Ü$ UÓ+ˆÜ˜%¤×'Ò'ÙØ�y‰y˜EŸJ™JÑ&Ð&r%   c                	ó.   € \        V P                  34      # r   )r¾   rJ   r¢   s   &r"   r¿   Údtype.__hash__>  s   € Ü�T—Y‘Y�MÓ"Ð"r%   c                	ó   € V # r   r.   r¢   s   &r"   rp  Údtype.scalarA  ó   € àˆr%   c               ó$   € V ^8„  d   QhRRRRRR/# r¦   r.   )r/   s   "r"   r0   r  E  s!   € ÷ (ñ (¨ð (¸-ð (ÈDñ (r%   c                	óF   € VP                  V P                  V4      4       R # r   )ÚappendÚto_irrª   s   &&&r"   r«   Údtype._flatten_ir_typesE  s   € Ø�
‰
�4—:‘:˜gÓ&Ö'r%   c               ó    € V ^8„  d   QhRRRR/# )r,   ru   rv   r-   zir.typer.   )r/   s   "r"   r0   r  H  s   € ÷ $?ñ $?˜Zð $?¨Gñ $?r%   c                	óø  € V P                   P                  R 4      '       d]   \        VR4      '       dK   V P                   VP                  P                  9  d&   \        RV  RVP                  P                   24      hV P                   R8X  d   VP                  4       # V P                   R8X  d   VP                  4       # V P                   R9   d   VP                  4       # V P                   R9   d   VP                  4       # V P                   R9   d   VP                  4       # V P                   R9   d   VP                  4       # V P                   R8X  d   VP                  4       # V P                   R8X  d   VP                  4       # V P                   R8X  d   VP                  4       # V P                   R	8X  d   VP                  4       # V P                   R
8X  d   VP!                  4       # V P                   R8X  d   VP#                  4       # V P                   R8X  d   VP%                  4       # V P                   R8X  d   VP'                  4       # V P                   R8X  d   VP)                  4       # \        RV  R24      h)rš  Úoptionsztype zB not supported in this architecture. The supported fp8 dtypes are rw  r½  rˆ  r‰  r†  r‡  r…  rŠ  r‹  rŒ  r�  zfail to convert z to ir type)rÁ  rÑ  )rÅ  rÕ  )rÉ  rÚ  )rÍ  rÞ  )rJ   Ú
startswithrÅ   r$  Úsupported_fp8_dtypesr5   Úget_void_tyÚget_int1_tyÚget_int8_tyÚget_int16_tyÚget_int32_tyÚget_int64_tyÚget_fp8e5_tyÚget_fp8e5b16_tyÚget_fp8e4nv_tyÚget_fp8e4b8_tyÚget_fp8e4b15_tyÚget_half_tyÚget_bf16_tyÚget_float_tyÚget_double_ty©rH   ru   s   &&r"   r   Údtype.to_irH  s  € Ø�9‰9×Ñ ×&Ò&Ü�w 	×*Ò*¨t¯y©yÀÇÁ×@dÑ@dÔ/dÜ  5¨¨ð /AØAHÇÁ×AeÑAeÐ@fð"hó ið ið �9‰9˜ÔØ×&Ñ&Ó(Ð(Ø�Y‰Y˜&Ô Ø×&Ñ&Ó(Ð(Ø�Y‰YÐ+Ô+Ø×&Ñ&Ó(Ð(Ø�Y‰YÐ-Ô-Ø×'Ñ'Ó)Ð)Ø�Y‰YÐ-Ô-Ø×'Ñ'Ó)Ð)Ø�Y‰YÐ-Ô-Ø×'Ñ'Ó)Ð)Ø�Y‰Y˜'Ô!Ø×'Ñ'Ó)Ð)Ø�Y‰Y˜*Ô$Ø×*Ñ*Ó,Ð,Ø�Y‰Y˜)Ô#Ø×)Ñ)Ó+Ð+Ø�Y‰Y˜)Ô#Ø×)Ñ)Ó+Ð+Ø�Y‰Y˜*Ô$Ø×*Ñ*Ó,Ð,Ø�Y‰Y˜&Ô Ø×&Ñ&Ó(Ð(Ø�Y‰Y˜&Ô Ø×&Ñ&Ó(Ð(Ø�Y‰Y˜&Ô Ø×'Ñ'Ó)Ð)Ø�Y‰Y˜&Ô Ø×(Ñ(Ó*Ð*ÜÐ+¨D¨6°Ð=Ó>Ð>r%   c                	ó   € V P                   # r   rI   r¢   s   &r"   Ú__str__Údtype.__str__n  ó   € Ø�y‰yÐr%   c                	ó  € V P                   P                  R 4      '       d   RV P                   R,          ,           # V P                   P                  R4      '       d   RV P                   R,          ,           # V P                   # )ÚfpÚfloat:r,   NNÚbfÚbfloat)rJ   r%  r¢   s   &r"   Úcodegen_nameÚdtype.codegen_nameq  s\   € Ø�9‰9×Ñ ×%Ò%Ø˜TŸY™Y r�]Õ*Ð*Ø�Y‰Y×!Ñ! $×'Ò'Ø˜dŸi™i¨�mÕ+Ð+à—9‘9Ðr%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   r  z  s   € ÷ ñ  ñ r%   c                ó   € V P                   # )z"See cache_key_part() in triton.cc.rI   r¢   s   &r"   Úcache_key_partÚdtype.cache_key_party  s   € ð �y‰yÐr%   c                ó(   € RV P                  4        2# )z4Output of repr needs to be an evaluatable expressionztriton.language.)rA  r¢   s   &r"   r»   Údtype.__repr__~  s   € à! $×"3Ñ"3Ó"5Ð!6Ð7Ð7r%   c               ó$   € V ^8„  d   QhRRRRRR/# r—   r.   )r/   s   "r"   r0   r  ‚  s"   € ÷ 9ñ 9 ^ð 9¸Sð 9ÐE[ñ 9r%   c                	ó8   € \        W,          V 4      V^,           3# ©é   )rU   r›   s   &&&r"   rœ   Údtype._unflatten_ir‚  s   € Ü�g•o tÓ,¨f°q­jÐ8Ð8r%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   r  …  s   € ÷ 	 ñ 	 ˜ñ 	 r%   c                	óT  <€ V P                  4       '       dL   \        P                  P                  pV P                  V8X  d   R MRpV\        V P                  4      ,           # V P                  4       '       d   \        V 4      # V P                  4       '       d   R# \        SV `)  4       # )ÚiÚuÚV)rð  rr  r|  rz  r“  r'   r”  râ  r  Úsuperr£   )rH   rz  Úprefixr¡   s   &  €r"   r£   Údtype.mangle…  s}   ø€ Ø�;‰;�=Š=Ü×%Ñ%×,Ñ,ˆFØ ×/Ñ/°6Ô9‘S¸sˆFØœC × 1Ñ 1Ó2Õ2Ð2Ø×Ñ×ÒÜ�t“9ÐØ�<‰<�>Š>ÙÜ‰w‰~ÓÐr%   c               ó   € V ^8„  d   QhRR/# )r,   Ú
element_tyrr  r.   )r/   s   "r"   r0   r  �  s   € ÷ ñ ¨%ñ r%   c                	ó6   € V P                  4       '       d   Q hV# r   )r  )rH   rW  s   &&r"   Úwith_element_tyÚdtype.with_element_ty�  s   € Ø—=‘=—?’?Ð"Ð"ØÐr%   )r–  r•  r”  r“  r’  rJ   rq  )rÁ  rÅ  rÉ  rÍ  )r½  rÑ  rÕ  rÚ  rÞ  )	r…  r†  r‡  rˆ  r‰  rŠ  r‹  rŒ  r�  )rŠ  r‹  rŒ  r�  )>rO   rk   rl   rm   rŽ  r�  r�  rå  r‘  r   r|  r‚  r³   r›  rž  r¢  r¥  r©  r­  r°  r´  r·  rº  r¾  rÂ  rÆ  rÊ  rÎ  rÒ  rÖ  rÛ  rß  râ  ræ  ré  rí  rð  ró  r÷  rü  rÿ  Ústaticmethodr  r  r  r  r  r�   r¿   Úpropertyrp  r«   r   r9  rA  rE  r»   rœ   r£   rY  rn   Ú__classcell__©r¡   s   @r"   rr  rr  †  s–  ø† Ú4€JÚ@€JÚf€HÚ8ÐØ�(€Kô�Tô ôˆtô ò
)NòV"ò&ò&ò'ò$ò'ò#ò#ò#ò#ò#ò#ò$ò$ò$ò$ò%ò%ò%ò+ò4ò-ò-ò@òò'òòð ñdó ðdð ñ.ó ð.ð ñó ðð ñó ðð ñó ðõ'ò#ð ñó ðõ(õ$?òLòð ôó ðò8õ9÷	 ð 	 ÷ó r%   rr  c                  ór   € ] tR tRtRR R lltR R ltR tR tR tR	 t	R
 R lt
]R 4       tR R ltRtR# )Úpointer_typei›  c               ó$   € V ^8„  d   QhRRRRRR/# )r,   rW  rr  Úaddress_spacer™   rj   rc   r.   )r/   s   "r"   r0   Úpointer_type.__annotate__�  s&   € ÷ ^ñ ^ 5ð ^¸ð ^Èñ ^r%   c                	óð   € \        V4      p\        V\        4      '       g#   \        R \	        V4      P
                   R24      hWn        W n        W0n        V'       g   RV R2V n	        R# RV R2V n	        R# )zelement_ty has type `z`; expected `dtype`.zpointer<Ú>zconst_pointer<N)
r\   r&   rr  r^   rr   rO   rW  rb  rj   rJ   )rH   rW  rb  rj   s   &&&&r"   r³   Úpointer_type.__init__�  sn   € Ü)¨*Ó5ˆ
Ü˜*¤e×,Ò,ÜÐ3´D¸Ó4D×4MÑ4MÐ3NÐNbÐcÓdÐdØ$ŒØ*ÔØŒ
ß49�h˜z˜l¨!Ð,ˆŽ	ÀÐPZÈ|Ð[\Ð?]ˆŽ	r%   c               ó    € V ^8„  d   QhRRRR/# )r,   ru   rv   r-   zir.pointer_typer.   )r/   s   "r"   r0   rc  ¦  s   € ÷ Vñ V˜Zð V¨Oñ Vr%   c                	ól   € VP                  V P                  P                  V4      V P                  4      # r   )Ú
get_ptr_tyrW  r   rb  r6  s   &&r"   r   Úpointer_type.to_ir¦  s*   € Ø×!Ñ! $§/¡/×"7Ñ"7¸Ó"@À$×BTÑBTÓUÐUr%   c                	ó   € V P                   # r   rI   r¢   s   &r"   r9  Úpointer_type.__str__©  r;  r%   c                	ó"   € V P                  4       # r   ©r9  r¢   s   &r"   r»   Úpointer_type.__repr__¬  rõ  r%   c                	ó   € R # ©Tr.   r¢   s   &r"   r  Úpointer_type.is_ptr¯  ó   € Ùr%   c                	ó   € V P                   # r   )rj   r¢   s   &r"   r  Úpointer_type.is_const²  rä   r%   c               ó   € V ^8„  d   QhRR/# rb   r.   )r/   s   "r"   r0   rc  µ  s   € ÷ ñ ˜tñ r%   c                	óþ   € \        V4      p\        V\        4      '       g   R # V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P
                  VP
                  8H  # r
  )r\   r&   r`  rW  rb  rj   r�   s   &&r"   r�   Úpointer_type.__eq__µ  se   € Ü$ UÓ+ˆÜ˜%¤×.Ò.ÙØ�‰ %×"2Ñ"2Ñ2×~Ð~°t×7IÑ7IÈU×M`ÑM`Ñ7`×~Ð~Ðei×eoÑeoÐsx×s~Ñs~Ñe~Ð~r%   c                	ó   € V # r   r.   r¢   s   &r"   rp  Úpointer_type.scalar»  r  r%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   rc  ¿  s   € ÷ .ñ .˜ñ .r%   c                	ó<   € R V P                   P                  4        2# )ÚP)rW  r£   r¢   s   &r"   r£   Úpointer_type.mangle¿  s   € Ø�4—?‘?×)Ñ)Ó+Ð,Ð-Ð-r%   )rb  rj   rW  rJ   N)rL  F)rO   rk   rl   rm   r³   r   r9  r»   r  r  r�   r\  rp  r£   rn   r.   r%   r"   r`  r`  ›  sF   † ÷^õVòòòòõð ñó ð÷.ñ .r%   r`  c                  ó�   € ] tR tRtR R ltR R ltR tR tR tR	 R
 lt	R R lt
R R lt]R 4       t]R 4       tR R ltRtR# )Ú
block_typeiÃ  c               ó    € V ^8„  d   QhRRRR/# )r,   rW  rr  Úshaper   r.   )r/   s   "r"   r0   Úblock_type.__annotate__Å  s   € ÷ 9ñ 9 5ð 9°ñ 9r%   c                	ó2  € Wn         \        V\        \        34      '       g   Q h\        \	        V4      4      V n        V P
                  '       g   \        R 4      h\        V P
                  4      V n        RV P
                   RV P                    R2V n	        R# )z0d block_type is forbiddenÚ<ú, re  N)
rW  r&   rP   rj  Ú_unwrap_shaper‚  r^   r   ÚnumelrJ   )rH   rW  r‚  s   &&&r"   r³   Úblock_type.__init__Å  sw   € Ø$Œô ˜5¤4¬ -×0Ò0Ð1Ð0ô œ=¨Ó/Ó0ˆŒ
Ø�z�zˆzÜÐ8Ó9Ð9ä)¨$¯*©*Ó5ˆŒ
Ø˜Ÿ
™
�| 2 d§o¡oÐ%6°aÐ8ˆŽ	r%   c               ó    € V ^8„  d   QhRRRR/# )r,   ru   rv   r-   zir.block_typer.   )r/   s   "r"   r0   rƒ  Ô  s   € ÷ Pñ P˜Zð P¨Mñ Pr%   c                	ól   € VP                  V P                  P                  V4      V P                  4      # r   )Úget_block_tyrW  r   r‚  r6  s   &&r"   r   Úblock_type.to_irÔ  s(   € Ø×#Ñ# D§O¡O×$9Ñ$9¸'Ó$BÀDÇJÁJÓOÐOr%   c                	ó   € V P                   # r   rI   r¢   s   &r"   r9  Úblock_type.__str__×  r;  r%   c                	ó"   € V P                  4       # r   rn  r¢   s   &r"   r»   Úblock_type.__repr__Ú  rõ  r%   c                	ó   € R # rq  r.   r¢   s   &r"   r  Úblock_type.is_blockÝ  rs  r%   c               ó   € V ^8„  d   QhRR/# )r,   r-   z
Tuple[int]r.   )r/   s   "r"   r0   rƒ  à  s   € ÷ ñ  *ñ r%   c                	ó   € V P                   # r   ©r‚  r¢   s   &r"   Úget_block_shapesÚblock_type.get_block_shapesà  rä   r%   c               ó    € V ^8„  d   QhRRRR/# )r,   Ú	scalar_tyrr  r-   r€  r.   )r/   s   "r"   r0   rƒ  ã  s   € ÷ 1ñ 1¨ð 1°:ñ 1r%   c                	ó,   € \        WP                  4      # r   )r€  r‚  )rH   rš  s   &&r"   rY  Úblock_type.with_element_tyã  s   € Ü˜)§Z¡ZÓ0Ð0r%   c               ó   € V ^8„  d   QhRR/# rb   r.   )r/   s   "r"   r0   rƒ  æ  s   € ÷ Qñ Q˜tñ Qr%   c                	ó¦   € \        V\        4      '       g   R # V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r
  )r&   r€  rW  r‚  r�   s   &&r"   r�   Úblock_type.__eq__æ  s<   € Ü˜%¤×,Ò,ÙØ�‰ %×"2Ñ"2Ñ2×PÐP°t·z±zÀUÇ[Á[Ñ7PÐPr%   c                	ó   € V P                   # r   )rW  r¢   s   &r"   rp  Úblock_type.scalarë  s   € à�‰Ðr%   c                	ó^   € V P                   V P                  P                  ^,          ,          # )r„  )rˆ  rW  rq  r¢   s   &r"   ÚnbytesÚblock_type.nbytesï  s    € à�z‰z˜TŸ_™_×?Ñ?À1ÕDÕEÐEr%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   rƒ  ó  s   € ÷ !ñ !˜ñ !r%   c                	ó˜   € V P                   P                  4       pR P                  \        \        V P
                  4      4      pV RV R2# )Ú_ÚS)rp  r£   ÚjoinÚmapr'   r‚  )rH   Úeltr‚  s   &  r"   r£   Úblock_type.mangleó  s@   € Ø�k‰k× Ñ Ó"ˆØ—‘œœS $§*¡*Ó-Ó.ˆØ��a˜�w˜aÐ Ð r%   )rW  rJ   rˆ  r‚  N)rO   rk   rl   rm   r³   r   r9  r»   r  r—  rY  r�   r\  rp  r£  r£   rn   r.   r%   r"   r€  r€  Ã  s`   † õ9õPòòòõõ1õQð
 ñó ðð ñFó ðF÷!ñ !r%   r€  c                  ól   € ] tR tRtRR lt]R 4       tR tR tR R lt	R	 R
 lt
R tR R ltR tRtR# )Ú
tuple_typeiù  Nc                	ó   € Wn         W n        R # r   )ÚtypesÚfields)rH   r°  r±  s   &&&r"   r³   Útuple_type.__init__û  s   € ØŒ
ØŽr%   c           
     	ó6  € V P                   f1   RRP                  R V P                   4       4      ,           R,           # RRP                  \        V P                   V P                  4       UUu. uF  w  rV RV 2NK  	  upp4      ,           R,           # u uppi )NÚ[Ú,c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir   ©r'   )ra  Úvs   & r"   rb  Ú"tuple_type.name.<locals>.<genexpr>  s   é € Ð!=±*¨Q¤# a§& &³*ùrd  rº   Ú:)r±  r©  r°  Úzip)rH   Úkr¸  s   &  r"   rJ   Útuple_type.nameÿ  sx   € à�;‰;ÒØ˜Ÿ™Ñ!=°$·*²*Ó!=Ó=Õ=ÀÕCÐCØ�S—X‘X´c¸$¿+¹+ÀtÇzÁzÔ6RÔSÑ6R©d¨a !  A a S›zÑ6RÒSÓTÕTÐWZÕZÐZùÓSs   Á.Bc                	ó   € V P                   # r   rI   r¢   s   &r"   r9  Útuple_type.__str__  r;  r%   c                	ó,   € \        V P                  4      # r   )r]   r°  r¢   s   &r"   rW  Útuple_type.__iter__  rÁ   r%   c               ó    € V ^8„  d   QhRRRR/# )r,   ru   rv   r§   r¨   r.   )r/   s   "r"   r0   Útuple_type.__annotate__  s   € ÷ /ñ /¨ð /¸-ñ /r%   c                	óN   € V P                    F  pVP                  W4       K  	  R # r   )r°  r«   )rH   ru   r§   Útys   &&& r"   r«   Útuple_type._flatten_ir_types  s   € Ø—*”*ˆBØ× Ñ  Ö.ó r%   c               ó    € V ^8„  d   QhRRRR/# )r,   Úindexr™   r-   rr  r.   )r/   s   "r"   r0   rÃ    s   € ÷ !ñ ! ð !¨ñ !r%   c                	ó(   € V P                   V,          # r   )r°  )rH   rÈ  s   &&r"   rf  Útuple_type.__getitem__  s   € Ø�z‰z˜%Õ Ð r%   c                	ó²   € \        V 4      \        V4      J ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r   )rr   r°  r±  r�   s   &&r"   r�   Útuple_type.__eq__  sB   € Ü�D‹zœT %›[Ð(×fÐf¨T¯Z©Z¸5¿;¹;Ñ-F×fÐfÈ4Ï;É;ÐZ_×ZfÑZfÑKfÐfr%   c               ó$   € V ^8„  d   QhRRRRRR/# )r,   r‚   rƒ   r˜   r™   r-   zTuple[tuple, int]r.   )r/   s   "r"   r0   rÃ    s"   € ÷ +ñ + ^ð +¸Sð +ÐEVñ +r%   c                	óŽ   € . pV P                    F'  pVP                  W4      w  rRVP                  V4       K)  	  \        W04      V3# r   )r°  rœ   r  rj  )rH   r‚   r˜   rQ   rÅ  r±   s   &&&   r"   rœ   Útuple_type._unflatten_ir  sE   € ØˆØ—*”*ˆBØ×,Ñ,¨WÓ=‰MˆEØ�M‰M˜%Ö ñ ô �VÓ" FÐ*Ð*r%   c                	ób   € R RP                  R V P                   4       4      ,           R ,           # )r   r§  c              3  ó@   "  € T F  qP                  4       x € K  	  R # 5ir   )r£   )ra  rÅ  s   & r"   rb  Ú$tuple_type.mangle.<locals>.<genexpr>  s   é € Ð?±J¨bŸi™iŸk˜k³Jùs   ‚)r©  r°  r¢   s   &r"   r£   Útuple_type.mangle  s%   € Ø�S—X‘XÑ?°D·J²JÓ?Ó?Õ?À#ÕEÐEr%   )r±  r°  r   )rO   rk   rl   rm   r³   r	   rJ   r9  rW  r«   rf  r�   rœ   r£   rn   r.   r%   r"   r®  r®  ù  sB   † ôð ñ[ó ð[ò
ò õ/õ!ògõ+öFr%   r®  c                  ó   € ] tR tRtR tRtR# )Ú
slice_typei   c                	ó   € R V n         R# )rÕ  NrI   r¢   s   &r"   r³   Úslice_type.__init__"  s	   € Ø ˆŽ	r%   rI   N©rO   rk   rl   rm   r³   rn   r.   r%   r"   rÕ  rÕ     s   † ö!r%   rÕ  rw  r½  rÁ  rÅ  rÉ  rÍ  rÑ  rÕ  rÚ  rÞ  rˆ  r‰  r†  r‡  r…  rŠ  r‹  rŒ  r�  c               ó$   € V ^8„  d   QhRRRRRR/# )r,   rt  r™   Úsignedrc   r-   rr  r.   )r/   s   "r"   r0   r0   >  s&   € ÷ Uñ U˜Cð U¨ð U°%ñ Ur%   c                óŽ  € V ^8X  d   \         # V ^8X  d   V'       d   \        # V ^8X  d   V'       g   \        # V ^8X  d   V'       d   \        # V ^8X  d   V'       g   \        # V ^ 8X  d   V'       d   \
        # V ^ 8X  d   V'       g   \        # V ^@8X  d   V'       d   \        # V ^@8X  d   V'       g   \        # \        RV  RV 24      h)rL  zUnsupported bitwidth z and signedness )
r½  rÁ  rÑ  rÅ  rÕ  rÉ  rÚ  rÍ  rÞ  r5   )rt  rÚ  s   &&r"   Úget_int_dtyperÜ  >  s˜   € Ø�1„}ÜˆØ	�QŒŸ6ÜˆØ	�QŒŸvÜˆØ	�RŒŸFÜˆØ	�RŒ§ÜˆØ	�RŒŸFÜˆØ	�RŒ§ÜˆØ	�RŒŸFÜˆØ	�RŒ§ÜˆäÐ0°°
Ð:JÈ6È(ÐSÓTÐTr%   c                  ó  a € ] tR tRtRtR V 3R l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�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�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�R0 l4       t.]	R�R1 l4       t/]	R�R2 l4       t0]	R�R3 l4       t1]2R4 4       t3]	R‘R5 R6 ll4       t4R7 R8 lt5R9 R: lt6R; R< lt7R= R> lt8R? R@ lt9RA RB lt:RC RD lt;R’RE RF llt<R“RG RH llt=RI RJ lt>R”RK RL llt?R•RM RN llt@R•RO RP lltAR•RQ RR lltBR•RS RT lltCR•RU RV lltDR•RW RX lltER•RY RZ lltFR[ R\ ltGR] R^ ltHR_ R` ltIRa Rb ltJRc Rd ltKRe Rf ltLRg Rh ltMR–Ri Rj lltNR–Rk Rl lltORm Rn ltPRo Rp ltQRq Rr ltRRs Rt ltSR—Ru Rv lltTRw Rx ltUR˜Ry Rz lltVR™R{ R| lltWR˜R} R~ lltXR™R R€ lltYR‘R� R‚ lltZR’Rƒ R„ llt[R’R… R† llt\RšR‡ Rˆ llt]RšR‰ RŠ llt^R]_3R‹ RŒ llt`R�R� RŽ lltaR�tbV ;tc# )›rU   iZ  aß  Represents an N-dimensional array of values or pointers.

:code:`tensor` is the fundamental data structure in Triton programs.  Most
functions in :py:mod:`triton.language` operate on and return tensors.

Most of the named member functions here are duplicates of the free functions
in :code:`triton.language`.  For example, :code:`triton.language.sqrt(x)` is
equivalent to :code:`x.sqrt()`.

:code:`tensor` also defines most of the magic/dunder methods, so you can
write :code:`x+y`, :code:`x << 2`, etc.

.. rubric:: Constructors
..
   For some reason Sphinx includes __init__ before printing the full table
   of methods.  Not what I want, but I can't figure out how to fix it.  Give
   it its own section so it looks intentional. :)
c               ó   € V ^8„  d   QhRR/# )r,   rr   rr  r.   )r/   s   "r"   r0   Útensor.__annotate__n  s   € ÷ ?ñ ? Uñ ?r%   c                ó|  <€ \         SV `  4        Wn        VP                  4       '       d   VP                  MRV n        \        \        P                  ! V P                  4      4      V n        W n	        VP                  V n        \        V P                   Uu. uF  p\        V4      NK  	  up4      V n        R# u upi )úNot called by user code.Nr.   )rS  r³   Úhandler  r‚  rÐ   ÚmathÚprodrˆ  rr   rp  rr  rj  )rH   râ  rr   r)   r¡   s   &&& €r"   r³   Útensor.__init__n  sy   ø€ ä‰ÑÔàŒà#'§=¡=§?¢?�T—Z’Z¸ˆŒ
ÜœtŸyšy¨¯©Ó4Ó5ˆŒ
ØŒ	à—[‘[ˆŒ
Ü°$·*²*Ó=±*¨QœI ažL±*Ñ=Ó>ˆŽ
ùÒ=s   ÂB9c               ó$   € V ^8„  d   QhRRRRRR/# rt   r.   )r/   s   "r"   r0   rß  {  ó&   € ÷ Rñ R ð R°3ð R¸4ñ Rr%   c                	óŠ   € V P                   P                  VP                  W P                   P                  4       4      4       R # r   ©râ  Úset_locÚcreate_name_locÚget_locr|   s   &&&r"   r}   Útensor._set_name{  ó,   € Ø�‰×Ñ˜G×3Ñ3°D¿+¹+×:MÑ:MÓ:OÓPÖQr%   c               ó    € V ^8„  d   QhRRRR/# r�   r.   )r/   s   "r"   r0   rß  ~  ó   € ÷ $ñ $ >ð $°dñ $r%   c                	ó<   € VP                  V P                  4       R # r   ©r  râ  r…   s   &&r"   r†   Útensor._flatten_ir~  ó   € Ø�‰�t—{‘{Ö#r%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   rß  �  s   € ÷ Sñ S˜ñ Sr%   c                	ó–   € \        V P                  4      R ,           RP                  R V P                   4       4      ,           R,           # )r´  r†  c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir   r·  )ra  r)   s   & r"   rb  Ú!tensor.__str__.<locals>.<genexpr>ƒ  s   é € Ð0LÁ¸A´°Q·°Ãùrd  rº   )r'   rr  r©  r‚  r¢   s   &r"   r9  Útensor.__str__�  s2   € ä�4—:‘:‹ Õ$ t§y¡yÑ0LÀÇÂÓ0LÓ'LÕLÈsÕRÐRr%   Nc                	ó   € \        WR VR7      # ©T)Úsanitize_overflowr3   ©Úadd©rH   rŽ   r3   s   &&&r"   rç   Útensor.__add__…  ó   € ä�4°$À)ÔLÐLr%   c                	ó   € \        WR VR7      # rû  rý  rÿ  s   &&&r"   rì   Útensor.__radd__‰  ó   € ä�5°$À)ÔLÐLr%   c                	ó   € \        WR VR7      # rû  ©Úsubrÿ  s   &&&r"   rð   Útensor.__sub__�  r  r%   c                	ó   € \        WR VR7      # rû  r  rÿ  s   &&&r"   ró   Útensor.__rsub__‘  r  r%   c                	ó   € \        WR VR7      # rû  ©Úmulrÿ  s   &&&r"   rö   Útensor.__mul__•  r  r%   c                	ó   € \        WR VR7      # rû  r  rÿ  s   &&&r"   rü   Útensor.__rmul__™  r  r%   c                	ó:   € \        V4      pVP                  W4      # r   ©r\   Útruedivrÿ  s   &&&r"   rÿ   Útensor.__truediv__�  s   € ä$ UÓ+ˆØ× Ñ  Ó-Ð-r%   c                	ó:   € \        V4      pVP                  W4      # r   r  rÿ  s   &&&r"   r  Útensor.__rtruediv__¢  s   € ä$ UÓ+ˆØ× Ñ  Ó-Ð-r%   c                	ó:   € \        V4      pVP                  W4      # r   ©r\   Úfloordivrÿ  s   &&&r"   r  Útensor.__floordiv__§  s   € ä$ UÓ+ˆØ×!Ñ! $Ó.Ð.r%   c                	ó:   € \        V4      pVP                  W4      # r   r  rÿ  s   &&&r"   r	  Útensor.__rfloordiv__¬  s   € ä$ UÓ+ˆØ×!Ñ! %Ó.Ð.r%   c                	ó:   € \        V4      pVP                  W4      # r   ©r\   Úmodrÿ  s   &&&r"   rù   Útensor.__mod__±  ó   € ä$ UÓ+ˆØ�}‰}˜TÓ)Ð)r%   c                	ó:   € \        V4      pVP                  W4      # r   r  rÿ  s   &&&r"   Ú__rmod__Útensor.__rmod__¶  ó   € ä$ UÓ+ˆØ�}‰}˜UÓ)Ð)r%   c                	ó$   € VP                  V 4      # r   )Úminus©rH   r3   s   &&r"   r/  Útensor.__neg__¼  s   € à�‰˜tÓ$Ð$r%   c                	ó$   € VP                  V 4      # r   )Úinvertr(  s   &&r"   rE  Útensor.__invert__À  s   € à×Ñ Ó%Ð%r%   c                	ó:   € \        V4      pVP                  W4      # r   ©r\   Úand_rÿ  s   &&&r"   r3  Útensor.__and__Æ  ó   € ä$ UÓ+ˆØ�~‰~˜dÓ*Ð*r%   c                	ó:   € \        V4      pVP                  W4      # r   r.  rÿ  s   &&&r"   Ú__rand__Útensor.__rand__Ë  ó   € ä$ UÓ+ˆØ�~‰~˜eÓ*Ð*r%   c                	ó:   € \        V4      pVP                  W4      # r   ©r\   Úor_rÿ  s   &&&r"   r9  Útensor.__or__Ð  r!  r%   c                	ó:   € \        V4      pVP                  W4      # r   r7  rÿ  s   &&&r"   Ú__ror__Útensor.__ror__Õ  r%  r%   c                	ó:   € \        V4      pVP                  W4      # r   ©r\   Úxor_rÿ  s   &&&r"   r<  Útensor.__xor__Ú  r1  r%   c                	ó:   € \        V4      pVP                  W4      # r   r>  rÿ  s   &&&r"   Ú__rxor__Útensor.__rxor__ß  r5  r%   c                	óP   € \        W4       \        V4      pVP                  W4      # r   ©ru  r\   Úshlrÿ  s   &&&r"   rQ  Útensor.__lshift__ä  s#   € ä˜Ô$Ü$ UÓ+ˆØ�}‰}˜TÓ)Ð)r%   c                	óP   € \        W4       \        V4      pVP                  W4      # r   rE  rÿ  s   &&&r"   Ú__rlshift__Útensor.__rlshift__ê  s#   € ä˜Ô$Ü$ UÓ+ˆØ�}‰}˜UÓ)Ð)r%   c                	ó²   € \        W4       \        V4      pV P                  P                  4       '       d   VP	                  W4      # VP                  W4      # r   ©ru  r\   rr  ré  ÚashrÚlshrrÿ  s   &&&r"   rN  Útensor.__rshift__ð  sE   € ä˜Ô$Ü$ UÓ+ˆØ�:‰:×#Ñ#×%Ò%Ø—>‘> $Ó.Ð.à—>‘> $Ó.Ð.r%   c                	ó²   € \        W4       \        V4      pV P                  P                  4       '       d   VP	                  W4      # VP                  W4      # r   rL  rÿ  s   &&&r"   Ú__rrshift__Útensor.__rrshift__ù  sE   € ä˜Ô$Ü$ UÓ+ˆØ�:‰:×#Ñ#×%Ò%Ø—>‘> %Ó.Ð.à—>‘> %Ó.Ð.r%   c                	óF   € VP                  V4      pVP                  W4      # r   ©rh   Úgreater_thanrÿ  s   &&&r"   r  Útensor.__gt__  s#   € à×#Ñ# EÓ*ˆØ×%Ñ% dÓ2Ð2r%   c                	óF   € VP                  V4      pVP                  W4      # r   rT  rÿ  s   &&&r"   r  Útensor.__rgt__  s#   € à×#Ñ# EÓ*ˆØ×%Ñ% eÓ2Ð2r%   c                	óF   € VP                  V4      pVP                  W4      # r   ©rh   Úgreater_equalrÿ  s   &&&r"   r  Útensor.__ge__  s#   € à×#Ñ# EÓ*ˆØ×&Ñ& tÓ3Ð3r%   c                	óF   € VP                  V4      pVP                  W4      # r   rZ  rÿ  s   &&&r"   r  Útensor.__rge__  s#   € à×#Ñ# EÓ*ˆØ×&Ñ& uÓ3Ð3r%   c                	óF   € VP                  V4      pVP                  W4      # r   ©rh   Ú	less_thanrÿ  s   &&&r"   r  Útensor.__lt__  ó#   € à×#Ñ# EÓ*ˆØ×"Ñ" 4Ó/Ð/r%   c                	óF   € VP                  V4      pVP                  W4      # r   r`  rÿ  s   &&&r"   r  Útensor.__rlt__  ó#   € à×#Ñ# EÓ*ˆØ×"Ñ" 5Ó/Ð/r%   c                	óF   € VP                  V4      pVP                  W4      # r   ©rh   Ú
less_equalrÿ  s   &&&r"   r"  Útensor.__le__$  ó#   € à×#Ñ# EÓ*ˆØ×#Ñ# DÓ0Ð0r%   c                	óF   € VP                  V4      pVP                  W4      # r   rh  rÿ  s   &&&r"   r%  Útensor.__rle__)  s#   € à×#Ñ# EÓ*ˆØ×#Ñ# EÓ0Ð0r%   c                	óF   € VP                  V4      pVP                  W4      # r   ©rh   Úequalrÿ  s   &&&r"   r�   Útensor.__eq__/  s!   € à×#Ñ# EÓ*ˆØ�‰˜tÓ+Ð+r%   c                	óF   € VP                  V4      pVP                  W4      # r   ro  rÿ  s   &&&r"   Ú__req__Útensor.__req__4  s!   € à×#Ñ# EÓ*ˆØ�‰˜uÓ+Ð+r%   c                	óF   € VP                  V4      pVP                  W4      # r   ©rh   Ú	not_equalrÿ  s   &&&r"   r“   Útensor.__ne__9  rc  r%   c                	óF   € VP                  V4      pVP                  W4      # r   rv  rÿ  s   &&&r"   Ú__rne__Útensor.__rne__>  rf  r%   c                	óF   € VP                  V4      pVP                  W4      # r   )rh   r6  rÿ  s   &&&r"   r6  Útensor.logical_andC  s#   € à×#Ñ# EÓ*ˆØ×$Ñ$ TÓ1Ð1r%   c                	óF   € VP                  V4      pVP                  W4      # r   )rh   r?  rÿ  s   &&&r"   r?  Útensor.logical_orH  rk  r%   c                	ó$   € VP                  V 4      # r   )Únot_r(  s   &&r"   rT  Útensor.__not__O  s   € à�~‰~˜dÓ#Ð#r%   c                	óz  € \        V\        P                  \        \        34      '       g   Vf   V.p\        V\        4      '       d   VP
                  pT p\        V4       FÕ  w  rE\        V4      f   VP                  W44      pK%  \        V\        P                  \        34      '       d   \        ;QJ d=    R VP                  VP                  VP                  3 4       F  '       d   K   RM2	  RM.! R VP                  VP                  VP                  3 4       4      '       d   KÉ  \        RV 24      h	  V# )Nc              3  ó<   "  € T F  p\        V4      R J x € K  	  R # 5ir   r_  )ra  Úargs   & r"   rb  Ú%tensor.__getitem__.<locals>.<genexpr>]  s!   é € ð A_ÙA]¸#Ô(¨Ó-°Õ5ÓA]ùs   ‚FTzunsupported tensor index: )r&   ri  ÚslicerÐ   rj  rQ   Ú	enumerater\   Úexpand_dimsÚallÚstartÚstopÚstepr5   )rH   Úslicesr3   ÚretÚdimÚsls   &&&   r"   rf  Útensor.__getitem__S  s  € ä�fœxŸ~™~¬u´iÐ@×AÒAÀVÂ^Ø�XˆFÜ�fœe×$Ò$Ø—]‘]ˆFØˆÜ  Ö(‰GˆCÜ# BÓ'Ò/Ø×+Ñ+¨CÓ5’Ü˜B¤§¡´Ð 7×8Ò8¿S»Sñ A_ØBDÇ(Á(ÈBÏGÉGÐUW×U\ÑU\ÑA]óA_¿S¿SºSñ A_ØBDÇ(Á(ÈBÏGÉGÐUW×U\ÑU\ÑA]óA_÷ >_ò >_áä Ð#=¸b¸TÐ!BÓCÐCñ )ð ˆ
r%   c                ó   € Q R4       h)zTransposes a 2D tensor.z0Transposition must be created by the AST Visitorr.   r¢   s   &r"   r   Útensor.Td  s   € ð 	IÐHÓHˆur%   c               ó$   € V ^8„  d   QhRRRRRR/# ©r,   rr  Úfp_downcast_roundingzOptional[str]Úbitcastrc   r.   )r/   s   "r"   r0   rß  j  s'   € ÷ Uñ U˜ð U°]ð UÐTXñ Ur%   c                ó   € \        WW#VR7      # )z#
Alias for :py:func:`tensor.cast`.
©r3   )Úcast)rH   rr  r—  r˜  r3   s   &&&&&r"   ÚtoÚ	tensor.toi  s   € ô
 �DÐ!5È)ÔTÐTr%   c               ó   € V ^8„  d   QhRR/# ©r,   r-   rU   r.   )r/   s   "r"   r0   rß  u  s   € ÷ ñ  fñ r%   c                	ó   € R # r   r.   ©rH   r‚  s   &*r"   Úbroadcast_toÚtensor.broadcast_tou  ó   € Ùr%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  x  ó   € ÷ ñ ˜fñ r%   c                	ó   € R # r   r.   ©rH   Údimss   &*r"   ÚtransÚtensor.transx  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  {  ó   € ÷ ñ  ñ r%   c                	ó   € R # r   r.   r¨  s   &*r"   ÚpermuteÚtensor.permute{  r¤  r%   c               ó   € V ^8„  d   QhRR/# ©r,   r-   ztuple[tensor, tensor]r.   )r/   s   "r"   r0   rß  ~  s   € ÷ ñ Ð,ñ r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚsplitÚtensor.split~  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  �  r¦  r%   c                	ó   € R # r   r.   r¡  s   &*r"   ÚviewÚtensor.view�  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  „  s   € ÷ ñ  ñ r%   c                	ó   € R # r   r.   r¡  s   &*r"   ÚreshapeÚtensor.reshape„  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ‡  s   € ÷ ñ  6ñ r%   c                	ó   € R # r   r.   )rH   Úaxiss   &&r"   r‰  Útensor.expand_dims‡  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Š  s   € ÷ ñ Àvñ r%   c                	ó   € R # r   r.   )rH   rr  r—  r˜  s   &&&&r"   r›  Útensor.castŠ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  �  s   € ÷ ñ Ðciñ r%   c                	ó   € R # r   r.   )rH   r±   ÚmaskÚboundary_checkÚcache_modifierÚeviction_policys   &&&&&&r"   ÚstoreÚtensor.store�  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  �  s   € ÷ ñ  &ñ r%   c                	ó   € R # r   r.   )rH   Úoffsetss   &&r"   ÚadvanceÚtensor.advance�  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  “  s   € ÷ ñ ¸Fñ r%   c                	ó   € R # r   r.   )rH   ÚcmprÇ   ÚsemÚscopes   &&&&&r"   Ú
atomic_casÚtensor.atomic_cas“  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  –  ó   € ÷ ñ À6ñ r%   c                	ó   € R # r   r.   ©rH   rÇ   rÇ  rÕ  rÖ  s   &&&&&r"   Úatomic_xchgÚtensor.atomic_xchg–  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ™  ó   € ÷ ñ À&ñ r%   c                	ó   € R # r   r.   rÜ  s   &&&&&r"   Ú
atomic_addÚtensor.atomic_add™  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  œ  rà  r%   c                	ó   € R # r   r.   rÜ  s   &&&&&r"   Ú
atomic_maxÚtensor.atomic_maxœ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Ÿ  rà  r%   c                	ó   € R # r   r.   rÜ  s   &&&&&r"   Ú
atomic_minÚtensor.atomic_minŸ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ¢  rà  r%   c                	ó   € R # r   r.   rÜ  s   &&&&&r"   Ú
atomic_andÚtensor.atomic_and¢  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ¥  s   € ÷ ñ Àñ r%   c                	ó   € R # r   r.   rÜ  s   &&&&&r"   Ú	atomic_orÚtensor.atomic_or¥  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ¨  rà  r%   c                	ó   € R # r   r.   rÜ  s   &&&&&r"   Ú
atomic_xorÚtensor.atomic_xor¨  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  «  ó   € ÷ ñ �Vñ r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚexpÚ
tensor.exp«  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ®  rù  r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚlogÚ
tensor.log®  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ±  rù  r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚcosÚ
tensor.cos±  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ´  rù  r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚsinÚ
tensor.sin´  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ·  s   € ÷ ñ �fñ r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚsqrtÚtensor.sqrt·  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  º  ó   € ÷ ñ �vñ r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚrsqrtÚtensor.rsqrtº  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ½  rù  r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚabsÚ
tensor.abs½  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  À  s   € ÷ ñ ¸6ñ r%   c                	ó   € R # r   r.   )rH   rÀ  Ú
combine_fnÚ	keep_dimss   &&&&r"   ÚreduceÚtensor.reduceÀ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Ã  rÚ  r%   c                	ó   € R # r   r.   )rH   rÀ  r  Úreverses   &&&&r"   Úassociative_scanÚtensor.associative_scanÃ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Æ  s   € ÷ ñ  vñ r%   c                	ó   € R # r   r.   )rH   ÚindicesrÀ  s   &&&r"   ÚgatherÚtensor.gatherÆ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  É  s   € ÷ ñ  Vñ r%   c                	ó   € R # r   r.   )rH   Únum_binss   &&r"   Ú	histogramÚtensor.histogramÉ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Ì  s   € ÷ ñ ˜6ñ r%   c                	ó   € R # r   r.   )rH   Údivs   &&r"   ÚcdivÚtensor.cdivÌ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Ï  s   € ÷ ñ ˜ñ r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚsigmoidÚtensor.sigmoidÏ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Ò  s   € ÷ ñ Èñ r%   c                	ó   € R # r   r.   )rH   r�  r  Úieee_roundings   &&&&r"   ÚsoftmaxÚtensor.softmaxÒ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Õ  r  r%   c                	ó   € R # r   r.   r¢   s   &r"   ÚravelÚtensor.ravelÕ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Ø  ó   € ÷ ñ Ðkqñ r%   c                	ó   € R # r   r.   ©rH   rÀ  Úreturn_indicesÚreturn_indices_tie_break_leftr  s   &&&&&r"   ÚmaxÚ
tensor.maxØ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Û  ó   € ÷ ñ ÀFñ r%   c                	ó   € R # r   r.   ©rH   rÀ  Útie_break_leftr  s   &&&&r"   ÚargmaxÚtensor.argmaxÛ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  Þ  r>  r%   c                	ó   € R # r   r.   r@  s   &&&&&r"   ÚminÚ
tensor.minÞ  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  á  rF  r%   c                	ó   € R # r   r.   rH  s   &&&&r"   ÚargminÚtensor.argminá  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ä  s   € ÷ ñ ¸Vñ r%   c                	ó   € R # r   r.   )rH   rÀ  r  rr  s   &&&&r"   ÚsumÚ
tensor.sumä  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ç  s   € ÷ ñ °Vñ r%   c                	ó   € R # r   r.   ©rH   rÀ  r  s   &&&r"   Úxor_sumÚtensor.xor_sumç  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ê  s   € ÷ ñ °vñ r%   c                	ó   € R # r   r.   rZ  s   &&&r"   Ú	reduce_orÚtensor.reduce_orê  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  í  s   € ÷ ñ ¨vñ r%   c                	ó   € R # r   r.   ©rH   rÀ  r  s   &&&r"   ÚcumsumÚtensor.cumsumí  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ð  s   € ÷ ñ °ñ r%   c                	ó   € R # r   r.   rc  s   &&&r"   ÚcumprodÚtensor.cumprodð  r¤  r%   c               ó$   € V ^8„  d   QhRRRRRR/# )r,   r�  rÐ   Ú
descendingr-   rU   r.   )r/   s   "r"   r0   rß  ó  s"   € ÷ ñ ˜	ð °ið ÐRXñ r%   c                	ó   € R # r   r.   )rH   r�  rk  s   &&&r"   ÚsortÚtensor.sortó  r¤  r%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rß  ö  r­  r%   c                	ó   € R # r   r.   )rH   r�  s   &&r"   ÚflipÚtensor.flipö  r¤  r%   )rr  râ  rˆ  r‚  rr   r   ©NFN)NF)Nr.   rD   rD   ©NN©NNNr
  )NFF)NFTF)TF)r   F)drO   rk   rl   rm   rN   r³   r}   r†   r9  r@   rç   rì   rð   ró   rö   rü   rÿ   r  r  r	  rù   r#  r/  rE  r3  r3  r9  r;  r<  rB  rQ  rI  rN  rQ  r  r  r  r  r  r  r"  r%  r�   rs  r“   rz  r6  r?  rT  rf  r\  r   rœ  r¢  rª  r¯  r´  r¸  r¼  r‰  r›  rË  rÐ  r×  rÝ  râ  ræ  rê  rî  rò  rö  rû  rÿ  r  r  r  r  r  r  r  r$  r)  r.  r2  r7  r;  rC  rJ  rN  rR  rV  r[  r_  rd  rh  ÚCONSTEXPR_0rm  rq  rn   r]  r^  s   @r"   rU   rU   Z  sc  ø† ñ÷&?ð ?õRõ$õSð óMó ðMð óMó ðMð óMó ðMð óMó ðMð óMó ðMð óMó ðMð ó.ó ð.ð ó.ó ð.ð ó/ó ð/ð ó/ó ð/ð ó*ó ð*ð ó*ó ð*ð
 ó%ó ð%ð ó&ó ð&ð
 ó+ó ð+ð ó+ó ð+ð ó*ó ð*ð ó*ó ð*ð ó+ó ð+ð ó+ó ð+ð ó*ó ð*ð
 ó*ó ð*ð
 ó/ó ð/ð ó/ó ð/ð ó3ó ð3ð ó3ó ð3ð
 ó4ó ð4ð ó4ó ð4ð
 ó0ó ð0ð ó0ó ð0ð
 ó1ó ð1ð ó1ó ð1ð
 ó,ó ð,ð ó,ó ð,ð ó0ó ð0ð ó0ó ð0ð ó2ó ð2ð ó1ó ð1ð ó$ó ð$ð óó ðð  ñIó ðIð öUó ðUõõõõõõõ÷÷õ÷÷÷÷÷÷÷÷õõõõõõõ÷÷õõõõ÷õ÷÷÷÷÷÷÷÷÷ð %)À+÷ ÷õ r%   rU   c                ó°   € \        V  Uu. uF;  p\        V\        \        \        34      '       d   \        V4      MVP                  NK=  	  upV4      # u upi r   )r®  r&   r™   r>  rr  r®   rr   )rQ   r±  r!   s   && r"   Ú_type_for_tuple_valuesrx  ú  sJ   € ÜÑdjÓkÑdjÐ_`¬J°q¼3ÄÄuÐ:M×,NÒ,N”~ aÔ(ÐTU×TZÑTZÒZÑdjÑkÐmsÓtÐtùÒks   ŠAAc                  ó†   € ] tR tRtRR R lltR R ltR tR tR	 tR
 t	R t
R tR tR tR tR R ltR R ltR tRtR# )rj  iþ  Nc               ó    € V ^8„  d   QhRRRR/# )r,   r7   r   rr   zOptional[tuple_type]r.   )r/   s   "r"   r0   Útuple.__annotate__   s   € ÷ <ñ <˜Xð <Ð-Añ <r%   c                	óØ   € V Uu. uF  q3NK  	  upV n         \        V\        4      '       d	   W n        R # Ve   \        V4      V n        R # \	        V P                   4      V n        R # u upi r   )rQ   r&   r®  rr   rx  )rH   r7   rr   rP  s   &&& r"   r³   Útuple.__init__   sQ   € Ù"&Ó'¡$˜Q’q¡$Ñ'ˆŒÜ�dœJ×'Ò'ØŽIØÒÜ" 4Ó(ˆDŽIä.¨t¯{©{Ó;ˆDŽIùò (s   …
A'c               ó   € V ^8„  d   QhRR/# )r,   ÚidxrÐ   r.   )r/   s   "r"   r0   r{  	  s   € ÷ Cñ C˜yñ Cr%   c                	ó`  € \        V\        4      '       d   \        V4      p\        V\        4      '       d   V P                  V,          # \        V\        \
        P                  34      '       g   Q h\        V P                  VP                  VP                  VP                  1,          4      # r   )
r&   r™   rÐ   rQ   r‡  ri  rj  r‹  rŒ  r�  )rH   r  s   &&r"   rf  Útuple.__getitem__	  sw   € Ü�cœ3×ÒÜ˜C“.ˆCÜ�cœ9×%Ò%Ø—;‘;˜sÕ#Ð#ä˜c¤E¬8¯>©>Ð#:×;Ò;Ð;Ð;Ü˜Ÿ™ S§Y¡Y¨s¯x©x¸¿¹Ð%@ÕAÓBÐBr%   c                	ó¢   € V P                   P                  pVe   W9  d   \        RV 24      hV P                  VP	                  V4      ,          # )Nz 'tuple' object has no attribute )rr   r±  ÚAttributeErrorrQ   rÈ  )rH   rJ   r±  s   && r"   Ú__getattr__Útuple.__getattr__  sF   € Ø—‘×!Ñ!ˆØŠ>˜TÔ/Ü Ð#CÀDÀ6Ð!JÓKÐKØ�{‰{˜6Ÿ<™<¨Ó-Õ.Ð.r%   c                	óÆ   € \        V4      p\        V\        4      '       g   Q hW P                  V&   \	        V P                  V P
                  P                  4      V n        R # r   )r\   r&   r™   rQ   rx  rr   r±  )rH   r  r±   s   &&&r"   Ú_setitemÚtuple._setitem  sG   € Ü" 3Ó'ˆÜ˜#œs×#Ò#Ð#Ð#Ø �‰�CÑÜ*¨4¯;©;¸¿	¹	×8HÑ8HÓIˆŽ	r%   c                	ód   € \        V4      p\        V P                  VP                  ,           4      # r   )re  rj  rQ   r�   s   &&r"   rç   Útuple.__add__  s$   € Ü  Ó'ˆÜ�T—[‘[ 5§<¡<Õ/Ó0Ð0r%   c                	ó~   € \        V\        4      '       g   Q h\        V P                  VP                  ,          4      # r   )r&   rÐ   rj  rQ   r±   r�   s   &&r"   rö   Útuple.__mul__$  s-   € Ü˜%¤×+Ò+Ð+Ð+Ü�T—[‘[ 5§;¡;Õ.Ó/Ð/r%   c                	ó\   € \        V4      p\        V P                  VP                  8H  4      # r   )re  rÐ   rQ   r�   s   &&r"   r�   Útuple.__eq__(  s$   € Ü  Ó'ˆÜ˜Ÿ™¨¯©Ñ4Ó5Ð5r%   c                	óT   € \        \        P                  ! V P                  4      4      # r   )r¾   ri  rj  rQ   r¢   s   &r"   r¿   Útuple.__hash__,  s   € Ü”H—N’N 4§;¡;Ó/Ó0Ð0r%   c                	óh   € \        V P                   Uu. uF  p\        V4      NK  	  up4      # u upi r   )r'   rQ   )rH   r!   s   & r"   r9  Útuple.__str__/  s'   € Ü D§K¢KÓ0¡K˜q”C˜–F¡KÑ0Ó1Ð1ùÒ0s   ”/c                	ó,   € \        V P                  4      # r   )r]   rQ   r¢   s   &r"   rW  Útuple.__iter__2  s   € Ü�D—K‘KÓ Ð r%   c                	ó,   € \        V P                  4      # r   )rL   rQ   r¢   s   &r"   Ú__len__Útuple.__len__5  s   € Ü�4—;‘;ÓÐr%   c               ó$   € V ^8„  d   QhRRRRRR/# rt   r.   )r/   s   "r"   r0   r{  8  s!   € ÷ 4ñ 4 ð 4°3ð 4¸4ñ 4r%   c                	ó  € V P                   P                  pVe7   \        W0P                  4       F  w  rEVP	                  W RV 24       K  	  R # \        V P                  4       F  w  reVP	                  W RV 24       K  	  R # )NÚ.)rr   r±  r»  rQ   r}   rˆ  )rH   ru   rJ   r±  Úfieldr¸  rP  s   &&&    r"   r}   Útuple._set_name8  sp   € Ø—‘×!Ñ!ˆØÒÜ ¯©Ö4‘�Ø—‘˜G v¨Q¨u¨gÐ%6Ö7ó 5ô " $§+¡+Ö.‘�Ø—‘˜G v¨Q¨q¨c ]Ö3ó /r%   c               ó   € V ^8„  d   QhRR/# )r,   r‚   rƒ   r.   )r/   s   "r"   r0   r{  A  s   € ÷ #ñ # >ñ #r%   c                	óN   € V P                    F  pVP                  V4       K  	  R # r   )rQ   r†   )rH   r‚   r¸  s   && r"   r†   Útuple._flatten_irA  s   € Ø—”ˆAØ�M‰M˜'Ö"ó r%   c                	óN   € R RP                  R V P                   4       4       R2# )rE   r†  c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir   )rÆ   r`  s   & r"   rb  Ú!tuple.__repr__.<locals>.<genexpr>F  s   é € Ð:©k¨œT !ŸW˜W«kùrd  Ú))r©  rQ   r¢   s   &r"   r»   Útuple.__repr__E  s%   € Ø�4—9‘9Ñ:¨d¯kªkÓ:Ó:Ð;¸1Ð=Ð=r%   )rr   rQ   r   )rO   rk   rl   rm   r³   rf  r„  r‡  rç   rö   r�   r¿   r9  rW  r–  r}   r†   r»   rn   r.   r%   r"   rj  rj  þ  sJ   † ÷<õCò/òJò1ò
0ò6ò1ò2ò!ò õ4õ#ö>r%   rj  c                  ó   € ] tR tRtR tRtR# )r‡  iI  c                	óH   € Wn         W n        W0n        \        4       V n        R # r   )r‹  rŒ  r�  rÕ  rr   )rH   r‹  rŒ  r�  s   &&&&r"   r³   Úslice.__init__K  s   € ØŒ
ØŒ	ØŒ	Ü“LˆŽ	r%   )r‹  r�  rŒ  rr   NrØ  r.   r%   r"   r‡  r‡  I  s   † ö!r%   r‡  c                  ój   € ] 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tR# )Útensor_descriptor_base_typeiR  c               ó   € V ^8„  d   QhRR/# ©r,   r€  r.   )r/   s   "r"   r0   Ú(tensor_descriptor_base_type.__annotate__T  s   € ÷ %ñ % :ñ %r%   c                	ó   € Wn         R # r   ©r€  )rH   r€  s   &&r"   r³   Ú$tensor_descriptor_base_type.__init__T  s   € Ø$Žr%   c               ó$   € V ^8„  d   QhRRRRRR/# ©r,   r‚   rƒ   r˜   r™   r-   z"Tuple[tensor_descriptor_base, int]r.   )r/   s   "r"   r0   r¬  W  s"   € ÷ !ñ ! ^ð !¸Sð !ÐEgñ !r%   c                	óN   € \        W,          V P                  4      pW2^,           3# rK  )Útensor_descriptor_baser€  )rH   r‚   r˜   r±   s   &&& r"   rœ   Ú)tensor_descriptor_base_type._unflatten_irW  s!   € Ü& w¥¸¿¹ÓHˆØ˜q•jÐ Ð r%   c               ó$   € V ^8„  d   QhRRRRRR/# r¦   r.   )r/   s   "r"   r0   r¬  [  s&   € ÷ eñ e¨ð e¸-ð eÈDñ er%   c                	óÂ   € V P                   P                  P                  4       pVP                  VP	                  V P                   P                  V4      V4      4       R # r   )r€  rW  ré  r  Úcreate_tensor_descriptor_typer   )rH   ru   r§   Ú	is_signeds   &&& r"   r«   Ú-tensor_descriptor_base_type._flatten_ir_types[  sC   € Ø—O‘O×.Ñ.×<Ñ<Ó>ˆ	Ø�
‰
�7×8Ñ8¸¿¹×9NÑ9NÈwÓ9WÐYbÓcÖdr%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   r¬  _  s   € ÷ 7ñ 7˜ñ 7r%   c                	ó"   € R V P                    R2# )ztensor_descriptor<re  r®  r¢   s   &r"   r9  Ú#tensor_descriptor_base_type.__str___  s   € à# D§O¡OÐ#4°AÐ6Ð6r%   c               ó   € V ^8„  d   QhRR/# rb   r.   )r/   s   "r"   r0   r¬  c  s   € ÷ 3ñ 3˜tñ 3r%   c                	óh   € \        V4      \        V 4      Jd   R # V P                  VP                  8H  # r
  ©rr   r€  r�   s   &&r"   r�   Ú"tensor_descriptor_base_type.__eq__c  s*   € Ü�‹;œd 4›jÓ(ÙØ�‰ %×"2Ñ"2Ñ2Ð2r%   c               ó   € V ^8„  d   QhRR/# rb   r.   )r/   s   "r"   r0   r¬  h  s   € ÷ #ñ # ñ #r%   c                	ó   € W8X  * # r   r.   r�   s   &&r"   Ú__neq__Ú#tensor_descriptor_base_type.__neq__h  r•   r%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   r¬  k  s   € ÷ /ñ /˜ñ /r%   c                	ó<   € R V P                   P                  4        2# )ÚTD)r€  r£   r¢   s   &r"   r£   Ú"tensor_descriptor_base_type.manglek  s   € Ø�D—O‘O×*Ñ*Ó,Ð-Ð.Ð.r%   r®  N)rO   rk   rl   rm   r³   rœ   r«   r9  r�   rÃ  r£   rn   r.   r%   r"   r©  r©  R  s+   † õ%õ!õeõ7õ3õ
#÷/ñ /r%   r©  c                  ó’  a € ] tR tRtRtR V 3R lltR R ltR R lt]R	 4       t	]R
 4       t
]R 4       tR R lt]R%R R ll4       t]R%R R ll4       t]R%R R ll4       t]R%R R ll4       t]R%R R ll4       t]R%R R ll4       t]R%R R ll4       t]R%R R ll4       t]RR/R  R! ll4       t]RR/R" R# ll4       tR$tV ;t# )&r³  io  z5"
A tensor descriptor with unknown shape and strides
c               ó   € V ^8„  d   QhRR/# r«  r.   )r/   s   "r"   r0   Ú#tensor_descriptor_base.__annotate__t  s   € ÷ <ñ <¨:ñ <r%   c                óP   <€ \         SV `  4        Wn        \        V4      V n        R# )rá  N)rS  r³   râ  r©  rr   )rH   râ  r€  r¡   s   &&&€r"   r³   Útensor_descriptor_base.__init__t  s   ø€ ä‰ÑÔàŒÜ/°
Ó;ˆŽ	r%   c               ó$   € V ^8„  d   QhRRRRRR/# rt   r.   )r/   s   "r"   r0   rË  {  rç  r%   c                	óŠ   € V P                   P                  VP                  W P                   P                  4       4      4       R # r   ré  r|   s   &&&r"   r}   Ú tensor_descriptor_base._set_name{  rî  r%   c               ó    € V ^8„  d   QhRRRR/# r�   r.   )r/   s   "r"   r0   rË  ~  rð  r%   c                	ó<   € VP                  V P                  4       R # r   rò  r…   s   &&r"   r†   Ú"tensor_descriptor_base._flatten_ir~  rô  r%   c                	ó.   € V P                   P                  # r   r¿  r¢   s   &r"   r€  Ú!tensor_descriptor_base.block_type�  s   € à�y‰y×#Ñ#Ð#r%   c                	óB   € V P                   P                  P                  # r   )rr   r€  r‚  r¢   s   &r"   Úblock_shapeÚ"tensor_descriptor_base.block_shape…  s   € à�y‰y×#Ñ#×)Ñ)Ð)r%   c                	óB   € V P                   P                  P                  # r   )rr   r€  rW  r¢   s   &r"   rr  Útensor_descriptor_base.dtype‰  s   € à�y‰y×#Ñ#×.Ñ.Ð.r%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   rË  �  s   € ÷ ñ ˜ñ r%   c                	ó,   € \        V P                  4      # r   )r'   rr   r¢   s   &r"   r9  Útensor_descriptor_base.__str__�  s   € Ü�4—9‘9‹~Ðr%   Nc               ó    € V ^8„  d   QhRRRR/# )r,   rÏ  úSequence[constexpr | tensor]r-   rU   r.   )r/   s   "r"   r0   rË  ‘  s   € ÷ @ñ @Ð8ð @ÈVñ @r%   c                ó(   € VP                  WRR4      # )z¶Load a block from the descriptor starting at the given element offsets.

Values outside of the tensor bounds will be filled with zeros.

:note: Offset must be a multiple of 16-bytes
rD   )Údescriptor_load)rH   rÏ  r3   s   &&&r"   ÚloadÚtensor_descriptor_base.load�  s   € ð ×(Ñ(¨¸¸BÓ?Ð?r%   c               ó$   € V ^8„  d   QhRRRRRR/# ©r,   rÏ  rß  r±   rU   r-   r.   )r/   s   "r"   r0   rË  ›  s(   € ÷ @ñ @Ð9ð @À&ð @Ð]cñ @r%   c                ó&   € VP                  WV4      # )z­Store a block from the descriptor starting at the given element offsets.

Values outside of the tensor bounds will be ignored.

:note: Offset must be a multiple of 16-bytes
)Údescriptor_store©rH   rÏ  r±   r3   s   &&&&r"   rË  Útensor_descriptor_base.storeš  s   € ð ×)Ñ)¨$°wÓ?Ð?r%   c               ó$   € V ^8„  d   QhRRRRRR/# rå  r.   )r/   s   "r"   r0   rË  ¥  ó(   € ÷ Eñ EÐ">ð EÀvð EÐbhñ Er%   c                	ó&   € VP                  WV4      # r   )Údescriptor_atomic_addrè  s   &&&&r"   râ  Ú!tensor_descriptor_base.atomic_add¤  ó   € à×.Ñ.¨t¸GÓDÐDr%   c               ó$   € V ^8„  d   QhRRRRRR/# rå  r.   )r/   s   "r"   r0   rË  ©  rë  r%   c                	ó&   € VP                  WV4      # r   )Údescriptor_atomic_minrè  s   &&&&r"   rê  Ú!tensor_descriptor_base.atomic_min¨  rï  r%   c               ó$   € V ^8„  d   QhRRRRRR/# rå  r.   )r/   s   "r"   r0   rË  ­  rë  r%   c                	ó&   € VP                  WV4      # r   )Údescriptor_atomic_maxrè  s   &&&&r"   ræ  Ú!tensor_descriptor_base.atomic_max¬  rï  r%   c               ó$   € V ^8„  d   QhRRRRRR/# rå  r.   )r/   s   "r"   r0   rË  ±  rë  r%   c                	ó&   € VP                  WV4      # r   )Údescriptor_atomic_andrè  s   &&&&r"   rî  Ú!tensor_descriptor_base.atomic_and°  rï  r%   c               ó$   € V ^8„  d   QhRRRRRR/# rå  r.   )r/   s   "r"   r0   rË  µ  s(   € ÷ Dñ DÐ!=ð DÀfð DÐagñ Dr%   c                	ó&   € VP                  WV4      # r   )Údescriptor_atomic_orrè  s   &&&&r"   rò  Ú tensor_descriptor_base.atomic_or´  s   € à×-Ñ-¨d¸7ÓCÐCr%   c               ó$   € V ^8„  d   QhRRRRRR/# rå  r.   )r/   s   "r"   r0   rË  ¹  rë  r%   c                	ó&   € VP                  WV4      # r   )Údescriptor_atomic_xorrè  s   &&&&r"   rö  Ú!tensor_descriptor_base.atomic_xor¸  rï  r%   r3   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rË  ½  s   € ÷ Nñ N¨vñ Nr%   c               ó”   € \        V4      ^8X  g   Q R\        V4       24       hV^ ,          pV^,          pVP                  WVRR4      # )z)Gather multiple descriptors worth of dataz5descriptor gather only supports 2D indexing, but got rD   )rL   Údescriptor_gather)rH   r3   r7   Ú	x_offsetsÚy_offsets   &$*  r"   r$  Útensor_descriptor_base.gather¼  sR   € ô �4‹y˜AŒ~ÐbÐ!VÔWZÐ[_ÓW`ÐVaÐbÓbˆ~Ø˜•Gˆ	Ø˜•7ˆØ×*Ñ*¨4¸HÀbÈ"ÓMÐMr%   c               ó   € V ^8„  d   QhRR/# rŸ  r.   )r/   s   "r"   r0   rË  Å  s   € ÷ Nñ N°vñ Nr%   c               ó�   € \        V4      ^8X  g   Q R\        V4       24       hV^ ,          pV^,          pVP                  WWE4      # )z*Scatter multiple descriptors worth of dataz6descriptor scatter only supports 2D indexing, but got )rL   Údescriptor_scatter)rH   r±   r3   r7   r  r  s   &&$*  r"   ÚscatterÚtensor_descriptor_base.scatterÄ  sN   € ô �4‹y˜AŒ~ÐcÐ!WÔX[Ð\`ÓXaÐWbÐcÓcˆ~Ø˜•Gˆ	Ø˜•7ˆØ×+Ñ+¨D¸ÓMÐMr%   )râ  rr   r   )rO   rk   rl   rm   rN   r³   r}   r†   r\  r€  r×  rr  r9  r@   râ  rË  râ  rê  ræ  rî  rò  rö  r$  r  rn   r]  r^  s   @r"   r³  r³  o  sJ  ø† ñ÷<ð <õRõ$ð ñ$ó ð$ð ñ*ó ð*ð ñ/ó ð/õð ö@ó ð@ð ö@ó ð@ð öEó ðEð öEó ðEð öEó ðEð öEó ðEð öDó ðDð öEó ðEð ðN dö Nó ðNð ðN¨dö Nó öNr%   r³  c                  óR   a € ] tR tRtR R ltR R ltR V 3R lltV 3R ltR	tV ;t	# )
Útensor_descriptor_typeiÍ  c               ó$   € V ^8„  d   QhRRRRRR/# )r,   r€  Ú
shape_typer®  Ústrides_typer.   )r/   s   "r"   r0   Ú#tensor_descriptor_type.__annotate__Ï  s"   € ÷ )ñ ) :ð )¸:ð )ÐU_ñ )r%   c                	ó*   € Wn         W n        W0n        R # r   ©r€  r  r  )rH   r€  r  r  s   &&&&r"   r³   Útensor_descriptor_type.__init__Ï  s   € Ø$ŒØ$ŒØ(Ör%   c               ó$   € V ^8„  d   QhRRRRRR/# r±  r.   )r/   s   "r"   r0   r  Ô  s"   € ÷ ñ  ^ð ¸Sð ÐEgñ r%   c                	óú   € W,          pV^,          pV P                   P                  W4      w  rBV P                  P                  W4      w  rRVP                  pVP                  p\	        W4WPP
                  4      pWb3# rK  )r  rœ   r  rQ   Útensor_descriptorr€  )rH   r‚   r˜   râ  r‚  Ústridesr±   s   &&&    r"   rœ   Ú$tensor_descriptor_type._unflatten_irÔ  sj   € Ø•ˆØ�!�ˆØŸ™×5Ñ5°gÓF‰ˆØ×+Ñ+×9Ñ9¸'ÓJ‰ˆØ—‘ˆØ—.‘.ˆÜ! &°¿/¹/ÓJˆØˆ}Ðr%   c               ó$   € V ^8„  d   QhRRRRRR/# r¦   r.   )r/   s   "r"   r0   r  Þ  s!   € ÷ :ñ :¨ð :¸-ð :ÈDñ :r%   c                	ó’   <€ \         SV `  W4       V P                  P                  W4       V P                  P                  W4       R # r   )rS  r«   r  r  )rH   ru   r§   r¡   s   &&&€r"   r«   Ú(tensor_descriptor_type._flatten_ir_typesÞ  s6   ø€ Ü‰Ñ! 'Ô/Ø�‰×)Ñ)¨'Ô7Ø×Ñ×+Ñ+¨GÖ9r%   c                	ó¦   <€ \         SV `  V4      ;'       d;    V P                  VP                  8H  ;'       d    V P                  VP                  8H  # r   )rS  r�   r  r  )rH   rŽ   r¡   s   &&€r"   r�   Útensor_descriptor_type.__eq__ã  sW   ø€ Ü‰w‰~˜eÓ$÷ kð k¨$¯/©/¸U×=MÑ=MÑ*M÷ kð kÐTX×TeÑTeØW\×WiÑWiñUjð 	kr%   r  )
rO   rk   rl   rm   r³   rœ   r«   r�   rn   r]  r^  s   @r"   r  r  Í  s#   ø† õ)õ
÷:ð :÷
kó kr%   r  c                  óV   a € ] tR tRtRtR V 3R lltR V 3R lltR V 3R lltR	tV ;t	# )
r  iè  z9A descriptor representing a tensor in global memory.
    c               ó$   € V ^8„  d   QhRRRRRR/# )r,   r‚  úList[tensor]r  r€  r.   )r/   s   "r"   r0   Útensor_descriptor.__annotate__ì  s"   € ÷ 
ñ 
 lð 
¸\ð 
ÐWañ 
r%   c                óÜ   <€ \         SV `  W4       \        V4      V n        \        V4      V n        \        VV P                  P                  V P                  P                  R7      V n        R# )rá  )r  r  N)rS  r³   rj  r‚  r  r  rr   )rH   râ  r‚  r  r€  r¡   s   &&&&&€r"   r³   Útensor_descriptor.__init__ì  sO   ø€ ô 	‰Ñ˜Ô,ä˜5“\ˆŒ
Ü˜W“~ˆŒÜ*ØØ—z‘z—‘ØŸ™×*Ñ*ô
ˆŽ	r%   c               ó$   € V ^8„  d   QhRRRRRR/# rt   r.   )r/   s   "r"   r0   r%  ù  s!   € ÷ :ñ : ð :°3ð :¸4ñ :r%   c                	ó®   <€ \         SV `  W4       V P                  P                  WR ,           4       V P                  P                  WR,           4       R# )z.shapez.strideN)rS  r}   r‚  r  )rH   ru   rJ   r¡   s   &&&€r"   r}   Útensor_descriptor._set_nameù  s=   ø€ Ü‰Ñ˜'Ô(Ø�
‰
×Ñ˜W¨X¥oÔ6Ø�‰×Ñ˜w¨yÕ(8Ö9r%   c               ó    € V ^8„  d   QhRRRR/# r�   r.   )r/   s   "r"   r0   r%  þ  s   € ÷ *ñ * >ð *°dñ *r%   c                	ó’   <€ \         SV `  V4       V P                  P                  V4       V P                  P                  V4       R # r   )rS  r†   r‚  r  )rH   r‚   r¡   s   &&€r"   r†   Útensor_descriptor._flatten_irþ  s4   ø€ Ü‰Ñ˜GÔ$Ø�
‰
×Ñ˜wÔ'Ø�‰× Ñ  Ö)r%   )r‚  r  rr   )
rO   rk   rl   rm   rN   r³   r}   r†   rn   r]  r^  s   @r"   r  r  è  s&   ø† ñ÷
ð 
÷:ð :÷
*ö *r%   r  )Úfrozenc                  óT   € ] tR tRt$ RtR]R&   R]R&   R R ltR	 R
 ltR R ltRt	R# )Ú_aggregate_typei	  z³A generic base type for all Triton aggregate types.

This class contains a reference to the original user-defined Python class
and a list of class fields with their Triton types.
rr   Úbase_clszList[Tuple[str, base_type]]r±  c               ó$   € V ^8„  d   QhRRRRRR/# )r,   r‚   rƒ   r˜   r™   r-   zTuple[ir.value, int]r.   )r/   s   "r"   r0   Ú_aggregate_type.__annotate__  s"   € ÷  ñ   ^ð  ¸Sð  ÐEYñ  r%   c                	ó¤   € V P                   P                  4       pV P                   F$  w  rEVP                  W4      w  rb\	        W4V4       K&  	  W23# r   )r1  Ú_get_instancer±  rœ   r<   )rH   r‚   r˜   ÚinstancerJ   rÅ  r±   s   &&&    r"   rœ   Ú_aggregate_type._unflatten_ir  sK   € Ø—=‘=×.Ñ.Ó0ˆØŸœ‰HˆDØ×,Ñ,¨WÓ=‰MˆEÜ�H EÖ*ñ $ð ÐÐr%   c               ó$   € V ^8„  d   QhRRRRRR/# r¦   r.   )r/   s   "r"   r0   r3    s!   € ÷ /ñ /¨ð /¸-ð /ÈDñ /r%   c                	óR   € V P                    F  w  r4VP                  W4       K  	  R # r   )r±  r«   )rH   ru   r§   rJ   rÅ  s   &&&  r"   r«   Ú!_aggregate_type._flatten_ir_types  s    € ØŸœ‰HˆDØ× Ñ  Ö.ó $r%   c               ó   € V ^8„  d   QhRR/# rŸ   r.   )r/   s   "r"   r0   r3    s   € ÷ .ñ .˜ñ .r%   c                	óô   € V P                   P                   R V P                   P                   2pV P                   UUu. uF  w  rVP	                  4       NK  	  pppX RRP                  V4       R2# u uppi )rš  r…  r†  re  )r1  rk   rl   r±  r£   r©  )rH   rJ   rÅ  r±  s   &   r"   r£   Ú_aggregate_type.mangle  sj   € Ø—-‘-×*Ñ*Ð+¨1¨T¯]©]×-GÑ-GÐ,HÐIˆØ04·²Ô<±¡* 4�"—)‘)–+±ˆÑ<Ø��q˜Ÿ™ 6Ó*Ð+¨1Ð-Ð-ùó =s   ¿A4r.   N)
rO   rk   rl   rm   rN   rˆ   rœ   r«   r£   rn   r.   r%   r"   r0  r0  	  s(   ‡ ñð ƒNØ'Ó'õ õ/÷.ñ .r%   r0  c                ó˜  € \        V \        4      '       d   ^ RIHp V! V \        4      # \        V \
        P                  4      '       d[   \
        P                  ! R V  4       4      p\        V RR4      p\        V Uu. uF  qDP                  NK  	  upV4      p\        W%4      # \        V \        4      '       d   V # \        V 4      # u upi )r   )Ú_apply_to_tuple_valuesc              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir   )Ú_wrap_init_args)ra  rP  s   & r"   rb  Ú"_wrap_init_args.<locals>.<genexpr>*  s   é € Ð ?¹Q¸¤°×!3Ð!3»Qùrd  Ú_fieldsN)r&   rj  Útriton.compiler.code_generatorr?  rA  ri  re   r®  rr   rp   rÐ   )r!   r?  Úwrappedr±  r¸  rÅ  s   &     r"   rA  rA  %  s›   € Ü�!”U×ÒÝIÙ% a¬Ó9Ð9Ü�!”X—^‘^×$Ò$Ü—.’.Ñ ?¹QÓ ?Ó?ˆÜ˜˜I tÓ,ˆÜ©Ó1© AŸœ©Ñ1°6Ó:ˆÜ�WÓ!Ð!Ü�!”Z× Ò ØˆÜ�Q‹<Ðùò	 2s   Á=C)Údataclass_transformc                 ó   € R  # )c                ó   € V # r   r.   )Úobjs   &r"   r#   Ú%dataclass_transform.<locals>.<lambda>8  s   € ™3r%   r.   ©r8   s   ,r"   rF  rF  7  s   € ÙÐr%   c                óv  € / p/ p\        V P                  R ,          4       F{  pV\        J g   V\        J d   K  \	        VRR4      '       g   \        RV 24      hVP                  \        P                  ! V4      4       VP                  \	        VR/ 4      4       K}  	  \        P                  ! V 4      p\        P                  ! V 4      pV Ff  pWV,          W&   V P                  P                  V\        4      pV\        J d   K9  \        V4      '       d   \        V\        4      '       g   Kb  WrV&   Kh  	  W3# )ºrL  NNÚ__triton_aggregate__FzOAggregates can only inherit from other aggregates, but got non-aggregate base: Ú__aggregate_defaults__)ÚreversedÚ__mro__rp   Úobjectre   r^   Úupdater>   Úget_annotationsÚtypingÚget_type_hintsÚ__dict__ÚgetÚ_AGGREGATE_MISSINGr;   r&   )ÚclsÚall_annotationsÚall_defaultsÚbaseÚ	own_namesÚhintsrJ   rÇ   s   &       r"   Ú_resolve_aggregate_fieldsr`  >  s  € Ø€OØ€Lä˜Ÿ™ R�Ö)ˆØ”:Ó ¬£ÙÜ�tÐ3°U×;Ò;ÜÐmÐnrÐmsÐtÓuÐuØ×Ñœw×6Ò6°tÓ<Ô=Ø×ÑœG DÐ*BÀBÓGÖHñ *ô ×'Ò'¨Ó,€IÜ×!Ò! #Ó&€EÛˆØ %¥ˆÑØ�l‰l×Ñ˜tÔ%7Ó8ˆØÔ$Ó$Ùä˜�}Š}¤
¨3´
× ;Ô ;Ø!$˜Óñ ð Ð(Ð(r%   F)Ú
eq_defaultc                ó€  a aaaaa€ \        S 4      w  ooS P                  P                  R R4      oSf4   \        P                  ! SP                  4       4      oVV V3R loRSn         ! VVV V3R lR\        4      oS.p\        P                  ! S 4       F   w  r#\        P                  ! V4      '       g5   \        P                  ! V4      '       g   \        V\        4      '       g   KU  VR 8X  d   K^  VR8X  d   Kg  VSP                  9   d   Kz  \        SW#4       VR8w  g   K�  VP                  V4       K¢  	  VSn        S P"                  Sn        S P$                  Sn        S P&                  Sn        S P(                  Sn        \        P                  ! SP                  4       4      Sn        \-        S4      Sn        S# )r³   Nc           	     óv  <€ \        V4      \        S	4      8”  d?   \        SP                   R \        S	4      ^,            R\        V4      ^,            R24      h\        S	4       Fš  w  r4V\        V4      8  d+   WB9   d   \        SP                   RV R24      hW,          pMDWB9   d   VP	                  V4      pM,VS9   d   SV,          pM\        SP                   RV R24      h\        V4      p\        WV4       Kœ  	  V'       d0   \        \        V4      4      p\        SP                   RV R24      hR# )z.__init__() takes z positional arguments but z were givenz..__init__() got multiple values for argument 'Ú'z(.__init__() missing required argument: 'z0.__init__() got an unexpected keyword argument 'N)	rL   r^   rO   rˆ  ÚpoprA  r<   Únextr]   )
rH   r7   r8   rÈ  rJ   r±   Ú
unexpectedr\  rZ  Úfield_namess
   &*,    €€€r"   ÚinitÚ_aggregate.<locals>.inita  s5  ø€ Ü�4‹yœ3˜{Ó+Ô+Ü 3§<¡< .Ð0BÄ3À{ÓCSÐVWÕCWÐBXð Y'Ü'*¨4£y°1¥} o°[ð!Bó Cð Cô  )¨Ö5‘�Øœ3˜t›9Ô$Ø”~Ü'¨3¯<©<¨.Ð8fÐgkÐflÐlmÐ(nÓoÐoØ �K‘EØ”^Ø"ŸJ™J tÓ,‘EØ˜\Ô)Ø(¨Õ.‘Eä# s§|¡| nÐ4\Ð]aÐ\bÐbcÐ$dÓeÐeä'¨Ó.�Ü˜ EÖ*ñ  6÷ Ü!¤$ v£,Ó/�
Ü 3§<¡< .Ð0`ÐakÐ`lÐlmÐ nÓoÐoñ r%   Tc                  óª   <a € ] tR tRtRtRt Zt]V 3R l4       tRRRR/VVV3R llt	V VV3R lt
R	 V3R
 lltR V3R llt]VV3R l4       tRtV ;t# )Ú#_aggregate.<locals>.aggregate_valuei|  Tc                	ó"   <€ \         SV `  V 4      # r   )rS  Ú__new__)Úthis_clsr¡   s   &€r"   r5  Ú1_aggregate.<locals>.aggregate_value._get_instance�  s   ø€ ä‘7‘? 8Ó,Ð,r%   r3   NrC   c               	óþ  <€ V P                  4       p\        P                  VR R4       / p\        S
\        4      '       d   MRR\
        P                  ! S
4      P                  9   d   WR&   R\
        P                  ! S
4      P                  9   d   W&R&   S
! V.VO5/ VBVB  SP                  4        F0  p\        WW4      '       d   K  \        RS	P                   RV R24      h	  \        P                  VR R4       V# )Ú_aggregate_init_completeFr3   rC   zconstructor for z did not initialize attribute 'rd  T)r5  rR  Ú__setattr__r&   r   r>   r?   rK   rM   rÅ   rƒ  rO   )ro  r3   rC   r7   r8   r6  Úextra_kwargsrJ   r[  rZ  ri  s   &$$*,   €€€r"   rn  Ú+_aggregate.<locals>.aggregate_value.__new__…  sñ   ø€ à×-Ñ-Ó/ˆHô ×Ñ˜xÐ)CÀUÔKØˆLÜ˜$¤×,Ò,àà¤'×"3Ò"3°DÓ"9×"DÑ"DÔDØ09 Ñ-Ø¤7×#4Ò#4°TÓ#:×#EÑ#EÔEØ1; Ñ.Ù�Ð;˜DÒ; LÐ;°FÒ;ð (×,Ñ,Ö.�Ü˜x×.Ô.Ü(Ð+;¸C¿L¹L¸>ÐIhÐimÐhnÐnoÐ)pÓqÐqñ /ô
 ×Ñ˜xÐ)CÀTÔJØˆOr%   c           
     	óB  <€ VS9  d   \        SP                   R V R24      h\        VSV,          4      '       g%   \        RSV,           RV R\	        V4       24      h\        V RR4      '       d   \        RV RSP                   R	24      h\        SV `  W4       R
# )z has no attribute 'rd  z	Expected z for attribute 'z', got rr  Fzcannot assign to field 'z' on immutable aggregate z6; use aggregate_replace() to construct a modified copyN)rƒ  rO   r&   r^   rr   re   rS  rs  )rH   rJ   r±   r¡   r[  rZ  s   &&&€€€r"   rs  Ú/_aggregate.<locals>.aggregate_value.__setattr__¡  s¹   ø€ Ø˜?Ô*Ü$¨¯© ~Ð5HÈÈÈaÐ%PÓQÐQÜ˜e _°TÕ%:×;Ò;Ü )¨O¸DÕ,AÐ+BÐBRÐSWÐRXÐX_Ô`dÐejÓ`kÐ_lÐ mÓnÐnÜ�tÐ7¸×?Ò?Ü$Ð'?À¸vÐE^Ð_b×_kÑ_kÐ^lð m\ð &]ó ^ð ^ä‰GÑ Ö,r%   c               ó$   € V ^8„  d   QhRRRRRR/# rt   r.   )r/   s   "r"   r0   Ú0_aggregate.<locals>.aggregate_value.__annotate__«  s&   € ÷ 	Qñ 	Q Zð 	Q°sð 	Q¸tñ 	Qr%   c                	ót   <€ SP                  4        F"  p\        W4      P                  W R V 24       K$  	  R# )rš  N)rM   re   r}   )rH   ru   rJ   Úkey_namer[  s   &&& €r"   r}   Ú-_aggregate.<locals>.aggregate_value._set_name«  s4   ø€ Ø+×0Ñ0Ö2�Ü˜Ó'×1Ñ1°'¸VÀ1ÀXÀJÐ;OÖPó 3r%   c               ó    € V ^8„  d   QhRRRR/# r�   r.   )r/   s   "r"   r0   ry  ¯  s   € ÷ 	9ñ 	9 ~ð 	9¸$ñ 	9r%   c                	ój   <€ SP                  4        F  p\        W4      P                  V4       K  	  R # r   )rM   re   r†   )rH   r‚   rJ   r[  s   && €r"   r†   Ú/_aggregate.<locals>.aggregate_value._flatten_ir¯  s)   ø€ Ø'×,Ñ,Ö.�Ü˜Ó#×/Ñ/°Ö8ó /r%   c                	óŠ   <€ \        SSP                  4        Uu. uF  q\        W4      P                  3NK  	  up4      # u upi r   )r0  rM   re   rr   )rH   rJ   Úaggregate_valuer[  s   & €€r"   rr   Ú(_aggregate.<locals>.aggregate_value.type³  sB   ø€ ä" ?ØQ`×QeÑQeÔQgÓ#hÑQgÈ¬7°4Ó+>×+CÑ+CÓ$DÑQgÑ#hójð jùÚ#hs   šA 
r.   )rO   rk   rl   rm   r   rN  rˆ   Úclassmethodr5  rn  rs  r}   r†   r\  rr   rn   r]  )r¡   r�  r[  rZ  ri  s   @€€€€r"   r�  rl  |  so   ù† Ø!ÐØ#ÐÙ)ˆà	ô	-ó 
ð	-ð	¨tð 	À÷ 	ñ 	÷8	-÷	Qð 	Q÷	9ð 	9ð 
õ	jó 
ö	jr%   r�  r0   Ú__annotate_func__)r`  rW  rX  ri  rj  rM   r   rp   r>   Ú
getmembersÚ
isfunctionÚismethodr&   r   r<   r  Ú
hash_attrsrO   rk   rl   rN   Ú__aggregate_fields__ÚdictrO  )	rZ  rˆ  rJ   Úmemberr�  r[  r\  rh  ri  s	   f   @@@@@r"   Ú
_aggregaterŒ  X  so  ý€ ä$=¸cÓ$BÑ!€O�\à�<‰<×Ñ˜J¨Ó-€Dà‚|Ü—n’n _×%9Ñ%9Ó%;Ó<ˆ÷	pð0 #'ˆÔ÷:jò :jœ*ô :jðx �€Jä!×,Ò,¨SÖ1‰ˆÜ×Ò˜f×%Ò%¬×)9Ò)9¸&×)AÒ)AÄZÐPVÔXc×EdÔEdØ�zÔ!Ùð �~Ô%Ùð �×/Ñ/Ô/ÙÜ�O TÔ2ð Ð*Ö*Ø×!Ñ! &Ö)ñ! 2ð$ ",€OÔØ"Ÿ|™|€OÔØ!$§¡€OÔØ#&×#3Ñ#3€OÔ Ø!Ÿk™k€OÔÜ+3¯>ª>¸/×:NÑ:NÓ:PÓ+Q€OÔ(Ü-1°,Ó-?€OÔ*àÐr%   c                óz  € \        \        V 4      RR4      '       g   \        R\        V 4       24      h\        V 4      P                  pV F-  pW29  g   K  \        \        V 4      P                   RV R24      h	  V Uu/ uF  q3\        W4      bK  	  ppVP                  V4       \        V 4      ! R/ VB # u upi )u›  Create a copy of an aggregate instance with specified fields replaced.

Similar to dataclasses.replace() â€” returns a new instance of the same
aggregate type with the given fields updated and all other fields copied
from the original instance.

:param instance: The aggregate instance to copy
:param changes: Keyword arguments for fields to replace
:return: A new aggregate instance with the specified changes
rN  Fz7aggregate_replace() expects an aggregate instance, got z has no field 'rd  r.   )re   rr   r^   r‰  rO   rS  )r6  Úchangesrh  rJ   r8   s   &,   r"   Úaggregate_replacer�  ×  s¸   € ô ”4˜“>Ð#9¸5×AÒAÜÐQÔRVÐW_ÓR`ÐQaÐbÓcÐcä�x“.×5Ñ5€KÛˆØÖ"Üœt H›~×6Ñ6Ð7°ÀtÀfÈAÐNÓOÐOñ ñ 9DÓD¹°”G˜HÓ+Ò+¹€FÐDØ
‡M�M�'Ôä�Œ>Ñ#˜FÑ#Ð#ùò Es   Â B8c               ó   € V ^8„  d   QhRR/# rb   r.   )r/   s   "r"   r0   r0   ð  s   € ÷ [ñ [˜Dñ [r%   c                óL   € \        V \        4      ;'       d    \        V R R4      # )Ú__triton_block_ptr__F)r&   rp   re   r°   s   &r"   Ú_is_block_ptrr“  ð  s"   € Ü�eœZÓ(×ZÐZ¬W°UÐ<RÐTYÓ-ZÐZr%   c                óŠ   € \        V 4      p\        V\        \        P                  \        34      '       d   \        V4      # V.# r   )re  r&   rP   ri  rj  )rQ   Ú
normalizeds   & r"   Ú_as_list_liker–  ô  s7   € Ü! &Ó)€JÜ�*œt¤X§^¡^´UÐ;×<Ò<Ü�JÓÐØˆ<Ðr%   Úpositivec               ó$   € V ^8„  d   QhRRRRRR/# )r,   rJ   r'   r—  rc   r-   rj  r.   )r/   s   "r"   r0   r0   û  s"   € ÷ 	ñ 	°sð 	Èð 	ÐZ_ñ 	r%   c               ó  € . p\        V 4       Fk  p\        V4      p\        V\        4      '       g   \	        R V R24      hV'       d   V^ 8:  d   \	        R V R24      hVP                  \        V4      4       Km  	  \        V4      # )ú
Expected `z` to contain only integersz#` to contain only positive integers)r–  r\   r&   r™   r5   r  rÐ   rj  )rQ   rJ   r—  Ú	convertedr±   s   &&$  r"   Ú$_canonicalize_block_ptr_static_tuplerœ  û  s€   € Ø€IÜ˜vÖ&ˆÜ$ UÓ+ˆÜ˜%¤×%Ò%Ü˜z¨$¨Ð/IÐJÓKÐKß˜ œ
Ü˜z¨$¨Ð/RÐSÓTÐTØ×Ñœ 5Ó)Ö*ñ 'ô �ÓÐr%   c               ó    € V ^8„  d   QhRRRR/# )r,   rJ   r'   r-   rj  r.   )r/   s   "r"   r0   r0     s   € ÷ ñ ¸ð È5ñ r%   c                óz  € . p\        V 4       F   pVP                  V4      pVP                  '       d   \        R V R24      hVP                  P                  4       '       g   \        R V R24      hVP                  \        8w  d   VP                  V\        4      pVP                  V4       K¢  	  \        V4      # )rš  z` entries to be scalar tensorsz` entries to be integers)
r–  rh   r‚  r5   rr  rð  rÍ  r›  r  rj  )rQ   rJ   r3   r›  r±   s   &&&  r"   Ú%_canonicalize_block_ptr_dynamic_tuplerŸ    s£   € Ø€IÜ˜vÖ&ˆØ×#Ñ# EÓ*ˆØ�;�;ˆ;Ü˜z¨$¨Ð/MÐNÓOÐOØ�{‰{×!Ñ!×#Ò#Ü˜z¨$¨Ð/GÐHÓIÐIØ�;‰;œ%ÔØ—N‘N 5¬%Ó0ˆEØ×Ñ˜Öñ 'ô �ÓÐr%   c               ó    € V ^8„  d   QhRRRR/# )r,   Úrankr™   r-   zbuiltins.tuple[int, ...]r.   )r/   s   "r"   r0   r0     s   € ÷ ñ Àð ÐIañ r%   c                ó6  € \        4       pV f   V# \        V 4       FU  p\        V4      p\        V\        4      '       d   ^ Tu;8:  d   V8  g   M \        RV R24      hVP                  V4       KW  	  \        V4      \        V 4      8w  d   \        R4      hV# )Nz7Expected `boundary_check` to contain dimensions in [0, r£  z'Duplicate dimension in `boundary_check`)Úsetr–  r\   r&   r™   r5   rþ  rL   )rÈ  r¡  Úcheckedr�  s   &&  r"   Ú&_canonicalize_block_ptr_boundary_checkr¥    sŒ   € Ü‹e€GØÒØˆä˜^Ö,ˆÜ" 3Ó'ˆÜ˜#œs×#Ò#¨A°®O°t®OÜÐVÐW[ÐV\Ð\]Ð^Ó_Ð_Ø�‰�CÖñ	 -ô
 ˆ7ƒ|”s˜>Ó*Ô*ÜÐBÓCÐCØ€Nr%   c                  ó�   € ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R]R&   R]R	&   R
tRR ltR tRR ltRR lt	RR lt
RR ltRtR# )Ú
_block_ptri$  rU   r]  rj  r‚  r  rÏ  r×  ÚorderTNc           	     	óÂ  € VP                   P                  4       '       d!   VP                   P                  4       '       d   \        R 4      h\	        VP                   P
                  \        4      '       d   \        R4      hWn        \        VRV4      V n	        \        VRV4      V n
        \        VRV4      V n        \        VRRR7      V n        \        VR4      V n        \        V P                  4      pV^ 8X  d   \        R	4      hRV P                  3RV P                  3RV P                  3RV P                  33 F2  w  rš\        V
4      V8w  g   K  \        R
V	 R\        V
4       RV 24      h	  V P                   Uu. uF  p\!        V4      NK  	  pp\#        V4      \%        \&        P(                  ! V4      4      8w  d   \        RV^,
           24      hR# u upi )z+Expected `base` to be a scalar pointer typez1Expected `base` to point to a scalar element typer‚  r  rÏ  r×  T)r—  r¨  z<Expected `make_block_ptr` to describe at least one dimensionz]Expected `shape`, `strides`, `offsets`, `block_shape`, and `order` to have the same length; `z` has length z but expected z+Expected `order` to be a permutation of 0..N)rr   r  r  r5   r&   rW  r€  r]  rŸ  r‚  r  rÏ  rœ  r×  r¨  rL   r\   ÚsortedrP   ri  Úrange)rH   r]  r‚  r  rÏ  r×  r¨  r3   r¡  Ú
field_nameÚfield_valuer±   Úorder_valuess   &&&&&&&&     r"   r³   Ú_block_ptr.__init__/  s±  € Ø�y‰y×Ñ×!Ò! T§Y¡Y×%7Ñ%7×%9Ò%9ÜÐJÓKÐKÜ�d—i‘i×*Ñ*¬J×7Ò7ÜÐPÓQÐQàŒ	Ü:¸5À'È9ÓUˆŒ
Ü<¸WÀiÐQZÓ[ˆŒÜ<¸WÀiÐQZÓ[ˆŒÜ?ÀÈ]ÐeiÔjˆÔÜ9¸%ÀÓIˆŒ
ä�4×#Ñ#Ó$ˆØ�1Œ9ÜÐ[Ó\Ð\Ø)0°$·*±*Ð(=À	È4Ï<É<Ð?XÐ[dÐfj×frÑfrÐZsØ)0°$·*±*Ð(=ó(?Ñ#ˆJä�;Ó 4Ö'Ü ðØ"�| =´°[Ó1AÐ0BÀ.ÐQUÐPVðXóYð Yñ(?ð BFÇÂÓLÁ¸Ô,¨UÖ3ÁˆÐLÜ�,Ó¤4¬¯ª°tÓ(<Ó#=Ô=ÜÐJÈ4ÐRSÍ8È*ÐUÓVÐVñ >ùò Ms   ÆGc                	óV   € V P                    Uu. uF  p\        V4      NK  	  up# u upi r   )r×  r\   )rH   Úextents   & r"   Ú_tile_shapeÚ_block_ptr._tile_shapeI  s(   € Ø;?×;KÒ;KÓLÑ;K°Ô$ VÖ,Ñ;KÑLÐLùÒLs   �&c           
     	óì  € V P                  4       p\        V\        V4      4      pV P                  pR p\	        V4       EF/  w  rx\        V P                  V,          \        ^ W‚R7      VR7      p	\        P                  ! V4       F  p
\        V	^ VR7      p	K  	  \        P                  ! V^,           \        V4      4       F  p
\        V	RVR7      p	K  	  \        W“VR7      p	\        V\        W�P                  V,          VR7      VR7      pWt9   g   KÖ  VP                  VP                  V	^ 4      VP!                  W�P"                  V,          4      4      pVf   TMVP                  Wk4      pEK2  	  WV3# )Nrš  éÿÿÿÿ)r²  r¥  rL   r]  rˆ  rþ  rÏ  Úarangeri  r«  r‰  r¢  r  r  r/  r[  ra  r‚  )rH   rÈ  r3   Ú
tile_shapeÚchecked_dimsÚptrsrÇ  r�  r±  Úcoordr§  Úvalids   &&&         r"   Ú_materializeÚ_block_ptr._materializeL  s/  € Ø×%Ñ%Ó'ˆ
Ü=¸nÌcÐR\ËoÓ^ˆØ�y‰yˆØˆÜ$ Z×0‰KˆCÜ˜Ÿ™ SÕ)¬6°!°VÔ+QÐ]fÔgˆEÜ—^’^ CÖ(�Ü# E¨1¸	ÔB’ñ )ä—^’^ C¨!¥G¬S°«_Ö=�Ü# E¨2¸ÔC’ñ >ä  ¸iÔHˆEÜ�tœS ¯©°SÕ(9ÀYÔOÐ[dÔeˆDØÖ"Ø!Ÿ™ y×'>Ñ'>¸uÀaÓ'HÈ)×J]ÑJ]Ð^c×eoÑeoÐpsÕetÓJuÓv�Ø $¢‘u°)·.±.ÀÓ2M“ñ 1ð ˆzÐr%   c           
     	óÐ  € . p\        VR V4      p\        V4      \        V P                  4      8w  d.   \        R\        V P                  4       R\        V4       24      h\	        V P                  V4       F!  w  rEVP                  \        WEVR7      4       K#  	  \        V P                  V P                  V P                  \        V4      V P                  V P                  VR7      # )rÏ  z"Expected `offsets` to have length z but received rš  )rŸ  rL   rÏ  r5   r»  r  rþ  r§  r]  r‚  r  rj  r×  r¨  )rH   rÏ  r3   Únew_offsetsÚ
old_offsetÚdeltas   &&&   r"   rÐ  Ú_block_ptr.advance^  s¾   € ØˆÜ7¸ÀÈIÓVˆÜˆw‹<œ3˜tŸ|™|Ó,Ô,ÜÐAÄ#ÀdÇlÁlÓBSÐATÐTbÔcfÐgnÓcoÐbpÐqÓrÐrÜ!$ T§\¡\°7Ö!;ÑˆJØ×Ñœs :À	ÔJÖKñ "<ä˜$Ÿ)™) T§Z¡Z°·±¼uÀ[Ó?QÐSW×ScÑScÐei×eoÑeoØ$-ô/ð 	/r%   c	           
     	ó(  € Vf   Ve   \        R4      h\        V4      p\        V4      p\        V4      p\        V4      pVf   RpV P                  W8R7      w  r‘VR8X  d   R p
M¡VR8X  d:   V P                  P                  P
                  P                  4       '       d   RM^ p
MaVR8X  dL   V P                  P                  P
                  P                  4       '       d   \        R4      h\        R4      p
M\        RV R	24      h\        W‘W¥WgVR
7      # )NzK`mask` and `other` arguments cannot be specified for loading block pointersrD   rš  Úzeroç        Únanz@Padding option `nan` is not supported for integer block pointerszPadding option z not supported)rÇ  rŽ   rÉ  rÊ  Úvolatiler3   )
r5   r\   r¼  r]  rr  rW  râ  rð  r>  râ  )rH   rÇ  rŽ   rÈ  Úpadding_optionrÉ  rÊ  rÇ  r3   r¹  Úgenerated_others   &&&&&&&&&  r"   râ  Ú_block_ptr.loadh  s  € àÒ˜uÒ0ÜÐjÓkÐkä-¨nÓ=ˆÜ-¨nÓ=ˆÜ.¨Ó?ˆÜ'¨Ó1ˆØÒ!ØˆNØ×&Ñ& ~Ð&ÓK‰
ˆà˜RÔØ"‰OØ˜vÔ%ð &*§Y¡Y§_¡_×%?Ñ%?×%KÑ%K×%MÒ%M™cÐST‰OØ˜uÔ$Ø�y‰y�‰×)Ñ)×0Ñ0×2Ò2Ü Ð!cÓdÐdÜ# E›l‰Oä˜¨~Ð.>¸nÐMÓNÐNä�D¨?Ø$3ÐR[ô]ð 	]r%   c           	     	ó’   € Ve   \        R4      h\        V4      p\        V4      pV P                  W6R7      w  rr\        WqW$VVR7      # )Nz>`mask` argument cannot be specified for storing block pointersrš  )rÇ  rÉ  rÊ  r3   )r5   r\   r¼  rË  )rH   r±   rÇ  rÈ  rÉ  rÊ  r3   r¹  s   &&&&&&& r"   rË  Ú_block_ptr.store…  sT   € ØÒÜÐ]Ó^Ð^ä-¨nÓ=ˆÜ.¨Ó?ˆØ×&Ñ& ~Ð&ÓK‰
ˆÜ�T tÐ\kØ(ô*ð 	*r%   )r]  r×  rÏ  r¨  r‚  r  r   )r.   N©NNr.   rD   rD   rD   FN©Nr.   rD   rD   N)rO   rk   rl   rm   rˆ   r’  r³   r²  r¼  rÐ  râ  rË  rn   r.   r%   r"   r§  r§  $  sM   ‡ à
ƒLØƒLØƒNØƒNØÓØƒLàÐôWò4Môô$/ô]÷:*ð *r%   r§  c                ó.   € V P                   P                  # r   )r]  rr  r¢   s   &r"   r#   r#   ‘  s   € ¨¯©¯ªr%   c                ó:   € \        V 4      p VP                  V 4      # )zŸ
Returns the id of the current program instance along the given :code:`axis`.

:param axis: The axis of the 3D launch grid. Must be 0, 1 or 2.
:type axis: int
)r\   Ú
program_id©rÀ  r3   s   &&r"   rÑ  rÑ  ˜  s   € ô   Ó%€DØ×Ñ Ó%Ð%r%   c                ó:   € \        V 4      p VP                  V 4      # )z¡
Returns the number of program instances launched along the given :code:`axis`.

:param axis: The axis of the 3D launch grid. Must be 0, 1 or 2.
:type axis: int
)r\   Únum_programsrÒ  s   &&r"   rÔ  rÔ  «  s   € ô   Ó%€DØ×!Ñ! $Ó'Ð'r%   c                óP   € \        V 4      p \        V4      pVP                  W4      # r   )r\   r¶  )r‹  Úendr3   s   &&&r"   r¶  r¶  ¼  s'   € ä  Ó'€EÜ
˜sÓ
#€CØ×Ñ˜EÓ'Ð'r%   z¯
    Returns contiguous values within the half-open interval :code:`[start,
    end)`.  :code:`end - start` must be less than or equal to
    :code:`TRITON_MAX_TENSOR_NUMEL = zÐ`

    :param start: Start of the interval. Must be a power of two.
    :type start: int32
    :param end: End of the interval. Must be a power of two greater than
        :code:`start`.
    :type end: int32
c                óX   € \        V 4      p V  Uu. uF  p\        V4      NK  	  up# u upi r   r_  )r‚  r)   s   & r"   r‡  r‡  Ð  s*   € Ü  Ó'€EÙ-2Ó3©U¨Ô  Ö#©UÑ3Ð3ùÒ3s   �'c                ó2   € \        V 4      p \        V 4       V # r   )r‡  r   r–  s   &r"   Ú_shape_check_implrÙ  Õ  s   € Ü˜%Ó €EÜ˜ÔØ€Lr%   c                óh   € \        V 4      p \        V4      p\        V4      pVP                  WV4      # )aX  
Returns a tensor filled with the scalar value for the given :code:`shape` and :code:`dtype`.

:param shape: Shape of the new array, e.g., (8, 16) or (8, )
:type shape: tuple of ints
:param value: A scalar value to fill the array with
:type value: scalar
:param dtype: Data type of the new array, e.g., :code:`tl.float16`
:type dtype: tl.dtype
)rÙ  r\   Úfull)r‚  r±   rr  r3   s   &&&&r"   rÛ  rÛ  Û  s3   € ô ˜eÓ$€EÜ  Ó'€EÜ  Ó'€EØ�>‰>˜%¨Ó.Ð.r%   c                ó$   € VP                  W4      # )z»
Tries to broadcast the two given blocks to a common compatible shape.

:param input: The first input tensor.
:type input: Block
:param other: The second input tensor.
:type other: Block
)Úbroadcast_impl_value)ÚinputrŽ   r3   s   &&&r"   Ú	broadcastrß  ò  s   € ð ×)Ñ)¨%Ó7Ð7r%   r3   c               óL   € \        \        V4      4      pVP                  W4      # )a=  
Tries to broadcast the given tensor to a new :code:`shape`.

:param input: The input tensor.
:type input: Block
:param shape: The desired shape.
:type shape:

:code:`shape` can be passed as a tuple or as individual parameters: ::

    # These are equivalent
    broadcast_to(x, (32, 32))
    broadcast_to(x, 32, 32)
)rÙ  r`   Úbroadcast_impl_shape©rÞ  r3   r‚  s   &$*r"   r¢  r¢  ÿ  s%   € ô" Ô.¨uÓ5Ó6€EØ×)Ñ)¨%Ó7Ð7r%   c               ó   € V ^8„  d   QhRR/# )r,   rÞ  rU   r.   )r/   s   "r"   r0   r0     s   € ÷ *ñ *�ñ *r%   c               ó  € \        V4      pV'       ge   \        V P                  4      pV^8  d   \        R4      h\	        \
        P                  ! V^,
          4      4      V^,
          V^,
          .,           pVP                  W4      # )ar  
Permutes the dimensions of a tensor.

If the parameter :code:`dims` is not specified, the function defaults to
swapping the last two axes, thereby performing an (optionally batched)
2D transpose.

:param input: The input tensor.
:param dims: The desired ordering of dimensions.  For example,
    :code:`(2, 1, 0)` reverses the order dims in a 3D tensor.

:code:`dims` can be passed as a tuple or as individual parameters: ::

    # These are equivalent
    trans(x, (2, 1, 0))
    trans(x, 2, 1, 0)

:py:func:`permute` is equivalent to this function, except it doesn't
have the special case when no permutation is specified.
z2tl.trans invoked with a 0- or 1-dimensional tensor)r`   rL   r‚  r5   rP   ri  r«  r¯  )rÞ  r3   r©  Úns   &$* r"   rª  rª    sk   € ô. ˜DÓ!€DßÜ�—‘ÓˆØˆqŒ5ÜÐQÓRÐRÜ”H—N’N 1 q¥5Ó)Ó*¨a°!­e°Q¸µU¨^Õ;ˆØ×Ñ˜UÓ)Ð)r%   c               ó:   € \        V4      pVP                  W4      # )aå  
Permutes the dimensions of a tensor.

:param input: The input tensor.
:type input: Block
:param dims: The desired ordering of dimensions.  For example,
    :code:`(2, 1, 0)` reverses the order dims in a 3D tensor.

:code:`dims` can be passed as a tuple or as individual parameters: ::

    # These are equivalent
    permute(x, (2, 1, 0))
    permute(x, 2, 1, 0)

:py:func:`trans` is equivalent to this function, except when
:code:`dims` is empty, it tries to swap the last two axes.
)r`   r¯  )rÞ  r3   r©  s   &$*r"   r¯  r¯  4  s   € ô( ˜DÓ!€DØ×Ñ˜UÓ)Ð)r%   c                ó^  a aa€ V'       d   VP                  S SV4      # \        S P                  4      pV\        SP                  4      8X  g!   Q RV R\        SP                  4       24       h\        \	        S4      V4      o\
        ;QJ d5    VV V3R l\        P                  ! V4       4       F  '       d   K   RM*	  RM&! VV V3R l\        P                  ! V4       4       4      '       g%   Q RS RS P                   RSP                   24       h\        S SVR7      p\        \        P                  ! V4      4      pVP                  SV4       \        WgVR7      p\        S P                  4      pS P                  S,          SP                  S,          ,           VS&   \        WhVR7      # )	aÝ  
Concatenate the given blocks

:param input: The first input tensor.
:type input: Tensor
:param other: The second input tensor.
:type other: Tensor
:param can_reorder: Compiler hint. If true, the compiler is
    allowed to reorder elements while concatenating inputs.  Only use if the
    order does not matter (e.g., result is only used in reduction ops).
:type can_reorder: bool
:param dim: The dimension to concatenate along (used when can_reorder is False).
:type dim: int
z%tensors must have the same rank, got z and c              3  ó‚   <"  € T F4  qS8w  g   K  SP                   V,          SP                   V,          8H  x € K6  	  R # 5ir   r–  )ra  rP  r�  rÞ  rŽ   s   & €€€r"   rb  Úcat.<locals>.<genexpr>b  s6   øé € ð Ñ9M°AØñRÔ/ˆu�{‰{˜1�~ §¡¨Q¥Ö/Ó9Mùs   ƒ?�/?FTz6tensor dims must match except in the concat dimension ú, got rš  )ÚcatrL   r‚  Ú
_wrap_axisr\   rŠ  ri  r«  r©  rP   Úinsertr¯  r¼  )	rÞ  rŽ   Úcan_reorderr�  r3   r¡  rÄ   r¨  Ú	new_shapes	   ff&f&    r"   rë  rë  L  sd  ú€ ÷  Ø�}‰}˜U E¨;Ó7Ð7äˆu�{‰{Ó€DØ”3�u—{‘{Ó#Ô#ÐjÐ'LÈTÈFÐRWÔX[Ð\a×\gÑ\gÓXhÐWiÐ%jÓjÐ#Ü
Ô)¨#Ó.°Ó
5€Cß‹3ö ¼¿ºÈÔ9Mó �3�3Š3ö ¼¿ºÈÔ9Mó ÷ ò ð yØMÈcÈUÐRXÐY^×YdÑYdÐXeÐejÐkp×kvÑkvÐjwÐxóyð ô 	ˆU�E YÔ/€AÜ”—’ Ó%Ó&€EØ	‡L�L��dÔÜ� IÔ.€AÜ�U—[‘[Ó!€IØ—[‘[ Õ%¨¯©°CÕ(8Õ8€Iˆc�NÜ�1¨9Ô5Ð5r%   c                ó$   € VP                  W4      # )a&  
Join the given tensors in a new, minor dimension.

For example, given two tensors of shape (4,8), produces a new tensor of
shape (4,8,2).  Given two scalars, returns a tensor of shape (2).

The two inputs are broadcasted to be the same shape.

If you want to join more than two elements, you can use multiple calls to
this function.  This reflects the constraint in Triton that tensors must
have power-of-two sizes.

join is the inverse of split.

:param a: The first input tensor.
:type a: Tensor
:param b: The second input tensor.
:type b: Tensor
)r©  )ÚaÚbr3   s   &&&r"   r©  r©  o  s   € ð* �>‰>˜!ÓÐr%   c                ó²   € \        V P                  4      ^ 8X  d   V # ^pV P                   F  pW4,          pK  	  V^8X  g   Q R4       hVP                  V 4      # )z.
Convert a single-element tensor to a scalar.
z'can only unsplat single-element tensors)rL   r‚  Úunsplat)r!   r3   rC   rˆ  Úds   &&&  r"   Ú_unsplatrö  ‡  sV   € ô ˆ1�7‰7ƒ|�qÔØˆØ€EØ�WŒWˆØ�
Šñ à�AŒ:Ð@Ð@Ó@ˆ:Ø×Ñ˜QÓÐr%   c               ó   € V ^8„  d   QhRR/# r²  r.   )r/   s   "r"   r0   r0   –  s   € ÷ ñ Ð1Fñ r%   c                óÖ   € \        V P                  4      ^8H  pV'       d   VP                  V ^ 4      p VP                  V 4      w  rEV'       d   \	        WAVR7      p\	        WQVR7      pWE3# )aê  
Split a tensor in two along its last dim, which must have size 2.

For example, given a tensor of shape (4,8,2), produces two tensors of shape
(4,8).  Given a tensor of shape (2), returns two scalars.

If you want to split into more than two pieces, you can use multiple calls
to this function (probably plus calling reshape).  This reflects the
constraint in Triton that tensors must have power-of-two sizes.

split is the inverse of join.

:param a: The tensor to split.
:type a: Tensor
©r3   rC   )rL   r‚  r‰  r´  rö  )rñ  r3   rC   Ú
was_rank_1Úout_lhsÚout_rhss   &&&   r"   r´  r´  ”  s`   € ô* �Q—W‘W“ Ñ"€JßØ×!Ñ! ! QÓ'ˆà —‘ qÓ)Ñ€Gçä˜7ÀJÔOˆÜ˜7ÀJÔOˆàÐÐr%   c               óf   € \        R4       \        \        V4      4      pVP                  WRR7      # )a^  
Returns a tensor with the same elements as `input` but a different shape.
The order of the elements may not be preserved.

:param input: The input tensor.
:type input: Block
:param shape: The desired shape.

:code:`shape` can be passed as a tuple or as individual parameters: ::

    # These are equivalent
    view(x, (32, 32))
    view(x, 32, 32)
zCview is deprecated, please use reshape with can_reorder being true.T©rî  )r   rÙ  r`   r¼  râ  s   &$*r"   r¸  r¸  ·  s3   € ô" 	Ð	NÔOÜÔ.¨uÓ5Ó6€EØ×Ñ˜U°tÐÓ<Ð<r%   c                ó   € \        WVR7      # )z1
Converts a single-element tensor into a scalar.
rù  )rö  )rÞ  r3   rC   s   &&&r"   Úitemr   Í  s   € ô �E¸:ÔFÐFr%   rî  rC   c               óˆ   € \        \        V4      4      p\        V4      ^ 8X  d   \        WVR7      # VP	                  WV4      # )a>  
Returns a tensor with the same number of elements as input but with the
provided shape.

:param input: The input tensor.
:type input: Block
:param shape: The new shape.

:code:`shape` can be passed as a tuple or as individual parameters: ::

    # These are equivalent
    reshape(x, (32, 32))
    reshape(x, 32, 32)
rù  )rÙ  r`   rL   rö  r¼  )rÞ  rî  r3   rC   r‚  s   &$$$*r"   r¼  r¼  Ö  s?   € ô" Ô.¨uÓ5Ó6€EÜ
ˆ5ƒz�Q„Ü˜¸zÔJÐJØ×Ñ˜U¨;Ó7Ð7r%   c                ór   € V) T u;8:  d   V8  g   M \        R V  RV)  RV 24      hV ^ 8¼  d   V # W,           # )zinvalid axis z. Expected z <= axis < r4   )rÀ  Úndims   &&r"   rì  rì  í  sD   € ØˆE�TÖ ˜DÖ Ü˜=¨¨¨k¸4¸%¸ÀÈDÈ6ÐRÓSÐSà˜1”9ˆ4Ð- $¥+Ð-r%   c                óØ  € VP                  V 4      p \        V4      p\        V\        \        34      '       d   \        V4      MV.p\        V P                  4      \        V4      ,           pV Uu. uF  p\        \        V4      V4      NK  	  pp\        \        V4      4      \        V4      8w  d   \        RV 24      hT p\        V4       F  pVP                  Wg4      pK  	  V# u upi )a2  
Expand the shape of a tensor, by inserting new length-1 dimensions.

Axis indices are with respect to the resulting tensor, so
``result.shape[axis]`` will be 1 for each axis.

:param input: The input tensor.
:type input: tl.tensor
:param axis: The indices to add new axes
:type axis: int | Sequence[int]

z7expand_dims received duplicate axes, normalized axes = )rh   r\   r&   r   rj  rP   rL   r‚  rì  r£  r5   rª  r‰  )rÞ  rÀ  r3   ÚaxesÚnew_ndimrõ  r�  rñ  s   &&&     r"   r‰  r‰  ô  sË   € ð ×Ñ Ó&€EÜ Ó%€DÜ# D¬8´UÐ*;×<Ò<Œ4�Œ:À4À&€DÜ�5—;‘;Ó¤# d£)Õ+€HÙCGÓHÁ4¸aŒJÔ+¨AÓ.°Ö9Á4€DÐHä
Œ3ˆt‹9ƒ~œ˜T›Ô"ÜÐRÐSWÐRXÐYÓZÐZà
€CÜ�DŽ\ˆØ×#Ñ# CÓ+Šñ à€Jùò Is   Á0C'c               ó$   € V ^8„  d   QhRRRRRR/# r–  r.   )r/   s   "r"   r0   r0   	  s"   € ÷ >ñ >�uð >°Mð >ÐSWñ >r%   c                ó¼   € VP                  V 4      p \        V4      p\        V4      p\        V4      pV'       d   VP                  W4      # VP                  WV4      # )au  
Casts a tensor to the given :code:`dtype`.

:param dtype: The target data type.
:type dtype: tl.dtype
:param fp_downcast_rounding: The rounding mode for downcasting
    floating-point values. This parameter is only used when self is a
    floating-point tensor and dtype is a floating-point type with a
    smaller bitwidth. Supported values are :code:`"rtne"` (round to
    nearest, ties to even) and :code:`"rtz"` (round towards zero).
:type fp_downcast_rounding: str, optional
:param bitcast: If true, the tensor is bitcasted to the given
    :code:`dtype`, instead of being numerically casted.
:type bitcast: bool, optional
)rh   r\   r˜  r›  )rÞ  rr  r—  r˜  r3   s   &&&&&r"   r›  r›  	  sZ   € ð$ ×Ñ Ó&€EÜ  Ó'€EÜ/Ð0DÓEÐÜ" 7Ó+€GßØ× Ñ  Ó.Ð.Ø�>‰>˜%Ð(<Ó=Ð=r%   c                óª  € Ve   Ve   Q R4       hVf^   RVP                   P                  P                  9   p\        P                  P
                  ;'       g    V'       d   V'       g   Vf   RMRp\        V4      p\        V4      p\        V4      p\        V4      p\        V P                  4      p	\        VP                  4      p
\        V	4      \        V
4      u;8X  d   ^8¼  g   Q R4       h Q R4       hV	RR V
RR 8X  g   Q R4       hV	R,          V
R,          8X  g   Q R4       hV	RR V
R,          .,           pVe"   \        VP                  4      V8X  g   Q R4       h\        V4      pV^8¼  d”   ^p\        P                  ! V^,
          4       F  pWÛV,          ,          pK  	  VP                  W.V	RR ,           R	R
7      p VP                  W.V
RR ,           R	R
7      pVe   VP                  W-.VRR ,           R	R
7      pVP                  WW#WV4      pV^8¼  d   VP                  WûR	R
7      p\        VP                  4      V8X  g   Q R4       hV# )a   
Returns the matrix product of two blocks.

The two blocks must both be two-dimensional or three-dimensional and have compatible inner dimensions.
For three-dimensional blocks, `tl.dot` performs the batched matrix product,
where the first dimension of each block represents the batch dimension.

.. warning::
  When using TF32 precision, the float32 inputs may be truncated to TF32 format (19-bit floating point)
  without rounding which may bias the result. For best results, you must round to TF32 explicitly, or load
  the data using `TensorDescriptor` with `round_f32_to_tf32=True`.

:param input: The first tensor to be multiplied.
:type input: 2D or 3D tensor of scalar-type in {:code:`int8`, :code:`float8_e5m2`, :code:`float16`, :code:`bfloat16`, :code:`float32`}
:param other: The second tensor to be multiplied.
:type other: 2D or 3D tensor of scalar-type in {:code:`int8`, :code:`float8_e5m2`, :code:`float16`, :code:`bfloat16`, :code:`float32`}
:param acc: The accumulator tensor. If not None, the result is added to this tensor.
:type acc: 2D or 3D tensor of scalar-type in {:code:`float16`, :code:`float32`, :code:`int32`}
:param input_precision: How to exercise the Tensor Cores for f32 x f32. If
  the device does not have Tensor Cores or the inputs are not of dtype f32,
  this option is ignored. For devices that do have tensor cores, the
  default precision is tf32.
:type input_precision: string. Available options for nvidia: :code:`"tf32"`, :code:`"tf32x3"`, :code:`"ieee"`. Default: :code:`"tf32"`. Available options for amd: :code:`"ieee"`, (CDNA3 only) :code:`"tf32"`.
:param allow_tf32: *Deprecated.* If true, input_precision is set to "tf32".
  Only one of :code:`input_precision` and :code:`allow_tf32` can be
  specified (i.e. at least one must be :code:`None`).
Nz;Only one of input_precision and allow_tf32 can be specifiedÚtf32Úieeez*input and other must have equal ranks >= 2z,input and other must have equal batch shapesz4input and other must have equal reduction dimensionsz!accumulator shape is incompatibleFrþ  zoutput shape is unexpectedéþÿÿÿrµ  )ru   r$  Úallowed_dot_input_precisionsr   ÚlanguageÚfp32_defaultr\   rP   r‚  rL   ri  r«  r¼  Údot)rÞ  rŽ   ÚaccÚinput_precisionÚ
allow_tf32Úmax_num_imprecise_accÚ	out_dtyper3   Úsupports_tf32Úa_shapeÚb_shapeÚc_shaper¡  Ú
batch_sizerP  Úress   &&&&&&&&        r"   r  r  2	  sQ  € ð< Ò" jÒ&8ÐwÐ:wÓwÐ8ØÒØ )×"3Ñ"3×";Ñ";×"XÑ"XÑXˆÜŸ.™.×5Ñ5÷ vð vÇ]ßFPÐT^ÒTfñ ;AØntð 	ô +¨?Ó;€OÜ$ YÓ/€IÜ0Ð1FÓGÐÜ
˜sÓ
#€Cô �5—;‘;Ó€GÜ�5—;‘;Ó€GÜˆw‹<œ3˜w›<Ö,¨1Ô,ÐZÐ.ZÓZÑ,ÐZÐ.ZÓZÐ,Ø�3�Bˆ<˜7 3 B˜<Ô'ÐWÐ)WÓWÐ'Ø�2�;˜' "�+Ô%Ð]Ð']Ó]Ð%ð �c�rˆl˜g b�k˜]Õ*€GØ
‚Ü�C—I‘I‹ 'Ô)ÐNÐ+NÓNÐ)Üˆw‹<€Dàˆq„yØˆ
Ü—’  q¥Ö)ˆAØ !�*Õ$ŠJñ *à×!Ñ! %¨¸ÀÀ¸Õ)DÐRWÐ!ÓXˆØ×!Ñ! %¨¸ÀÀ¸Õ)DÐRWÐ!ÓXˆØŠ?Ø×#Ñ# C¨¸ÀÀ¸Õ)DÐRWÐ#ÓXˆCà
�-‰-˜ cÐ<QÓ
]€Càˆq„yØ×Ñ ¸%ÐÓ@ˆä�—	‘	‹?˜gÔ%ÐCÐ'CÓCÐ%Ø€Jr%   c                óì   € \        V4      p\        V4      p\        V4      p\        V4      p\        V
4      p
\        V4      p\        V	4      p	V
\        8X  g   Q R4       hVP                  WW#WEWgVWš4      # )aÊ  
Returns the matrix product of two blocks in microscaling format.

lhs and rhs use microscaling formats described here:
https://www.opencompute.org/documents/ocp-microscaling-formats-mx-v1-0-spec-final-pdf

Software emulation enables targeting hardware architectures without native microscaling
operation support. Right now for such case, microscaled lhs/rhs are upcasted to
:code:`bf16` element type beforehand for dot computation, with one exception:
for AMD CDNA3 specifically, if one of the inputs is of :code:`fp16` element type,
the other input is also upcasted to :code:`fp16` element type instead.
This behavior is experimental and may be subject to change in the future.

:param lhs: The first tensor to be multiplied.
:type lhs: 2D tensor representing fp4, fp8 or bf16 elements. Fp4 elements are packed into uint8 inputs with the first element in lower bits. Fp8 are stored as uint8 or the corresponding fp8 type.
:param lhs_scale: Scale factor for lhs tensor. Shape should be [M, K//group_size] when lhs is [M, K], where group_size is 32 if scales type are `e8m0`.
:type lhs_scale: e8m0 type represented as an uint8 tensor, or None.
:param lhs_format: format of the lhs tensor. Available formats: {:code:`e2m1`, :code:`e4m3`, :code:`e5m2`, :code:`bf16`, :code:`fp16`}.
:type lhs_format: str
:param rhs: The second tensor to be multiplied.
:type rhs: 2D tensor representing fp4, fp8 or bf16 elements. Fp4 elements are packed into uint8 inputs with the first element in lower bits. Fp8 are stored as uint8 or the corresponding fp8 type.
:param rhs_scale: Scale factor for rhs tensor. Shape should be [N, K//group_size] where rhs is [K, N].
                  Important: Do NOT transpose rhs_scale
:type rhs_scale: e8m0 type represented as an uint8 tensor, or None.
:param rhs_format: format of the rhs tensor. Available formats: {:code:`e2m1`, :code:`e4m3`, :code:`e5m2`, :code:`bf16`, :code:`fp16`}.
:type rhs_format: str
:param acc: The accumulator tensor. If not None, the result is added to this tensor.
:param lhs_k_pack: If false, the lhs tensor is packed into uint8 along M dimension.
:type lhs_k_pack: bool, optional
:param rhs_k_pack: If false, the rhs tensor is packed into uint8 along N dimension.
:type rhs_k_pack: bool, optional
z5Only float32 is supported for out_dtype at the moment)r\   Úfloat32Ú
dot_scaled)ÚlhsÚ	lhs_scaleÚ
lhs_formatÚrhsÚ	rhs_scaleÚ
rhs_formatr  Ú	fast_mathÚ
lhs_k_packÚ
rhs_k_packr  r3   s   &&&&&&&&&&&&r"   r  r  z	  s�   € ôF & jÓ1€JÜ% jÓ1€JÜ
˜sÓ
#€CÜ$ YÓ/€IÜ$ YÓ/€IÜ% jÓ1€JÜ% jÓ1€JØœÔÐXÐ!XÓXÐØ×Ñ °
ÀÐX[ÐhrØ *ó7ð 7r%   c	                óR  € \        V 4      '       d   V P                  WW4WVVVR7      # \        V4      p\        V4      pVe   VP                  V4      pVe   VP                  V4      p\        V4      p\        V4      p\        V4      p\        V4      pVP                  WW#WEVV4      # )u(	  
Return a tensor of data whose values are loaded from memory at location defined by `pointer`:

    (1) If `pointer` is a single element pointer, a scalar is be loaded.  In
        this case:

        - `mask` and `other` must also be scalars,
        - `other` is implicitly typecast to `pointer.dtype.element_ty`, and
        - `boundary_check` and `padding_option` must be empty.

    (2) If `pointer` is an N-dimensional tensor of pointers, an
        N-dimensional tensor is loaded.  In this case:

        - `mask` and `other` are implicitly broadcast to `pointer.shape`,
        - `other` is implicitly typecast to `pointer.dtype.element_ty`, and
        - `boundary_check` and `padding_option` must be empty.

    (3) If `pointer` is a block pointer defined by `make_block_ptr`, a
        tensor is loaded.  In this case:

        - `mask` and `other` must be `None`, and
        - `boundary_check` and `padding_option` can be specified to control the behavior of out-of-bound access.

:param pointer: Pointer to the data to be loaded
:type pointer: `triton.PointerType`, or block of `dtype=triton.PointerType`
:param mask: if `mask[idx]` is false, do not load the data at address `pointer[idx]`
    (must be `None` with block pointers)
:type mask: Block of `triton.int1`, optional
:param other: if `mask[idx]` is false, return `other[idx]`. If `other` is `None`, the masked-out value is undefined.
:type other: Block, optional
:param boundary_check: tuple of integers, indicating the dimensions which should do the boundary check
:type boundary_check: tuple of ints, optional
:param padding_option: should be one of {"", "zero", "nan"}, the padding value to use while out of bounds. "" means an undefined value.
:param cache_modifier: changes cache option in NVIDIA PTX
:type cache_modifier: str, optional, should be one of {"", ".ca", ".cg", ".cv"}, where ".ca" stands for
    cache at all levels, ".cg" stands for cache at global level (cache in L2 and below, not L1),
    and ".cv" means donâ€™t cache and fetch again. see
    `cache operator <https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#cache-operators>`_ for more details.
:param eviction_policy: changes eviction policy in NVIDIA PTX
:type eviction_policy: str, optional
:param volatile: changes volatile option in NVIDIA PTX
:type volatile: bool, optional
)rÇ  rŽ   rÈ  rÈ  rÉ  rÊ  rÇ  r3   )r“  râ  r\   rh   )	ÚpointerrÇ  rŽ   rÈ  rÈ  rÉ  rÊ  rÇ  r3   s	   &&&&&&&&&r"   râ  râ  ®	  sº   € ô\ �W×ÒØ�|‰| À>Ø+9ÐemØ&/ð ó 1ð 	1ô
   Ó%€DÜ  Ó'€EØÒØ×"Ñ" 4Ó(ˆØÒØ×#Ñ# EÓ*ˆÜ)¨.Ó9€NÜ)¨.Ó9€NÜ*¨?Ó;€OÜ# HÓ-€HØ�>‰>˜'¨ÀÐ`oØ"ó$ð $r%   c               ó$   € V ^8„  d   QhRRRRRR/# )r,   Údescr³  rÏ  rß  r-   rU   r.   )r/   s   "r"   r0   r0   ñ	  s$   € ÷ 3ñ 3Ð!7ð 3ÐB^ð 3Ø.4ñ3r%   c                ó&   € V P                  WR7      # )z.Load a block of data from a tensor descriptor.rš  )râ  )r+  rÏ  r3   s   &&&r"   Úload_tensor_descriptorr-  ð	  s   € ð �9‰9�Wˆ9Ó2Ð2r%   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r,   r+  r³  rÏ  rß  r±   rU   r-   r.   )r/   s   "r"   r0   r0   ø	  s,   € ÷ ;ñ ;Ð"8ð ;ÐC_ð ;Ðhnð ;Ø/5ñ;r%   c                ó(   € V P                  WVR7      # )z-Store a block of data to a tensor descriptor.rš  )rË  )r+  rÏ  r±   r3   s   &&&&r"   Ústore_tensor_descriptorr0  ÷	  s   € ð �:‰:�g°	ˆ:Ó:Ð:r%   c           	     ó   € \        V 4      '       d   V P                  WW4WVR7      # VP                  V4      p\        V4      pVe   VP                  V4      p\        V4      p\        V4      pVP                  WW#WE4      # )a‰  
Store a tensor of data into memory locations defined by `pointer`.

    (1) If `pointer` is a single element pointer, a scalar is stored.  In
        this case:

        - `mask` must also be scalar, and
        - `boundary_check` and `padding_option` must be empty.

    (2) If `pointer` is an N-dimensional tensor of pointers, an
        N-dimensional block is stored.  In this case:

        - `mask` is implicitly broadcast to `pointer.shape`, and
        - `boundary_check` must be empty.

    (3) If `pointer` is a block pointer defined by `make_block_ptr`, a block
        of data is stored.  In this case:

        - `mask` must be None, and
        - `boundary_check` can be specified to control the behavior of out-of-bound access.

`value` is implicitly broadcast to `pointer.shape` and typecast to `pointer.dtype.element_ty`.

:param pointer: The memory location where the elements of `value` are stored
:type pointer: `triton.PointerType`, or block of `dtype=triton.PointerType`
:param value: The tensor of elements to be stored
:type value: Block
:param mask: If `mask[idx]` is false, do not store `value[idx]` at `pointer[idx]`
:type mask: Block of triton.int1, optional
:param boundary_check: tuple of integers, indicating the dimensions which should do the boundary check
:type boundary_check: tuple of ints, optional
:param cache_modifier: changes cache option in NVIDIA PTX
:type cache_modifier: str, optional, should be one of {"", ".wb", ".cg", ".cs", ".wt"}, where ".wb" stands for
    cache write-back all coherent levels, ".cg" stands for cache global, ".cs" stands for cache streaming, ".wt"
    stands for cache write-through, see `cache operator <https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#cache-operators>`_ for more details.
:param eviction_policy: changes eviction policy in NVIDIA PTX
:type eviction_policy: str, optional, should be one of {"", "evict_first", "evict_last"}
)rÇ  rÈ  rÉ  rÊ  r3   )r“  rË  rh   r\   )r)  r±   rÇ  rÈ  rÉ  rÊ  r3   s   &&&&&&&r"   rË  rË  þ	  sˆ   € ôR �W×ÒØ�}‰}˜U¸nØ-<ð ó Sð 	Sð ×Ñ Ó&€EÜ Ó%€DØÒØ×"Ñ" 4Ó(ˆÜ)¨.Ó9€NÜ*¨?Ó;€OØ�?‰?˜7¨4ÀÓaÐar%   c               ó   € V ^8„  d   QhRR/# )r,   r]  rU   r.   )r/   s   "r"   r0   r0   6
  s   € ÷ ^ñ ^˜ñ ^r%   c           
     ó6   € \        R4       \        WW#WEVR7      # )aK  
Returns a pointer to a block in a parent tensor

:param base: The base pointer to the parent tensor
:param shape: The shape of the parent tensor
:param strides: The strides of the parent tensor
:param offsets: The offsets to the block
:param block_shape: The shape of the block
:param order: The order of the original data format
z[tl.make_block_ptr is deprecated. Use TensorDescriptor or tl.make_tensor_descriptor instead.rš  )r   r§  )r]  r‚  r  rÏ  r×  r¨  r3   s   &&&&&&&r"   Úmake_block_ptrr4  5
  s   € ô 	Ð	fÔgÜ�d 7°[ÐS\Ô]Ð]r%   zŠNote that tl.advance does not have any side effects. To move the block pointer, you need to assign the result of tl.advance to a variable.c                ó^   € \        V 4      '       d   V P                  WR7      # \        R4      h)z�
Advance a block pointer

:param base: the block pointer to advance
:param offsets: the offsets to advance, a tuple by dimension
rš  zH`tl.advance` only supports block pointers created by `tl.make_block_ptr`)r“  rÐ  r5   )r]  rÏ  r3   s   &&&r"   rÐ  rÐ  E
  s,   € ô �T×ÒØ�|‰|˜Gˆ|Ó9Ð9Ü
Ð_Ó
`Ð`r%   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r,   r]  rU   r‚  r$  r  r×  zList[constexpr]r-   r  r.   )r/   s   "r"   r0   r0   W
  sA   € ÷ 9_ñ 9_Ø
ð9_àð9_ð ð9_ð !ð	9_ð ñ9_r%   c                ó>   € \        V4      pVP                  WW#V4      # )a  Make a tensor descriptor object

:param base: the base pointer of the tensor, must be 16-byte aligned
:param shape: A list of non-negative integers representing the tensor shape
:param strides: A list of tensor strides. Leading dimensions must be multiples
    of 16-byte strides and the last dimension must be contiguous.
:param block_shape: The shape of block to be loaded/stored from global memory

Notes
*****
On NVIDIA GPUs with TMA support, this will result in a TMA descriptor object
and loads and stores from the descriptor will be backed by the TMA hardware.

Currently only 2-5 dimensional tensors are supported.

Example
*******
.. code-block:: python

    @triton.jit
    def inplace_abs(in_out_ptr, M, N, M_BLOCK: tl.constexpr, N_BLOCK: tl.constexpr):
        desc = tl.make_tensor_descriptor(
            in_out_ptr,
            shape=[M, N],
            strides=[N, 1],
            block_shape=[M_BLOCK, N_BLOCK],
        )

        moffset = tl.program_id(0) * M_BLOCK
        noffset = tl.program_id(1) * N_BLOCK

        value = desc.load([moffset, noffset])
        desc.store([moffset, noffset], tl.abs(value))

    # TMA descriptors require a global memory allocation
    def alloc_fn(size: int, alignment: int, stream: Optional[int]):
        return torch.empty(size, device="cuda", dtype=torch.int8)

    triton.set_allocator(alloc_fn)

    M, N = 256, 256
    x = torch.randn(M, N, device="cuda")
    M_BLOCK, N_BLOCK = 32, 32
    grid = (M / M_BLOCK, N / N_BLOCK)
    inplace_abs[grid](x, M, N, M_BLOCK, N_BLOCK)

)r\   Úmake_tensor_descriptor)r]  r‚  r  r×  rÈ  r3   s   &&&&&&r"   r8  r8  V
  s$   € ôr *¨.Ó9€NØ×+Ñ+¨D¸È~Ó^Ð^r%   c               ó$   € V ^8„  d   QhRRRRRR/# )r,   rJ   r'   Úhas_cmprc   r-   úCallable[[T], T]r.   )r/   s   "r"   r0   r0   ˜
  s"   € ÷ ñ ˜Sð ¨4ð Ð<Lñ r%   c                ó   a a€ R  VV 3R llpV# )c               ó    € V ^8„  d   QhRRRR/# ©r,   Úfuncr   r-   r.   )r/   s   "r"   r0   Ú(_add_atomic_docstr.<locals>.__annotate__š
  s   € ÷ ñ ˜ð ˜qñ r%   c                óT   <€ R S R2pS'       d
   VR,          pVR,          pWn         V # )z
    Performs an atomic zï at the memory location specified by :code:`pointer`.

    Return the data stored at :code:`pointer` before the atomic operation.

    :param pointer: The memory locations to operate on
    :type pointer: Block of dtype=triton.PointerDTypez|
    :param cmp: The values expected to be found in the atomic object
    :type cmp: Block of dtype=pointer.dtype.element_tyaÃ  
    :param val: The values with which to perform the atomic operation
    :type val: Block of dtype=pointer.dtype.element_ty
    :param sem: Specifies the memory semantics for the operation. Acceptable values are "acquire",
        "release", "acq_rel" (stands for "ACQUIRE_RELEASE"), and "relaxed". If not provided,
        the function defaults to using "acq_rel" semantics.
    :type sem: str, optional
    :param scope: Defines the scope of threads that observe the synchronizing effect of the atomic operation.
        Acceptable values are "gpu" (default), "cta" (cooperative thread array, thread block), or "sys" (stands for "SYSTEM"). The default value is "gpu".
    :type scope: str, optional
    )rN   )r?  Údocstrr:  rJ   s   & €€r"   Ú
_decoratorÚ&_add_atomic_docstr.<locals>._decoratorš
  sJ   ø€ ðØ�vð 6ð9ˆ÷ Øð :õ :ˆFð 	ð 
õ 
	ˆð ŒØˆr%   r.   )rJ   r:  rC  s   ff r"   Ú_add_atomic_docstrrE  ˜
  s   ù€ ÷ñ ð4 Ðr%   zcompare-and-swap)r:  c                ó˜   € VP                  V4      pVP                  V4      p\        V4      p\        V4      pVP                  WW#V4      # r   )rh   r\   r×  )r)  rÔ  rÇ   rÕ  rÖ  r3   s   &&&&&&r"   r×  r×  ·
  sM   € ð ×
Ñ
˜cÓ
"€CØ
×
Ñ
˜cÓ
"€CÜ
˜sÓ
#€CÜ  Ó'€EØ×Ñ ¨c¸Ó>Ð>r%   Úexchangec                óŒ   € VP                  V4      p\        V4      p\        V4      p\        V4      pVP                  WW#V4      # r   )rh   r\   rÝ  ©r)  rÇ   rÇ  rÕ  rÖ  r3   s   &&&&&&r"   rÝ  rÝ  Â
  sG   € ð ×
Ñ
˜cÓ
"€CÜ
˜sÓ
#€CÜ  Ó'€EÜ Ó%€DØ× Ñ  ¨t¸%Ó@Ð@r%   rþ  c                óŒ   € VP                  V4      p\        V4      p\        V4      p\        V4      pVP                  WW#V4      # r   )rh   r\   râ  rI  s   &&&&&&r"   râ  râ  Í
  óG   € ð ×
Ñ
˜cÓ
"€CÜ
˜sÓ
#€CÜ  Ó'€EÜ Ó%€DØ×Ñ ¨d¸Ó?Ð?r%   rC  c                óŒ   € VP                  V4      p\        V4      p\        V4      p\        V4      pVP                  WW#V4      # r   )rh   r\   ræ  rI  s   &&&&&&r"   ræ  ræ  Ø
  rK  r%   rN  c                óŒ   € VP                  V4      p\        V4      p\        V4      p\        V4      pVP                  WW#V4      # r   )rh   r\   rê  rI  s   &&&&&&r"   rê  rê  ã
  rK  r%   zlogical andc                óŒ   € VP                  V4      p\        V4      p\        V4      p\        V4      pVP                  WW#V4      # r   )rh   r\   rî  rI  s   &&&&&&r"   rî  rî  î
  rK  r%   z
logical orc                óŒ   € VP                  V4      p\        V4      p\        V4      p\        V4      pVP                  WW#V4      # r   )rh   r\   rò  rI  s   &&&&&&r"   rò  rò  ù
  sG   € ð ×
Ñ
˜cÓ
"€CÜ
˜sÓ
#€CÜ  Ó'€EÜ Ó%€DØ×Ñ˜w¨T¸Ó>Ð>r%   zlogical xorc                óŒ   € VP                  V4      p\        V4      p\        V4      p\        V4      pVP                  WW#V4      # r   )rh   r\   rö  rI  s   &&&&&&r"   rö  rö    rK  r%   c                ót   € VP                  V 4      p \        V4      p\        V4      pVP                  WV4      # )aÁ  
Returns a tensor of elements from either :code:`x` or :code:`y`, depending on :code:`condition`.

Note that :code:`x` and :code:`y` are always evaluated regardless of the value of :code:`condition`.

If you want to avoid unintended memory operations, use the :code:`mask` arguments in `triton.load` and `triton.store` instead.

The shape of :code:`x` and :code:`y` are both broadcast to the shape of :code:`condition`.
:code:`x` and :code:`y` must have the same data type.

:param condition: When True (nonzero), yield x, otherwise yield y.
:type condition: Block of triton.bool
:param x: values selected at indices where condition is True.
:param y: values selected at indices where condition is False.
)rh   r\   Úwhere)Ú	conditionr!   Úyr3   s   &&&&r"   rR  rR    s9   € ð" ×#Ñ# IÓ.€IÜ˜QÓ€AÜ˜QÓ€AØ�?‰?˜9¨Ó+Ð+r%   c                óÊ  € \        V 4      p VP                  V4      p\        VP                  P                  RR4      pRV9   d   VP                  V^ V 4      # VP                  P                  P                  '       df   VP                  V 4      pVP                  ^ 4      pVP                  VP                  WE4      VP                  V4      4      pVP                  VRR4       V # )a£  
Mark values that are expected to have underflowed to zero.

In regular compilation this preserves :code:`x`. Debug builds assert that
:code:`x` is zero wherever :code:`mask` is true. Under FPSAN this becomes
:code:`where(mask, 0, x)` so sanitized execution observes the intended
floating-point underflow.

:param x: values to preserve outside FPSAN mode.
:param mask: positions where :code:`x` is expected to be zero.
Úinstrumentation_moderD   Úfpsanz.expect_zero expected x == 0 where mask is trueN)r\   rh   re   ru   r$  rR  Údebugr8  rp  r�  Údevice_assert)r!   rÇ  r3   rV  Úx_tensorrÄ  Úconds   &&&    r"   Úexpect_zeror\  +  sÊ   € ô 	˜QÓ€AØ×Ñ˜tÓ$€DÜ" 9×#4Ñ#4×#<Ñ#<Ð>TÐVXÓYÐØÐ&Ô&Ø�‰˜t Q¨Ó*Ð*Ø×Ñ× Ñ ×&×&Ð&Ø×&Ñ& qÓ)ˆØ×"Ñ" 1Ó%ˆØ�}‰}˜YŸ_™_¨XÓ<¸i¿n¹nÈTÓ>RÓSˆØ×Ñ Ð&VÐX\Ô]Ø€Hr%   c               ó   € V ^8„  d   QhRR/# ©r,   rü  rÐ   r.   )r/   s   "r"   r0   r0   K  ó   € ÷ 2ñ 2 ñ 2r%   c                óR   € \        V 4      p \        V4      pVP                  WV4      # r   )r\   rþ  ©r!   rT  rü  r3   s   &&&&r"   rþ  rþ  J  ó(   € ä˜QÓ€AÜ˜QÓ€AØ�=‰=˜Ð0Ó1Ð1r%   c               ó   € V ^8„  d   QhRR/# r^  r.   )r/   s   "r"   r0   r0   R  r_  r%   c                óR   € \        V 4      p \        V4      pVP                  WV4      # r   )r\   r  ra  s   &&&&r"   r  r  Q  rb  r%   c               ó   € V ^8„  d   QhRR/# r^  r.   )r/   s   "r"   r0   r0   Y  r_  r%   c                óR   € \        V 4      p \        V4      pVP                  WV4      # r   )r\   r  ra  s   &&&&r"   r  r  X  rb  r%   c               ó   € V ^8„  d   QhRR/# ©r,   Úpropagate_nanrÐ   r.   )r/   s   "r"   r0   r0   `  ó   € ÷ 2ñ 2 ñ 2r%   c                ó°   € VP                  V 4      p VP                  V4      p\        WR7      p \        WR7      p\        V4      pVP                  WV4      # )a$  
Computes the element-wise minimum of :code:`x` and :code:`y`.

:param x: the first input tensor
:type x: Block
:param y: the second input tensor
:type y: Block
:param propagate_nan: whether to propagate NaN values.
:type propagate_nan: tl.PropagateNan

.. seealso:: :class:`tl.PropagateNan`
rš  )rh   Ú_promote_bfloat16_to_float32r\   Úminimum©r!   rT  ri  r3   s   &&&&r"   rm  rm  _  óU   € ð 	×Ñ˜AÓ€AØ×Ñ˜AÓ€AÜ$ QÔ<€AÜ$ QÔ<€AÜ(¨Ó7€MØ×Ñ˜Q =Ó1Ð1r%   c               ó   € V ^8„  d   QhRR/# rh  r.   )r/   s   "r"   r0   r0   v  rj  r%   c                ó°   € VP                  V 4      p VP                  V4      p\        WR7      p \        WR7      p\        V4      pVP                  WV4      # )a$  
Computes the element-wise maximum of :code:`x` and :code:`y`.

:param x: the first input tensor
:type x: Block
:param y: the second input tensor
:type y: Block
:param propagate_nan: whether to propagate NaN values.
:type propagate_nan: tl.PropagateNan

.. seealso:: :class:`tl.PropagateNan`
rš  )rh   rl  r\   Úmaximumrn  s   &&&&r"   rr  rr  u  ro  r%   c               ó   € V ^8„  d   QhRR/# rh  r.   )r/   s   "r"   r0   r0   Œ  s   € ÷ 7ñ 7 iñ 7r%   c                óê   € VP                  V 4      p VP                  V4      pVP                  V4      p\        WR7      p \        WR7      p\        W$R7      p\        V4      pVP                  WW#4      # )a  
Clamps the input tensor :code:`x` within the range [min, max].
Behavior when :code:`min` > :code:`max` is undefined.

:param x: the input tensor
:type x: Block
:param min: the lower bound for clamping
:type min: Block
:param max: the upper bound for clamping
:type max: Block
:param propagate_nan: whether to propagate NaN values. Applies only to the :code:`x` tensor.
    If either :code:`min` or :code:`max` is NaN, the result is undefined.
:type propagate_nan: tl.PropagateNan

.. seealso:: :class:`tl.PropagateNan`
rš  )rh   rl  r\   Úclamp)r!   rN  rC  ri  r3   s   &&&&&r"   ru  ru  ‹  sm   € ð$ 	×Ñ˜AÓ€AØ
×
Ñ
˜cÓ
"€CØ
×
Ñ
˜cÓ
"€CÜ$ QÔ<€AÜ
& sÔ
@€CÜ
& sÔ
@€Cä(¨Ó7€Mà�?‰?˜1 3Ó6Ð6r%   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )r,   rJ   r'   Úreturn_indices_argÚtie_break_argÚ	dtype_argr-   r;  r.   )r/   s   "r"   r0   r0   ®  s2   € ÷ ñ  ð ¸ð ÐTWð Ø%(ðØ4Dñr%   c                ó&   a aaa€ R  VV VV3R llpV# )c               ó    € V ^8„  d   QhRRRR/# r>  r.   )r/   s   "r"   r0   Ú+_add_reduction_docstr.<locals>.__annotate__±  s   € ÷ ñ ˜ð ˜qñ r%   c                óÄ   <€ R pSe   VRS RS RS R2,          pSe   VRS RS RS R2,          pSe   VRS RS RS R	2,          pVP                  SR
7      V n        V # )aÂ  
    Returns the {name} of all elements in the :code:`input` tensor along the provided :code:`axis`

    The reduction operation should be associative and commutative.

    :param input: the input values
    :type input: Tensor
    :param axis: the dimension along which the reduction should be done. If None, reduce all dimensions
    :type axis: int
    :param keep_dims: if true, keep the reduced dimensions with length 1
    :type keep_dims: boolú
    :param z-: if true, return index corresponding to the z value
    :type z: boolzC: if true, in case of a tie (i.e., multiple elements have the same zI value), return the left-most index for values that aren't NaN
    :type úc: the desired data type of the returned tensor. If specified, the input tensor is casted to :code:`zæ` before the operation is performed. This is useful for preventing data overflows. If not specified, integer and bool dtypes are upcasted to :code:`tl.int32` and float dtypes are upcasted to at least :code:`tl.float32`.
    :type ú
: tl.dtyperI   ©r/   rN   )r?  rB  ry  rJ   rw  rx  s   & €€€€r"   rC  Ú)_add_reduction_docstr.<locals>._decorator±  sÐ   ø€ ð
ˆð Ò)Øð ØÐÐLÈTÈFð SØÐ
˜fð(õ (ˆFð Ò$Øð Øˆ?Ð]Ð^bÐ]cð dØˆ/˜ð#õ #ˆFð Ò Øð Øˆ;Ðyð  {Dð  zEð EØˆ+�Zð#õ #ˆFð —}‘}¨$�}Ó/ˆŒØˆr%   r.   )rJ   rw  rx  ry  rC  s   ffff r"   Ú_add_reduction_docstrrƒ  ®  s   û€ ÷ó ð8 Ðr%   c              #  óX   "  € V P                  4       pR x € V P                  V4       R # 5ir   )Úget_insertion_pointÚrestore_insertion_point)ru   Úips   & r"   Ú_insertion_guardrˆ  Ð  s$   é € à	×	$Ñ	$Ó	&€BÛ	Ø×#Ñ# BÖ'ùs   ‚(*c           	     ó$  a aaaaa€ \        S \        4      '       d   \        S 3SSVSSR7      ^ ,          # VVVV 3R lpV3R lo\        S4      o\        V4      pSe'   \	        S\        S ^ ,          P                  4      4      oSP                  S SV4      pV'       dq   Se9   \        ;QJ d    . VV3R lV 4       F  NK  	  5pV# ! VV3R lV 4       4      pV# \        ;QJ d    . VV 3R lV 4       F  NK  	  5M! VV 3R lV 4       4      pV# )a  Applies the combine_fn to all elements in :code:`input` tensors along the provided :code:`axis`

:param input: the input tensor, or tuple of tensors
:type input: Tensor
:param axis: the dimension along which the reduction should be done. If None, reduce all dimensions
:type axis: int | None
:param combine_fn: a function to combine two groups of scalar tensors (must be marked with @triton.jit)
:type combine_fn: Callable
:param keep_dims: if true, keep the reduced dimensions with length 1
:type keep_dims: bool

©r  r3   rC   c                ó¢  <a€ S Uu. uF  qP                   P                  NK  	  up^,          pV P                  ^ 4      pSP                  o\	        S4      ;_uu_ 4        V3R lpSP                  V\        \        WB4      4      4      p\        V4       UUu. uF   w  rg\        VP                  V4      V4      NK"  	  pppSP                  SV/ R7      p	\        V	\        4      '       d   V	P                  .p
MV	 Uu. uF  q»P                  NK  	  p
pSP                  ! V
!   RRR4       R# u upi u uppi u upi   + '       g   i     R# ; i)r,   c                ó&   <€ V P                  S4      # r   ©r   ©r   ru   s   &€r"   r#   Ú5reduce.<locals>.make_combine_region.<locals>.<lambda>î  ó   ø€ ˜aŸg™g gÔ.r%   rK  N)rr   rp  Ú
get_regionru   rˆ  Úcreate_block_with_parentrP   rª  rˆ  rU   r…  Úcall_JitFunctionr&   râ  Úcreate_reduce_ret)Ú	reduce_oprm  Úparam_typesÚregionr   ÚblockrP  rÅ  r7   Úresultsr‚   Úrru   rC   r3   r  rÞ  s   &           @€€€€r"   Úmake_combine_regionÚ#reduce.<locals>.make_combine_regioné  s  ù€ Ù.3Ó4©e¨—v‘v—}”}©eÑ4°qÕ8ˆØ×%Ñ% aÓ(ˆØ×#Ñ#ˆÜ˜g×&Õ&Ü.ˆEØ×4Ñ4°V¼TÄ#ÀeÓBYÓ=ZÓ[ˆEÜ:CÀKÔ:PÔQÑ:P±°”F˜5Ÿ9™9 Q›<¨Ö,Ñ:PˆDÑQØ ×1Ñ1°*¸dÈ2Ð1ÓNˆGÜ˜'¤6×*Ò*Ø"Ÿ>™>Ð*‘á-4Ó5©W¨Ÿ8œ8©W�Ð5Ø×%Ò% wÒ/÷ 'Ñ&ùò 5ùó Rùò
 6÷ '×&Ð&úó/   ‡D-Á9D=Â&D2
Â>?D=Ã=D8ÄD=Ä2D=Ä=E	c                ó^   <€ \         P                  ! V4       F  p\        V ^ SR7      p K  	  V # )r   rš  )ri  r«  r‰  )rm  Úndimsr§  r3   s   && €r"   Úexpand_ndimsÚreduce.<locals>.expand_ndimsø  s)   ø€ Ü—’ Ö&ˆAÜ˜A˜q¨IÔ6ŠAñ 'àˆr%   c              3  ó@   <"  € T F  p\        VSSR 7      x € K  	  R# 5i)rš  N)r‰  )ra  rm  r3   rÀ  s   & €€r"   rb  Úreduce.<locals>.<genexpr>  s   øé € ÐOÉ3Àaœ A t°y×AÑAË3ùs   ƒc              3  ój   <"  € T F(  pS! V\        S^ ,          P                  4      4      x € K*  	  R# 5i©r   N)rL   r‚  )ra  rm  r   rÞ  s   & €€r"   rb  r£    s(   øé € ÐJÁcÀ™ Q¬¨E°!­H¯N©NÓ(;×<Ð<Ãcùs   ƒ03)	r&   rU   r  r\   rì  rL   r‚  Ú	reductionrj  )	rÞ  rÀ  r  r  r3   rC   r›  r�  r   s	   fff&ff  @r"   r  r  ×  sé   ý€ ô �%œ× Ò Ü�u�i  z¸YÐR[ÐhrÔsÐtuÕvÐv÷0ð 0õô
   Ó%€DÜ$ YÓ/€IØÒÜ˜$¤ E¨!¥H§N¡NÓ 3Ó4ˆØ
×
Ñ
˜e TÐ+>Ó
?€CßØÒß”%ÕOÉ3ÓO—%ˆCð €Jð ÕOÉ3ÓOÓOˆCð €J÷ ”%ÕJÁcÓJ—%‘%ÕJÁcÓJÓJˆCØ€Jr%   c                ót   € V P                   P                  pV\        J d   V P                  \        VR 7      # V # )rš  )rr   rp  Úbfloat16rœ  r  )rm  r3   rš  s   && r"   rl  rl  
  s1   € à—‘—‘€Ið ”HÓØ�t‰t”G yˆtÓ1Ð1Ø€Hr%   c           	     óŽ  € \        V4      pV P                  V,          p\        ^ WdR7      p\        V P                  4      ^8”  dh   \        P
                  ! \        V P                  4      4       Uu. uF  p\        V4      NK  	  p	pW‘ \        WyVR7      p\        WpP                  VR7      p\        W3WW4VR7      w  r«W«3# u upi )r   rš  rŠ  )
r\   r‚  r¶  rL   ri  r«  rÐ   r‰  r¢  r  )rÞ  rÀ  r  r  r3   rC   rå  rÈ  rõ  Úaxes_to_expandÚrvalueÚrindicess   &&&&&&      r"   Ú_reduce_with_indicesr­    s¬   € ä Ó%€DØ�‰�DÕ€AÜ�1�aÔ-€Eä
ˆ5�;‰;Ó˜!Ôä08·²¼sÀ5Ç;Á;Ó?OÔ0PÓQÑ0P¨1œ) Až,Ñ0PˆÐQØÐ Ü˜E¸YÔGˆÜ˜U§K¡K¸9ÔEˆä˜u˜n¨dÈ)Ø)3ô5Ñ€FàÐÐùò Rs   Á1Cc               ó$   € V ^8„  d   QhRRRRRR/# )r,   rJ   r'   ry  r-   r;  r.   )r/   s   "r"   r0   r0   +  s"   € ÷ ñ ˜3ð ¨3ð Ð:Jñ r%   c                ó   a a€ R  VV 3R llpV# )c               ó    € V ^8„  d   QhRRRR/# r>  r.   )r/   s   "r"   r0   Ú&_add_scan_docstr.<locals>.__annotate__-  s   € ÷ ñ ˜ð ˜qñ r%   c                óh   <€ R pSe   VRS RS RS R2,          pVP                  SR7      V n        V # )aZ  
    Returns the {name} of all elements in the :code:`input` tensor along the provided :code:`axis`

    :param input: the input values
    :type input: Tensor
    :param axis: the dimension along which the scan should be done
    :type axis: int
    :param reverse: if true, the scan is performed in the reverse direction
    :type reverse: boolr~  r  zÚ` before the operation is performed. If not specified, small integer types (< 32 bits) are upcasted to prevent overflow. Note that :code:`tl.bfloat16` inputs are automatically promoted to :code:`tl.float32`.
    :type r€  rI   r�  )r?  rB  ry  rJ   s   & €€r"   rC  Ú$_add_scan_docstr.<locals>._decorator-  sb   ø€ ðˆð Ò Øð Øˆ;Ðyð  {Dð  zEð EØˆ+�Zð#õ #ˆFð —}‘}¨$�}Ó/ˆŒØˆr%   r.   )rJ   ry  rC  s   ff r"   Ú_add_scan_docstrr´  +  s   ù€ ÷ñ ð& Ðr%   c           	     ó   a aaa€ \        S \        4      '       d   \        S 3VSVSSR7      ^ ,          # VVVV 3R lp\        V4      p\        V4      pVe'   \	        V\        S ^ ,          P                  4      4      pSP                  S WV4      # )a  Applies the combine_fn to each elements with a carry in :code:`input` tensors along the provided :code:`axis` and update the carry

:param input: the input tensor, or tuple of tensors
:type input: Tensor
:param axis: the dimension along which the reduction should be done
:type axis: int
:param combine_fn: a function to combine two groups of scalar tensors (must be marked with @triton.jit)
:type combine_fn: Callable
:param reverse: whether to apply the associative scan in the reverse direction along axis
:type reverse: bool

rù  c                ó¢  <a€ S Uu. uF  qP                   P                  NK  	  up^,          pV P                  ^ 4      pSP                  o\	        S4      ;_uu_ 4        V3R lpSP                  V\        \        WB4      4      4      p\        V4       UUu. uF   w  rg\        VP                  V4      V4      NK"  	  pppSP                  SV/ R7      p	\        V	\        4      '       d   V	P                  .p
MV	 Uu. uF  q»P                  NK  	  p
pSP                  ! V
!   RRR4       R# u upi u uppi u upi   + '       g   i     R# ; i)r,   c                ó&   <€ V P                  S4      # r   r�  rŽ  s   &€r"   r#   Ú?associative_scan.<locals>.make_combine_region.<locals>.<lambda>Z  r�  r%   rK  N)rr   rp  r‘  ru   rˆ  r’  rP   rª  rˆ  rU   r…  r“  r&   râ  Úcreate_scan_ret)Úscan_oprm  r–  r—  r   r˜  rP  rÅ  r7   r™  r‚   rš  ru   rC   r3   r  rÞ  s   &           @€€€€r"   r›  Ú-associative_scan.<locals>.make_combine_regionU  s  ù€ Ù.3Ó4©e¨—v‘v—}”}©eÑ4°qÕ8ˆØ×#Ñ# AÓ&ˆØ×#Ñ#ˆÜ˜g×&Õ&Ü.ˆEØ×4Ñ4°V¼TÄ#ÀeÓBYÓ=ZÓ[ˆEÜ:CÀKÔ:PÔQÑ:P±°”F˜5Ÿ9™9 Q›<¨Ö,Ñ:PˆDÑQØ ×1Ñ1°*¸dÈ2Ð1ÓNˆGÜ˜'¤6×*Ò*Ø"Ÿ>™>Ð*‘á-4Ó5©W¨Ÿ8œ8©W�Ð5Ø×#Ò# WÒ-÷ 'Ñ&ùò 5ùó Rùò
 6÷ '×&Ð&úr�  )r&   rU   r  r\   rì  rL   r‚  )rÞ  rÀ  r  r  r3   rC   r›  s   f&f&ff r"   r  r  C  s…   û€ ô �%œ× Ò Ü  	¨4°¸WÐPYÐfpÔqÐrsÕtÐt÷.ð .ô   Ó%€DÜ" 7Ó+€GØÒÜ˜$¤ E¨!¥H§N¡NÓ 3Ó4ˆØ×%Ñ% e¨TÈÓPÐPr%   c                ó|   € \        V4      p\        V4      pVe   VP                  V4      pVP                  WV4      # )aU  computes an histogram based on input tensor with num_bins bins, the bins have a width of 1 and start at 0.

:param input: the input tensor
:type input: Tensor
:param num_bins: number of histogram bins
:type num_bins: int
:param mask: if `mask[idx]` is false, exclude `input[idx]` from histogram
:type mask: Block of `triton.int1`, optional

)r\   rh   r)  )rÞ  r(  rÇ  r3   rC   s   &&&&&r"   r)  r)  k  sA   € ô $ HÓ-€HÜ Ó%€DØÒØ×"Ñ" 4Ó(ˆØ×Ñ˜u°Ó5Ð5r%   c                óh   € \        V 4      p \        V4      p\        V4      pVP                  WV4      # )zÎGather from a tensor along a given dimension.

:param src: the source tensor
:type src: Tensor
:param index: the index tensor
:type index: Tensor
:param axis: the dimension to gather along
:type axis: int

)r\   r$  )ÚsrcrÈ  rÀ  r3   s   &&&&r"   r$  r$    s5   € ô ˜sÓ
#€CÜ  Ó'€EÜ Ó%€DØ×Ñ˜C¨Ó-Ð-r%   Úpackc               ó    € V ^8„  d   QhRRRR/# )r,   Ú	scalar_fnz!Callable[..., Tuple[tensor, ...]]r7   rU   r.   )r/   s   "r"   r0   r0   “  s    € ÷ H.ñ H.Ø0ðH.àñH.r%   c          
     ó–  a€ V^8¼  g   Q RV 24       hV Uu. uF  qUP                   P                  NK  	  ppVP                  pVP                  4       o. pVP	                  4       p	\        V4       Fz  w  r«\        P                  ! V4       F[  pSP                  VP                  V4      V	4       VP                  \        SP                  W¡,          V,           4      V4      4       K]  	  K|  	  \        V4      ;_uu_ 4        VP                  S4       VP                  W/ R7      p\!        V\        4      pV'       d   V3pV Uu. uF  qÿP"                  NK  	  ppVP%                  V	4       VP'                  V4       RRR4       X Uu. uF  pVP                   NK  	  ppTpV^8”  dC   VRRV1,          p\        P                  ! ^V4       F  pVVVRV1,          8X  d   K  Q R4       h	  V3R lpVP%                  V	4       VP)                  VVVV4      pX'       d
   V^ ,          # T# u upi u upi   + '       g   i     L¾; iu upi )ad  
Map a scalar function over a tensor.

The input tensors :code:`args` are implicitly broadcasted to the same shape.

This may be useful in allowing control flow over single elements in a tensor,
for example a multi-branch function where one branch is more expensive. With
:code:`tl.where` you are forced to calculate both sides of the branch, but
with an if we only execute one side.

.. highlight:: python
.. code-block:: python

    @triton.jit
    def selu_scalar(x, alpha):
        if x > 0:
            return a
        else:
            return alpha * (tl.exp(x) - 1)

    @triton.jit
    def selu(x, alpha):
        return tl.map_elementwise(selu_scalar, x, alpha)

:param scalar_fn: the function to map over.
:param pack: the number of elements to be processed by one function call.
:return: one tensor or a tuple of tensors, depending on the mapped function.
zpack must be >= 1, got rK  Nz!type mismatch in unpacked resultsc                óL   <€ V P                  ^ 4      pVP                  S4       R# r¥  )r‘  Ú	push_back)Úelementwise_opr—  r˜  s   & €r"   Úmake_elementwise_regionÚ0map_elementwise.<locals>.make_elementwise_regionÕ  s!   ø€ Ø×*Ñ*¨1Ó-ˆØ×Ñ˜Ör%   )rr   rp  ru   Ú	new_blockrì  rˆ  ri  r«  Úadd_argument_atr   r  rU   r…  rˆ  Úset_insertion_point_to_startr“  r&   râ  rê  Úcreate_map_elementwise_retÚmap_elementwise)rÁ  r¿  r3   rC   r7   rm  Úin_scalar_tysru   Úscalar_argsÚoriginal_locrP  rÅ  ÚjÚscalar_resultsÚ	is_singlerš  r‚   r!   Úfn_result_typesÚscalar_result_typesÚoffsetrÆ  Úresultr˜  s   &$$$*                  @r"   rÌ  rÌ  ’  sþ  ø€ ðJ �1Œ9Ð6Ð/°¨vÐ6Ó6ˆ9Ù,0Ó1©D q—V‘V—]”]©D€MÐ1Ø×Ñ€GØ×ÑÓ€EØ€KØ—?‘?Ó$€LÜ˜=Ö)‰ˆÜ—’ Ö%ˆAØ×!Ñ! "§(¡(¨7Ó"3°\ÔBØ×Ñœv e§i¡i°µ¸1µÓ&=¸rÓBÖCó &ñ *ô
 
˜'×	"Õ	"Ø×,Ñ,¨UÔ3Ø#×4Ñ4°YÐTVÐ4ÓWˆä˜~¬vÓ6ˆ	ßØ+˜_ˆNá%3Ó4¡^ —8”8¡^ˆÐ4Ø�‰˜Ô%Ø×*Ñ*¨7Ô3÷ 
#ñ (6Ó6¡~ !�q—v”v¡~€OÐ6Ø)ÐØˆa„xØ-©f°¨fÕ5ÐÜ—n’n Q¨Ö-ˆFØ&¨/¸&¸,À$¸,Õ*GÖGÐlÐIlÓlÐGñ .õ ð ‡O�O�LÔ!Ø×&Ñ& tÐ-@À$ÐH_Ó`€Fß!ˆ6�!�9Ð- vÐ-ùòG 2ùò$ 5÷ 
#×	"üò 7s*   —H)ÄAH3ÅH.Å$H3Æ	IÈ.H3È3I	c                ó"   € V P                  4       # )z9
Insert a barrier to synchronize all threads in a block.
)Údebug_barrierrš  s   &r"   rØ  rØ  ã  s   € ð
 ×"Ñ"Ó$Ð$r%   c           	     ó�  € \        V\        4      '       d   V.p\        V4       Fo  w  r4\        V\        4      '       g   \        RV R24      h\        VP                  \
        4      '       d   KL  \        RV R\        VP                  4       R24      h	  V Uu. uF  qUP                  NK  	  ppVP                  W4      # u upi )a‡  
Let the compiler know that ``values[d]`` is the largest power of two that
divides the first element of every contiguous group along dimension ``d``
of :code:`input` (see :func:`max_contiguous` for the definition of contiguous
group). ``values`` must have one entry per dimension of :code:`input`.

For a 1D input with contiguity 1, this is equivalent to saying that every
element of :code:`input` is a multiple of ``values[0]``. For example, if
:code:`values` is ``[16]`` and :code:`input` is ``[64, 80, 96, 112]``, the
hint is valid because 16 divides 64.

This hint enables alignment-dependent optimizations such as vectorized
memory accesses.
úvalues element ú must have type `constexpr`ú1 must have type `constexpr[int]`, got `constexpr[rº   )r&   rÐ   rˆ  r^   r±   r™   rr   Úmultiple_of©rÞ  rQ   r3   rP  rõ  r!   s   &&&   r"   rÝ  rÝ  ë  s´   € ô  �&œ)×$Ò$Ø�ˆÜ˜&Ö!‰ˆÜ˜!œY×'Ò'Ü˜o¨a¨SÐ0KÐLÓMÐMÜ˜!Ÿ'™'¤3×'Ô'Ü˜o¨a¨SÐ0aÔbfÐgh×gnÑgnÓboÐapÐpqÐrÓsÐsñ	 "ñ
  &Ó&™v˜!�gŒg™v€FÐ&Ø× Ñ  Ó/Ð/ùò 'ó   ÂCc           	     ó�  € \        V\        4      '       d   V.p\        V4       Fo  w  r4\        V\        4      '       g   \        RV R24      h\        VP                  \
        4      '       d   KL  \        RV R\        VP                  4       R24      h	  V Uu. uF  qUP                  NK  	  ppVP                  W4      # u upi )a•  
Let the compiler know that the elements of :code:`input` along dimension
``d`` form contiguous groups of length ``values[d]``. ``values`` must have
one entry per dimension of :code:`input` and each entry must be a power of
two.

A 1D array of ``N`` elements with contiguity ``C`` is viewed as ``N/C``
runs of ``C`` integers each, where the integers in a run are
sequentially contiguous. For example, if :code:`values` is ``[4]``, the
array ``[0, 1, 2, 3, 8, 9, 10, 11]`` satisfies the hint because it
consists of two runs of 4 contiguous values.

Together with :func:`multiple_of`, this hint enables vectorized loads and
stores of contiguous, aligned regions.
rÚ  rÛ  rÜ  rº   )r&   rÐ   rˆ  r^   r±   r™   rr   Úmax_contiguousrÞ  s   &&&   r"   rá  rá    s´   € ô" �&œ)×$Ò$Ø�ˆÜ˜&Ö!‰ˆÜ˜!œY×'Ò'Ü˜o¨a¨SÐ0KÐLÓMÐMÜ˜!Ÿ'™'¤3×'Ô'Ü˜o¨a¨SÐ0aÔbfÐgh×gnÑgnÓboÐapÐpqÐrÓsÐsñ	 "ñ
  &Ó&™v˜!�gŒg™v€FÐ&Ø×#Ñ# EÓ2Ð2ùò 'rß  c           	     ó�  € \        V\        4      '       d   V.p\        V4       Fo  w  r4\        V\        4      '       g   \        RV R24      h\        VP                  \
        4      '       d   KL  \        RV R\        VP                  4       R24      h	  V Uu. uF  qUP                  NK  	  ppVP                  W4      # u upi )a±  
Let the compiler know that the elements of :code:`input` along dimension
``d`` form constant groups of length ``values[d]``. ``values`` must have
one entry per dimension of :code:`input` and each entry must be a power of
two.

A 1D array of ``N`` elements with constancy ``C`` is viewed as ``N/C``
runs of ``C`` identical values. For example, if :code:`values` is ``[4]``,
the array ``[0, 0, 0, 0, 1, 1, 1, 1]`` satisfies the hint.
rÚ  rÛ  rÜ  rº   )r&   rÐ   rˆ  r^   r±   r™   rr   Úmax_constancyrÞ  s   &&&   r"   rã  rã  "  s´   € ô �&œ)×$Ò$Ø�ˆÜ˜&Ö!‰ˆÜ˜!œY×'Ò'Ü˜o¨a¨SÐ0KÐLÓMÐMÜ˜!Ÿ'™'¤3×'Ô'Ü˜o¨a¨SÐ0aÔbfÐgh×gnÑgnÓboÐapÐpqÐrÓsÐsñ	 "ñ
  &Ó&™v˜!�gŒg™v€FÐ&Ø×"Ñ" 5Ó1Ð1ùò 'rß  c                óB   € VP                  VP                  V 4      4      # )z4
Allow compiler to assume the :code:`cond` is True.
)Úassumerh   )r[  r3   s   &&r"   rå  rå  9  s    € ð
 ×Ñ˜I×/Ñ/°Ó5Ó6Ð6r%   ÚsepÚ rÖ  Ú
ÚfileÚflushc               ó    € V ^8„  d   QhRRRR/# )r,   ræ  r'   rÖ  r.   )r/   s   "r"   r0   r0   G  s   € ÷ 	ñ 	˜sð 	¨sñ 	r%   c                ó   € R# )ai  
Print the values at compile time.  The parameters are the same as the builtin :code:`print`.

NOTE: Calling the Python builtin :code:`print` is not the same as calling this, it instead maps to :code:`device_print`,
which has special requirements for the arguments.

.. highlight:: python
.. code-block:: python

    tl.static_print(f"BLOCK_SIZE={BLOCK_SIZE}")
Nr.   )ræ  rÖ  ré  rê  r3   rQ   s   $$$$$*r"   Ústatic_printrí  F  s   € ñ 	r%   c                ó   € R# )zÌ
Assert the condition at compile time.  Does not require that the :code:`TRITON_DEBUG` environment variable
is set.

.. highlight:: python
.. code-block:: python

    tl.static_assert(BLOCK_SIZE == 1024)
Nr.   )r[  Úmsgr3   s   &&&r"   Ústatic_assertrð  V  s   € ñ 	r%   Úhexc               ó<  € ^ RI p\        V 4      p \        V \        4      '       g   Q V  R24       hRpV  F  pWdP                  9  g   K  Rp M	  V'       g   Q V  R24       h. pV F#  pVP                  VP                  V4      4       K%  	  VP                  WV4      # )a[  
Print the values at runtime from the device.  String formatting does not work for runtime values, so you should
provide the values you want to print as arguments.  The first value must be a string, all following values must
be scalars or tensors.

Calling the Python builtin :code:`print` is the same as calling this function, and the requirements for the arguments will match
this function (not the normal requirements for :code:`print`).

.. highlight:: python
.. code-block:: python

    tl.device_print("pid", pid)
    print("pid", pid)

On CUDA, printfs are streamed through a buffer of limited size (on one host,
we measured the default as 6912 KiB, but this may not be consistent across
GPUs and CUDA versions).  If you notice some printfs are being dropped, you
can increase the buffer size by calling

.. highlight:: python
.. code-block:: python

    triton.runtime.driver.active.utils.set_printf_fifo_size(size_bytes)

CUDA may raise an error if you try to change this value after running a
kernel that uses printfs.  The value set here may only affect the current
device (so if you have multiple GPUs, you'd need to call it multiple times).

:param prefix: a prefix to print before the values. This is required to be a string literal.
:param args: the values to print. They can be any tensor or scalar.
:param hex: print all values as hex instead of decimal
Nz is not stringTFz is not an ascii string)Ústringr\   r&   r'   Ú	printabler  rh   Údevice_print)	rT  rñ  r3   r7   ró  Úb_asciiÚchÚnew_argsr…  s	   &$$*     r"   rõ  rõ  d  s¤   € óD Ü! &Ó)€FÜ�fœc×"Ò"Ð= v h¨nÐ$=Ó=Ð"Ø€GÛˆØ×%Ñ%Ö%ØˆGÙñ ÷ Ð6�v�hÐ5Ð6Ó6ˆ7Ø€HÛˆØ�‰˜	×+Ñ+¨CÓ0Ö1ñ à×!Ñ! &°CÓ8Ð8r%   c                óš   € \        V4      p\        V4      pVe   VP                  V4      pVP                  VP                  V 4      W4      # )aø  
Assert the condition at runtime from the device.  Requires that the environment variable :code:`TRITON_DEBUG`
is set to a value besides :code:`0` in order for this to have any effect.

Using the Python :code:`assert` statement is the same as calling this function, except that the second argument
must be provided and must be a string, e.g. :code:`assert pid == 0, "pid != 0"`.  The environment variable must
be set for this :code:`assert` statement to have any effect.

.. highlight:: python
.. code-block:: python

    tl.device_assert(pid == 0)
    assert pid == 0, f"pid != 0"

:param cond: the condition to assert. This is required to be a boolean tensor.
:param msg: the message to print if the assertion fails. This is required to be a string literal.
)r\   rh   rY  )r[  rï  rÇ  r3   s   &&&&r"   rY  rY  •  sL   € ô& ˜sÓ
#€CÜ Ó%€DØÒØ×"Ñ" 4Ó(ˆØ×"Ñ" 9×#6Ñ#6°tÓ#<¸cÓHÐHr%   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r,   Úasmr'   Úconstraintsr7   r   rr  zUnion[dtype, Sequence[dtype]]Úis_purerc   r¿  r™   r.   )r/   s   "r"   r0   r0   °  sI   € ÷ ~Qñ ~Q ð ~Q°#ð ~Q¸Xð ~QÐNkð ~QØ$(ð~QØ03ñ~Qr%   c                ó"  a€ \        V 4      p \        V4      p\        V4      p\        V4      p \        V4       Rp\        P                  ! \
        \        ,          V4      pTpV U	u. uF  q–P                  V	4      NK  	  up	;p
'       d“   \        VP                  RRRR7      pV
^ ,          pV
 F  pV! WÜ4      w  rìK  	  VP                  '       dL   \        V
4       F  w  rýV! WÜ4      w  W¯&   pK  	  V Uu. uF  pVP                  P                  V4      NK   	  ppV
 Uu. uF  pVP                  NK  	  ppVP                  pTP!                  YTV Uu. uF  pVP#                  V4      NK  	  upWE4      oV'       g#   \%        SP'                  ^ 4      V^ ,          4      # \(        ;QJ d     . V3R l\        V4       4       F  NK  	  5# ! V3R l\        V4       4       4      #   \         d
    RpT3p EL½i ; iu up	i u upi u upi u upi )aâ  
Execute inline assembly over a tensor.  Essentially, this is :code:`map`
where the function is inline assembly.

The input tensors :code:`args` are implicitly broadcasted to the same shape.

:code:`dtype` can be a tuple of types, in which case the output is a
tuple of tensors.

Each invocation of the inline asm processes :code:`pack` elements at a
time.  Exactly which set of inputs a block receives is unspecified.
Input elements of size less than 4 bytes are packed into 4-byte
registers.

This op does not support empty :code:`dtype` -- the inline asm must
return at least one tensor, even if you don't need it.  You can work
around this by returning a dummy tensor of arbitrary type; it shouldn't
cost you anything if you don't use it.

Example using
`PTX <https://docs.nvidia.com/cuda/parallel-thread-execution/index.html>`_
assembly:

.. highlight:: python
.. code-block:: python

    @triton.jit
    def kernel(A, B, C, D, BLOCK: tl.constexpr):
        a = tl.load(A + tl.arange(0, BLOCK)) # uint8 tensor
        b = tl.load(B + tl.arange(0, BLOCK)) # float32 tensor

        # For each (a,b) in zip(a,b), perform the following:
        # - Let ai be `a` converted to int32.
        # - Let af be `a` converted to float.
        # - Let m be the max of ai and b.
        # - Return ai and mi.
        # Do the above 4 elements at a time.
        (c, d) = tl.inline_asm_elementwise(
            asm="""
            {
                // Unpack `a` into `ai`.
                .reg .b8 tmp<4>;
                mov.b32 {tmp0, tmp1, tmp2, tmp3}, $8;
                cvt.u32.u8 $0, tmp0;
                cvt.u32.u8 $1, tmp1;
                cvt.u32.u8 $2, tmp2;
                cvt.u32.u8 $3, tmp3;
            }
            // Convert `ai` to float.
            cvt.rn.f32.s32 $4, $0;
            cvt.rn.f32.s32 $5, $1;
            cvt.rn.f32.s32 $6, $2;
            cvt.rn.f32.s32 $7, $3;
            // Take max of `ai` and `b`.
            max.f32 $4, $4, $9;
            max.f32 $5, $5, $10;
            max.f32 $6, $6, $11;
            max.f32 $7, $7, $12;
            """,
            constraints=(
                # 8 output registers, namely
                #   $0=ai0, $1=ai1, $2=ai2, $3=ai3,
                #   $4=m0,  $5=m1,  $6=m2,  $7=m3.
                "=r,=r,=r,=r,=r,=r,=r,=r,"
                # 5 input registers, namely
                #   $8=ai,
                #   $9=b0, $10=b1, $11=b2, $12=b3.
                # The four elements from `a` are all packed into one register.
                "r,r,r,r,r"),
            args=[a, b],
            dtype=(tl.int32, tl.float32),
            is_pure=True,
            pack=4,
        )
        tl.store(C + tl.arange(0, BLOCK), c)
        tl.store(D + tl.arange(0, BLOCK), d)

:param asm: assembly to run.  Must match target's assembly format.
:param constraints: asm constraints in
    `LLVM format <https://llvm.org/docs/LangRef.html#inline-asm-constraint-string>`_
:param args: the input tensors, whose values are passed to the asm block
:param dtype: the element type(s) of the returned tensor(s)
:param is_pure: if true, the compiler assumes the asm block has no side-effects
:param pack: the number of elements to be processed by one instance of inline assembly
:return: one tensor or a tuple of tensors of the given dtypes
TF)Úarithmetic_checkÚallow_lhs_ptrÚallow_rhs_ptrc              3  ó^   <"  € T F"  w  r\        SP                  V4      V4      x € K$  	  R # 5ir   )rU   Ú
get_result)ra  rP  rÅ  Úcalls   &  €r"   rb  Ú)inline_asm_elementwise.<locals>.<genexpr>.  s(   øé € ÐPÑ=O±E°A”˜Ÿ™¨Ó*¨B×/Ð/Ó=Oùs   ƒ*-)r\   r]   r^   rU  r›  r   Ú_DtypeClassrh   r   Úbinary_op_type_checking_implr‚  rˆ  rr   rY  râ  ru   Úcreate_inline_asmr   rU   r  rj  )rû  rü  r7   rr  rý  r¿  r3   Úhas_multiple_outputsÚres_tysr…  Údispatch_argsÚbin_op_type_checkingÚbroadcast_argr   r§  rP  Údtrm  r‚   ru   rÅ  r  s   &&&&&&&              @r"   Úinline_asm_elementwiser  ¯  sã  ø€ ôr ˜sÓ
#€CÜ& {Ó3€KÜ Ó%€DÜ" 7Ó+€GðÜˆUŒØ#Ðô
 �KŠKœ¤Õ-¨uÓ5€Eà€GÙ=AÓB¹T°c×,Ñ,¨SÖ1¹TÑBÐB€}ÖBÜ&Ø×2Ñ2Ø"ØØô	 
Ðð & aÕ(ˆã!ˆDÙ3°DÓHÑˆA‰}ñ "à××Ðä$ ]Ö3‘�Ù&:¸4Ó&OÑ#�Ñ ¢!ñ 4áHMÓNÉÀ"�}×)Ñ)×9Ñ9¸"Ö=ÉˆGÐNÙ!.Ó/¡˜Aˆq�xŒx¡€GÐ/Ø×Ñ€GØ×$Ñ$ S°wÑ]dÓ@eÑ]dÐWYÀÇÁÈ'ÖARÑ]dÑ@eÐgnÓu€DçÜ�d—o‘o aÓ(¨'°!­*Ó5Ð5ßŒ5ÔP¼YÀwÔ=OÓP�5ÐPˆ5ÔP¼YÀwÔ=OÓPÓPÐPøô; ô Ø$ÐØ�	‹ðüò Cùò OùÚ/ùâ@es)   ¯G& Á(G=Ã8$HÄ"HÅHÇ&G:Ç9G:c                  ó0   € ] tR tRtRtRR ltR tR tRtR# )	Ústatic_rangei6  aå  
Iterator that counts upward forever.

.. highlight:: python
.. code-block:: python

    @triton.jit
    def kernel(...):
        for i in tl.static_range(10):
            ...
:note: This is a special iterator used to implement similar semantics to Python's :code:`range` in the context of
    :code:`triton.jit` functions. In addition, it also guides the compiler to unroll the loop aggressively.
:param arg1: the start value.
:param arg2: the end value.
:param step: the step value.
Nc                	óL  € \        V\        4      '       g   Q V R 24       hVf   \        ^4      V n        M&\        V\        4      '       g   Q V R24       hW0n        Vf   \        ^ 4      V n        Wn        R# \        V\        4      '       g   Q V R24       hWn        W n        R# )z7 used as tl.static_range start value is not a constexprNz6 used as tl.static_range step value is not a constexprz5 used as tl.static_range end value is not a constexpr)r&   rÐ   r�  r‹  rÖ  )rH   Úarg1Úarg2r�  s   &&&&r"   r³   Ústatic_range.__init__H  s–   € Ü˜$¤	×*Ò*Ðl¨t¨fÐ4kÐ,lÓlÐ*ØŠ<Ü! !›ˆD�Iä˜d¤I×.Ò.Ðo°4°&Ð8nÐ0oÓoÐ.ØŒIØŠ<Ü" 1›ˆDŒJØŽHä˜d¤I×.Ò.Ðn°4°&Ð8mÐ0nÓnÐ.ØŒJØŽHr%   c                	ó   € \        R 4      h©z8static_range can only be used in @triton.jit'd functionsr  r¢   s   &r"   rW  Ústatic_range.__iter__W  ó   € ÜÐUÓVÐVr%   c                	ó   € \        R 4      hr  r  r¢   s   &r"   Ú__next__Ústatic_range.__next__Z  r  r%   )rÖ  r‹  r�  rt  ©	rO   rk   rl   rm   rN   r³   rW  r  rn   r.   r%   r"   r  r  6  s   † ñô"òWöWr%   r  c                  ó0   € ] tR tRtRtRR ltR tR tRtR# )	r«  i^  aý  
Iterator that counts upward forever.

.. highlight:: python
.. code-block:: python

    @triton.jit
    def kernel(...):
        for i in tl.range(10, num_stages=3):
            ...
:note: This is a special iterator used to implement similar semantics to Python's :code:`range` in the context of
    :code:`triton.jit` functions. In addition, it allows user to pass extra attributes to the compiler.
:param arg1: the start value.
:param arg2: the end value.
:param step: the step value.
:param num_stages: pipeline the loop into this many stages (so there are
    :code:`num_stages` iterations of the loop in flight at once).

    Note this is subtly different than passing :code:`num_stages` as a
    kernel argument.  The kernel argument only pipelines loads that feed
    into :code:`dot` operations, while this attribute tries to pipeline most
    (though not all) loads in this loop.
:param loop_unroll_factor: Tells the Triton IR level loop unroller how many
    times to unroll a for loop that this range is used with. Less than 2 for
    this value implies no unrolling.
:param disallow_acc_multi_buffer: If true, prevent the accumulator of the dot
    operation in the loop to be multi-buffered, if applicable.
:param flatten: automatically flatten the loop nest starting at this loop to
    create a single flattened loop. The compiler will try to pipeline the
    flattened loop which can avoid stage stalling.
:param warp_specialize: Enable automatic warp specialization on the loop.
    The compiler will attempt to partition memory, MMA, and vector
    operations in the loop into separate async partitions. This will
    increase the total number of warps required by the kernel.
:param disable_licm: Tells the compiler it shouldn't hoist loop invariant
    code outside the loop. This is often useful to avoid creating long liveranges
    within a loop.

    Note that warp specialization is only supported on Blackwell GPUs and
    only works on simple matmul loops. Support for arbitrary loops will be
    expanded over time.
Nc
                	óÒ   € Vf   \        ^4      V n        MW0n        Vf   \        ^ 4      V n        Wn        MWn        W n        W@n        WPn        W`n        Wpn        W€n        W�n	        R # r   )
rÐ   r�  r‹  rÖ  Ú
num_stagesÚloop_unroll_factorÚdisallow_acc_multi_bufferÚflattenÚwarp_specializeÚdisable_licm)
rH   r  r  r�  r   r!  r"  r#  r$  r%  s
   &&&&&&&&&&r"   r³   Úrange.__init__Š  sX   € àŠ<Ü! !›ˆD�IàŒIØŠ<Ü" 1›ˆDŒJØ�HàŒJØŒHØ$ŒØ"4ÔØ)BÔ&ØŒØ.ÔØ(Ör%   c                	ó   € \        R 4      h©z4tl.range can only be used in @triton.jit'd functionsr  r¢   s   &r"   rW  Úrange.__iter__�  ó   € ÜÐQÓRÐRr%   c                	ó   € \        R 4      hr(  r  r¢   s   &r"   r  Úrange.__next__   r*  r%   )	r%  r"  rÖ  r#  r!  r   r‹  r�  r$  )NNNNFFFFr  r.   r%   r"   r«  r«  ^  s   † ñ)ôV)ò&SöSr%   r«  c                  ó$   € ] tR tRtRtRR ltRtR# )rS  i¤  a	  
While loop condition wrapper.

.. highlight:: python
.. code-block:: python

    @triton.jit
    def kernel(...):
        while tl.condition(c, disable_licm)
            ...
:note: This is a special wrapper used to annotate while loops in the context of
    :code:`triton.jit` functions. It allows user to pass extra attributes to the compiler.
:param disable_licm: Tells the compiler it shouldn't hoist loop invariant
    code outside the loop. This is often useful to avoid creating long liveranges
    within a loop.
c                	ó   € Wn         W n        R # r   ©rS  r%  )rH   r  r%  s   &&&r"   r³   Úcondition.__init__¶  s   € ØŒØ(Ör%   r/  Nr
  )rO   rk   rl   rm   rN   r³   rn   r.   r%   r"   rS  rS  ¤  s   † ñ÷")ð )r%   rS  c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r,   Úlib_namer'   Úlib_pathr7   rP   Úarg_type_symbol_dictrŠ  Úret_typerr  rý  rc   r.   )r/   s   "r"   r0   r0   À  sA   € ÷ %nñ %n˜Sð %n¨Cð %n°tð %nÐSWð %nÐchð %nÐswñ %nr%   c                óÈ  € \        V4      ^ 8X  d   \        R4      h\        \        VP                  4       4      ^ ,          4      p\        V4      V8w  d   \        R\        V4       RV 24      h. p	. p
V F|  p\	        V\
        4      '       d9   V	P                  VP                  4       V
P                  VP                  4       KQ  V	P                  \        V4      4       V
P                  V4       K~  	  \        V	4      p	W”9  d    \        RVP                  4        RV	 24      hWI,          ^ ,          pVP                  p\        V ! WWÊVP                  V4      V4      V4      # )aT  
Dispatch a function to a library
:param func: the function to dispatch
:param lib_name: the name of the library
:param lib_path: the path of the library
:param args: the arguments of the function
:param arg_type_symbol_dict: the type of the arguments
:param ret_type: the type of the return value
:return: the return value of the function
zarg_type_symbol_dict is emptyz+length of input args does not match.Expect rê  z,input arg type does not match.Expect one of )rL   r5   rP   rM   r&   rU   r  rr  râ  rr   rj  ru   r   )r?  r2  r3  r7   r4  r5  rý  r3   Únum_argsÚ	arg_typesÚarg_listr…  Úsymbolru   s   &&&&&&&&      r"   Údispatchr;  À  sR  € ô ÐÓ  AÔ%ÜÐ8Ó9Ð9ä”4Ð,×1Ñ1Ó3Ó4°QÕ7Ó8€HÜ
ˆ4ƒy�HÔÜð #Ü#& t£9 +¨V°H°:ð?ó @ð 	@ð €IØ€HÛˆÜ�cœ6×"Ò"Ø×Ñ˜SŸY™YÔ'Ø�O‰O˜CŸJ™JÖ'à×ÑœT #›YÔ'Ø�O‰O˜CÖ ñ ô �iÓ €IàÔ,Üð *Ø*>×*CÑ*CÓ*EÐ)FÀfÈYÈKðYó Zð 	Zð &Õ0°Õ3ˆØ×#Ñ#ˆÜ‘d˜8¨vÀÇÁÐPWÓAXÐZaÓbÐdlÓmÐmr%   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r,   r2  r'   r3  r7   rP   r4  rŠ  rý  rc   r.   )r/   s   "r"   r0   r0   é  s8   € ÷ 'qñ 'q ð 'q°ð 'q¸4ð 'qÐW[ð 'qÐfjñ 'qr%   c           
     ó  € VP                  4       pRp. p\        P                  ! \        V4      4       Fg  p	VP	                  Wi,          4      Wi&   VP                  Wi,          P                  4       Wi,          P                  P                  4       '       g   Ke  RpKi  	  \        V4      pW8,          ^,          p
\        V4      ^ 8”  dš   RpWƒ9   d   RpV^ ,          pV F  pVP                  WÜVR7      w  rìK  	  \        P                  ! \        V4      4       F"  p	VP                  Wi,          VVR7      w  Wi&   pK$  	  V'       g   VP                  P                  V
4      p
VP                  P                  p\        WðWW:WE4      # )a:  
Dispatch an elementwise function to a library
:param lib_name: the name of the library
:param lib_path: the path of the library
:param args: the arguments of the function
:param arg_type_symbol_dict: the type of the arguments
:param is_pure: whether the function is pure
:return: the return value of the function
TF)rÿ  )Úcopyri  r«  rL   rh   r  rr  rr   r  rj  r  rY  ru   Úcreate_extern_elementwiser;  )r2  r3  r7   r4  rý  r3   r  Ú
all_scalarr8  rP  r5  rÿ  r  r   r§  r?  s   &&&&&&          r"   Úextern_elementwiserA  è  sj  € ð —I‘I“K€MØ€JØ€IÜ�^Š^œC Ó.Ö/ˆØ$×.Ñ.¨}Õ/?Ó@ˆÑØ×Ñ˜Õ)×/Ñ/Ô0ØÕ× Ñ ×)Ñ)×+Ô+ØŠJñ	 0ô �iÓ €IØ#Õ.¨qÕ1€HÜ
ˆ9ƒ~˜ÔØÐàÔ,Ø$ÐØ% aÕ(ˆã!ˆDØ(×EÑEÀdØWgð  Fó  iÑˆA‰}ñ "ô —’¤ MÓ 2Ö3ˆAØ"+×"HÑ"HÈÕIYÐ[hØZjð #Ió #lÑˆMÑšañ 4÷ Ø$×)Ñ)×9Ñ9¸(ÓCˆHØ×Ñ×6Ñ6€DÜ�D HÐ=QÐ]dÓpÐpr%   c                ó$   € VP                  W4      # )z†
Convert both operands to a single common type
:param lhs: the left operand
:param rhs: the right operand
:param builder: the builder
)r  )r  r"  Úsemantics   &&&r"   Úbinary_op_type_legalizationrD    s   € ð ×0Ñ0°Ó:Ð:r%   c                ó   € \        V 4      # )z#A decorator for external functions.)r@   rf   s   &r"   ÚexternrF    s   € ä�2‹;Ðr%   c                óP   € V R 8H  ;'       d    \         P                  ! RV 4      ^ 8  # )rÅ  g      ð?)rã  Úcopysignr_   s   &r"   Úis_negative_zerorI  %  s$   € Ø�‰8×1Ð1œŸš c¨1Ó-°Ñ1Ð1r%   ri  c                ó&  € \        V4      p\        ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      pV'       d¼   V \        J g   Q R4       h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   Q R4       h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   Q R4       h\	        \
        P                  ! \        V4      4      4      # V \        J d   \        P                  p M\        R4       \        V4      ^8¼  g   Q R	4       hV^ ,          pVR
,           F  p\        WEWR7      pK  	  VP                  P                  4       '       d   \        R4       V# )c              3  óL   "  € T F  p\        V\        4      '       * x € K  	  R # 5ir   ©r&   rp   r`  s   & r"   rb  Úbuiltin_max.<locals>.<genexpr>,  ó   é € ÐC¹d¸œ: a¬Ó4×4Ñ4»dùó   ‚"$FTz-propagate_nan is not supported on builtin maxc              3  óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5ir   ©rã  Úisnanr`  s   & r"   rb  rM  /  ó   é € Ð3©d¨”t—z’z !—}�}«dùó   ‚#%z)constexpr max does not support NaN valuesc              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir   ©rI  r`  s   & r"   rb  rM  0  ó   é € Ð9±D¨qÔ'¨×*Ð*³Dùrd  z,constexpr max does not support negative zerozJpassing propagate_nan to builtin max is deprecated, use tl.minimum insteadúmin requires at least 2 valuesrM  ©ri  r3   zMbuiltin max on non-scalar tensor values is deprecated, use tl.maximum instead)r\   rŠ  Ú_NOTHINGÚanyrÐ   ri  rC  ÚPropagateNanÚNONEr   rL   rr  rr   r  )ri  r3   r7   Úis_constexprÚmax_valr…  s   $$*   r"   Úbuiltin_maxr`  )  ó/  € ä Ó%€Dß“3ÑC¹dÓC—3—3’3ÑC¹dÓCÓC€LßØ¤Ó(ÐYÐ*YÓYÐ(ß“3Ñ3©dÓ3—3—3’3Ñ3©dÓ3×3Ò3Ð`Ð5`Ó`Ð3ß“3Ñ9±DÓ9—3—3’3Ñ9±DÓ9×9Ò9ÐiÐ;iÓiÐ9ÜœŸšÔ&:¸4Ó&@ÓAÓBÐBàœÓ Ü$×)Ñ)‰äÐYÔZäˆt‹9˜Œ>Ð;Ð;Ó;ˆ>Ø�1�g€GØ�B�xˆxˆÜ˜'°mÔYŠñ à‡|�|×Ñ×ÒÜÐ\Ô]Ø€Nr%   c                ó&  € \        V4      p\        ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      pV'       d¼   V \        J g   Q R4       h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   Q R4       h\        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   Q R4       h\	        \
        P                  ! \        V4      4      4      # V \        J d   \        P                  p M\        R4       \        V4      ^8¼  g   Q R	4       hV^ ,          pVR
,           F  p\        WEWR7      pK  	  VP                  P                  4       '       d   \        R4       V# )c              3  óL   "  € T F  p\        V\        4      '       * x € K  	  R # 5ir   rL  r`  s   & r"   rb  Úbuiltin_min.<locals>.<genexpr>D  rN  rO  FTz-propagate_nan is not supported on builtin minc              3  óN   "  € T F  p\         P                  ! V4      x € K  	  R # 5ir   rQ  r`  s   & r"   rb  rd  G  rS  rT  z)constexpr min does not support NaN valuesc              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir   rV  r`  s   & r"   rb  rd  H  rW  rd  z,constexpr min does not support negative zerozJpassing propagate_nan to builtin min is deprecated, use tl.minimum insteadrX  rM  rY  zMbuiltin min on non-scalar tensor values is deprecated, use tl.minimum instead)r\   rŠ  rZ  r[  rÐ   ri  rN  r\  r]  r   rL   rm  rr   r  )ri  r3   r7   r^  Úmin_valr…  s   $$*   r"   Úbuiltin_minrh  A  ra  r%   rq  r   )Fr   Nrt  rs  )NNNNNNrÍ  rÎ  )rÄ  Nr
  ru  )NNNN)TN)FNN)rD   N)rD   NN)»Ú
__future__r   rã  Úwarningsr   Ú
contextlibr   Úenumr   Ú	functoolsr   r   r	   rU  r
   r   r   r   r   r   r   r   Údataclassesr   ri  rD   r   Úruntime.jitr   r>   Ú_C.libtritonr   Ú_utilsr   r   r   r   r   r=   ÚPROPAGATE_NANr\  r   r@   rZ   r`   rT   rh   rj   rp   rq   r®   rÐ   rv  r\   re  ru  rr  r  r`  r€  r®  rÕ  rw  r½  rÁ  rÅ  rÉ  rÍ  rÑ  rÕ  rÚ  rÞ  Úfloat8e5Úfloat8e5b16Ú
float8e4nvÚ
float8e4b8Úfloat8e4b15Úfloat16r¨  r  Úfloat64Úpi32_trÜ  rU   rx  rj  r‡  r©  r³  r  r  r0  rA  Útyping_extensionsrF  rR  rY  r`  rŒ  r�  r“  r–  rœ  rŸ  r¥  r§  r’  r\  rÑ  rÔ  r¶  rN   r‡  rÙ  rÛ  rß  r¢  rª  r¯  rë  r©  rö  r´  r¸  r   r¼  rì  r‰  r›  r  r  râ  r-  r0  rË  r4  rÐ  r8  rE  r×  rÝ  râ  ræ  rê  rî  rò  rö  rR  r\  rþ  r  r  r]  rm  rr  ru  rƒ  rˆ  r  rl  r­  r´  r  r)  r$  rÌ  rØ  rÝ  rá  rã  rå  rí  rð  rõ  rY  r  r  r«  rS  r;  rA  rD  rF  rZ  rI  r`  rh  r.   r%   r"   Ú<module>r|     s¢
  ðÝ "ã Ý Ý %Ý ß 5Ñ 5Û ß [× [Ó [Ý !Û Ý Ý %Û å ß iÓ iáˆCƒL€à%€à×Ñ€ôõõ"*òZõ..ð
 	ó"ó 	ð"÷	ñ 	÷"ñ "÷"ñ "ô,-�Yô -ô8O-�
ô O-ñd ˜‹l€ò6òòôLˆIô Lðd €ô%.�5ô %.ôP3!�ô 3!ôl$F�ô $FôN!�ô !ñ ˆVƒ}€ÙˆVƒ}€ÙˆVƒ}€Ùˆg‹€Ùˆg‹€Ùˆg‹€Ùˆg‹€Ù	ˆx‹€Ù	ˆx‹€Ù	ˆx‹€Ù�‹>€Ù�JÓ€Ù�9Ó€
Ù�9Ó€
Ù�JÓ€Ù
�‹-€Ù�‹=€Ù
�‹-€Ù
�‹-€á	�eÓ	€õUô8]ˆZô ]ô@uôH>ˆJô H>÷V!ñ !ô/ )ô /ô:[N˜Zô [Nô|kÐ8ô kô6*Ð.ô *ñB �$Ôô.�ió .ó ð.ò6÷ Þ5òñ “XÐ ò)ñ4  Ô&ñ{ó 'ð{ò|$õ2[òð	ÐPU÷ 	õõð ÷h*ð h*ó ðh*ðV #'€
Ô ÙÑ8Ó9€
Ô ð 	ó&ó 	ð&ð$ 	ó(ó 	ð(ð  	ó(ó 	ð(ð&ð '>Ð%>ð ?ð
€„ò4ò
ð 	ó/ó 	ð/ð, 	ó	8ó 	ð	8ð Øð8¨$ó 8ó 	ó ð8ð& Øð*¨$ö *ó 	ó ð*ð< Øð* Dó *ó 	ó ð*ð, 	ó6ó 	ð6ðD 	ó ó 	ð ô.
 ð Øöó 	ó ððB Øð= $ó =ó 	ó ð=ð( ØóGó 	ó ðGð Øð8 uð 8¸ð 8Èó 8ó 	ó ð8ò*.ð Øóó 	ó ðð8 Øö>ó 	ó ð>ð< 	óDó 	ðDðN 	ØKOÐ[`ÐmqØ¨'¸Tó+7ó 	ð+7ðf 	ó>$ó 	ð>$ðB 	ö3ó 	ð3ð 	ö;ó 	ð;ð Øó2bó 	ó ð2bðj 	ö^ó 	ð^ñ ð Qóð Øó	aó 	ó óð
	að 	ö9_ó 	ð9_÷Bð> ØÙÐ&°Ô5ó?ó 6ó 	ó ð?ð ØÙ�JÓóAó  ó 	ó ðAð ØÙ�EÓó@ó ó 	ó ð@ð ØÙ�EÓó@ó ó 	ó ð@ð ØÙ�EÓó@ó ó 	ó ð@ð ØÙ�MÓ"ó@ó #ó 	ó ð@ð ØÙ�LÓ!ó?ó "ó 	ó ð?ð ØÙ�MÓ"ó@ó #ó 	ó ð@ð 	ó,ó 	ð,ð, 	óó 	ðð< 	ö2ó 	ð2ð 	ö2ó 	ð2ð 	ö2ó 	ð2ð 	Ø-9×->Ò->È$ö 2ó 	ð2ð* 	Ø-9×->Ò->È$ö 2ó 	ð2ð* 	Ø2>×2CÒ2CÈtö 7ó 	ð7÷DðD ñ(ó ð(ð Øó.ó 	ó ð.ðb 	óó 	ðð 	óó 	ð÷,ð0 Øó#Qó 	ó ð#QðL Øó6ó 	ó ð6ð$ Øó.ó 	ó ð.ð" 	ðH.ð 
ðH.ð ð	H.ð
 öH.ó 	ðH.ð` 	ó%ó 	ð%ð 	ó0ó 	ð0ð4 	ó3ó 	ð3ð6 	ó2ó 	ð2ð, 	ó7ó 	ð7ð 	ð	 Sð 	°Tð 	Àð 	ÈEð 	Ð]aö 	ó 	ð	ð 	ó
	ó 	ð
	ð 	ð-9 Eð -9°Tó -9ó 	ð-9ð` 	óIó 	ðIð2 	ö~Qó 	ð~QôL%W�:ô %WôPCSˆJô CSôL)�
ô )õ8%nðP 	ö'qó 	ð'qòT;òñ
 ‹8€ò2ð 	ð Xð ¸ó ó 	ðð. 	ð Xð ¸ó ó 	òr%   