Ë
    7^(hj8  ã                  óÚ  — d dl mZ ddlmZ ddlmZ ddlmZ d<d„Zd<d„Zej                  ed	„ «       «       Z
ej                  e ej                  d
«      d„ «       «       «       Zej                  e ej                  d«      d=d„«       «       «       Zej                  ed=d„«       «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zej                  e ej,                  ddd¬«      d>d„«       «       «       Zej                  e ej,                  dd¬«      d?d„«       «       «       Zed „ «       Zed!„ «       Zed"„ «       Zed#„ «       Zej                  e ej,                  d$dd¬«      d>d%„«       «       «       Zej                  e ej,                  d&d¬«      d?d'„«       «       «       Zed(„ «       Zd@d*„Z ej                  e ej,                  d+d)¬,«      dAdBd-„«       «       «       Z!ed.„ «       Z"ej                  e ej,                  d/«      dCd0„«       «       «       Z#ej                  e ejH                  d1«      dDd2„«       «       «       Z%ed3„ «       Z&ej                  e ejH                  d4«      dDd5„«       «       «       Z'edEd6„«       Z(edFd7„«       Z)ej                  edejT                  fdGd8„«       «       Z+d9„ Z,ej                  edHd:„«       «       Z-ed;„ «       Z.y)Ié    )Úannotationsé   )Újité   )Úcore)Úmathc                ór   — d}| j                   }|dkD  r|dz  }|dz  }|dkD  rŒt        j                  |«      S )Nr   r   ©Úvaluer   Ú	constexpr)ÚiÚlog2Úns      úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/triton/language/standard.pyÚ_log2r   
   sC   € Ø€DØ	�‰€AØ
ˆaŠ%Ø	ˆa‰ˆØ�‰	ˆð ˆa‹%ô �>‰>˜$ÓÐó    c                ód   — | j                   }t        j                  ||dz
  z  dk(  xr |dk7  «      S )Nr   r   r
   )r   r   s     r   Ú_is_power_of_twor      s0   € Ø	�‰€AÜ�>‰>˜1  A¡™;¨1Ñ,Ò7°°a±Ó8Ð8r   c                ó   — | |z   dz
  |z  S )z§
    Computes the ceiling division of :code:`x` by :code:`div`

    :param x: the input number
    :type x: Block
    :param div: the divisor
    :type div: Block
    r   © )ÚxÚdivs     r   Úcdivr      s   € ð �‰G�a‰K˜CÑÐr   Úsigmoidc                ó:   — ddt        j                  |  «      z   z  S )Nr   )r   Úexp)r   s    r   r   r   +   s   € ð �”D—H‘H˜a˜R“LÑ Ñ!Ð!r   Úsoftmaxc                ó�   — | t        | d«      z
  }t        j                  |«      }t        |d«      }t        j                  |||«      S )Nr   )Úmaxr   r   ÚsumÚfdiv)r   Úieee_roundingÚzÚnumÚdens        r   r   r   2   s>   € ð 	
ŒC��1‹I‰€AÜ
�(‰(�1‹+€CÜ
ˆc�1‹+€CÜ�9‰9�S˜#˜}Ó-Ð-r   c                óH   — t        j                  | | j                  g|¬«      S )zn
    Returns a contiguous flattened view of :code:`x`.

    :param x: the input tensor
    :type x: Block
    )Úcan_reorder)r   ÚreshapeÚnumel)r   r'   s     r   Úravelr*   <   s   € ô �<‰<˜˜AŸG™G˜9°+Ô>Ð>r   c                óŽ   — | |z  |z   }||z  }||z  }||z  }t        j                  ||z
  |«      }||z  }|||z  z   }	||z  }
|	|
fS )aÝ  
    Transforms the indices of a row-major `size_i * size_j` matrix into
    the indices of a column-major matrix for each group of `size_g` rows.

    For example, for :code:`size_i = size_j = 4` and :code:`size_g = 2`, it will
    transform ::

        [[0 , 1 , 2 , 3 ],
         [4 , 5 , 6 , 7 ],
         [8 , 9 , 10, 11],
         [12, 13, 14, 15]]

    into ::

        [[0, 2,  4 , 6 ],
         [1, 3,  5 , 7 ],
         [8, 10, 12, 14],
         [9, 11, 13, 15]]
    ©r   Úminimum)r   ÚjÚsize_iÚsize_jÚsize_gÚijÚsize_gjÚgroup_idÚoff_iÚnew_iÚnew_js              r   Ú	swizzle2dr8   H   sm   € ð, 
ˆV‰�a‰€Bð �v‰o€Gà�W‰}€Hà�vÑ€Eä�\‰\˜& 5™.¨&Ó1€Fà	ˆg‰€Bà�B˜‘KÑ€EØ�&‰L€EØ�%ˆ<Ðr   c                ó0   — t        j                  | d|«      S )a'  
    Returns a tensor filled with the scalar value 0 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 dtype: Data-type of the new array, e.g., :code:`tl.float16`
    :type dtype: DType
    r   )r   Úfull)ÚshapeÚdtypes     r   Úzerosr=   p   s   € ô �9‰9�U˜A˜uÓ%Ð%r   c                óB   — t        | j                  | j                  «      S )z‹
    Returns a tensor of zeros with the same shape and type as a given tensor.

    :param input: input tensor
    :type input: Tensor
    )r=   r;   r<   )Úinputs    r   Ú
zeros_liker@   }   s   € ô �—‘˜eŸk™kÓ*Ð*r   c                óš   — |r| |k(  xr ||k  }nd}| |kD  xs |}t        j                  || |«      }t        j                  |||«      }||fS ©NF©r   Úwhere)	Úvalue1Úindex1Úvalue2Úindex2Útie_break_leftÚtieÚgtÚv_retÚi_rets	            r   Ú_argmax_combinerN   ‹   sY   € áØ˜ÑÒ2 6¨F¡?‰àˆØ	�&‰Ò	˜C€BÜ�J‰J�r˜6 6Ó*€EÜ�J‰J�r˜6 6Ó*€EØ�%ˆ<Ðr   c                ó    — t        | |||d«      S ©NT©rN   ©rE   rF   rG   rH   s       r   Ú_argmax_combine_tie_break_leftrS   —   ó   € ä˜6 6¨6°6¸4Ó@Ð@r   c                ó    — t        | |||d«      S rB   rQ   rR   s       r   Ú_argmax_combine_tie_break_fastrV   œ   ó   € ä˜6 6¨6°6¸5ÓAÐAr   c                ó.   — t        j                  | |«      S ©N)r   Úmaximum©ÚaÚbs     r   Ú_elementwise_maxr^   ¡   ó   € ä�<‰<˜˜1ÓÐr   rZ   Úreturn_indicesÚreturn_indices_tie_break_left)Úreturn_indices_argÚtie_break_argNc                óz  — t        j                  | «      } |r<|rt        j                  | |t        |¬«      S t        j                  | |t        |¬«      S t        j
                  | j                  j                  «      t        j
                  d«      k  r�t        j
                  | j                  j                  «       «      r | j                  t         j                  «      } n@| j                  j                  «       sJ d«       ‚| j                  t         j                  «      } t        j                  | |t        |¬«      S ©N©Ú	keep_dimsé    z"Expecting input to be integer type)r   Ú_promote_bfloat16_to_float32Ú_reduce_with_indicesrS   rV   r   r<   Úprimitive_bitwidthÚis_floatingÚtoÚfloat32Úis_intÚint32Úreducer^   ©r?   Úaxisr`   ra   rg   s        r   r   r   ¦   sß   € ô
 ×-Ñ-¨eÓ4€EÙÙ(Ü×,Ñ,¨U°DÔ:XÐdmÔnÐnä×,Ñ,¨U°DÔ:XÐdmÔnÐnä�>‰>˜%Ÿ+™+×8Ñ8Ó9¼D¿N¹NÈ2Ó<NÒNÜ�~‰~˜eŸk™k×5Ñ5Ó7Ô8ØŸ™¤§¡Ó.‘à—{‘{×)Ñ)Ô+ÐQÐ-QÓQÐ+ØŸ™¤§¡Ó,�Ü�{‰{˜5 $Ô(8ÀIÔNÐNr   zmaximum indexrI   )rc   c                ó,   — t        | |d||¬«      \  }}|S ©NT)r`   ra   rg   )r   ©r?   rs   rI   rg   Ú_Úrets         r   Úargmaxry   »   s!   € ô �5˜$¨tÐSaÐmvÔw�H€QˆØ€Jr   c                óš   — |r| |k(  xr ||k  }nd}| |k  xs |}t        j                  || |«      }t        j                  |||«      }||fS rB   rC   )	rE   rF   rG   rH   rI   rJ   ÚltÚ	value_retÚ	index_rets	            r   Ú_argmin_combiner~   Æ   sZ   € áØ˜ÑÒ2 6¨F¡?‰àˆØ	�&‰Ò	˜C€BÜ—
‘
˜2˜v vÓ.€IÜ—
‘
˜2˜v vÓ.€IØ�iÐÐr   c                ó    — t        | |||d«      S rP   ©r~   rR   s       r   Ú_argmin_combine_tie_break_leftr�   Ò   rT   r   c                ó    — t        | |||d«      S rB   r€   rR   s       r   Ú_argmin_combine_tie_break_fastrƒ   ×   rW   r   c                ó.   — t        j                  | |«      S rY   r,   r[   s     r   Ú_elementwise_minr…   Ü   r_   r   r-   c                óT  — t        j                  | «      } |r<|rt        j                  | |t        |¬«      S t        j                  | |t        |¬«      S t        j
                  | j                  j                  «      dk  r�t        j
                  | j                  j                  «       «      r | j                  t         j                  «      } n@| j                  j                  «       sJ d«       ‚| j                  t         j                  «      } t        j                  | |t        |¬«      S re   )r   ri   rj   r�   rƒ   r   r<   rk   rl   rm   rn   ro   rp   rq   r…   rr   s        r   Úminr‡   á   sÖ   € ô
 ×-Ñ-¨eÓ4€EÙÙ(Ü×,Ñ,¨U°DÔ:XÐdmÔnÐnä×,Ñ,¨U°DÔ:XÐdmÔnÐnä�>‰>˜%Ÿ+™+×8Ñ8Ó9¸BÒ>Ü�~‰~˜eŸk™k×5Ñ5Ó7Ô8ØŸ™¤§¡Ó.‘à—{‘{×)Ñ)Ô+ÐQÐ-QÓQÐ+ØŸ™¤§¡Ó,�Ü�{‰{˜5 $Ô(8ÀIÔNÐNr   zminimum indexc                ó,   — t        | |d||¬«      \  }}|S ru   )r‡   rv   s         r   Úargminr‰   ö   s!   € ô �˜¨TÐQ_ÐktÔu�F€A€sØ€Jr   c                ó   — | |z   S rY   r   r[   s     r   Ú_sum_combiner‹   þ   ó   € àˆq‰5€Lr   r<   c                ó  — t        j                  |«      }|�|S d }| j                  «       r%| j                  dk  rt         j                  }|S d }|S | j                  «       r!| j                  dk  rt         j                  nd }|S )Nrh   )r   Ú_unwrap_if_constexprÚis_int_signedÚint_bitwidthrp   Úis_int_unsignedÚuint32)Úin_dtyper<   Ú	out_dtypes      r   Ú_pick_sum_dtyper•     s‹   € Ü×%Ñ% eÓ,€EØÐØˆð €IØ×ÑÔØ"*×"7Ñ"7¸"Ò"<”D—J‘Jˆ	ð Ðð CGˆ	ð Ðð 
×	!Ñ	!Ô	#Ø#+×#8Ñ#8¸2Ò#=”D—K’KÀ4ˆ	ØÐr   r    )Ú	dtype_argc                óŽ   — t        | j                  |«      }|�| j                  |«      } t        j                  | |t
        |¬«      S )Nrf   )r•   r<   rm   r   rq   r‹   )r?   rs   rg   r<   r”   s        r   r    r      s=   € ô
 !0°·±¸UÓ C€IàÐØ—‘˜Ó#ˆÜ�;‰;�u˜d¤L¸IÔFÐFr   c                ó   — | |z  S rY   r   r[   s     r   Ú_xor_combiner™   !  rŒ   r   zxor sumc                ó¬   — t        j                  | j                  j                  j	                  «       d«       t        j
                  | |t        |¬«      S )Nz#xor_sum only supported for integersrf   )r   Ústatic_assertÚtypeÚscalarro   rq   r™   )r?   rs   rg   s      r   Úxor_sumrž   )  s=   € ô 	×Ñ�u—z‘z×(Ñ(×/Ñ/Ó1Ð3XÔYÜ�;‰;�u˜d¤L¸IÔFÐFr   Úcumsumc                ód   — t        j                  | «      } t        j                  | |t        |«      S rY   )r   ri   Úassociative_scanr‹   ©r?   rs   Úreverses      r   rŸ   rŸ   4  s+   € ô
 ×-Ñ-¨eÓ4€EÜ× Ñ  ¨¬l¸GÓDÐDr   c                ó   — | |z  S rY   r   r[   s     r   Ú_prod_combiner¥   @  rŒ   r   Úcumprodc                ód   — t        j                  | «      } t        j                  | |t        |«      S rY   )r   ri   r¡   r¥   r¢   s      r   r¦   r¦   E  s+   € ô
 ×-Ñ-¨eÓ4€EÜ× Ñ  ¨¬m¸WÓEÐEr   c                ó¨  — | j                   |z	  }|d|z  z  dd||z
  dz
  z  g}t        j                  | |«      }t        j                  dd«      d d d …d f   }t        j                  t        |d|z
  z  d«      d d …d d d …f   |«      j                  |j                  «      }t        j                  t        ||z  d«      d d …d d d …f   |«      j                  |j                  «      }	t        j                  || j                  «      }t        j                  |	| j                  «      }	t        j                  | j                  j                  d¬«      }
|j                  |
d¬«      }|	j                  |
d¬«      }| j                  |
d¬«      }|t        j                  ||	kD  |k7  ||z  t        |«      «      z  }|j                  | j                  d¬«      S )Nr   r   r   T©ÚbitwidthÚsigned©Úbitcast)r)   r   r(   ÚarangeÚbroadcast_tor    rm   r<   r;   Úget_int_dtyperk   rD   r@   )r   Úflipr   Ún_dimsÚn_outerr;   ÚyÚmaskÚleftÚrightÚidtypeÚileftÚirightÚixrx   s                  r   Ú_compare_and_swapr¼   Q  s‡  € àŸg™g¨Ñ/€GØ$ q¨!¡t™^¨Q°°F¸Q±JÀ±NÑ0CÐD€EÜ�‰�Q˜Ó€Aä�;‰;�q˜!Ó˜T¢1 d˜]Ñ+€DÜ×ÑœS  a¨$¡h¡°Ó3²A°tºQ°JÑ?ÀÓG×JÑJÈ1Ï7É7ÓS€DÜ×Ñœc ! d¡(¨AÓ.ªq°$º¨zÑ:¸EÓB×EÑEÀaÇgÁgÓN€EÜ�<‰<˜˜aŸg™gÓ&€DÜ�L‰L˜ §¡Ó(€Eä×Ñ¨¯©×)CÑ)CÈDÔQ€FØ�G‰G�F DˆGÓ)€EØ�X‰X�f dˆXÓ+€FØ	
�‰ˆf˜dˆÓ	#€BØ
Œt�z‰z˜4 %™<¨DÑ0°%¸&±.Ä*ÈRÃ.ÓQÑ
Q€CØ�6‰6�!—'‘' 4ˆ6Ó(Ð(r   c                óˆ  — | j                   |z	  }t        j                  ||k  «       |dk(  re|d|dz
  |z
  z  z  dd|z  g}t        j                  t        j                  t        j
                  dd«      ddd…df   |«      | j                  «      }n|}t        j                  |«      D ]  }t        | ||||z
  z   |«      } Œ | S )zb
    order_type 0 == ascending
    order_type 1 == descending
    order_type 2 == alternating
    r   r   r   N)	r)   r   r›   r(   r¯   r®   r;   Ústatic_ranger¼   )r   ÚstageÚorderr²   r³   r;   r±   r   s           r   Ú_bitonic_mergerÁ   e  sÊ   € ð  Ÿg™g¨Ñ/€GÜ×Ñ�u ‘Ô'ð �‚zØ!(¨1¨v¸©z¸EÑ/AÑ+BÑ!BÀAÀqÈ%ÁxÐ PˆÜ�|‰|œD×-Ñ-¬d¯k©k¸!¸QÓ.?ÀÂaÈÀÑ.NÐPUÓVÐXY×X_ÑX_Ó`‰àˆä×Ñ˜uÓ%ò EˆÜ˜a  q¨F°U©NÑ';¸VÓD‰ðEà€Hr   c                ó2  — |€t        | j                  «      dz
  n|}t        j                  |t        | j                  «      dz
  k(  d«       t	        | j                  |   «      }t        j
                  d|dz   «      D ]  }t        | |||k  rdn||«      } Œ | S )aù  
    Sorts a tensor along a specified dimension.

    :param x: The input tensor to be sorted.
    :type x: Tensor
    :param dim: The dimension along which to sort the tensor. If None, the tensor is sorted along the last dimension. Currently, only sorting along the last dimension is supported.
    :type dim: int, optional
    :param descending: If set to True, the tensor is sorted in descending order. If set to False, the tensor is sorted in ascending order.
    :type descending: bool, optional
    r   z+only minor dimension is currently supportedr   )Úlenr;   r   r›   r   r¾   rÁ   )r   ÚdimÚ
descendingÚ_dimr²   r   s         r   ÚsortrÇ   ~  s�   € ð 03¨{œ3˜qŸw™w›<¨!Ò+À€DÜ×Ñ�tœs 1§7¡7›|¨aÑ/Ñ/Ð1^Ô_ä" 1§7¡7¨4¡=Ó1€FÜ×Ñ˜q &¨1¡*Ó-ò JˆÜ˜1˜a a¨&¢j¡°jÀ&ÓI‰ðJà€Hr   c                óÐ   — t        j                  | «      } t        j                  |«      }| €t        |«      dz
  } | t        |«      dz
  k(  sJ d«       ‚t        j                  | «      S )Nr   z2Currently only support flipping the last dimension)r   rŽ   rÃ   r   )rÄ   r;   s     r   Ú_get_flip_dimrÉ   ˜  s_   € Ü
×
#Ñ
# CÓ
(€CÜ×%Ñ% eÓ,€EØ
€{Ü�%‹j˜1‰nˆØ”#�e“*˜q‘.Ò ÐVÐ"VÓVÐ Ü�>‰>˜#ÓÐr   c           	     ó<  — t        j                  t        | j                  t	        || j                  «         «      «       t        j                  t        | j
                  «      «       t        | j
                  «      }t        | j
                  «      t        | j                  t	        || j                  «         «      z
  }t        j                  | j                  j                  d¬«      }t        j                  | j                  |d¬«      dg|z  «      }t        j                  ||«      }t        j                  dd«      dd…df   dt        j                  dd«      z
  k(  }t        j                  ||«      D ]f  }|}t        j                  d|dz   «      D ]'  }	|	|k7  sŒ	|	|dz   k7  sŒt        j                  ||	«      }Œ) t        ||z  |dz   d|j                  ¬«      }Œh t        j                  || j                  «      j                  | j                  d¬«      } | S )	zÚ
    Flips a tensor `x` along the dimension `dim`.

    :param x: the first input tensor
    :type x: Block
    :param dim: the dimension to flip along (currently only final dimension supported)
    :type dim: int
    Tr©   r¬   r   r   Nr   )rg   r<   )r   r›   r   r;   rÉ   r)   r   r°   r<   rk   r(   rm   Úexpand_dimsr®   r¾   r    )
r   rÄ   ÚstepsÚstartr¸   r´   r±   r   Úflip2r.   s
             r   r±   r±   ¡  s°  € ô 	×ÑÔ'¨¯©´¸cÀ1Ç7Á7Ó0KÑ(LÓMÔNÜ×ÑÔ'¨¯©Ó0Ô1ô " !§'¡'›N€EÜ! !§'¡'›N¬U°1·7±7¼=ÈÈaÏgÉgÓ;VÑ3WÓ-XÑX€Eä×Ñ¨¯©×)CÑ)CÈDÔQ€FÜ�‰�Q—T‘T˜&¨$�TÓ/°!°°u±Ó=€AÜ×Ñ˜˜EÓ"€AÜ�K‰K˜˜1Óša ˜gÑ&¨!¬d¯k©k¸!¸QÓ.?Ñ*?Ñ?€DÜ×Ñ˜u eÓ,ò AˆØˆÜ×"Ñ" 1 e¨a¡iÓ0ò 	3ˆAØ�A‹v˜!˜q 1™u›*Ü×(Ñ(¨°Ó2‘ð	3ô ��E‘	˜1˜q™5¨D¸¿¹Ô@‰ðAô 	�‰�Q˜Ÿ™Ó ×#Ñ# A§G¡G°TÐ#Ó:€AØ€Hr   c                óÐ   — t        j                  | |«      }t        |j                  «      dk(  r|S t        j                  ||j                  dd d|j                  d   z  gz   «      S )a7  
    Interleaves the values of two tensors along their last dimension. The two tensors must have the same shape.
    Equivalent to `tl.join(a, b).reshape(a.shape[:-1] + [2 * a.shape[-1]])`

    :param a: The first input tensor.
    :type a: Tensor
    :param b: The second input tensor.
    :type b: Tensor
    r   Néþÿÿÿr   )r   ÚjoinrÃ   r;   r(   )r\   r]   Úcs      r   Ú
interleaverÓ   Á  sY   € ô 	�	‰	�!�Q‹€Aä
ˆ1�7‰7ƒ|�qÒàˆô
 �|‰|˜A˜qŸw™w s¨˜|¨q°1·7±7¸2±;©Ð.?Ñ?Ó@Ð@r   )r   úcore.constexpr)F)NFTF)TF)r“   rÔ   r<   rÔ   )NFN)r<   rÔ   rB   )r   F)r   rÔ   r²   rÔ   )r¿   rÔ   rÀ   rÔ   r²   rÔ   )rÄ   rÔ   rÅ   rÔ   rY   )/Ú
__future__r   Úruntime.jitr   Ú r   r   r   r   Ú_tensor_member_fnr   Ú_add_math_1arg_docstrr   r   r*   r8   r=   r@   rN   rS   rV   r^   Ú_add_reduction_docstrr   ry   r~   r�   rƒ   r…   r‡   r‰   r‹   r•   r    r™   rž   Ú_add_scan_docstrrŸ   r¥   r¦   r¼   rÁ   ÚCONSTEXPR_0rÇ   rÉ   r±   rÓ   r   r   r   ú<module>rÝ      sg  ðÝ "å Ý Ý ó
 ó9ð ×ÑØñ	 ó ó ð	 ð ×ÑØØ€×Ñ˜IÓ&ñ"ó 'ó ó ð"ð ×ÑØØ€×Ñ˜IÓ&ò.ó 'ó ó ð.ð ×ÑØò?ó ó ð?ð ñ$ó ð$ðN ñ	&ó ð	&ð ñ+ó ð+ð ñó ðð ñAó ðAð ñBó ðBð ñó ðð ×ÑØØ€×Ñ˜IÐ:JØ*IôKòOóKó ó ðOð" ×ÑØØ€×Ñ˜OÐ;KÔLòó Mó ó ðð ñ ó ð ð ñAó ðAð ñBó ðBð ñó ðð ×ÑØØ€×Ñ˜IÐ:JØ*IôKòOóKó ó ðOð" ×ÑØØ€×Ñ˜OÐ;KÔLòó Mó ó ðð
 ñó ðóð ×ÑØØ€×Ñ˜E¨WÔ5óGó 6ó ó ðGð ñó ðð ×ÑØØ€×Ñ˜IÓ&òGó 'ó ó ðGð ×ÑØØ€×Ñ�xÓ òEó !ó ó ðEð ñó ðð ×ÑØØ€×Ñ�yÓ!òFó "ó ó ðFð ò)ó ð)ð& òó ðð0 ×ÑØØ"&ÀT×EUÑEUó ó ó ðò0ð ×ÑØòó ó ðð< ñAó ñAr   