Ë
    Ûéñi1þ  ã                  óŒ  — d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
 d dlZd dlZd dlZd dlmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ dd	lmZ d d
lmZ ddlmZ  ddlm!Z"  e
d«      Z#e G d„ d«      «       Z$ G d„ d«      Z% G d„ d«      Z& ed¬«       G d„ d«      «       Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z- ej\                  e,ej^                  g¬«      Z0 ej\                  e,ejb                  g¬«      Z2 ej\                  e-ejf                  g¬«      Z4 G d „ d!«      Z5 G d"„ d#«      Z6 e7«       Z8 G d$„ d%«      Z9d>d&„Z:d>d'„Z;d>d(„Z< G d)„ d*«      Z= G d+„ d,e=«      Z> G d-„ d.e=«      Z?d>d/„Z@d>d0„ZAd1„ ZBd2„ ZCd3„ ZD e6«       ZE eeE«      ZFd4„ ZGd5„ ZH G d6„ d7«      ZI G d8„ d9ej”                  «      ZK G d:„ d;«      ZL G d<„ d=ee#   «      ZMy)?é    )ÚannotationsN)ÚTupleÚListÚDictÚCallableÚTypeVar)Ú	dataclass)ÚTritonSemantic)ÚKernelInterface)ÚTensorDescriptoré   )ÚInterpreterError)Úpartialé   )Úinterpreter)ÚirÚTc                  ót   — e Zd ZU dZded<   ded<    ej                  e¬«      Zded<   d	„ Z	d
„ Z
d„ Zd„ Zd„ Zy)ÚTensorHandlezô
        data: numpy array
        dtype: triton type, either pointer_type or scalar_type.
        we don't store block_type here because the shape information is already available in the data field
        attr: a dictionary of attributes
    znp.arrayÚdataztl.dtypeÚdtype)Údefault_factoryr   Úattrc                óÖ   — t        | j                  | j                  «      sIt        d| j                  j                  dz  › d| j                  j
                  › d| j                  › �«      ‚y )Nznumpy data itemsize (é   z) bits) exceeds dtype primitive_bitwidth (z bits) for triton type )Ú_validate_np_data_sizer   r   Ú
ValueErrorÚitemsizeÚprimitive_bitwidth©Úselfs    ú\/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/triton/runtime/interpreter.pyÚ__post_init__zTensorHandle.__post_init__&   sj   € Ü% d§i¡i°·±Ô<ÜÐ4°T·Y±Y×5GÑ5GÈ!Ñ5KÐ4Lð M!Ø!%§¡×!>Ñ!>Ð ?Ð?VÐW[×WaÑWaÐVbðdó eð eð =ó    c                óH   — t        | j                  j                  «       «      S ©N)Úboolr   Úallr    s    r"   Ú__bool__zTensorHandle.__bool__+   s   € Ü�D—I‘I—M‘M“OÓ$Ð$r$   c                óh   — | j                   }t        |d«      r|j                  }t        |d«      rŒ|S )NÚ
element_ty)r   Úhasattrr+   )r!   r   s     r"   Úget_element_tyzTensorHandle.get_element_ty.   s1   € Ø—
‘
ˆÜ�e˜\Ô*Ø×$Ñ$ˆEô �e˜\Õ*àˆr$   c                ó^   — t        | j                  j                  «       | j                  «      S r&   )r   r   Úcopyr   r    s    r"   ÚclonezTensorHandle.clone4   s   € Ü˜DŸI™IŸN™NÓ,¨d¯j©jÓ9Ð9r$   c                ó"   — || j                   |<   y r&   )r   )r!   ÚkeyÚvalues      r"   Úset_attrzTensorHandle.set_attr7   s   € Øˆ�	‰	�#Šr$   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__ÚdataclassesÚfieldÚdictr   r#   r)   r-   r0   r4   © r$   r"   r   r      sD   … ñð ƒNØƒOØ"�×"Ñ"°4Ô8€Dˆ$Ó8òeò
%òò:ór$   r   c                  ó   — e Zd Zd„ Zd„ Zy)ÚBlockPointerHandlec                óX   — || _         || _        || _        || _        || _        || _        y r&   )ÚbaseÚshapeÚstridesÚoffsetsÚblock_shapeÚorder)r!   rA   rB   rC   rD   rE   rF   s          r"   Ú__init__zBlockPointerHandle.__init__=   s-   € ØˆŒ	ØˆŒ
ØˆŒØˆŒØ&ˆÔØˆ�
r$   c                óf  — | j                   j                  «       }|j                  dz  }t        j                  | j                   j
                  | j                  «      }t        j                  | j                  t        ¬«      }t        t        | j                  «      «      D ]á  }dgt        | j                  «      z  }| j                  |   ||<   | j                  |   j
                  t        j                  | j                  |   «      z   j                  |«      }|||z  | j                  |   j
                  z  j                  t        j                   «      z   }||v sŒ½||| j"                  |   j
                  k  z  |dk\  z  }Œã t%        || j                   j&                  j(                  «      }||fS )Nr   ©r   r   r   )rA   r-   r   ÚnpÚbroadcast_tor   rE   Úonesr'   ÚrangeÚlenrD   ÚarangeÚreshaperC   ÚastypeÚuint64rB   r   r   Úscalar)	r!   Úboundary_checkÚdtype_ttÚn_bytesÚptrsÚmasksÚdimÚ
bcast_dimsÚoffs	            r"   Úmaterialize_pointersz'BlockPointerHandle.materialize_pointersE   sb  € Ø—9‘9×+Ñ+Ó-ˆØ×-Ñ-°Ñ2ˆÜ�‰˜tŸy™yŸ~™~¨t×/?Ñ/?Ó@ˆÜ—‘˜×(Ñ(´Ô5ˆÜœ˜T×-Ñ-Ó.Ó/ò 	JˆCØ˜œs 4×#3Ñ#3Ó4Ñ4ˆJØ"×.Ñ.¨sÑ3ˆJ�s‰OØ—<‘< Ñ$×)Ñ)¬B¯I©I°d×6FÑ6FÀsÑ6KÓ,LÑL×UÑUÐV`ÓaˆCØ˜7 S™=¨4¯<©<¸Ñ+<×+AÑ+AÑA×IÑIÌ"Ï)É)ÓTÑTˆDØ�nÒ$Ø  t§z¡z°#¡×';Ñ';Ñ!;Ñ<ÀÀqÁÑI‘ð	Jô ˜D $§)¡)§/¡/×"8Ñ"8Ó9ˆØ�Uˆ{Ðr$   N)r5   r6   r7   rG   r\   r=   r$   r"   r?   r?   ;   s   „ òór$   r?   c                  ó&   — e Zd Z	 	 dd„Zd„ Zdd„Zy)ÚTensorDescHandlec                ój   — || _         t        |«      | _        || _        || _        || _        || _        y r&   )rA   rN   ÚndimrB   rC   rE   Úpadding)r!   rA   rB   rC   rE   ra   s         r"   rG   zTensorDescHandle.__init__W   s1   € àˆŒ	Ü˜“JˆŒ	ØˆŒ
ØˆŒØ&ˆÔØˆ�r$   c                ób  — | j                   j                  j                  «       dz  dk(  sJ d«       ‚t        | j                  «      | j
                  k(  sJ ‚t        | j                  «      | j
                  k(  sJ ‚| j
                  dk\  sJ d«       ‚| j                   j                  j                  }|j                  dz  }| j                  d d D ].  }|j                  j                  «       |z  }|dz  dk(  rŒ)J d«       ‚ | j                  d   j                  j                  «       dk(  sJ d	«       ‚y )
Né   r   zbase must be 16-byte alignedr   z"descriptor cannot be 0 dimensionalr   éÿÿÿÿzstride must be 16-byte alignedzlast dim must be contiguous)
rA   r   ÚitemrN   rC   r`   rE   r   r+   r   )r!   Ú	scalar_tyr   ÚstrideÚbyte_strides        r"   ÚvalidatezTensorDescHandle.validate`   s  € Ø�y‰y�~‰~×"Ñ"Ó$ rÑ)¨QÒ.ÐNÐ0NÓNÐ.Ü�4—<‘<Ó  D§I¡IÒ-Ð-Ð-Ü�4×#Ñ#Ó$¨¯	©	Ò1Ð1Ð1Ø�y‰y˜AŠ~ÐCÐCÓCˆ~à—I‘I—O‘O×.Ñ.ˆ	Ø×/Ñ/°1Ñ4ˆØ—l‘l 3 BÐ'ò 	KˆFØ Ÿ+™+×*Ñ*Ó,¨xÑ7ˆKØ Ñ# qÓ(ÐJÐ*JÓJÐ(ð	Kð �|‰|˜BÑ×$Ñ$×)Ñ)Ó+¨qÒ0ÐOÐ2OÓOÑ0r$   c                ó  — t        |«      | j                  k(  sJ ‚| j                  j                  j                  }|j
                  dz  }|d   j                  |z  dz  dk(  sJ d«       ‚t        j                  | j                  j                  | j                  «      }t        j                  | j                  t        ¬«      }t        t        | j                  «      «      D ]Ò  }dgt        | j                  «      z  }| j                  |   ||<   ||   j                  t        j                  | j                  |   «      z   j                  |«      }|||z  | j                  |   j                  z  j!                  t        j"                  «      z   }|d|k  z  || j$                  |   j                  k  z  }ŒÔ |j                  t        j"                  k(  sJ ‚t'        || j                  j                  j(                  «      }||fS )Nr   rd   rc   r   z*block offset start must be 16-byte alignedrI   r   )rN   r`   rA   r   r+   r   r   rJ   rK   rE   rL   r'   rM   rO   rP   rC   rQ   rR   rB   r   rS   )	r!   rD   rf   r   rW   rX   rY   rZ   r[   s	            r"   r\   z%TensorDescHandle.materialize_pointersm   sª  € Ü�7‹|˜tŸy™yÒ(Ð(Ð(Ø—I‘I—O‘O×.Ñ.ˆ	Ø×/Ñ/°1Ñ4ˆØ˜‘× Ñ  8Ñ+¨rÑ1°QÒ6ÐdÐ8dÓdÐ6ä�‰˜tŸy™yŸ~™~¨t×/?Ñ/?Ó@ˆÜ—‘˜×(Ñ(´Ô5ˆÜœ˜T×-Ñ-Ó.Ó/ò 	FˆCØ˜œs 4×#3Ñ#3Ó4Ñ4ˆJØ"×.Ñ.¨sÑ3ˆJ�s‰OØ˜3‘<×$Ñ$¤r§y¡y°×1AÑ1AÀ#Ñ1FÓ'GÑG×PÑPÐQ[Ó\ˆCØ˜8 c™>¨D¯L©L¸Ñ,=×,BÑ,BÑB×JÑJÌ2Ï9É9ÓUÑUˆDØ˜Q #™XÑ&¨#°·
±
¸3±×0DÑ0DÑ*DÑE‰Eð	Fð �z‰zœRŸY™YÒ&Ð&Ð&Ü˜D $§)¡)§/¡/×"8Ñ"8Ó9ˆØ�Uˆ{Ðr$   N)rA   r   rB   úList[TensorHandle]rC   rk   rE   ú	List[int])rD   rk   )r5   r6   r7   rG   ri   r\   r=   r$   r"   r^   r^   U   s   „ ðØ'óòPôr$   r^   T)Úfrozenc                  óš   — e Zd ZU dZded<   dZded<   dZded<   dZd	ed
<   dZded<   dZ	ded<   dZ
d	ed<   dZded<   dZded<   dZd	ed<   y)ÚInterpreterOptionsNr<   Úextern_libsFr'   ÚdebugTÚsanitize_overflowÚstrÚarch)Úfp8e5Úfp8e5b16Úfp8e4nvÚfp8e4b8Úfp8e4b15z
Tuple[str]Úsupported_fp8_dtypesr=   Ú!deprecated_fp8_dot_operand_dtypesÚtf32Údefault_dot_input_precision)r|   Útf32x3ÚieeeÚallowed_dot_input_precisionsr   ÚintÚmax_num_imprecise_acc_defaultr   Úbackend_name)r5   r6   r7   rp   r9   rq   rr   rt   rz   r{   r}   r€   r‚   rƒ   r=   r$   r"   ro   ro   €   sl   … à€K�ÓØ€Eˆ4ÓØ"Ð�tÓ"Ø€Dˆ#ÓØ'^Ð˜*Ó^Ø46Ð% zÓ6Ø'-Ð Ó-Ø/IÐ  *ÓIØ)*Ð! 3Ó*Ø%€L�#Ô%r$   ro   c                óŠ   — t        |t        j                  «      ry| j                  dz  }|j                  }|dk  rd}||kD  ryy)NTr   F)Ú
isinstanceÚtlÚpointer_typer   r   )Únp_arrayÚtl_dtypeÚnp_dtype_bitwidthÚtl_dtype_bitwidths       r"   r   r   Ž   sO   € Ü�(œBŸO™OÔ,Øà ×)Ñ)¨AÑ-ÐØ ×3Ñ3Ðð ˜1ÒØÐàÐ,Ò,ØØr$   c                ó  — | t         j                  k(  rt         j                  S | t         j                  k(  rt         j                  S | t         j
                  k(  rt         j                  S | t         j                  k(  rt         j                  S | S r&   )	rJ   Úuint8Úint8Úuint16Úint16Úuint32Úint32rR   Úint64rI   s    r"   Ú_get_signed_np_dtyper”   ž   s[   € Ø”—‘ÒÜ�w‰wˆØ”—	‘	ÒÜ�x‰xˆØ”—	‘	ÒÜ�x‰xˆØ”—	‘	ÒÜ�x‰xˆØ€Lr$   c                ó`  — t        | t        j                  «      r#t        j                  t        j
                  «      S i t        j                  t        j                  t        «      “t        j                  t        j                  t        j                  «      “t        j                  t        j                  t        j                  «      “t        j                  t        j                  t        j                  «      “t        j                  t        j                  t        j                  «      “t        j                  t        j                  t        j                  «      “t        j                  t        j                  t        j                  «      “t        j                  t        j                  t        j                  «      “t        j                  t        j                  t        j                  «      “t        j                   t        j                  t        j                   «      “t        j"                  t        j                  t        j"                  «      “t        j
                  t        j                  t        j
                  «      “t        j$                  t        j                  t        j                  «      “t        j&                  t        j                  t        j                  «      “t        j(                  t        j                  t        j                  «      “t        j*                  t        j                  t        j                  «      “t        j,                  t        j                  t        j                  «      “t        j.                  t        j                  t        j                  «      i¥}t        | t        j0                  «      rVt        | j2                  t        j                  «      r#t        j                  t        j
                  «      S || j2                     S ||    S r&   )r…   r†   r‡   rJ   r   rR   Úint1r'   Úfloat16Úfloat32Úfloat64rŽ   r�   r�   r�   r’   r‘   r“   Úbfloat16Úfloat8e5Úfloat8e5b16Ú
float8e4nvÚ
float8e4b8Úfloat8e4b15Ú
block_typer+   )Útt_dtypeÚnp_typess     r"   Ú_get_np_dtyper£   ª   s~  € Ü�(œBŸO™OÔ,Ü�x‰xœŸ	™	Ó"Ð"ðÜ
�‰”—‘œ$“ðä
�
‰
”B—H‘HœRŸZ™ZÓ(ðô 	�
‰
”B—H‘HœRŸZ™ZÓ(ðô 	�
‰
”B—H‘HœRŸZ™ZÓ(ð	ô
 	�‰”—‘œ"Ÿ'™'Ó"ðô 	�‰”"—(‘(œ2Ÿ8™8Ó$ðô 	�‰”"—(‘(œ2Ÿ8™8Ó$ðô 	�	‰	”2—8‘8œBŸI™IÓ&ðô 	�‰”"—(‘(œ2Ÿ8™8Ó$ðô 	�	‰	”2—8‘8œBŸI™IÓ&ðô 	�‰”"—(‘(œ2Ÿ8™8Ó$ðô 	�	‰	”2—8‘8œBŸI™IÓ&ðô 	�‰”R—X‘XœbŸi™iÓ(ðô  	�‰”R—X‘XœbŸh™hÓ'ð!ô" 	�‰œŸ™¤§¡Ó*ð#ô$ 	�‰”r—x‘x¤§¡Ó)ð%ô& 	�‰”r—x‘x¤§¡Ó)ð'ô( 	�‰œŸ™¤§¡Ó*ñ)€Hô, �(œBŸM™MÔ*Ü�h×)Ñ)¬2¯?©?Ô;Ü—8‘8œBŸI™IÓ&Ð&Ø˜×+Ñ+Ñ,Ð,Ø�HÑÐr$   c                óÖ  — t        t        d|j                  › �«      }t        t        d|j                  › �«      }t        j                  | j	                  «       |¬«      }||j                  dz
  z	  dz  }|j                  |j
                  z
  dz
  }|j                  |j
                  z
  dz
  }	|d|j
                  z  dz
  z  }
|j                  }|j                  }||j
                  z	  d|z  dz
  z  j                  t        j                  «      }|dk(  }t        j                  |«      r˜t        j                  |t        j                  ¬«      }t        |j
                  «      D ]  }|
|z	  dz  }|j
                  |z
  ||dk(  <   Œ! |
dk(  }d||   z
  ||<   ||z
  |||z  <   |
|   ||   z  d|j
                  z  dz
  z  |
|<   t        j                  dt        j                  ||z
  |z   d|	z  dz
  «      «      }|j                  |«      }|j                  |«      }|j                  |j                  kD  rˆ|
|j
                  |j
                  z
  z	  d|j
                  z  dz
  z  }|t        j                  j                   k(  r*|
d|j
                  |j
                  z
  dz
  z  z  }||dkD  z   }|j                  |«      }n>|
j                  |«      |j
                  |j
                  z
  z  d|j
                  z  dz
  z  }|dk(  }t        j                  |«      r™||j
                  z	  d|z  dz
  z  j                  t        j                  «      }|dk7  }||z  }t        j                  |t        j                  ¬«      }d|z
  ||   |z
  z
  ||<   ||   ||   z	  d|j
                  ||   z
  z  z  ||<   ||j                  dz
  z  ||j
                  z  z  |z  }|j#                  | j$                  «      S )NÚuintrI   r   r   )ÚgetattrrJ   r   Ú
frombufferÚtobytesÚfp_mantissa_widthÚexponent_biasrQ   r’   ÚanyÚ
zeros_likerM   ÚmaximumÚminimumÚ_irÚROUNDING_MODEÚRTNErP   rB   )ÚinputÚinput_dtypeÚoutput_dtypeÚrounding_modeÚinput_uint_dtypeÚoutput_unint_dtypeÚ	input_binÚsignÚinput_exponent_widthÚoutput_exponent_widthÚsignificandÚ
bias_inputÚbias_outputÚexponentÚsubnormal_indexÚbit_posÚiÚ	bit_indexÚzero_significand_indexÚexponent_outputÚsign_outputÚsignificand_outputÚcut_offÚnon_zero_exponent_indexÚshiftÚoutputs                             r"   Ú_convert_floatrÌ   Ê   s+  € Üœr T¨+×*HÑ*HÐ)IÐ#JÓKÐÜ ¤ t¨L×,KÑ,KÐ+LÐ%MÓNÐÜ—‘˜eŸm™m›oÐ5EÔF€IØ˜+×8Ñ8¸1Ñ<Ñ=ÀÑE€DØ&×9Ñ9¸K×<YÑ<YÑYÐ\]Ñ]ÐØ(×;Ñ;¸l×>\Ñ>\Ñ\Ð_`Ñ`ÐØ  [×%BÑ%BÑ BÀaÑGÑH€KØ×*Ñ*€JØ×,Ñ,€KØ˜k×;Ñ;Ñ;ÀÐFZÑAZÐ^_Ñ@_Ñ`×hÑhÔik×iqÑiqÓr€HØ !‘m€OÜ	‡v�vˆoÔô
 —-‘- 	´·±Ô:ˆä�{×4Ñ4Ó5ò 	HˆAØ%¨Ñ*¨dÑ2ˆIà&1×&CÑ&CÀaÑ&GˆG�I ‘NÒ#ð	Hð "-°Ñ!1ÐØ$%¨°Ñ(@Ñ$@ˆ�Ñ!à=GÈ+Ñ=UˆÐ'¨/Ñ9Ñ:Ø(3°OÑ(DÈÐP_ÑH`Ñ(`Ø�+×/Ñ/Ñ/°1Ñ4ñ(6ˆ�OÑ$ô —j‘j ¤B§J¡J°¸:Ñ0EÈÑ0SÐWXÐ\qÑWqÐuvÑVvÓ$wÓx€OØ%×,Ñ,Ð-?Ó@€OØ—+‘+Ð0Ó1€KØ×%Ñ%¨×(GÑ(GÒGØ)¨k×.KÑ.KÈl×NlÑNlÑ.lÑmØ�,×0Ñ0Ñ0°AÑ5ñ7ÐàœC×-Ñ-×2Ñ2Ò2à! Q¨;×+HÑ+HÈ<×KiÑKiÑ+iÐlmÑ+mÑ%nÑoˆGØ!3°wÀ±{Ñ!CÐØ/×6Ñ6Ð7IÓJÑà)×0Ñ0Ð1CÓDØ+×=Ñ=À×@]Ñ@]Ñ]ñ_à#$¨×(FÑ(FÑ#FÈ!Ñ"KñMÐð &¨Ñ*€OÜ	‡v�vˆoÔð
  +×"?Ñ"?Ñ?ÀQÐJ^ÑE^ÐbcÑDcÑd×lÑlÔmo×muÑmuÓvˆØ"*¨a¡-Ðà)Ð,CÑCˆÜ—‘˜i¬r¯x©xÔ8ˆØ"# k¡/°h¸Ñ6OÐR\Ñ6\Ñ!]ˆˆoÑØ/AÀ/Ñ/RÐV[Ð\kÑVlÑ/lØ�,×0Ñ0°5¸Ñ3IÑIÑJñ/LÐ˜?Ñ+à˜l×=Ñ=ÀÑAÑBØ˜<×9Ñ9Ñ9ñ;Ø=OñP€Fà�>‰>˜%Ÿ+™+Ó&Ð&r$   c                ó,   — t        j                  | «      S r&   )ÚmathÚerf©Úxs    r"   Ú_erfrÒ   
  s   € ä�8‰8�A‹;Ðr$   c                ó6   — t        | «      t        |«      z  dz	  S )Né@   )r�   )ÚaÚbs     r"   Ú
_umulhi_64r×     s   € ô �‹F”S˜“V‰O Ñ"Ð"r$   )Úotypesc                  ó   — e Zd Zed„ «       Zy)ÚExtraFunctionsc                óx   — t        j                  |j                  j                  | j                  ||«      |«      S r&   )r†   ÚtensorÚbuilderÚcreate_fp_to_fpÚhandle)r²   Údst_tyÚfp_downcast_roundingÚ	_semantics       r"   Ú_convert_custom_typesz$ExtraFunctions._convert_custom_types  s.   € ä�y‰y˜×*Ñ*×:Ñ:¸5¿<¹<ÈÐQeÓfÐhnÓoÐor$   N)r5   r6   r7   Ústaticmethodrã   r=   r$   r"   rÚ   rÚ     s   „ àñpó ñpr$   rÚ   c                  ót  — e Zd Zej                  j
                  ej                  j
                  ej                  j                  ej                  j                  ej                  j                  ej                  j                  ej                  j                  ej                  j                  iZ
ej                  j                  ej                  j                  ej                  j                  ej                  j                  ej                  j                  ej                  j                  ej                  j                   ej                  j                   ej                  j"                  ej                  j"                  ej                  j$                  ej                  j$                  ej                  j&                  ej                  j&                  ej                  j(                  ej                  j(                  ej                  j*                  ej                  j*                  ej                  j,                  ej                  j,                  i
Zd�d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ Z d
„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d „ Z7d!„ Z8d"„ Z9d#„ Z:d$„ Z;d%„ Z<d&„ Z=d'„ Z>d(„ Z?d)„ Z@d*„ ZAd+„ ZBd,„ ZCd-„ ZDd.„ ZEd/„ ZFd0„ ZGd1„ ZHd2„ ZId3„ ZJd4„ ZKd5„ ZLd6„ ZMd7„ ZNd8„ ZOd9„ ZPd:„ ZQd;„ ZRd<„ ZSd=„ ZTd>„ ZUd?„ ZVd@„ ZWdA„ ZXdB„ ZYdC„ ZZdD„ Z[dE„ Z\dF„ Z]dG„ Z^dH„ Z_dI„ Z`dJ„ ZadK„ ZbdL„ ZcdM„ ZddN„ ZedO„ ZfdP„ ZgdQ„ ZhdR„ ZidS„ ZjdT„ ZkdU„ ZldV„ ZmdW„ ZndX„ ZodY„ ZpdZ„ Zqd[„ Zrd\„ Zsd]„ Ztd^„ Zud_„ Zvd`„ Zwda„ Zxdb„ Zydc„ Zzdd„ Z{de„ Z|eKZ}eKZ~df„ Zdg„ Z€dh„ Z�di„ Z‚dj„ Zƒdk„ Z„dl„ Z…dm„ Z†dn„ Z‡do„ Zˆdp„ Z‰dq„ ZŠdr„ Z‹ds„ ZŒdt„ Z�du„ ZŽdv„ Z�dw„ Z�dx„ Z‘dy„ Z’dz„ Z“d{„ Z”d|„ Z•d}„ Z–d~„ Z—d„ Z˜d€„ Z™d�„ Zšd‚„ Z›dƒ„ Zœd„„ Z�d…„ Zžd†„ ZŸd‡„ Z dˆ„ Z¡d‰„ Z¢dŠ„ Z£d‹„ Z¤dŒ„ Z¥d�„ Z¦dŽ„ Z§d�„ Z¨d�„ Z©d‘„ Zªd’„ Z«d“„ Z¬d”„ Z­d•„ Z®	 dž	 	 	 	 	 dŸd–„Z¯d d—„Z°d¡d˜„Z±d¢d™„Z²	 	 d£dš„Z³d›„ Z´yœ)¤ÚInterpreterBuilderc                ó˜   — d | _         t        «       | _        i | _        t        j
                  | j                  d<   d„ | j                  d<   y )NÚconvert_custom_typesc                 ó   — y)N)r   r   r   r=   )ÚlhsTypeÚrhsTypes     r"   ú<lambda>z-InterpreterBuilder.__init__.<locals>.<lambda>;  s   � r$   Úmin_dot_size)rt   ro   ÚoptionsÚcodegen_fnsrÚ   rã   r    s    r"   rG   zInterpreterBuilder.__init__6  sB   € ØˆŒ	Ü)Ó+ˆŒØˆÔÜ3A×3WÑ3Wˆ×ÑÐ/Ñ0Ù+Mˆ×Ñ˜Ò(r$   c                óÆ   — || j                   d   k  st        d«      ‚|| j                   d   k  st        d«      ‚|| j                   d   k  st        d«      ‚|||f| _        y )Nr   zx >= grid_dim[0]r   zy >= grid_dim[1]r   zz >= grid_dim[2])Úgrid_dimr   Úgrid_idx©r!   rÑ   ÚyÚzs       r"   Úset_grid_idxzInterpreterBuilder.set_grid_idx=  sf   € Ø�4—=‘= Ñ#Ò#ÜÐ/Ó0Ð0Ø�4—=‘= Ñ#Ò#ÜÐ/Ó0Ð0Ø�4—=‘= Ñ#Ò#ÜÐ/Ó0Ð0Ø˜A˜q˜	ˆ�r$   c                ó   — |||f| _         y r&   )rñ   )r!   ÚnxÚnyÚnzs       r"   Úset_grid_dimzInterpreterBuilder.set_grid_dimF  s   € Ø˜R ˜ˆ�r$   c                ó"   — t         j                  S r&   )r†   r—   r    s    r"   Úget_half_tyzInterpreterBuilder.get_half_tyK  ó   € Ü�z‰zÐr$   c                ó"   — t         j                  S r&   )r†   rš   r    s    r"   Úget_bf16_tyzInterpreterBuilder.get_bf16_tyN  ó   € Ü�{‰{Ðr$   c                ó"   — t         j                  S r&   )r†   r˜   r    s    r"   Úget_float_tyzInterpreterBuilder.get_float_tyQ  rþ   r$   c                ó"   — t         j                  S r&   )r†   r™   r    s    r"   Úget_double_tyz InterpreterBuilder.get_double_tyT  rþ   r$   c                ó"   — t         j                  S r&   )r†   r–   r    s    r"   Úget_int1_tyzInterpreterBuilder.get_int1_tyW  ó   € Ü�w‰wˆr$   c                ó"   — t         j                  S r&   )r†   rŽ   r    s    r"   Úget_int8_tyzInterpreterBuilder.get_int8_tyZ  r  r$   c                ó"   — t         j                  S r&   )r†   r�   r    s    r"   Úget_uint8_tyzInterpreterBuilder.get_uint8_ty]  ó   € Ü�x‰xˆr$   c                ó"   — t         j                  S r&   )r†   r�   r    s    r"   Úget_int16_tyzInterpreterBuilder.get_int16_ty`  r  r$   c                ó"   — t         j                  S r&   )r†   r�   r    s    r"   Úget_uint16_tyz InterpreterBuilder.get_uint16_tyc  ó   € Ü�y‰yÐr$   c                ó"   — t         j                  S r&   )r†   r’   r    s    r"   Úget_int32_tyzInterpreterBuilder.get_int32_tyf  r  r$   c                ó"   — t         j                  S r&   )r†   r‘   r    s    r"   Úget_uint32_tyz InterpreterBuilder.get_uint32_tyi  r  r$   c                ó"   — t         j                  S r&   )r†   r“   r    s    r"   Úget_int64_tyzInterpreterBuilder.get_int64_tyl  r  r$   c                ó"   — t         j                  S r&   )r†   rR   r    s    r"   Úget_uint64_tyz InterpreterBuilder.get_uint64_tyo  r  r$   c                ó"   — t         j                  S r&   )r†   r�   r    s    r"   Úget_fp8e4nv_tyz!InterpreterBuilder.get_fp8e4nv_tyr  ó   € Ü�}‰}Ðr$   c                ó"   — t         j                  S r&   )r†   rŸ   r    s    r"   Úget_fp8e4b15_tyz"InterpreterBuilder.get_fp8e4b15_tyu  ó   € Ü�~‰~Ðr$   c                ó"   — t         j                  S r&   )r†   rž   r    s    r"   Úget_fp8e4b8_tyz!InterpreterBuilder.get_fp8e4b8_tyx  r  r$   c                ó"   — t         j                  S r&   )r†   r›   r    s    r"   Úget_fp8e5_tyzInterpreterBuilder.get_fp8e5_ty{  r  r$   c                ó"   — t         j                  S r&   )r†   rœ   r    s    r"   Úget_fp8e5b16_tyz"InterpreterBuilder.get_fp8e5b16_ty~  r   r$   c                ó.   — t        j                  ||«      S r&   )r†   r‡   )r!   Úelt_tyÚ
addr_spaces      r"   Ú
get_ptr_tyzInterpreterBuilder.get_ptr_ty�  s   € Ü�‰˜v zÓ2Ð2r$   c                ó.   — t        j                  ||«      S r&   )r†   r    )r!   r   rB   s      r"   Úget_block_tyzInterpreterBuilder.get_block_ty„  s   € Ü�}‰}˜U EÓ*Ð*r$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j
                  «      S ©NrI   )r   rJ   ÚarrayÚbool_r†   r–   ©r!   r3   s     r"   Úget_int1zInterpreterBuilder.get_int1‡  s$   € ÜœBŸH™H e W´B·H±HÔ=¼r¿w¹wÓGÐGr$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  r�   r†   r1  s     r"   Ú	get_uint8zInterpreterBuilder.get_uint8Š  ó$   € ÜœBŸH™H e W´B·H±HÔ=¼r¿x¹xÓHÐHr$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  rŽ   r†   r1  s     r"   Úget_int8zInterpreterBuilder.get_int8�  s$   € ÜœBŸH™H e W´B·G±GÔ<¼b¿g¹gÓFÐFr$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  r�   r†   r1  s     r"   Ú
get_uint16zInterpreterBuilder.get_uint16�  ó$   € ÜœBŸH™H e W´B·I±IÔ>ÄÇ	Á	ÓJÐJr$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  r�   r†   r1  s     r"   Ú	get_int16zInterpreterBuilder.get_int16“  r5  r$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  r‘   r†   r1  s     r"   Ú
get_uint32zInterpreterBuilder.get_uint32–  r:  r$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  r’   r†   r1  s     r"   Ú	get_int32zInterpreterBuilder.get_int32™  r5  r$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  rR   r†   r1  s     r"   Ú
get_uint64zInterpreterBuilder.get_uint64œ  r:  r$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  r“   r†   r1  s     r"   Ú	get_int64zInterpreterBuilder.get_int64Ÿ  r5  r$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  r—   r†   r1  s     r"   Úget_fp16zInterpreterBuilder.get_fp16¢  ó$   € ÜœBŸH™H e W´B·J±JÔ?ÄÇÁÓLÐLr$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  r˜   r†   r1  s     r"   Úget_fp32zInterpreterBuilder.get_fp32¥  rG  r$   c                ó~   — t        t        j                  |gt        j                  ¬«      t        j                  «      S r.  )r   rJ   r/  r™   r†   r1  s     r"   Úget_fp64zInterpreterBuilder.get_fp64¨  rG  r$   c                óX   — t        t        j                  dgt        |«      ¬«      |«      S ©Nr   rI   )r   rJ   r/  r£   )r!   Útypes     r"   Úget_null_valuez!InterpreterBuilder.get_null_value«  s!   € ÜœBŸH™H a S´¸dÓ0CÔDÀdÓKÐKr$   c                óÆ   — | j                   €t        d«      ‚t        t        j                  | j                   |   gt        j
                  ¬«      t        j
                  «      S )Nzgrid_idx is NonerI   )rò   r   r   rJ   r/  r’   r†   ©r!   Úaxiss     r"   Úcreate_get_program_idz(InterpreterBuilder.create_get_program_id¯  sD   € Ø�=‰=Ð ÜÐ/Ó0Ð0ÜœBŸH™H d§m¡m°DÑ&9Ð%:Ä"Ç(Á(ÔKÌRÏXÉXÓVÐVr$   c                ó˜   — t        t        j                  | j                  |   gt        j                  ¬«      t
        j                  «      S r.  )r   rJ   r/  rñ   r’   r†   rQ  s     r"   Úcreate_get_num_programsz*InterpreterBuilder.create_get_num_programs´  s.   € ÜœBŸH™H d§m¡m°DÑ&9Ð%:Ä"Ç(Á(ÔKÌRÏXÉXÓVÐVr$   c                ó¬   — t        t        j                  |j                  t        ¬«      t
        j                  «      }d }| j                  ||||||«      S r.  )r   rJ   Ú	ones_liker   r'   r†   r–   Úcreate_masked_load)r!   ÚptrÚ_0Ú_1Úis_volatileÚmaskÚothers          r"   Úcreate_loadzInterpreterBuilder.create_load¸  sA   € ÜœBŸL™L¨¯©¼Ô>ÄÇÁÓHˆØˆØ×&Ñ& s¨D°%¸¸RÀÓMÐMr$   c                ó¦   — t        t        j                  |j                  t        ¬«      t
        j                  «      }| j                  |||d d «      S r.  )r   rJ   rW  r   r'   r†   r–   Úcreate_masked_store)r!   rY  ÚvalrZ  r[  r]  s         r"   Úcreate_storezInterpreterBuilder.create_store½  s:   € ÜœBŸL™L¨¯©¼Ô>ÄÇÁÓHˆØ×'Ñ'¨¨S°$¸¸dÓCÐCr$   c                ó  — |j                  «       }t        |«      }|€+t        t        j                  |j
                  |¬«      |«      }t        j                  |j
                  |j
                  |j
                  |«      }	t        |	|«      S r.  )r-   r£   r   rJ   r¬   r   Ú_interpreterÚload)
r!   rW   r]  r^  Úcache_modifierÚeviction_policyr\  rU   Údtype_npÚrets
             r"   rX  z%InterpreterBuilder.create_masked_loadÁ  si   € Ø×&Ñ&Ó(ˆÜ  Ó*ˆØˆ=Ü ¤§¡¨t¯y©yÀÔ!IÈ8ÓTˆEÜ×Ñ §	¡	¨4¯9©9°e·j±jÀ(ÓKˆÜ˜C Ó*Ð*r$   c                ól   — t        j                  |j                  |j                  |j                  «      S r&   )re  Ústorer   )r!   rW   r3   r]  rg  rh  s         r"   ra  z&InterpreterBuilder.create_masked_storeÉ  s#   € Ü×!Ñ! $§)¡)¨U¯Z©Z¸¿¹ÓCÐCr$   c                óÚ  — |j                   j                  }|j                  }|t        j                  k(  r|t        j                  k(  s&|t        j                  k(  rY|t        j                  k(  rFt        |j                  ||d «      j                  t        |«      «      }t        ||j                  «      S t        |j                  j                  t        |«      «      |j                  «      S r&   )r   rS   r†   rš   r˜   rÌ   r   Úviewr£   r   rQ   )r!   ÚsrcÚdst_typeÚsrc_element_typeÚdst_element_typer   s         r"   Ú	cast_implzInterpreterBuilder.cast_implÍ  s©   € ØŸ9™9×+Ñ+ÐØ#Ÿ?™?ÐØ¤§¡Ò+Ð0@ÄBÇJÁJÒ0NØ¤§
¡
Ò*Ð/?Ä2Ç;Á;Ò/NÜ! #§(¡(Ð,<Ð>NÐPTÓU×ZÑZÔ[hÐiqÓ[rÓsˆDÜ  h§o¡oÓ6Ð6ä §¡§¡´¸hÓ0GÓ HÈ(Ï/É/ÓZÐZr$   c                ó&   — | j                  ||«      S r&   ©rs  ©r!   ro  rp  s      r"   rì   zInterpreterBuilder.<lambda>×  ó   € °$·.±.ÀÀhÓ2O€ r$   c                ó&   — | j                  ||«      S r&   ru  rv  s      r"   rì   zInterpreterBuilder.<lambda>Ø  rw  r$   c                ó&   — | j                  ||«      S r&   ru  rv  s      r"   rì   zInterpreterBuilder.<lambda>Ù  rw  r$   c                ó&   — | j                  ||«      S r&   ru  rv  s      r"   rì   zInterpreterBuilder.<lambda>Ú  rw  r$   c                ó&   — | j                  ||«      S r&   ru  rv  s      r"   rì   zInterpreterBuilder.<lambda>Û  s   € °·±¸sÀHÓ0M€ r$   c                ó&   — | j                  ||«      S r&   ru  rv  s      r"   rì   zInterpreterBuilder.<lambda>Ü  rw  r$   c                ó&   — | j                  ||«      S r&   ru  )r!   ro  rp  Ú	is_signeds       r"   rì   zInterpreterBuilder.<lambda>Ý  s   € ¸T¿^¹^ÈCÐQYÓ=Z€ r$   c                óÒ   — |j                   j                  }|j                  }t        |j                  |||«      j	                  t        |«      «      }t        ||j                  «      S r&   )r   rS   rÌ   r   rn  r£   r   )r!   ro  rp  rµ   rq  rr  r   s          r"   rÞ   z"InterpreterBuilder.create_fp_to_fpß  sU   € ØŸ9™9×+Ñ+ÐØ#Ÿ?™?ÐÜ˜cŸh™hÐ(8Ð:JÈMÓZ×_Ñ_Ô`mÐnvÓ`wÓxˆÜ˜D (§/¡/Ó2Ð2r$   c                ór   — t        |j                  j                  t        |«      «      |j                  «      S r&   )r   r   rn  r£   rS   rv  s      r"   Úcreate_bitcastz!InterpreterBuilder.create_bitcastå  s%   € Ü˜CŸH™HŸM™M¬-¸Ó*AÓBÀHÇOÁOÓTÐTr$   c                óÌ   —  ||j                   |j                   «      }|j                  j                  }t        ||«      s|j	                  t        |«      «      }t        ||«      S r&   ©r   r   rS   r   rQ   r£   r   )r!   ÚlhsÚrhsÚoprË   r‰   s         r"   Ú	binary_opzInterpreterBuilder.binary_opé  sO   € Ù�C—H‘H˜cŸh™hÓ'ˆØ—9‘9×#Ñ#ˆä% f¨hÔ7Ø—]‘]¤=°Ó#:Ó;ˆFä˜F HÓ-Ð-r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Úadd©r!   r„  r…  s      r"   rì   zInterpreterBuilder.<lambda>ò  s   € ¨¯©¸¸SÄ"Ç&Á&Ó)I€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Úmultiplyr‹  s      r"   rì   zInterpreterBuilder.<lambda>ó  ó   € ¨¯©¸¸SÄ"Ç+Á+Ó)N€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Údivider‹  s      r"   rì   zInterpreterBuilder.<lambda>ô  s   € ¨¯©¸¸SÄ"Ç)Á)Ó)L€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Úfmodr‹  s      r"   rì   zInterpreterBuilder.<lambda>õ  ó   € ¨¯©¸¸SÄ"Ç'Á'Ó)J€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Úsubtractr‹  s      r"   rì   zInterpreterBuilder.<lambda>ö  r�  r$   c                óD   — | j                  ||t        j                  «      S r&   r�  r‹  s      r"   rì   zInterpreterBuilder.<lambda>÷  ó   € ¨¯©°s¸CÄÇÁÓ(M€ r$   c                óD   — | j                  ||t        j                  «      S r&   r‘  r‹  s      r"   rì   zInterpreterBuilder.<lambda>ø  s   € °·±ÀÀSÌ"Ï)É)Ó1T€ r$   c                ó&   — | j                  ||«      S r&   ©Úcreate_idivr‹  s      r"   rì   zInterpreterBuilder.<lambda>ù  ó   € ¨×)9Ñ)9¸#¸sÓ)C€ r$   c                ó&   — | j                  ||«      S r&   rž  r‹  s      r"   rì   zInterpreterBuilder.<lambda>ú  r   r$   c                óD   — | j                  ||t        j                  «      S r&   r”  r‹  s      r"   rì   zInterpreterBuilder.<lambda>ü  r–  r$   c                óD   — | j                  ||t        j                  «      S r&   r”  r‹  s      r"   rì   zInterpreterBuilder.<lambda>ý  r–  r$   c                óD   — | j                  ||t        j                  «      S r&   r‰  r‹  s      r"   rì   zInterpreterBuilder.<lambda>þ  s   € ¨¯©°s¸CÄÇÁÓ(H€ r$   c                óD   — | j                  ||t        j                  «      S r&   r˜  r‹  s      r"   rì   zInterpreterBuilder.<lambda>ÿ  r›  r$   c                óD   — | j                  ||t        j                  «      S r&   )r‡  rJ   Ú
left_shiftr‹  s      r"   rì   zInterpreterBuilder.<lambda>   s   € ¨¯©°s¸CÄÇÁÓ(O€ r$   c                óD   — | j                  ||t        j                  «      S r&   )r‡  rJ   Úright_shiftr‹  s      r"   rì   zInterpreterBuilder.<lambda>  s   € ¨¯©¸¸SÄ"Ç.Á.Ó)Q€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   r®   r‹  s      r"   rì   zInterpreterBuilder.<lambda>  ó   € ¨$¯.©.¸¸cÄ2Ç:Á:Ó*N€ r$   c                óD   — | j                  ||t        j                  «      S r&   r«  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r¬  r$   c                óD   — | j                  ||t        j                  «      S r&   r«  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  ó   € ¨T¯^©^¸CÀÄbÇjÁjÓ-Q€ r$   c                óD   — | j                  ||t        j                  «      S r&   r«  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  ó   € ¨D¯N©N¸3ÀÄRÇZÁZÓ,P€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   r­   r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r¬  r$   c                óD   — | j                  ||t        j                  «      S r&   r³  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r¬  r$   c                óD   — | j                  ||t        j                  «      S r&   r³  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r¯  r$   c                óD   — | j                  ||t        j                  «      S r&   r³  r‹  s      r"   rì   zInterpreterBuilder.<lambda>	  r±  r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Ú
less_equalr‹  s      r"   rì   zInterpreterBuilder.<lambda>
  ó   € ¨D¯N©N¸3ÀÄRÇ]Á]Ó,S€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Úlessr‹  s      r"   rì   zInterpreterBuilder.<lambda>  ó   € ¨D¯N©N¸3ÀÄRÇWÁWÓ,M€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Úgreater_equalr‹  s      r"   rì   zInterpreterBuilder.<lambda>  ó   € ¨D¯N©N¸3ÀÄR×EUÑEUÓ,V€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Úgreaterr‹  s      r"   rì   zInterpreterBuilder.<lambda>  r±  r$   c                óD   — | j                  ||t        j                  «      S r&   r¸  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  rº  r$   c                óD   — | j                  ||t        j                  «      S r&   r¼  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r¾  r$   c                óD   — | j                  ||t        j                  «      S r&   rÀ  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  rÂ  r$   c                óD   — | j                  ||t        j                  «      S r&   rÄ  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r±  r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Úequalr‹  s      r"   rì   zInterpreterBuilder.<lambda>  s   € ¨4¯>©>¸#¸sÄBÇHÁHÓ+M€ r$   c                óD   — | j                  ||t        j                  «      S r&   ©r‡  rJ   Ú	not_equalr‹  s      r"   rì   zInterpreterBuilder.<lambda>  s   € ¨4¯>©>¸#¸sÄBÇLÁLÓ+Q€ r$   c                óD   — | j                  ||t        j                  «      S r&   r¼  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r¾  r$   c                óD   — | j                  ||t        j                  «      S r&   rÄ  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r±  r$   c                óD   — | j                  ||t        j                  «      S r&   r¸  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  rº  r$   c                óD   — | j                  ||t        j                  «      S r&   rÀ  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  rÂ  r$   c                óD   — | j                  ||t        j                  «      S r&   rË  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  ó   € ¨D¯N©N¸3ÀÄRÇXÁXÓ,N€ r$   c                óD   — | j                  ||t        j                  «      S r&   rÎ  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  ó   € ¨D¯N©N¸3ÀÄRÇ\Á\Ó,R€ r$   c                óD   — | j                  ||t        j                  «      S r&   r¼  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r¾  r$   c                óD   — | j                  ||t        j                  «      S r&   rÄ  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r±  r$   c                óD   — | j                  ||t        j                  «      S r&   r¸  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  rº  r$   c                óD   — | j                  ||t        j                  «      S r&   rÀ  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  rÂ  r$   c                óD   — | j                  ||t        j                  «      S r&   rË  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  rÕ  r$   c                óD   — | j                  ||t        j                  «      S r&   rÎ  r‹  s      r"   rì   zInterpreterBuilder.<lambda>  r×  r$   c                óD   — | j                  ||t        j                  «      S r&   )r‡  rJ   Úbitwise_andr‹  s      r"   rì   zInterpreterBuilder.<lambda>   ó   € ¨¯©°s¸CÄÇÁÓ(P€ r$   c                óD   — | j                  ||t        j                  «      S r&   )r‡  rJ   Úbitwise_xorr‹  s      r"   rì   zInterpreterBuilder.<lambda>!  rà  r$   c                óD   — | j                  ||t        j                  «      S r&   )r‡  rJ   Ú
bitwise_orr‹  s      r"   rì   zInterpreterBuilder.<lambda>"  s   €  t§~¡~°c¸3ÄÇÁÓ'N€ r$   c                óÆ   — t        |j                  t        j                  |j                  |j                  «      z
  |j                  z  |j                  j
                  «      S r&   )r   r   rJ   r•  r   rS   r‹  s      r"   rŸ  zInterpreterBuilder.create_idiv&  sC   € ô ˜SŸX™X¬¯©°·±¸#¿(¹(Ó(CÑCÈÏÉÑPÐRU×R[ÑR[×RbÑRbÓcÐcr$   c                ó@  — t        |j                  j                  «      }t        |j                  j                  «      }|j                  j                  |«      |_        |j                  j                  |«      |_        | j	                  ||t
        j                  «      S r&   )r”   r   r   rQ   r‡  rJ   r©  )r!   r„  r…  Ú	lhs_dtypeÚ	rhs_dtypes        r"   Úcreate_ashrzInterpreterBuilder.create_ashr,  se   € ä(¨¯©¯©Ó8ˆ	Ü(¨¯©¯©Ó8ˆ	Ø—8‘8—?‘? 9Ó-ˆŒØ—8‘8—?‘? 9Ó-ˆŒØ�~‰~˜c 3¬¯©Ó7Ð7r$   c                óR  — |j                   j                  }|t        j                  k(  s|t        j                  k(  r>t        t        |j                   |j                   «      |j                  j                  «      S t        t        d|j                  dz  dz  › �«      }|j                   j                  |«      }|j                   j                  |«      }t        j                  ||«      |j                  dz  z	  }t        |j                  |«      |j                  j                  «      S )Nr¥   r   r   )r   r   rJ   r“   rR   r   Únp_umulhi_u64rS   r¦   r   rQ   rŽ  )r!   r„  r…  r   Úcompute_dtypeÚlhs_dataÚrhs_dataÚret_datas           r"   Úcreate_umulhiz InterpreterBuilder.create_umulhi4  sÐ   € Ø—‘—‘ˆØ”B—H‘HÒ ¬¯©Ò 2Ü¤¨c¯h©h¸¿¹Ó AÀ3Ç9Á9×CSÑCSÓTÐTä#¤B¨$¨u¯~©~ÀÑ/AÀAÑ/EÐ.FÐ(GÓHˆMØ—x‘x—‘ }Ó5ˆHØ—x‘x—‘ }Ó5ˆHÜ—{‘{ 8¨XÓ6¸5¿>¹>ÈAÑ;MÑNˆHÜ §¡°Ó 6¸¿	¹	×8HÑ8HÓIÐIr$   c                óâ   —  ||j                   |j                   |j                   «      }|j                  j                  }t        ||«      s|j	                  t        |«      «      }t        ||«      S r&   rƒ  )r!   r„  r…  r^  r†  rË   r‰   s          r"   Ú
ternary_opzInterpreterBuilder.ternary_op@  sU   € Ù�C—H‘H˜cŸh™h¨¯
©
Ó3ˆØ—;‘;×%Ñ%ˆä% f¨hÔ7Ø—]‘]¤=°Ó#:Ó;ˆFä˜F HÓ-Ð-r$   c                óF   — | j                  |||t        j                  «      S r&   )rò  rJ   Úclip)r!   ÚargÚloÚhiÚpropagate_nanss        r"   rì   zInterpreterBuilder.<lambda>I  s   € ¸d¿o¹oÈcÐSUÐWYÔ[]×[bÑ[bÓ>c€ r$   c                óF   — | j                  |||t        j                  «      S r&   )rò  rJ   Úwhere)r!   Úcondr„  r…  s       r"   rì   zInterpreterBuilder.<lambda>J  s   € °·±ÀÀsÈCÔQS×QYÑQYÓ1Z€ r$   c                óŠ   — t        |j                  |j                  z  |j                  z   |j                  j                  «      S r&   ©r   r   r   rS   ró   s       r"   Ú
create_fmazInterpreterBuilder.create_fmaL  s,   € Ü˜AŸF™F Q§V¡V™O¨a¯f©fÑ4°a·g±g·n±nÓEÐEr$   c                ób   — t         ||j                  «      |j                  j                  «      S r&   rý  )r!   rõ  r†  s      r"   Úunary_opzInterpreterBuilder.unary_opP  s!   € Ü™B˜sŸx™x›L¨#¯)©)×*:Ñ*:Ó;Ð;r$   c                ó2  — |j                   }|j                  dz
  }t        t        d|j                  › �«      }|j                  j                  |«      }d|z  dz
  }||z  j                  t        |«      «      }t        ||j                   j                  «      S )Nr   r¥   )	r   r   r¦   rJ   r   rn  r£   r   rS   )r!   rõ  rU   Úmask_bitwidthÚnp_uint_dtyper   r]  rj  s           r"   Úcreate_fabszInterpreterBuilder.create_fabsS  s†   € à—9‘9ˆØ ×3Ñ3°aÑ7ˆÜ¤ d¨8×+FÑ+FÐ*GÐ$HÓIˆØ�x‰x�}‰}˜]Ó+ˆØ�]Ñ" aÑ'ˆØ�d‰{× Ñ ¤¨xÓ!8Ó9ˆÜ˜C §¡×!1Ñ!1Ó2Ð2r$   c                óB   — | j                  |t        j                  «      S r&   )r   rJ   Úcos©r!   rõ  s     r"   rì   zInterpreterBuilder.<lambda>]  ó   €  4§=¡=°´b·f±fÓ#=€ r$   c                óB   — | j                  |t        j                  «      S r&   )r   rJ   Úexpr  s     r"   rì   zInterpreterBuilder.<lambda>^  r  r$   c                óB   — | j                  |t        j                  «      S r&   )r   rJ   Úexp2r  s     r"   rì   zInterpreterBuilder.<lambda>_  ó   €  D§M¡M°#´r·w±wÓ$?€ r$   c                óB   — | j                  |t        j                  «      S r&   )r   rJ   Úabsr  s     r"   rì   zInterpreterBuilder.<lambda>`  s   €  D§M¡M°#´r·v±vÓ$>€ r$   c                óB   — | j                  |t        j                  «      S r&   )r   rJ   Úfloorr  s     r"   rì   zInterpreterBuilder.<lambda>a  s   €  T§]¡]°3¼¿¹Ó%A€ r$   c                óB   — | j                  |t        j                  «      S r&   )r   rJ   Úceilr  s     r"   rì   zInterpreterBuilder.<lambda>b  r  r$   c                óB   — | j                  |t        j                  «      S r&   )r   rJ   Úlogr  s     r"   rì   zInterpreterBuilder.<lambda>c  r  r$   c                óB   — | j                  |t        j                  «      S r&   )r   rJ   Úlog2r  s     r"   rì   zInterpreterBuilder.<lambda>d  r  r$   c                óB   — | j                  |t        j                  «      S r&   ©r   rJ   Úsqrtr  s     r"   rì   zInterpreterBuilder.<lambda>e  s   € ¨D¯M©M¸#¼r¿w¹wÓ,G€ r$   c                óB   — | j                  |t        j                  «      S r&   r  r  s     r"   rì   zInterpreterBuilder.<lambda>f  r  r$   c                óB   — | j                  |t        j                  «      S r&   )r   rJ   Úsinr  s     r"   rì   zInterpreterBuilder.<lambda>g  r  r$   c                óä   — |j                   j                  t        j                  k(  rt	        |j                   «      nt        |j                   «      }t        ||j                  j                  «      S r&   )r   r   rJ   r˜   Únp_erf_fp32Únp_erf_fp64r   rS   )r!   rõ  rj  s      r"   Ú
create_erfzInterpreterBuilder.create_erfi  sH   € Ø'*§x¡x§~¡~¼¿¹Ò'CŒk˜#Ÿ(™(Ô#ÌÐUX×U]ÑU]ÓI^ˆÜ˜C §¡×!1Ñ!1Ó2Ð2r$   c                ó‚   — t        dt        j                  |j                  «      z  |j                  j
                  «      S ©Nr   )r   rJ   r  r   r   rS   r  s     r"   Úcreate_rsqrtzInterpreterBuilder.create_rsqrtm  s+   € Ü˜A¤§¡¨¯©Ó 1Ñ1°3·9±9×3CÑ3CÓDÐDr$   c                ót   — t        |j                  j                  |«      |j                  j                  «      S r&   )r   r   rP   r   rS   )r!   rõ  rB   Úallow_reorders       r"   rì   zInterpreterBuilder.<lambda>q  s*   € ¼\È#Ï(É(×JZÑJZÐ[`ÓJaÐcf×clÑcl×csÑcsÓ=t€ r$   c                ó~   — t        t        j                  |j                  |«      |j                  j
                  «      S r&   )r   rJ   Ú	transposer   r   rS   )r!   rõ  Úperms      r"   Úcreate_transzInterpreterBuilder.create_transs  s(   € ÜœBŸL™L¨¯©°4Ó8¸#¿)¹)×:JÑ:JÓKÐKr$   c                ó¸  — |j                   }|j                   }|j                  j                  dk(  r|j                  j                  «       s3|j                  j                  dk(  r |j                  j                  «       r†t	        ||j                  t
        j                  d «      j                  t        j                  «      }t	        ||j                  t
        j                  d «      j                  t        j                  «      }t        t        j                  |||j                   j                  ¬«      |j                   z   |j                  j                  «      S )Nr   rI   )r   r   r   Úis_floatingrÌ   r†   r—   rn  rJ   r   ÚmatmulrS   )r!   rÕ   rÖ   ÚdÚinput_precisionÚmax_num_imprecise_accÚa_dataÚb_datas           r"   Ú
create_dotzInterpreterBuilder.create_dotv  sÜ   € Ø—‘ˆØ—‘ˆØ�G‰G×&Ñ&¨!Ò+°·±×0CÑ0CÔ0EØ�G‰G×&Ñ&¨!Ò+°·±×0CÑ0CÔ0EÜ# F¨A¯G©G´R·Z±ZÀÓF×KÑKÌBÏJÉJÓWˆFÜ# F¨A¯G©G´R·Z±ZÀÓF×KÑKÌBÏJÉJÓWˆFÜœBŸI™I f¨f¸A¿F¹F¿L¹LÔIÈAÏFÉFÑRÐTU×T[ÑT[×TbÑTbÓcÐcr$   c                ó~   — t        t        j                  ||t        j                  ¬«      t        j                  «      S r.  )r   rJ   rO   r’   r†   )r!   Úret_tyÚstartÚstops       r"   Úcreate_make_rangez$InterpreterBuilder.create_make_range  s$   € ÜœBŸI™I e¨T¼¿¹ÔBÄBÇHÁHÓMÐMr$   c                óZ  — |€=t        t        j                  |j                  t        ¬«      t
        j                  «      }t        j                  |j                  |j                  j                  ¬«      }t        j                  |j                  |j                  t        j                  |j                  «      «      }t        j                  ||d|f|¬«      d   }|dxx   t        j                  |j                  «      j                  «       z  cc<   t        |t
        j                  «      S )NrI   r   )ÚbinsrM   Úweights)r   rJ   rW  r   r'   r†   r–   r   rú  r¬   Ú	histogramÚlogical_notÚsumr’   )r!   r   r:  r]  Údummy_weightsr<  s         r"   Úcreate_histogramz#InterpreterBuilder.create_histogram‚  sÀ   € Øˆ<Ü¤§¡¨T¯Y©Y¼dÔ CÄRÇWÁWÓMˆDô Ÿ™ T§Y¡Y°d·i±i·o±oÔFˆô �x‰x˜Ÿ	™	 4§9¡9¬b¯m©m¸D¿I¹IÓ.FÓGˆÜ—L‘L ¨D¸¸D¸	È=ÔYÐZ[Ñ\ˆ	à�!‹œŸ™ t§y¡yÓ1×5Ñ5Ó7Ñ7‹Ü˜I¤r§x¡xÓ0Ð0r$   c                ó–   — t        t        j                  |j                  |j                  |¬«      |j                  j
                  «      S )N©rR  )r   rJ   Útake_along_axisr   r   rS   )r!   ro  ÚindicesrR  s       r"   Úcreate_gatherz InterpreterBuilder.create_gather”  s3   € ÜœB×.Ñ.¨s¯x©x¸¿¹ÈDÔQÐSV×S\ÑS\×ScÑScÓdÐdr$   c                óò   — |j                  «       }|j                  }t        d|dz  «      }t        |j                  ||j                  j                  t        j                  «      z  z   |j                  «      S )Nr   r   )	r-   r   Úmaxr   r   rQ   rJ   rR   r   )r!   rY  ÚoffsetrU   Úelement_bitwidthÚelement_bytewidths         r"   Úcreate_addptrz InterpreterBuilder.create_addptr™  se   € Ø×%Ñ%Ó'ˆØ#×6Ñ6Ðä Ð#3°qÑ#8Ó9ÐÜ˜CŸH™HÐ'8¸6¿;¹;×;MÑ;MÌbÏiÉiÓ;XÑ'XÑXÐZ]×ZcÑZcÓdÐdr$   c                óê  — |j                  |«      \  }}|j                  «       }	t        |	«      }
|€d }nª|t        j                  j
                  k(  r,t        t        j                  |j                  |
¬«      |	«      }na|t        j                  j                  k(  r6t        t        j                  |j                  t        d«      |
¬«      |	«      }nt        d|› �«      ‚| j                  ||||||«      S )NrI   Únanzunsupported padding option )r\   r-   r£   r¯   ÚPADDING_OPTIONÚPAD_ZEROr   rJ   r¬   r   ÚPAD_NANÚ	full_likeÚfloatr   rX  )r!   rY  rT   Úpadding_optionrg  rh  r\  rW   rX   rU   ri  r^  s               r"   Úcreate_tensor_pointer_loadz-InterpreterBuilder.create_tensor_pointer_load   sÎ   € à×.Ñ.¨~Ó>‰ˆˆeØ×&Ñ&Ó(ˆÜ  Ó*ˆØÐ!Ø‰EØœs×1Ñ1×:Ñ:Ò:Ü ¤§¡¨t¯y©yÀÔ!IÈ8ÓT‰EØœs×1Ñ1×9Ñ9Ò9Ü ¤§¡¨d¯i©i¼¸u»ÈXÔ!VÐX`Óa‰EäÐ:¸>Ð:JÐKÓLÐLØ×&Ñ& t¨U°E¸>È?Ð\gÓhÐhr$   c                óT   — |j                  |«      \  }}| j                  |||||«      S r&   ©r\   ra  )r!   rY  r3   rT   rg  rh  rW   rX   s           r"   Úcreate_tensor_pointer_storez.InterpreterBuilder.create_tensor_pointer_store¯  s/   € Ø×.Ñ.¨~Ó>‰ˆˆeØ×'Ñ'¨¨e°U¸NÈOÓ\Ð\r$   c                ó~   — t        t        j                  |j                  |«      |j                  j
                  «      S r&   )r   rJ   Úexpand_dimsr   r   rS   )r!   rõ  rR  s      r"   Úcreate_expand_dimsz%InterpreterBuilder.create_expand_dims³  s(   € ÜœBŸN™N¨3¯8©8°TÓ:¸C¿I¹I×<LÑ<LÓMÐMr$   c                ó~   — t        t        j                  |j                  |«      |j                  j
                  «      S r&   )r   rJ   rK   r   r   rS   )r!   rõ  rB   s      r"   Úcreate_broadcastz#InterpreterBuilder.create_broadcast¶  s(   € ÜœBŸO™O¨C¯H©H°eÓ<¸c¿i¹i×>NÑ>NÓOÐOr$   c                ó”   — t        t        j                  |j                  |j                  g«      |j                  j
                  «      S r&   )r   rJ   Úconcatenater   r   rS   r‹  s      r"   Ú
create_catzInterpreterBuilder.create_cat¹  s/   € ÜœBŸN™N¨C¯H©H°c·h±hÐ+?Ó@À#Ç)Á)×BRÑBRÓSÐSr$   c                ó˜   — t        t        j                  |j                  |j                  gd¬«      |j                  j
                  «      S )Nrd   rB  )r   rJ   Ústackr   r   rS   r‹  s      r"   Úcreate_joinzInterpreterBuilder.create_join¼  s1   € äœBŸH™H c§h¡h°·±Ð%9ÀÔCÀSÇYÁY×EUÑEUÓVÐVr$   c                ó¶   — t        |j                  d   |j                  j                  «      t        |j                  d   |j                  j                  «      fS )N).r   ).r   rý  )r!   rb  s     r"   Úcreate_splitzInterpreterBuilder.create_splitÀ  sE   € ä˜SŸX™X fÑ-¨s¯y©y×/?Ñ/?Ó@Ä,ÈsÏxÉxÐX^ÑO_Ðad×ajÑaj×aqÑaqÓBrÐsÐsr$   c           	     ó´  — |j                   }t        |j                  t        j                  «      rVt        t        j                  ||j                  d   t        |j                  «      ¬«      |j                  j                  «      S t        t        j                  ||j                  t        |j                  «      ¬«      |j                  j                  «      S rM  )rB   r…   r   r†   r    r   rJ   Úfullr   r£   rS   )r!   r5  rõ  rB   s       r"   Úcreate_splatzInterpreterBuilder.create_splatÄ  sŒ   € Ø—‘ˆÜ�c—i‘i¤§¡Ô/Ü¤§¡¨¨s¯x©x¸©{Ä-ÐPS×PYÑPYÓBZÔ [Ð]`×]fÑ]f×]mÑ]mÓnÐnä¤§¡¨¨s¯x©x¼}ÈSÏYÉYÓ?WÔ XÐZ]×ZcÑZc×ZjÑZjÓkÐkr$   c           	     ó®   — t        t        j                  d|j                  d   t	        |j
                  «      ¬«      |j
                  j                  «      S )N©r   r   rI   )r   rJ   rf  r   r£   r   rS   r  s     r"   Úcreate_unsplatz!InterpreterBuilder.create_unsplatË  s:   € ÜœBŸG™G E¨3¯8©8°A©;¼mÈCÏIÉIÓ>VÔWÐY\×YbÑYb×YiÑYiÓjÐjr$   c                ó   — || j                   vrt        d|› �«      ‚| j                   |   }t        t        j                  |j
                  |j
                  |j
                  |«      |j                  j                  «      S )Núunsupported semantic )Úir_sem_to_interpreter_semr   r   re  Ú
atomic_casr   r   rS   )r!   rY  Úcmprb  ÚsemÚscopes         r"   Úcreate_atomic_casz$InterpreterBuilder.create_atomic_casÎ  sk   € Ø�d×4Ñ4Ñ4ÜÐ4°S°EÐ:Ó;Ð;Ø×,Ñ,¨SÑ1ˆÜœL×3Ñ3°C·H±H¸c¿h¹hÈÏÉÐRUÓVÐX[×XaÑXa×XhÑXhÓiÐir$   c           	     óX  — || j                   vrt        d|› �«      ‚|| j                  vrt        d|› �«      ‚| j                   |   }| j                  |   }t        t	        j
                  ||j                  |j                  |j                  |«      |j                  j                  «      S )Nzunsupported rmwOp rl  )	Úir_rmw_op_to_interpreter_rmw_opr   rm  r   re  Ú
atomic_rmwr   r   rS   )r!   ÚrmwOprY  rb  r]  rp  rq  s          r"   Úcreate_atomic_rmwz$InterpreterBuilder.create_atomic_rmwÔ  sž   € Ø˜×<Ñ<Ñ<ÜÐ1°%°Ð9Ó:Ð:Ø�d×4Ñ4Ñ4ÜÐ4°S°EÐ:Ó;Ð;Ø×4Ñ4°UÑ;ˆØ×,Ñ,¨SÑ1ˆÜœL×3Ñ3°E¸3¿8¹8ÀSÇXÁXÈtÏyÉyÐZ]Ó^Ð`c×`iÑ`i×`pÑ`pÓqÐqr$   c                ó   — t        d«      ‚)Nz4extern_elementwise not supported in interpreter mode©ÚNotImplementedError)r!   ÚlibNameÚlibPathÚsymbolÚargListÚretTypeÚisPures          r"   Úcreate_extern_elementwisez,InterpreterBuilder.create_extern_elementwiseÝ  s   € Ü!Ð"XÓYÐYr$   c                ó   — t        d«      ‚)Nz,inline_asm not supported in interpreter modery  )r!   Ú	inlineAsmÚconstraintsÚvaluesrN  r€  Úpacks          r"   Úcreate_inline_asmz$InterpreterBuilder.create_inline_asmà  s   € Ü!Ð"PÓQÐQr$   c                ó*  — d| j                   d   › d| j                   d   › d| j                   d   › d�}|r|d|› �z  }|rt        j                  dd	„ i¬
«       |D ]  }t        |d|j                  › �z   «       Œ |rt        j                  d ¬
«       y y )Nú(r   z, r   r   ú)ú r(   c                ó   — d| d›�S )NÚ0xÚ02xr=   rÐ   s    r"   rì   z1InterpreterBuilder.create_print.<locals>.<lambda>ì  s   € ¸bÀÀ3À¸L€ r$   )Ú	formatter)rò   rJ   Úset_printoptionsÚprintr   )r!   ÚprefixÚhexr…  ÚisSignedÚmsgr3   s          r"   Úcreate_printzInterpreterBuilder.create_printã  s£   € ð
 �$—-‘- Ñ"Ð# 2 d§m¡m°AÑ&6Ð%7°r¸$¿-¹-ÈÑ:JÐ9KÈ1ÐMˆÙØ�Q�v�h�<ÑˆCÙÜ×Ñ¨5Ñ2HÐ*IÕJØò 	*ˆEÜ�#˜!˜EŸJ™J˜<Ð(Ñ(Õ)ð	*áÜ×Ñ¨$Ö/ð r$   c                ó   — |sJ |› «       ‚y r&   r=   )r!   Ú	conditionÚmessages      r"   Úcreate_assertz InterpreterBuilder.create_assertò  s   € áÐ&˜W˜IÓ&‰yr$   c                ó   — |sJ d«       ‚y )NzAssume failedr=   )r!   r˜  s     r"   Úcreate_assumez InterpreterBuilder.create_assumeö  s   € ÙÐ)˜/Ó)‰yr$   c                 ó   — y r&   r=   r    s    r"   Úcreate_barrierz!InterpreterBuilder.create_barrierù  s   € àr$   c                óf   — |D �cg c]  }|j                  «       ‘Œ }}t        ||||||«      S c c}w r&   )r0   r?   )	r!   rA   rB   rC   rD   rE   rF   rH  Únew_offsetss	            r"   Úcreate_make_block_ptrz(InterpreterBuilder.create_make_block_ptrý  s6   € à4;Ö<¨&�v—|‘|•~Ð<ˆÐ<Ü! $¨¨w¸À[ÐRWÓXÐXùò =s   ….c                óÊ  — t        |j                  «      t        |«      k7  rt        d«      ‚|j                  D �cg c]  }|j                  «       ‘Œ }}t	        |j
                  |j                  |j                  ||j                  |j                  «      }t        t        |«      «      D ]1  }|j                  |   xj                  ||   j                  z  c_        Œ3 |S c c}w )Nz len(ptr.offsets) != len(offsets))rN   rD   r   r0   r?   rA   rB   rC   rE   rF   rM   r   )r!   rY  rD   rH  r   rj  rÂ   s          r"   Úcreate_advancez!InterpreterBuilder.create_advance  s²   € Üˆs�{‰{Óœs 7›|Ò+ÜÐ?Ó@Ð@à47·K±KÖ@¨&�v—|‘|•~Ð@ˆÐ@Ü  §¡¨3¯9©9°c·k±kÀ;ÐPS×P_ÑP_Ðad×ajÑajÓkˆÜ”s˜7“|Ó$ò 	3ˆAØ�K‰K˜‰N×Ò 7¨1¡:§?¡?Ñ2Öð	3àˆ
ùò	 As   »C c                óD   — t        |||||«      }|j                  «        |S r&   )r^   ri   )r!   rA   rB   rC   Útensor_shaper~  ra   Údescs           r"   Úcreate_make_tensor_descriptorz0InterpreterBuilder.create_make_tensor_descriptor  s"   € ä  e¨W°lÀGÓLˆØ�‰ŒØˆr$   c                ó  — t        |t        «      sJ ‚|j                  |«      \  }}|j                  «       }t	        |«      }|j
                  }	|	t        j                  j                  k(  r,t        t        j                  |j                  |¬«      |«      }
na|	t        j                  j                  k(  r6t        t        j                  |j                  t        d«      |¬«      |«      }
nt!        d|	› �«      ‚| j#                  |||
||d¬«      S )NrI   rM  zunsupported padding F)rg  rh  r\  )r…   r^   r\   r-   r£   ra   r¯   rN  rO  r   rJ   r¬   r   rP  rQ  rR  r   rX  )r!   r¦  rD  rg  rh  rW   r]  rU   ri  ra   r^  s              r"   Úcreate_descriptor_loadz)InterpreterBuilder.create_descriptor_load  sè   € ä˜$Ô 0Ô1Ð1Ð1Ø×.Ñ.¨wÓ7‰
ˆˆdØ×&Ñ&Ó(ˆÜ  Ó*ˆØ—,‘,ˆØ”c×(Ñ(×1Ñ1Ò1Ü ¤§¡¨t¯y©yÀÔ!IÈ8ÓT‰EØœ×*Ñ*×2Ñ2Ò2Ü ¤§¡¨d¯i©i¼¸u»ÈXÔ!VÐX`Óa‰EäÐ3°G°9Ð=Ó>Ð>Ø×&Ñ& t¨T°5ÈØ7FÐTYð 'ó [ð 	[r$   c                óT   — |j                  |«      \  }}| j                  |||d d «      S r&   rV  )r!   r¦  r3   rD  rW   r]  s         r"   Úcreate_descriptor_storez*InterpreterBuilder.create_descriptor_store"  s/   € Ø×.Ñ.¨wÓ7‰
ˆˆdØ×'Ñ'¨¨e°T¸4ÀÓFÐFr$   c                ó®  — |j                   j                  j                  }t        |«      }t	        j
                  |j                  j                  d   |j                  d   g|¬«      }d }d }	t        |j                  «      D ]F  \  }
}t        |t        j                  «      |g}| j                  ||||	«      j                  ||
d d …f<   ŒH t        ||«      S )Nr   rd   rI   )rA   r   r+   r£   rJ   Úzerosr   rB   rE   Ú	enumerater   r†   r’   r©  )r!   r¦  Ú	x_offsetsÚy_offsetrN  r   Únp_dtypeÚresultrg  rh  rÂ   Úx_offsetrD  s                r"   Úcreate_descriptor_gatherz+InterpreterBuilder.create_descriptor_gather&  sÀ   € Ø—	‘	—‘×*Ñ*ˆÜ  Ó'ˆÜ—‘˜9Ÿ>™>×/Ñ/°Ñ2°D×4DÑ4DÀRÑ4HÐIÐQYÔZˆØˆØˆÜ$ Y§^¡^Ó4ò 	l‰KˆAˆxÜ# H¬b¯h©hÓ7¸ÐBˆGØ×6Ñ6°t¸WÀnÐVeÓf×kÑkˆF�1’a�4ŠLð	lô ˜F EÓ*Ð*r$   c                óâ   — t        |j                  «      D ]W  \  }}t        |j                  |   |j                  «      }t        |t        j
                  «      |g}| j                  |||«       ŒY y r&   )r®  r   r   r   r†   r’   r«  )	r!   r¦  r3   r¯  r°  rÂ   r³  ÚslicerD  s	            r"   Úcreate_descriptor_scatterz,InterpreterBuilder.create_descriptor_scatter1  s]   € ä$ Y§^¡^Ó4ò 	?‰KˆAˆxÜ  §¡¨A¡°·±Ó<ˆEÜ# H¬b¯h©hÓ7¸ÐBˆGØ×(Ñ(¨¨u°gÕ>ñ	?r$   c                ó&  — t        |«      }d|j                  v r,t        t        j                  dd|¬«      |j
                  «      S |t        j                  k(  r,t        t        j                  dd|¬«      |j
                  «      S t        d|› �«      ‚)Nr�   r   rd   rI   Tzunsupported type )r£   Únamer   rJ   rf  rS   r0  Ú	TypeError)r!   rN  Únp_types      r"   Úget_all_ones_valuez%InterpreterBuilder.get_all_ones_value8  ss   € Ü Ó%ˆØ�G—L‘LÑ Ü¤§¡¨¨2°WÔ =¸t¿{¹{ÓKÐKØœŸ™Ò Ü¤§¡¨¨4°wÔ ?ÀÇÁÓMÐMäÐ/°¨vÐ6Ó7Ð7r$   N©ÚreturnÚNone)Úzero)rA   r   rB   rk   rC   rk   r¥  rl   r~  r'   ra   rs   )r¦  r^   rD  rk   )r¦  r^   r3   r   rD  rk   )r¦  r^   r¯  r   r°  r   )r¦  r^   r3   r   r¯  r   r°  r   )µr5   r6   r7   r¯   ÚMEM_SEMANTICÚACQUIREre  ÚRELEASEÚRELAXEDÚACQUIRE_RELEASErm  Ú	ATOMIC_OPÚADDÚRMW_OPÚFADDÚMINÚUMINÚMAXÚUMAXÚANDÚORÚXORÚXCHGrt  rG   rö   rû   rý   r   r  r  r  r
  r  r  r  r  r  r  r  r  r  r"  r$  r&  r*  r,  r2  r4  r7  r9  r<  r>  r@  rB  rD  rF  rI  rK  rO  rS  rU  r_  rc  rX  ra  rs  Úcreate_si_to_fpÚcreate_ui_to_fpÚcreate_fp_to_siÚcreate_fp_to_uiÚcreate_fp_extÚcreate_fp_truncÚcreate_int_castrÞ   r�  r‡  Úcreate_faddÚcreate_fmulÚcreate_fdivÚcreate_fremÚcreate_fsubÚ
create_mulÚcreate_precise_divfÚcreate_sdivÚcreate_udivÚcreate_sremÚcreate_uremÚ
create_addÚ
create_subÚ
create_shlÚcreate_lshrÚcreate_minsiÚcreate_minuiÚcreate_minimumfÚcreate_minnumfÚcreate_maxsiÚcreate_maxuiÚcreate_maximumfÚcreate_maxnumfÚcreate_icmpSLEÚcreate_icmpSLTÚcreate_icmpSGEÚcreate_icmpSGTÚcreate_icmpULEÚcreate_icmpULTÚcreate_icmpUGEÚcreate_icmpUGTÚcreate_icmpEQÚcreate_icmpNEÚcreate_fcmpOLTÚcreate_fcmpOGTÚcreate_fcmpOLEÚcreate_fcmpOGEÚcreate_fcmpOEQÚcreate_fcmpONEÚcreate_fcmpULTÚcreate_fcmpUGTÚcreate_fcmpULEÚcreate_fcmpUGEÚcreate_fcmpUEQÚcreate_fcmpUNEÚ
create_andÚ
create_xorÚ	create_orÚcreate_int_to_ptrÚcreate_ptr_to_intrŸ  ré  rð  rò  Úcreate_clampfÚcreate_selectrþ  r   r  Ú
create_cosÚ
create_expÚcreate_exp2Úcreate_iabsÚcreate_floorÚcreate_ceilÚ
create_logÚcreate_log2Úcreate_precise_sqrtÚcreate_sqrtÚ
create_sinr!  r$  Úcreate_reshaper*  r3  r8  r@  rE  rK  rT  rW  rZ  r\  r_  rb  rd  rg  rj  rr  rw  r�  r‡  r–  rš  rœ  rž  r¡  r£  r§  r©  r«  r´  r·  r¼  r=   r$   r"   ræ   ræ   !  s  „ à×Ñ× Ñ  ,×";Ñ";×"CÑ"CØ×Ñ× Ñ  ,×";Ñ";×"CÑ"CØ×Ñ× Ñ  ,×";Ñ";×"CÑ"CØ×Ñ×(Ñ(¨,×*CÑ*C×*SÑ*Sð	!Ðð 	�‰×Ñ˜<×.Ñ.×2Ñ2Ø�‰×Ñ˜L×/Ñ/×4Ñ4Ø�‰×Ñ˜<×.Ñ.×2Ñ2Ø�‰×Ñ˜L×/Ñ/×4Ñ4Ø�‰×Ñ˜<×.Ñ.×2Ñ2Ø�‰×Ñ˜L×/Ñ/×4Ñ4Ø�‰×Ñ˜<×.Ñ.×2Ñ2Ø�‰×Ñ˜,×-Ñ-×0Ñ0Ø�‰×Ñ˜<×.Ñ.×2Ñ2Ø�‰×Ñ˜L×/Ñ/×4Ñ4ð'Ð#óNò"ò%ò
òòòòòòòòòòòòòòòòòò3ò+òHòIòGòKòIòKòIòKòIòMòMòMòLòWò
WòNò
Dò+òDò[ñ P€OÙO€OÙO€OÙO€OÙM€MÙO€OÙZ€Oò3òUò.ñ J€KÙN€KÙL€KÙJ€KÙN€KÙM€JÙTÐÙC€KÙC€KáJ€KÙJ€KÙH€JÙM€JÙO€JÙQ€KÙN€LÙN€LÙQ€OÙP€NÙN€LÙN€LÙQ€OÙP€NÙS€NÙM€NÙV€NÙP€NÙS€NÙM€NÙV€NÙP€NÙM€MÙQ€MÙM€NÙP€NÙS€NÙV€NÙN€NÙR€NÙM€NÙP€NÙS€NÙV€NÙN€NÙR€NÙP€JÙP€JÙN€IØ&ÐØ&Ðòdò8ò	Jò.ñ d€MÙZ€MòFò<ò3ñ >€JÙ=€JÙ?€KÙ>€KÙA€LÙ?€KÙ=€JÙ?€KÙGÐÙ?€KÙ=€Jò3òEñ u€NòLòdòNò1ò$eò
eòiò]òNòPòTòWòtòlòkòjòròZòRò0ò'ò*òòYò
ð `fðØ4=ðØJNðØY\óó[ó Gó	+ð?Ø,8ó?ó8r$   ræ   c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)Ú_LangPatchScopez2Tracks patched attributes so they can be restored.c                ó   — g | _         y r&   )Ú_changesr    s    r"   rG   z_LangPatchScope.__init__H  s	   € Ø:<ˆ�r$   c                ó|   — t        ||t        «      }| j                  j                  |||f«       t	        |||«       y r&   )r¦   Ú_MISSINGr  ÚappendÚsetattr)r!   Úobjr¹  r3   Úoriginals        r"   r4   z_LangPatchScope.set_attrK  s5   € Ü˜3 ¤hÓ/ˆØ�‰×Ñ˜c 4¨Ð2Ô3Ü��T˜5Õ!r$   c                ó¸   — | j                   rN| j                   j                  «       \  }}}|t        u rt        ||«       nt	        |||«       | j                   rŒMy y r&   )r  Úpopr  Údelattrr   )r!   r!  r¹  r"  s       r"   Úrestorez_LangPatchScope.restoreP  sI   € Ø�mŠmØ"&§-¡-×"3Ñ"3Ó"5ÑˆC��xØœ8Ñ#Ü˜˜TÕ"ä˜˜T 8Ô,ð �m�mr$   Nr½  )r!  Úobjectr¹  rs   r3   r'  r¾  r¿  )r5   r6   r7   r8   rG   r4   r&  r=   r$   r"   r  r  E  s   „ Ù<ó=ó"ô
-r$   r  c                óR   ‡— t        |«      Š|dœˆfd„
}|j                  | ||«       y )N)Úmemberc           
     óv   •—  | |i |j                  «       D ��ci c]  \  }}|dk7  r||“Œ c}}¤d‰i¤ŽS c c}}w )Nrâ   ©Úitems)r)  ÚargsÚkwargsÚkÚvÚsemantics        €r"   rì   z_patch_attr.<locals>.<lambda>[  s[   ø€ ¹Àð :kàMSÏ\É\Ë^÷AVÙEIÀQÈØDEÈÒDTð BCÀAÁó AVñ:kð bjò:k€ ùóAVs   ™5)r
   r4   )r!  r¹  r)  rÝ   rq  Ú
new_memberr1  s         @r"   Ú_patch_attrr3  Y  s*   ø€ Ü˜gÓ&€HØ&,õ l€Jð 
‡N�N�3˜˜jÕ)r$   c                óœ   — t        j                  | «      D ]4  \  }}t        j                  j	                  |«      sŒ&t        | ||||«       Œ6 y r&   )ÚinspectÚ
getmembersr†   ÚcoreÚ
is_builtinr3  )ÚpkgrÝ   rq  r¹  r)  s        r"   Ú_patch_builtinr:  b  sB   € Ü×*Ñ*¨3Ó/ò ;‰ˆˆfÜ�7‰7×Ñ˜fÕ%Ü˜˜T 6¨7°EÕ:ñ;r$   c                óî   ‡— d„ Šd„ }|j                  | dd„ «       |j                  | dˆfd„«       |j                  | dd„ «       |j                  | d	d
„ «       |j                  | dt        |«      «       y )Nc                óf   — | j                   j                  }|j                  dk(  rt        |«      S dS )Nr   T)rß   r   Úsizer'   )r!   r   s     r"   Ú	_get_boolz%_patch_lang_tensor.<locals>._get_boolj  s,   € Ø�{‰{×Ñˆð "ŸY™Y¨!š^Œt�D‹zÐ5°Ð5r$   c                ó¼  — t        t        j                  | j                  j                  «      | j                  j
                  «      }| j                  j                  «       sJ ‚t        | j                  j                  «      }|d   |d   c|d<   |d<   t        j                  j                  | j
                  |«      }t        j                  j                  ||«      S )Néþÿÿÿrd   )r   rJ   r(  rß   r   r   rN  Úis_blockÚlistrB   r†   r7  r    rÜ   )r!   rß   rE   Úres_tys       r"   Ú_get_transposez*_patch_lang_tensor.<locals>._get_transposep  sž   € ÜœbŸl™l¨4¯;©;×+;Ñ+;Ó<¸d¿k¹k×>OÑ>OÓPˆØ�y‰y×!Ñ!Ô#Ð#Ð#Ü˜4Ÿ9™9Ÿ?™?Ó+ˆØ+6°r©?¸KÈ¹OÐ(ˆ�B‰˜ R™Ü—‘×#Ñ# D§J¡J°Ó<ˆÜ�w‰w�~‰~˜f fÓ-Ð-r$   Ú	__index__c                ó@   — t        | j                  j                  «      S r&   )r�   rß   r   r    s    r"   rì   z$_patch_lang_tensor.<locals>.<lambda>x  s   € ´S¸¿¹×9IÑ9IÓ5J€ r$   r)   c                ó   •—  ‰| «      S r&   r=   )r!   r>  s    €r"   rì   z$_patch_lang_tensor.<locals>.<lambda>y  s   ø€ ±I¸d³O€ r$   Ú__repr__c                ó@   — t        | j                  j                  «      S r&   )Úreprrß   r   r    s    r"   rì   z$_patch_lang_tensor.<locals>.<lambda>z  s   € ´D¸¿¹×9IÑ9IÓ4J€ r$   Ú__str__c                ó@   — t        | j                  j                  «      S r&   )rs   rß   r   r    s    r"   rì   z$_patch_lang_tensor.<locals>.<lambda>{  s   € ´3°t·{±{×7GÑ7GÓ3H€ r$   r   )r4   Úproperty)rÜ   rq  rD  r>  s      @r"   Ú_patch_lang_tensorrN  h  sh   ø€ ò6ò.ð 
‡N�N�6˜;Ñ(JÔKØ	‡N�N�6˜:Ó'CÔDØ	‡N�N�6˜:Ñ'JÔKØ	‡N�N�6˜9Ñ&HÔIØ	‡N�N�6˜3¤¨Ó 8Õ9r$   c                  ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚReduceScanOpInterfacec                ó    — || _         || _        y r&   )rR  Ú
combine_fn)r!   rR  rR  s      r"   rG   zReduceScanOpInterface.__init__�  s   € ØˆŒ	Ø$ˆ�r$   c                óH   — |� |t        |«      k\  rt        d|› d|› �«      ‚y y )Nzaxis z out of bounds for shape )rN   r   )r!   rB   rR  s      r"   Ú
check_axisz ReduceScanOpInterface.check_axis…  s4   € ØÐ ¬¨E«
Ò 2Ü˜u T FÐ*CÀEÀ7ÐKÓLÐLð !3Ðr$   c                óÔ   — |D ]c  }t        |t        j                  j                  «      st	        dt        |«      › �«      ‚| j                  |j                  | j                  «       Œe y )Nzinput must be a tensor, got )	r…   r†   r7  rÜ   r   rN  rT  rB   rR  )r!   r²   rõ  s      r"   Úcheck_tensorz"ReduceScanOpInterface.check_tensor‰  sP   € Øò 	2ˆCÜ˜c¤2§7¡7§>¡>Ô2Ü Ð#?ÄÀSÃ	¸{Ð!KÓLÐLØ�O‰O˜CŸI™I t§y¡yÕ1ñ	2r$   c                óZ  — t        |«      }t        |d«      rG|j                  r;|j                  |«      }t	        j
                  |t        |j                  «      «      }nt        j                  |g|¬«      }|}t        j                  j                  t        ||j                  «      |«      S )NrB   rI   )r£   r,   rB   rQ   r†   r    rB  rJ   r/  r7  rÜ   r   rS   )r!   rj  r   r±  Úret_types        r"   Ú	to_tensorzReduceScanOpInterface.to_tensor�  sy   € Ü  Ó'ˆÜ�3˜Ô  S§Y¢YØ—*‘*˜XÓ&ˆCÜ—}‘} U¬D°·±«OÓ<‰Hä—(‘(˜C˜5¨Ô1ˆCØˆHÜ�w‰w�~‰~œl¨3°·±Ó=¸xÓHÐHr$   c                óØ   — t        |t        «      s| j                  |f«      d   S | j                  |«       | j	                  |«      }t        |t
        t        f«      rt        |«      S |fS ©Nr   )r…   ÚtupleÚapplyrV  Ú
apply_implrB  )r!   r²   rj  s      r"   r]  zReduceScanOpInterface.apply™  s\   € Ü˜%¤Ô'Ø—:‘:˜u˜iÓ(¨Ñ+Ð+Ø×Ñ˜%Ô Ø�o‰o˜eÓ$ˆÜ'¨¬d´E¨]Ô;Œu�S‹zÐHÀ#ÀÐHr$   N)r5   r6   r7   rG   rT  rV  rY  r]  r=   r$   r"   rP  rP    s   „ ò%òMò2òIóIr$   rP  c                  ó>   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zdd„Zd„ Zd„ Zˆ xZ	S )Ú	ReduceOpsc                ó4   •— t         ‰| �  ||«       || _        y r&   )ÚsuperrG   Ú	keep_dims)r!   rR  rR  rc  Ú	__class__s       €r"   rG   zReduceOps.__init__£  s   ø€ Ü‰Ñ˜˜zÔ*Ø"ˆ�r$   c                óô   — g }|D ]e  }|�|j                  |«       Œd}|j                  | j                  |j                  j                  j	                  «       |j
                  «      «       Œg t        |«      |fS r[  )r  rY  rß   r   Úflattenr   r\  )r!   r²   rR  rj  r   s        r"   ÚunravelzReduceOps.unravel§  sn   € ØˆØò 	SˆDØÐØ—
‘
˜4Õ à�Ø—
‘
˜4Ÿ>™>¨$¯+©+×*:Ñ*:×*BÑ*BÓ*DÀdÇjÁjÓQÕRð	Sô �S‹z˜4ÐÐr$   c                óì  ‡ ‡‡‡— ‰ j                   }‰ j                  ‰‰ j                   «      \  Š}g }g }‰d   j                  j                  j                  }|d| ||dz   d  z   }‰D ]k  }|j                  |j                  j                  «       |j                  t        j                  ||j                  j                  j                  ¬«      «       Œm t        |d   j                  «      D �]Y  }	t        j                  |	|«      Š‰d| ‰|dz   d  z   Št        ˆˆˆ fd„t        |«      D «       «      }
‰|   dk(  rGt        t        |«      «      D ]/  }|
|   j                  j                  j                  «       ||   ‰<   Œ1 Œ–t        ˆˆˆ fd„t        |«      D «       «      } ‰ j                   j"                  g |¢|
¢­Ž }t%        |t        «      s|fn|}t        t        |«      «      D ][  }t%        ||   t&        j(                  j*                  «      r'||   j                  j                  j                  «       n||   ||   ‰<   Œ] �Œ\ g }t        |«      D ]š  \  }	}‰ j,                  rI|�t        j.                  ||«      }nBt        t        |«      «      D ]  }t        j.                  |d«      }Œ n|€|j                  «       }|j                  ‰ j1                  |‰|	   j                  «      «       Œœ |S )Nr   r   rI   c              3  óh   •K  — | ])  \  }}‰j                  |‰   ‰|   j                  «      –— Œ+ y ­wr&   ©rY  r   )Ú.0Úiir.  r²   Úinput_indexr!   s      €€€r"   ú	<genexpr>z+ReduceOps.generic_reduce.<locals>.<genexpr>À  s/   øè ø€ ÒsÑTYÐTVÐXY §¡¨q°©~¸uÀR¹y¿¹× OÑsùó   ƒ/2c              3  óh   •K  — | ])  \  }}‰j                  |‰   ‰|   j                  «      –— Œ+ y ­wr&   rj  )rk  ÚoiÚor²   Úoutput_indexr!   s      €€€r"   rn  z+ReduceOps.generic_reduce.<locals>.<genexpr>Æ  s/   øè ø€ Ò!wÑW\ÐWYÐ[\ $§.¡.°°<±À%ÈÁ)Ç/Á/×"RÑ!wùro  )rR  rg  rß   r   rB   r  rJ   r­  r   rM   r=  Úunravel_indexr\  r®  rN   re   rR  Úfnr…   r†   r7  rÜ   rc  rY  rY  )r!   r²   Úoriginal_axisrR  Ú
input_dataÚoutput_dataÚinput_shapeÚoutput_shaperõ  rÂ   Úinput_tupleÚjÚ	acc_tupleÚcombine_fn_retrj  r   Ú_rm  rs  s   ``               @@r"   Úgeneric_reducezReduceOps.generic_reduce±  s¶  û€ ØŸ	™	ˆØ—l‘l 5¨$¯)©)Ó4‰ˆˆtØˆ
ØˆØ˜A‘h—o‘o×*Ñ*×0Ñ0ˆØ" 1 TÐ*¨[¸À¹¸Ð-CÑCˆØò 	TˆCØ×Ñ˜cŸj™jŸo™oÔ.Ø×ÑœrŸx™x¨¸C¿J¹J¿O¹O×<QÑ<QÔRÕSð	Tô �z !‘}×)Ñ)Ó*ó 	HˆAä×*Ñ*¨1¨kÓ:ˆKØ& q¨Ð.°¸TÀA¹X¸YÐ1GÑGˆLÜÕsÔ]fÐgqÓ]rÔsÓsˆKØ˜4Ñ  AÒ%äœs ;Ó/Ó0ò U�AØ3>¸q±>×3HÑ3H×3MÑ3M×3RÑ3RÓ3T�K ‘N <Ò0ñUô "Õ!wÔ`iÐjuÓ`vÔ!wÓw�	Ø!3 §¡×!3Ñ!3Ð!M°YÐ!MÀÒ!M�Ü6@ÀÔQVÔ6W˜^Ñ.Ð]k�	Üœs ;Ó/Ó0ò H�AÜV`Ø! !™¤b§g¡g§n¡nôW6°9¸Q±<×3FÑ3F×3KÑ3K×3PÑ3PÔ3RØ;DÀQ¹<ð   ‘N <Ò0òHð	Hð" ˆÜ  Ó-ò 	=‰GˆAˆtØ�~Š~Ø Ð,ÜŸ>™>¨$°Ó5‘Dä"¤3 {Ó#3Ó4ò 7˜Ü!Ÿ~™~¨d°AÓ6™ñ7ð Ð&à—y‘y“{�Ø�J‰J�t—~‘~ d¨E°!©H¯N©NÓ;Õ<ð	=ð ˆ
r$   c                ó²  — t        |t        «      r|d   n|}d }d }|rM| j                   ||j                  j                  | j
                  | j                  ¬«      |j                  «      }|rQ| j                   ||j                  j                  | j
                  | j                  ¬«      t        j                  «      }|�|�||fS |�|S |�|S t        d«      ‚)Nr   ©rR  Úkeepdimsz-val_reduce_op and idx_reduce_op are both None)r…   r\  rY  rß   r   rR  rc  r   r†   r’   r   )r!   r²   Úval_reduce_opÚidx_reduce_oprb  Úidxs         r"   Úmin_maxzReduceOps.min_maxÜ  sÂ   € ä& u¬eÔ4��a’¸%ˆØˆØˆÙØ—.‘.¡¨u¯|©|×/@Ñ/@ÀtÇyÁyÐ[_×[iÑ[iÔ!jÐlq×lwÑlwÓxˆCÙØ—.‘.¡¨u¯|©|×/@Ñ/@ÀtÇyÁyÐ[_×[iÑ[iÔ!jÔln×ltÑltÓuˆCØˆ?˜s˜Ø˜�8ˆOØˆ_ØˆJØˆ_ØˆJäÐLÓMÐMr$   c                ó¶   — | j                  t        j                  |j                  j                  | j
                  | j                  ¬«      |j                  «      S )Nr‚  )rY  rJ   r>  rß   r   rR  rc  r   ©r!   r²   s     r"   r>  zReduceOps.sumî  s<   € Ø�~‰~œbŸf™f U§\¡\×%6Ñ%6¸T¿Y¹YÐQU×Q_ÑQ_Ô`Ðbg×bmÑbmÓnÐnr$   c                ó2  — | j                   t        j                  j                  k(  r3| j	                  |d   t
        j                  t
        j                  ¬«      S | j                   t        j                  j                  k(  r3| j	                  |d   t
        j                  t
        j                  ¬«      S | j                   t        j                  j                  k(  r%| j	                  |d   t
        j                  d ¬«      S | j                   t        j                  j                  k(  r%| j	                  |d   t
        j                  d ¬«      S | j                   t        j                  j                  k(  r| j!                  |d   «      S | j#                  |«      S )Nr   )r„  r…  )rR  r†   ÚstandardÚ_argmin_combine_tie_break_leftr‡  rJ   ÚminÚargminÚ_argmax_combine_tie_break_leftrG  ÚargmaxÚ_elementwise_maxÚnanmaxÚ_elementwise_minÚnanminÚ_sum_combiner>  r€  r‰  s     r"   r^  zReduceOps.apply_implñ  s  € Ø�?‰?œbŸk™k×HÑHÒHØ—<‘<  a¡¼¿¹ÌbÏiÉi�<ÓXÐXØ�_‰_¤§¡× JÑ JÒJØ—<‘<  a¡¼¿¹ÌbÏiÉi�<ÓXÐXØ�_‰_¤§¡× <Ñ <Ò<Ø—<‘<  a¡¼¿	¹	ÐQU�<ÓVÐVØ�_‰_¤§¡× <Ñ <Ò<Ø—<‘<  a¡¼¿	¹	ÐQU�<ÓVÐVØ�_‰_¤§¡× 8Ñ 8Ò8Ø—8‘8˜E !™HÓ%Ð%ð ×&Ñ& uÓ-Ð-r$   r&   )
r5   r6   r7   rG   rg  r€  r‡  r>  r^  Ú__classcell__©rd  s   @r"   r`  r`  ¡  s$   ø„ ô#ò ò)óVNò$oö.r$   r`  c                  ó6   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚScanOpsc                ó4   •— t         ‰| �  ||«       || _        y r&   )rb  rG   Úreverse)r!   rR  rR  r›  rd  s       €r"   rG   zScanOps.__init__  s   ø€ Ü‰Ñ˜˜zÔ*Øˆ�r$   c                ó¤   — | j                  t        j                  |j                  j                  | j
                  ¬«      |j                  ¬«      gS ©NrB  rI   )rY  rJ   Úcumsumrß   r   rR  r   r‰  s     r"   rž  zScanOps.cumsum  s8   € Ø—‘œrŸy™y¨¯©×):Ñ):ÀÇÁÔKÐSX×S^ÑS^�Ó_Ð`Ð`r$   c                ó¤   — | j                  t        j                  |j                  j                  | j
                  ¬«      |j                  ¬«      gS r�  )rY  rJ   Úcumprodrß   r   rR  r   r‰  s     r"   r   zScanOps.cumprod
  s8   € Ø—‘œrŸz™z¨%¯,©,×*;Ñ*;À$Ç)Á)ÔLÐTY×T_ÑT_�Ó`ÐaÐar$   c           	     óò  ‡ ‡‡‡— g }g }‰d   j                   j                  j                  }‰D ]k  }|j                  |j                   j                  «       |j                  t	        j
                  ||j                   j                  j                  ¬«      «       Œm t        |d   j                  «      D �]|  }t	        j                  ||«      Št        ˆˆˆ fd„t        |«      D «       «      }‰‰ j                     dk(  rGt        t        |«      «      D ]/  }||   j                   j                  j                  «       ||   ‰<   Œ1 Œ’t        ˆˆ fd„t        t        ‰«      «      D «       «      Št        ˆˆˆ fd„t        |«      D «       «      }	 ‰ j                  j                   g |	¢|¢­Ž }
t#        |
t        «      s|
fn|
}	t        t        |«      «      D ][  }t#        |	|   t$        j&                  j(                  «      r'|	|   j                   j                  j                  «       n|	|   ||   ‰<   Œ] �Œ g }t        |«      D ]3  \  }}|j                  ‰ j+                  |‰|   j                  «      «       Œ5 |S )Nr   rI   c              3  óh   •K  — | ])  \  }}‰j                  |‰   ‰|   j                  «      –— Œ+ y ­wr&   rj  )rk  rl  r.  Úindexr²   r!   s      €€€r"   rn  z'ScanOps.generic_scan.<locals>.<genexpr>  s,   øè ø€ ÒfÁuÀrÈ1˜Ÿ™¨¨%©°%¸±)·/±/×BÑfùro  c              3  óV   •K  — | ]   }|‰j                   k(  r‰|   d z
  n‰|   –— Œ" y­w)r   NrB  )rk  rÂ   r£  r!   s     €€r"   rn  z'ScanOps.generic_scan.<locals>.<genexpr>  s-   øè ø€ Ò"kÐTU°1¸¿	¹	²> 5¨¡8¨a¢<ÀuÈQÁxÓ#OÑ"kùs   ƒ&)c              3  óh   •K  — | ])  \  }}‰j                  |‰   ‰|   j                  «      –— Œ+ y ­wr&   rj  )rk  rq  rr  r²   Ú
prev_indexr!   s      €€€r"   rn  z'ScanOps.generic_scan.<locals>.<genexpr>  s/   øè ø€ Ò!uÑUZÐUWÐYZ $§.¡.°°:±ÀÀbÁ	ÇÁ×"PÑ!uùro  )rß   r   rB   r  rJ   r­  r   rM   r=  rt  r\  r®  rR  rN   re   rR  ru  r…   r†   r7  rÜ   rY  )r!   r²   rw  rx  rB   rõ  rÂ   r   r|  r}  r~  rj  r£  r¦  s   ``          @@r"   Úgeneric_scanzScanOps.generic_scan  s!  û€ Øˆ
ØˆØ�a‘—‘×$Ñ$×*Ñ*ˆØò 	MˆCØ×Ñ˜cŸj™jŸo™oÔ.Ø×ÑœrŸx™x¨°S·Z±Z·_±_×5JÑ5JÔKÕLð	Mô �z !‘}×)Ñ)Ó*ó 	HˆAä×$Ñ$ Q¨Ó.ˆEÜÕfÔPYÐZdÓPeÔfÓfˆDØ�T—Y‘YÑ 1Ò$äœs ;Ó/Ó0ò G�AØ,0°©G¯N©N×,?Ñ,?×,DÑ,DÓ,F�K ‘N 5Ò)ñGô #Ô"kÔY^Ô_bÐchÓ_iÓYjÔ"kÓk�
Ü!Õ!uÔ^gÐhsÓ^tÔ!uÓu�	Ø!3 §¡×!3Ñ!3Ð!F°YÐ!FÀÒ!F�Ü6@ÀÔQVÔ6W˜^Ñ.Ð]k�	Üœs ;Ó/Ó0ò H�AÜOYØ! !™¤b§g¡g§n¡nôP6¨I°a©L×,?Ñ,?×,DÑ,D×,IÑ,IÔ,KØ;DÀQ¹<ð   ‘N 5Ò)òHð	Hð" ˆÜ  Ó-ò 	=‰GˆAˆtØ�J‰J�t—~‘~ d¨E°!©H¯N©NÓ;Õ<ð	=àˆ
r$   c           	     ó²  — g }| j                   rf|D ]`  }|j                  | j                  t        j                  |j
                  j                  | j                  ¬«      |j                  «      «       Œb n|}| j                  t        j                  j                  k(  r| j                  |d   «      }nM| j                  t        j                  j                  k(  r| j                  |d   «      }n| j!                  |«      }| j                   rK|D ]F  }t        j                  |j
                  j                  | j                  ¬«      |j
                  _        ŒH |S )NrB  r   )r›  r  rY  rJ   Úfliprß   r   rR  r   rR  r†   r‹  r•  rž  Ú_prod_combiner   r§  )r!   r²   Ú	new_inputrõ  rj  s        r"   r^  zScanOps.apply_impl+  sþ   € Øˆ	Ø�<Š<Øò f�Ø× Ñ  §¡´·±¸¿
¹
¿¹ÈdÏiÉiÔ0XÐZ]×ZcÑZcÓ!dÕeñfð ˆIØ�?‰?œbŸk™k×6Ñ6Ò6Ø—+‘+˜i¨™lÓ+‰CØ�_‰_¤§¡× 9Ñ 9Ò9Ø—,‘,˜y¨™|Ó,‰Cð ×#Ñ# IÓ.ˆCØ�<Š<Øò K�Ü"$§'¡'¨#¯*©*¯/©/ÀÇ	Á	Ô"J�—
‘
•ðKàˆ
r$   )	r5   r6   r7   rG   rž  r   r§  r^  r–  r—  s   @r"   r™  r™    s   ø„ ôòaòbòö<r$   r™  c                óô   — dd„}dd„}| j                  t        d|«       | j                  t        d|«       | j                  t        j                  d|«       | j                  t        j                  d|«       y )Nc                ó:   — t        |||«      j                  | «      S r&   )r`  r]  )r²   rR  rR  rc  r.  s        r"   Ú_new_reducez'_patch_reduce_scan.<locals>._new_reduceC  s   € Ü˜˜z¨9Ó5×;Ñ;¸EÓBÐBr$   c                ó:   — t        |||«      j                  | «      S r&   )r™  r]  )r²   rR  rR  r›  r.  s        r"   Ú	_new_scanz%_patch_reduce_scan.<locals>._new_scanF  s   € Ü�t˜Z¨Ó1×7Ñ7¸Ó>Ð>r$   ÚreduceÚassociative_scan)F)r4   r†   r7  )rq  r®  r°  s      r"   Ú_patch_reduce_scanr³  ?  sY   € óCó?ð 
‡N�N”2�x Ô-Ø	‡N�N”2Ð)¨9Ô5Ø	‡N�N”2—7‘7˜H kÔ2Ø	‡N�N”2—7‘7Ð.°	Õ:r$   c                óÄ  — d„ }dd„}dd„}d„ }|j                  | d|«       |j                  | d|«       |j                  | d|«       |j                  | dt        «       |j                  | j                  d	|«       |j                  | d
t        |d¬«      «       |j                  | dt        |d¬«      «       |j                  | dt        |d¬«      «       t	        |«       y )Nc                ó>  — | j                   dk(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j	                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   d	k(  r|j                  «       S | j                   d
k(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j                  «       S | j                   dk(  r|j!                  «       S | j                   dk(  r|j#                  «       S t%        d| › d�«      ‚)NÚvoidr–   rŽ   r�   r�   r�   r’   r‘   r“   rR   ru   rw   ry   Úfp16Úbf16Úfp32Úfp64zfail to convert z to ir type)r¹  Úget_void_tyr  r
  r  r  r  r  r  r  r  r$  r  r  rý   r   r  r  r   )r!   rÝ   s     r"   Ú
_new_to_irz$_patch_lang_core.<locals>._new_to_irQ  sâ  € à�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˜&Ò Ø×&Ñ&Ó(Ð(Ø�Y‰Y˜&Ò Ø×'Ñ'Ó)Ð)Ø�Y‰Y˜&Ò Ø×(Ñ(Ó*Ð*ÜÐ+¨D¨6°Ð=Ó>Ð>r$   c                ó:   — |€d}|€d| }}n| |}}t        |||«      S )Nr   r   )rM   )Úarg1Úarg2Ústepr.  r6  Úends         r"   Ú
_new_rangez$_patch_lang_core.<locals>._new_rangey  s2   € Øˆ<ØˆDØˆ<Ø˜D�3‰Eà˜t�3ˆEÜ�U˜C Ó&Ð&r$   c                ó   — | sJ |«       ‚y r&   r=   )rû  r•  s     r"   Ú_new_static_assertz,_patch_lang_core.<locals>._new_static_assert‚  s   € ÙÐ�SÓ‰tr$   c                ó’  — t        | t        j                  «      s| S t        |t        t        f«      s|gn|}|D �cg c]*  }t        |t        j
                  «      r|j                  n|‘Œ, }}t        |«      t        dt        | j                  «      «      k7  rt        d|› �«      ‚| j                  j                  ||«       | S c c}w )Nr   z$len(values) != len(input.shape) for )r…   r†   rÜ   rB  r\  Ú	constexprr3   rN   rG  rB   r   rß   r4   )r²   r…  r¹  r0  s       r"   Ú	_set_attrz#_patch_lang_core.<locals>._set_attr…  s¢   € ä˜%¤§¡Ô+ØˆLä!+¨F´T¼5°MÔ!B�&‘ÈˆØIOÖPÀAœZ¨¬2¯<©<Ô8�!—'’'¸aÑ?ÐPˆÐPÜˆv‹;œ#˜a¤ U§[¡[Ó!1Ó2Ò2ÜÐCÀDÀ6ÐJÓKÐKØ�‰×Ñ˜d FÔ+Øˆùò	 Qs   ¼/CrM   Ústatic_rangeÚstatic_assertÚstatic_printÚto_irÚmultiple_ofztt.divisibility)r¹  Úmax_contiguousztt.contiguityÚmax_constancyztt.constancy)NN)Ú )r4   r‘  r   r   r³  )Úlangrq  r¼  rÂ  rÄ  rÇ  s         r"   Ú_patch_lang_corerÑ  O  s½   € ò$?óP'óò
ð 
‡N�N�4˜ *Ô-Ø	‡N�N�4˜¨Ô4Ø	‡N�N�4˜Ð*<Ô=Ø	‡N�N�4˜¬Ô/Ø	‡N�N�4—:‘:˜w¨
Ô3Ø	‡N�N�4˜¬°	Ð@QÔ(RÔSØ	‡N�N�4Ð)¬7°9À?Ô+SÔTØ	‡N�N�4˜¬'°)À.Ô*QÔRä�uÕr$   c                óJ  — t        «       }| j                  j                  «       D ��cg c]6  \  }}t        j                  |«      sŒ|t
        t
        j                  fv sŒ5|‘Œ8 }}}t        |«      dk\  sJ d«       ‚|D ]t  }t        |t        |«       t        |j                  t        |«       |t
        k(  rt        |j                  t        |«       t        |j                  |«       t        ||«       Œv t        t
        j                  j                  t        |«       |S c c}}w )Nr   z:triton.language must be visible from within jit'd function)r  Ú__globals__r,  r5  Úismoduler†   r7  rN   r:  Úinterpreter_builderrÜ   rÎ   rN  rÑ  Útensor_descriptor_base)ru  rq  r  r3   ÚlangsrÐ  s         r"   Ú_patch_langrØ  �  sç   € ÜÓ€EØ#%§>¡>×#7Ñ#7Ó#9×p‘x�q˜%¼W×=MÑ=MÈeÕ=TÐY^ÔceÔgi×gnÑgnÐboÒYoŠUÐp€EÑpÜˆu‹:˜Š?ÐXÐXÓXˆ?Øò &ˆÜ�tÔ0°%Ô8Ü�t—{‘{Ô$7¸Ô?Ø”2Š:Ü˜4Ÿ9™9Ô&9¸5ÔAÜ˜4Ÿ;™;¨Ô.Ü˜˜uÕ%ð&ô ”2—7‘7×1Ñ1Ô3FÈÔNØ€Lùó qs   ¨DÁDÁDc                óX   — t        | d«      r t        | «      |Ž S  t        | «      |«      S )NÚ_fields)r,   rN  )rõ  Úcontentss     r"   Ú_tuple_createrÜ  ¬  s.   € ô $+¨3°	Ô#:ˆ9Œ4�‹9�hÐÐSÀ	ÄÀSÃ	È(Ó@SÐSr$   c                óÒ  — t        | t        «      �rt        j                  t        j
                  j                  j                  | «      d «      }t        j                  }d| cxk  rdk  rn nt        j                  }nkd| cxk  rdk  rn nt        j                  }nLd| cxk  rdk  rn nt        j                  }n-d| cxk  rdk  rn nt        j                  }nt        d| › �«      ‚t        t        j                  | g|¬«      |«      }t        j                   ||«      S t#        | d	«      r‘t        j                  t        j
                  j                  j                  | «      d «      }t        t        j                  | j%                  «       gt        j                  ¬«      |«      }t        j                   ||«      S t        | t&        «      rt)        | t+        t,        | «      «      S t        | t.        «      rà| j0                  D �cg c]  }t-        |«      ‘Œ }}| j0                  d
   dk(  sJ ‚t        j2                  d«      |d
<   t5        t7        «       «      }|j9                  t-        | j:                  «      | j<                  D �cg c]  }t-        |«      ‘Œ c}|| j>                  D �cg c]  }t        j2                  |«      ‘Œ c}| j@                  ¬«      S | S c c}w c c}w c c}w )Ni   €l        l        lûÿÿÿ         l            l            zUnsupported integer value rI   Údata_ptrrd   r   )rA   rB   rC   rE   rS  )!r…   r�   r†   Ú	str_to_tyÚtritonÚruntimeÚjitÚmangle_typerJ   r’   r‘   r“   rR   r   r   r/  rÜ   r,   rÞ  r\  rÜ  ÚmapÚ_implicit_cvtr   rC   rÆ  r
   ræ   Úmake_tensor_descriptorrA   rB   rE   ra   )rõ  Útyr   rß   ÚsrC   r1  rÖ   s           r"   rå  rå  ¶  s3  € Ü�#”sÕÜ�\‰\œ&Ÿ.™.×,Ñ,×8Ñ8¸Ó=¸tÓDˆÜ—‘ˆØ�SÔ ˜5Õ Ü—H‘H‰EØ�cÔ!˜EÕ!Ü—I‘I‰EØ�sÔ"˜UÕ"Ü—H‘H‰EØ�cÔ!˜EÕ!Ü—I‘I‰EäÐ9¸#¸Ð?Ó@Ð@ÜœbŸh™h¨ u°EÔ:¸BÓ?ˆÜ�y‰y˜ Ó$Ð$Üˆs�JÔÜ�\‰\œ&Ÿ.™.×,Ñ,×8Ñ8¸Ó=¸tÓDˆÜœbŸh™h¨¯©«Ð'7¼r¿y¹yÔIÈ2ÓNˆÜ�y‰y˜ Ó$Ð$Ü	�CœÔ	Ü˜S¤#¤m°SÓ"9Ó:Ð:Ü	�CÔ)Ô	*Ø-0¯[©[Ö9¨”= Õ#Ð9ˆÐ9Ø�{‰{˜2‰ !Ò#Ð#Ð#Ü—l‘l 1“oˆ�‰Ü!Ô"4Ó"6Ó7ˆØ×.Ñ.´MÀ#Ç(Á(Ó4KØPS×PYÑPYÖ5ZÈ1´mÀAÕ6FÒ5ZÐdkàEHÇ_Á_ö<VØ@Aô =?¿L¹LÈ½Oò <VØfi×fqÑfqð /ó sð 	sð €Jùò :ùò
 6[ùò<Vs   ÈKÊK
Ê)K$c                óz   — t        | t        j                  j                  j                  «      r| j
                  S | S r&   )r…   rà  rá  râ  ÚTensorWrapperrA   )Úts    r"   Ú_unwrap_tensorrì  Ü  s*   € Ü�!”V—^‘^×'Ñ'×5Ñ5Ô6Ø�v‰vˆØ€Hr$   c                óÊ   — t        |t        j                  j                  j                  «      r4t        j                  j                  j	                  | |j
                  «      S | S r&   )r…   rà  rá  râ  rê  r   )rë  Úoriginal_tensors     r"   Ú_rewrap_tensorrï  â  sD   € Ü�/¤6§>¡>×#5Ñ#5×#CÑ#CÔDÜ�~‰~×!Ñ!×/Ñ/°°?×3HÑ3HÓIÐIØ€Hr$   c                  ó(   — e Zd Zg fd„Zd„ Zd„ Zd„ Zy)ÚGridExecutorc                ó  — ddl m} || _        || _        || _        || _        |j                  j                  «       D ��ci c]  \  }}| ||«      “Œ }}}|D �cg c]  }|j                  |«      dk(  sŒ|‘Œ c}| _	        y c c}}w c c}w )Nr   )Ú_normalize_tyrÆ  )
râ  ró  ru  Ú	arg_namesÚgridÚpre_run_hooksr9   r,  ÚgetÚ
constexprs)	r!   ru  rô  rõ  rö  ró  r¹  rç  r9   s	            r"   rG   zGridExecutor.__init__ê  s€   € Ý&àˆŒØ"ˆŒØˆŒ	Ø*ˆÔØCE×CUÑCU×C[ÑC[ÓC]×^±x°t¸R˜4¡¨rÓ!2Ñ2Ð^ˆÑ^Ø,5Öb D¸×9LÑ9LÈTÓ9RÐVaÓ9aš4Òbˆ�ùó _ùÚbs   Á BÁBÁ4Bc                óœ   ‡‡	— i Š	ˆˆ	fd„Š|D �cg c]
  } ‰|«      ‘Œ }}i }|j                  «       D ]  \  }} ‰|«      ||<   Œ ||fS c c}w )Nc                óÔ  •— t        | t        «      rt        | t        ‰| «      «      S t        | t        «      rGt	         ‰| j
                  «      | j                  | j                  | j                  | j                  «      S t        | d«      s| S t        | «      }|j                  «       j                  «       ‰vr1|j                  «       }|j                  «       ‰|j                  «       <   ‰|j                  «       j                  «          }|j                  dd¬«      }|j!                  ||j#                  «       |j%                  «       |j'                  «       «       t)        || ¬«      }|S )NrÞ  r   Úcpu)Údevice)rî  )r…   r\  rÜ  rä  r   rA   rB   rC   rE   ra   r,   rì  Úuntyped_storagerÞ  rû  Ú	new_emptyÚset_Ústorage_offsetr=  rg   rï  )rõ  Úunwrapped_argÚstorageÚcpu_argÚ_to_cpuÚstoragess       €€r"   r  z,GridExecutor._init_args_hst.<locals>._to_cpu÷  s-  ø€ Ü˜#œuÔ%Ü$ S¬#¨g°sÓ*;Ó<Ð<Ü˜CÔ!1Ô2Ü'Ù˜CŸH™HÓ%Ø—I‘IØ—K‘KØ—O‘OØ—K‘Kóð ô ˜S *Ô-Ø�
ä*¨3Ó/ˆMØ×,Ñ,Ó.×7Ñ7Ó9ÀÑIØ'×7Ñ7Ó9�Ø/6¯{©{«}�˜×)Ñ)Ó+Ñ,à˜}×<Ñ<Ó>×GÑGÓIÑJˆGØ#×-Ñ-¨a¸Ð-Ó>ˆGØ�L‰L˜ -×">Ñ">Ó"@À-×BTÑBTÓBVÐXe×XlÑXlÓXnÔoÜ$ W¸cÔBˆGØˆNr$   r+  )
r!   Úargs_devr.  rõ  Úargs_hstÚ
kwargs_hstr2   r3   r  r  s
           @@r"   Ú_init_args_hstzGridExecutor._init_args_hstô  sc   ù€ Øˆõ	ð2 -5Ö5 S‘G˜C•LÐ5ˆÐ5ð ˆ
Ø Ÿ,™,›.ò 	-‰JˆC�Ù% e›nˆJ�sŠOð	-à˜Ð#Ð#ùò 6s   �A	c                óð   ‡
‡— i Šˆ
ˆfd„Š
t        ||«      D ]  \  }} ‰
||«       Œ |j                  «       D ]  \  }}||   }	 ‰
||	«       Œ ‰j                  «       D ]  \  }}|j                  |«       Œ y )Nc                ó‚  •— t        | d«      rVt        | «      t        |«      }} | j                  «       |j                  «       f‰| j                  «       j                  «       <   y t	        | t
        «      rt        | |«      D ]  \  } } ‰| |«       Œ y t	        | t        «      r ‰| j                  |j                  «       y y )NrÞ  )	r,   rì  rý  rÞ  r…   r\  Úzipr   rA   )Úarg_devÚarg_hstÚ	_from_cpur  s     €€r"   r  z1GridExecutor._restore_args_dev.<locals>._from_cpu  s¥   ø€ Ü�w 
Ô+ä#1°'Ó#:¼NÈ7Ó<S˜�ØBI×BYÑBYÓB[Ð]d×]tÑ]tÓ]vÐAw�˜×0Ñ0Ó2×;Ñ;Ó=Ò>Ü˜G¤UÔ+Ü*-¨g°wÓ*?ò 0Ñ&�W˜gÙ˜g wÕ/ñ0ä˜GÔ%5Ô6Ù˜'Ÿ,™,¨¯©Õ5ð 7r$   )r  r,  r…  Úcopy_)r!   r  r  r.  r  r  r  r2   Ú	kwarg_devÚ	kwarg_hstr  r  s             @@r"   Ú_restore_args_devzGridExecutor._restore_args_dev  s‹   ù€ Øˆõ		6ô !$ H¨hÓ 7ò 	(ÑˆG�WÙ�g˜wÕ'ð	(ð %Ÿl™l›nò 	,‰NˆC�Ø" 3™ˆIÙ�i Õ+ð	,ð #+§/¡/Ó"3ò 	#ÑˆW�gØ�M‰M˜'Õ"ñ	#r$   c                ó®  — t        j                  | j                  «      }|j                  «       D ��ci c]  \  }}||j                  v sŒ||“Œ }}}| j                  ||«      \  }}| j                  D ]
  } ||i |¤Ž Œ t        | j                  «      }		 t        j                  | j                  g|¢­i |¤Ž}
|
j                  «       D ��ci c]!  \  }}||| j                  v r|n
t        |«      “Œ# }
}}t        | j                  «      r| j                  |
«      n| j                  }t        |«      dk  sJ d«       ‚|ddt        |«      z
  z  z   }t        j                  |Ž  	 t!        |d   «      D ]Q  }t!        |d   «      D ]>  }t!        |d   «      D ]+  }t        j#                  |||«        | j                  di |
¤Ž Œ- Œ@ ŒS 	 |	j3                  «        | j5                  ||||«       y c c}}w c c}}w # t$        $ r?}t&        j(                  j*                  j,                  r‚ t/        t1        |«      «      |‚d }~ww xY w# |	j3                  «        w xY w)Né   z#grid must have at most 3 dimensionsri  r   r   r   r=   )r5  Úgetfullargspecru  r,  r-  r	  rö  rØ  Úgetcallargsrø  rå  Úcallablerõ  rN   rÕ  rû   rM   rö   Ú	Exceptionrà  ÚknobsÚcompilationÚfront_end_debuggingr   rJ  r&  r  )r!   r  r.  Úargspecr/  r0  r  r  ÚhookÚpatch_scoper-  r¹  rõ  rõ  rÑ   rô   rõ   Úes                     r"   Ú__call__zGridExecutor.__call__1  s&  € ô ×(Ñ(¨¯©Ó1ˆØ#)§<¡<£>×G™4˜1˜a°Q¸'¿,¹,Ò5F�!�Q‘$ÐGˆÑGà#×2Ñ2°8¸VÓDÑˆ�*à×&Ñ&ò 	*ˆDÙ�(Ð)˜jÓ)ð	*ô " $§'¡'Ó*ˆð	"ô ×&Ñ& t§w¡wÐH°ÒH¸ZÑHˆDØbf×blÑblÓbn×oÑU^ÐUYÐ[^�D ¨¯©Ñ!8™#¼mÈCÓ>PÑPÐoˆDÑoä&.¨t¯y©yÔ&9�4—9‘9˜T”?¸t¿y¹yˆDÜ�t“9 ’>ÐHÐ#HÓH�>Ø˜% 1¤s¨4£y¡=Ñ1Ñ1ˆDÜ×,Ñ,¨dÑ3ð	7Ü˜t A™w›ò ,�AÜ" 4¨¡7›^ò ,˜Ü!& t¨A¡w£ò ,˜AÜ/×<Ñ<¸QÀÀ1ÔEØ#˜DŸG™G™O d›Oñ,ñ,ñ,ð ×ÑÔ!à×Ñ˜x¨°6¸:ÕFùó? Hùó pøô ò 7Ü—<‘<×+Ñ+×?Ò?ØÜ&¤t¨A£wÓ/°QÐ6ûð7ûð
 ×ÑÕ!úsI   ³G+Á
G+Â6I Ã&G1Ã2A0I Å#A"G7 Ç1I Ç7	H?È :H:È:H?È?I ÉIN)r5   r6   r7   rG   r	  r  r!  r=   r$   r"   rñ  rñ  è  s   „ à:<ó cò"$òH#ó2$Gr$   rñ  c                  ó   — e Zd Zd„ Zy)ÚASTTransformerc           	     ó   — g }|j                   D ]  }|| j                  |«      gz  }Œ t        |«      dkD  rt        d«      ‚t	        j
                  t	        j                  t	        j                  dt	        j                  «       ¬«      dt	        j                  «       ¬«      |j                  t	        j                  d¬«      gg ¬	«      |_	        |S )
Nr   z&Multiple assignments are not supportedÚinterpreter_semantic)ÚidÚctxrY  )r3   r   r'  F)r3   )Úfuncr-  Úkeywords)ÚtargetsÚvisitrN   r   ÚastÚCallÚ	AttributeÚNameÚLoadr3   ÚConstant)r!   ÚnodeÚnamesÚtargets       r"   Úvisit_AssignzASTTransformer.visit_AssignZ  s¦   € ØˆØ—l‘lò 	*ˆFØ�d—j‘j Ó(Ð)Ñ)‰Eð	*äˆu‹:˜Š>ÜÐEÓFÐFô —X‘XÜ—‘¤S§X¡XÐ1GÌSÏXÉXËZÔ%XÐ_jÜ#&§8¡8£:ô/Ø6:·j±jÄ#Ç,Á,ÐUZÔB[Ð5\ÐgiôkˆŒ
ð ˆr$   N)r5   r6   r7   r5  r=   r$   r"   r#  r#  X  s   „ ór$   r#  c                  óD   — e Zd Z e«       Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zy)	ÚFunctionRewriterc                ó<   — || _         || _        d| _        d| _        y )NrÏ  r   )ru  r.  ÚfilenameÚdef_file_lineno)r!   ru  r.  s      r"   rG   zFunctionRewriter.__init__k  s   € ØˆŒØˆŒØˆŒà$%ˆÕr$   c                óJ  — 	 t        j                  | j                  «      \  }}| j	                  «       \  | _        | _        | j                  |«      | _        | j                  |«      }| j                  |«      }| j                  |«      S # t        $ r | j                  cY S w xY wr&   )r5  Úgetsourcelinesru  r  Ú_get_jit_fn_file_liner9  r:  Ú	_find_defÚ
def_linenoÚ_prepare_sourceÚ_transform_astÚ_compile_and_exec)r!   Úlinesr  ro  Útransformed_asts        r"   Úrewrite_astzFunctionRewriter.rewrite_astr  s”   € ð	Ü×-Ñ-¨d¯g©gÓ6‰HˆE�1ð /3×.HÑ.HÓ.JÑ+ˆŒ�tÔ+ØŸ.™.¨Ó/ˆŒØ×"Ñ" 5Ó)ˆØ×-Ñ-¨cÓ2ˆØ×%Ñ% oÓ6Ð6øô ò 	Ø—7‘7ŠNð	ús   ‚"B
 Â
B"Â!B"c                óB   — ddl m}m}  | || j                  «      «      S )Nr   )Úget_jit_fn_file_lineÚJITFunction)râ  rG  rH  ru  )r!   rG  rH  s      r"   r=  z&FunctionRewriter._get_jit_fn_file_line†  s   € ß:Ù#¡K°·±Ó$8Ó9Ð9r$   c                óz   — d}t        |«      D ]*  \  }}|j                  «       j                  d«      sŒ&|dz   }Œ, |S )Nr   zdef r   )r®  ÚstripÚ
startswith)r!   rC  r?  rÂ   Úlines        r"   r>  zFunctionRewriter._find_defŠ  sD   € Øˆ
ä  Ó'ò 	#‰GˆAˆtØ�z‰z‹|×&Ñ& vÕ.Ø ™U‘
ð	#ð Ðr$   c                ór   — || j                   dz
  d  }dj                  |«      }t        j                  |«      S )Nr   rÏ  )r?  ÚjoinÚtextwrapÚdedent)r!   rC  ro  s      r"   r@  z FunctionRewriter._prepare_source’  s4   € Ø�d—o‘o¨Ñ)Ð*Ð+ˆØ�g‰g�e‹nˆÜ�‰˜sÓ#Ð#r$   c                óÚ   — t        j                  |«      }| j                  j                  |«      }t        j                  |«       | j
                  dz
  }t        j                  ||«       |S r#  )r,  ÚparseÚast_transformerr+  Úfix_missing_locationsr:  Úincrement_lineno)r!   ro  Ú
parsed_astrD  Ú
inc_linenos        r"   rA  zFunctionRewriter._transform_ast—  s[   € ô —Y‘Y˜s“^ˆ
Ø×.Ñ.×4Ñ4°ZÓ@ˆÜ×!Ñ! /Ô2Ø×)Ñ)¨AÑ-ˆ
Ü×Ñ˜_¨jÔ9ØÐr$   c                ó  — t        || j                  d¬«      }i | j                  ¥}| j                  j                  }t        «       j                  «       D ]  \  }}||vsŒ|||<   Œ t        |||«       || j                  j                     S )NÚexec)r9  Úmode)	Úcompiler9  r.  ru  rÓ  Úglobalsr,  rY  r5   )r!   rD  Úcompiled_codeÚlocal_namespaceÚ
fn_globalsr2   r3   s          r"   rB  z"FunctionRewriter._compile_and_exec¢  s€   € Ü ¸$¿-¹-ÈfÔUˆØ)˜TŸ[™[˜/ˆØ—W‘W×(Ñ(ˆ
Ü!›)Ÿ/™/Ó+ò 	(‰JˆC�Ø˜*Ò$Ø"'�
˜3’ð	(ô 	ˆ]˜J¨Ô8Ø˜tŸw™w×/Ñ/Ñ0Ð0r$   N)r5   r6   r7   r#  rS  rG   rE  r=  r>  r@  rA  rB  r=   r$   r"   r7  r7  h  s-   „ Ù$Ó&€Oò&ò7ò(:òò$ò
	ó1r$   r7  c                  óL   — e Zd ZU i Zded<   d
d„Zd„ Zd„ Zd„ Ze	d„ «       Z d„ Z
y	)ÚInterpretedFunctionzDict[Callable, Callable]Úrewritten_fnc                óò   — || _         t        |fi |¤Ž| _        || _        g | _        t        j                  |«      }|j                  j                  «       D �cg c]  }|j                  ‘Œ c}| _
        y c c}w r&   )ru  r7  Úrewriterr.  rö  r5  Ú	signatureÚ
parametersr…  r¹  rô  )r!   ru  r.  re  r0  s        r"   rG   zInterpretedFunction.__init__±  sa   € ØˆŒÜ(¨Ñ6¨vÑ6ˆŒØˆŒØˆÔä×%Ñ% bÓ)ˆ	Ø*3×*>Ñ*>×*EÑ*EÓ*GÖH Q˜!Ÿ&›&ÒHˆ�ùÒHs   ÁA4c               óx   — |ry | j                  «       } t        || j                  || j                  «      |i |¤ŽS r&   )Úrewriterñ  rô  rö  )r!   rõ  Úwarmupr-  r.  ru  s         r"   ÚrunzInterpretedFunction.runº  s;   € ÙØØ�\‰\‹^ˆØIŒ|˜B §¡°°d×6HÑ6HÓIÈ4ÐZÐSYÑZÐZr$   c                óT   — t        |«      sJ ‚| j                  j                  |«       y r&   )r  rö  r  )r!   r  s     r"   Úadd_pre_run_hookz$InterpretedFunction.add_pre_run_hookÀ  s"   € Ü˜Œ~Ðˆ~Ø×Ñ×!Ñ! $Õ'r$   c                óÆ   — | j                   | j                  vr1| j                  j                  «       | j                  | j                   <   | j                  | j                      S r&   )ru  rb  rd  rE  r    s    r"   rh  zInterpretedFunction.rewriteÄ  sJ   € Ø�7‰7˜$×+Ñ+Ñ+Ø)-¯©×)BÑ)BÓ)DˆD×Ñ˜dŸg™gÑ&Ø× Ñ  §¡Ñ)Ð)r$   c                ó.   — | j                   j                  S r&   )ru  r5   r    s    r"   r5   zInterpretedFunction.__name__É  s   € à�w‰w×ÑÐr$   c                óª   — t        | j                  «       | j                  «       }	  ||i |¤ŽS # t        $ r}t	        t        |«      «      |‚d }~ww xY wr&   )rØ  ru  rh  r  r   rJ  )r!   r-  r.  ru  r   s        r"   r!  zInterpretedFunction.__call__Í  sO   € ä�D—G‘GÔØ�\‰\‹^ˆð	3Ù�tÐ&˜vÑ&Ð&øÜò 	3Ü"¤4¨£7Ó+°Ð2ûð	3ús   §/ ¯	A¸AÁANr½  )r5   r6   r7   rb  r9   rG   rj  rl  rh  rM  r!  r=   r$   r"   ra  ra  ­  s<   … à-/€LÐ*Ó/óIò[ò(ò*ð
 ñ ó ð ó3r$   ra  )rq  r  )NÚ
__future__r   r,  rO  r5  Útypingr   r   r   r   r   rÎ   ÚnumpyrJ   rà  Útriton.languageÚlanguager†   r:   r	   Útriton.language.semanticr
   Útriton.runtime.jitr   Útriton.tools.tensor_descriptorr   Úerrorsr   Ú	functoolsr   Ú_C.libtritonr   re  r   r¯   r   r   r?   r^   ro   r   r”   r£   rÌ   rÒ   r×   Ú	vectorizer˜   r  r™   r   rR   rë  rÚ   ræ   r'  r  r  r3  r:  rN  rP  r`  r™  r³  rÑ  rØ  rÜ  rå  rÕ  r%  rì  rï  rñ  ÚNodeTransformerr#  r7  ra  r=   r$   r"   ú<module>r}     sá  ðÝ "Û 
Û Û ß 7Õ 7ã Û ã Ý Û Ý !å 3Ý .Ý ;Ý $Ý Ý 6Ý $áˆCƒL€ð ÷ð ó ð÷@ñ ÷4(ñ (ñV �$Ô÷
&ð 
&ó ð
&òò 	òò@='ò@ò
#ð ˆb�l‰l˜4¨¯©¨Ô5€Øˆb�l‰l˜4¨¯©¨Ô5€Ø�—‘˜Z°·±°Ô<€÷pñ p÷^8ñ ^8ñB ‹8€÷-ñ -ó(*ó;ó:÷.Iñ IôD].Ð%ô ].ô@;Ð#ô ;ó|;ó Kò\òTòñD )Ó*Ð Ù%Ð&9Ó:Ð òò÷mGñ mGô`�S×(Ñ(ô ÷ B1ñ B1ôJ'3˜/¨!Ñ,õ '3r$   