§
    OŠtj¤ý  ã                  óô  — U 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
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# 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„ Z0 ej1        e/ej2        g¬ ¦  «        Z3 ej1        e/ej4        g¬ ¦  «        Z5 ej1        e0ej6        g¬ ¦  «        Z7 G d!„ d"¦  «        Z8 G d#„ d$¦  «        Z9 e:¦   «         Z; e9¦   «         Z< ee<¦  «        Z=d%e>d&<    G d'„ d(¦  «        Z?dAd*„Z@dAd+„ZAdAd,„ZB G d-„ d.¦  «        ZC G d/„ d0eC¦  «        ZD G d1„ d2eC¦  «        ZEdAd3„ZFdAd4„ZGd5„ ZHd6„ ZId7„ ZJd8„ ZK G d9„ d:¦  «        ZL G d;„ d<ejM        ¦  «        ZN G d=„ d>¦  «        ZO G d?„ d@ee&         ¦  «        ZPdS )Bé    )ÚannotationsN)ÚTupleÚListÚDictÚCallableÚTypeVarÚOptional)Ú	dataclass)ÚTritonSemantic)ÚKernelInterface)ÚTensorDescriptoré   )ÚInterpreterError)Úpartialé   )Úinterpreter)Úir)Ú_tuple_createÚTc                  ór   — 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dS )Ú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.ndarrayÚdataztl.dtypeÚdtype)Údefault_factoryr   Úattrc                ó¢   — t          | j        | j        ¦  «        s4t          d| j        j        dz  › d| j        j        › d| j        › �¦  «        ‚d S )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    úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/triton/runtime/interpreter.pyÚ__post_init__zTensorHandle.__post_init__'   s~   € Ý% d¤i°´Ñ<Ô<ð 	eÝð d°T´YÔ5GÈ!Ñ5Kð dð dØ!%¤Ô!>ðdð dØW[ÔWaðdð dñ eô eð eð	eð 	eó    c                óN   — t          | j                             ¦   «         ¦  «        S ©N)Úboolr   Úallr"   s    r$   Ú__bool__zTensorHandle.__bool__,   s   € Ý�D”I—M’M‘O”OÑ$Ô$Ð$r&   c                ób   — | j         }t          |d¦  «        r|j        }t          |d¦  «        °|S )NÚ
element_ty)r   Úhasattrr-   )r#   r   s     r$   Úget_element_tyzTensorHandle.get_element_ty/   s<   € Ø”
ˆÝ�e˜\Ñ*Ô*ð 	%ØÔ$ˆEõ �e˜\Ñ*Ô*ð 	%àˆr&   c                óZ   — t          | j                             ¦   «         | j        ¦  «        S r(   )r   r   Úcopyr   r"   s    r$   ÚclonezTensorHandle.clone5   s    € Ý˜DœIŸNšNÑ,Ô,¨d¬jÑ9Ô9Ð9r&   c                ó   — || j         |<   d S r(   )r   )r#   ÚkeyÚvalues      r$   Úset_attrzTensorHandle.set_attr8   s   € ØˆŒ	�#‰ˆˆr&   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__ÚdataclassesÚfieldÚdictr   r%   r+   r/   r2   r6   © r&   r$   r   r      s¦   € € € € € € ðð ð ÐÐÑØ€O€O�OØ"�Ô"°4Ð8Ñ8Ô8€DÐ8Ð8Ð8Ñ8ðeð eð eð
%ð %ð %ðð ð ð:ð :ð :ðð ð ð ð r&   r   c                  ó   — e Zd Zd„ Zd„ ZdS )ÚBlockPointerHandlec                óZ   — || _         || _        || _        || _        || _        || _        d S r(   )ÚbaseÚshapeÚstridesÚoffsetsÚblock_shapeÚorder)r#   rC   rD   rE   rF   rG   rH   s          r$   Ú__init__zBlockPointerHandle.__init__>   s1   € ØˆŒ	ØˆŒ
ØˆŒØˆŒØ&ˆÔØˆŒ
ˆ
ˆ
r&   c                óð  — | 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                        |¦  «        }|||z  | j        |         j        z                       t          j        ¦  «        z   }||v r ||| j        |         j        k     z  |dk    z  }ŒÌt%          || j         j        j        ¦  «        }	|	|fS )Nr   ©r   r   r   )rC   r/   r!   ÚnpÚbroadcast_tor   rG   Úonesr)   ÚrangeÚlenrF   ÚarangeÚreshaperE   ÚastypeÚuint64rD   r   r   Úscalar)
r#   Úboundary_checkÚdtype_ttÚn_bytesÚ	ptrs_dataÚmasksÚdimÚ
bcast_dimsÚoffÚptrs_handles
             r$   Úmaterialize_pointersz'BlockPointerHandle.materialize_pointersF   sO  € Ø”9×+Ò+Ñ-Ô-ˆØÔ-°Ñ2ˆÝ”O D¤I¤N°DÔ4DÑEÔEˆ	Ý”˜Ô(µÐ5Ñ5Ô5ˆÝ�˜TÔ-Ñ.Ô.Ñ/Ô/ð 	Jð 	JˆCØ˜�s 4Ô#3Ñ4Ô4Ñ4ˆJØ"Ô.¨sÔ3ˆJ�s‰OØ”< Ô$Ô)­B¬I°dÔ6FÀsÔ6KÑ,LÔ,LÑL×UÒUÐV`ÑaÔaˆCØ! W¨s¡]°T´\À#Ô5FÔ5KÑ%K×$SÒ$SÕTVÔT]Ñ$^Ô$^Ñ^ˆIØ�nÐ$Ð$Ø  t¤z°#¤Ô';Ò!;Ñ<ÀÀqÂÑI�øÝ" 9¨d¬i¬oÔ.DÑEÔEˆØ˜EÐ!Ð!r&   N)r7   r8   r9   rI   r_   r?   r&   r$   rA   rA   <   s2   € € € € € ðð ð ð"ð "ð "ð "ð "r&   rA   c                  ó$   — e Zd Zdd„Zd	„ Zdd„ZdS )ÚTensorDescHandlerC   r   rD   úList[TensorHandle]rE   rG   ú	List[int]c                ót   — || _         t          |¦  «        | _        || _        || _        || _        || _        d S r(   )rC   rP   ÚndimrD   rE   rG   Úpadding)r#   rC   rD   rE   rG   rf   s         r$   rI   zTensorDescHandle.__init__X   s7   € àˆŒ	Ý˜‘J”JˆŒ	ØˆŒ
ØˆŒØ&ˆÔØˆŒˆˆr&   c                ó&  — | 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 ]1}|j                             ¦   «         |z  }|dz  dk    s
J d¦   «         ‚Œ2| j        d         j                             ¦   «         dk    s
J d	¦   «         ‚d S )
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)
rC   r   ÚitemrP   rE   re   rG   r   r-   r!   )r#   Ú	scalar_tyr    ÚstrideÚbyte_strides        r$   ÚvalidatezTensorDescHandle.validatea   s'  € ØŒyŒ~×"Ò"Ñ$Ô$ rÑ)¨QÒ.Ð.Ð.Ð0NÑ.Ô.Ð.Ý�4”<Ñ Ô  D¤IÒ-Ð-Ð-Ð-Ý�4Ô#Ñ$Ô$¨¬	Ò1Ð1Ð1Ð1ØŒy˜AŠ~ˆ~ˆ~ÐC‰~Œ~ˆ~à”I”OÔ.ˆ	ØÔ/°1Ñ4ˆØ”l 3 B 3Ô'ð 	Kð 	KˆFØ œ+×*Ò*Ñ,Ô,¨xÑ7ˆKØ Ñ# qÒ(Ð(Ð(Ð*JÑ(Ô(Ð(Ð(ØŒ|˜BÔÔ$×)Ò)Ñ+Ô+¨qÒ0Ð0Ð0Ð2OÑ0Ô0Ð0Ð0Ð0r&   rF   c                ór  — 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                        |¦  «        }|||z  | j        |         j        z                       t          j        ¦  «        z   }|d|k    z  || j        |         j        k     z  }ŒÃ|j        t          j        k    sJ ‚t'          || j        j        j        ¦  «        }	|	|fS )Nr   ri   rh   r   z*block offset start must be 16-byte alignedrK   r   )rP   re   rC   r   r-   r!   r   rL   rM   rG   rN   r)   rO   rQ   rR   rE   rS   rT   rD   r   rU   )
r#   rF   rk   r    rY   rZ   r[   r\   r]   r^   s
             r$   r_   z%TensorDescHandle.materialize_pointersn   s”  € Ý�7‰|Œ|˜tœyÒ(Ð(Ð(Ð(Ø”I”OÔ.ˆ	ØÔ/°1Ñ4ˆØ˜”Ô  8Ñ+¨rÑ1°QÒ6Ð6Ð6Ð8dÑ6Ô6Ð6å”O D¤I¤N°DÔ4DÑEÔEˆ	Ý”˜Ô(µÐ5Ñ5Ô5ˆÝ�˜TÔ-Ñ.Ô.Ñ/Ô/ð 	Fð 	FˆCØ˜�s 4Ô#3Ñ4Ô4Ñ4ˆJØ"Ô.¨sÔ3ˆJ�s‰OØ˜3”<Ô$¥r¤y°Ô1AÀ#Ô1FÑ'GÔ'GÑG×PÒPÐQ[Ñ\Ô\ˆCØ! X°¡^°d´lÀ3Ô6GÔ6LÑ%L×$TÒ$TÕUWÔU^Ñ$_Ô$_Ñ_ˆIØ˜Q #šXÑ&¨#°´
¸3´Ô0DÒ*DÑEˆEˆEØŒ¥"¤)Ò+Ð+Ð+Ð+Ý" 9¨d¬i¬oÔ.DÑEÔEˆØ˜EÐ!Ð!r&   N)rC   r   rD   rb   rE   rb   rG   rc   )rF   rb   )r7   r8   r9   rI   rn   r_   r?   r&   r$   ra   ra   V   sN   € € € € € ðð ð ð ðPð Pð Pð"ð "ð "ð "ð "ð "r&   ra   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<   dS )ÚInterpreterOptionsNzOptional[dict]Úextern_libsFr)   ÚdebugTÚsanitize_overflowzOptional[str]Úarch)Úfp8e5Úfp8e5b16Úfp8e4nvÚfp8e4b8Úfp8e4b15zTuple[str, ...]Úsupported_fp8_dtypesr?   Ú!deprecated_fp8_dot_operand_dtypesÚtf32ÚstrÚdefault_dot_input_precision)r~   Útf32x3ÚieeeÚallowed_dot_input_precisionsr   ÚintÚmax_num_imprecise_acc_defaultr   Úbackend_name)r7   r8   r9   rs   r;   rt   ru   rv   r|   r}   r€   rƒ   r…   r†   r?   r&   r$   rr   rr   �   sÂ   € € € € € € à"&€KÐ&Ð&Ð&Ñ&Ø€EÐÐÐÑØ"ÐÐ"Ð"Ð"Ñ"Ø€DÐÐÐÑØ,cÐÐcÐcÐcÑcØ9;Ð%Ð;Ð;Ð;Ñ;Ø'-ÐÐ-Ð-Ð-Ñ-Ø4NÐ ÐNÐNÐNÑNØ)*Ð!Ð*Ð*Ð*Ñ*Ø%€LÐ%Ð%Ð%Ñ%Ð%Ð%r&   rr   c                ó€   — t          |t          j        ¦  «        rdS | j        dz  }|j        }|dk     rd}||k    rdS dS )NTr   F)Ú
isinstanceÚtlÚpointer_typer    r!   )Únp_arrayÚtl_dtypeÚnp_dtype_bitwidthÚtl_dtype_bitwidths       r$   r   r   �   s[   € Ý�(�BœOÑ,Ô,ð Øˆtà Ô)¨AÑ-ÐØ Ô3Ðð ˜1ÒÐØÐàÐ,Ò,Ð,ØˆuØˆ4r&   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(   )	rL   Úuint8Úint8Úuint16Úint16Úuint32Úint32rT   Úint64rK   s    r$   Ú_get_signed_np_dtyper—   Ÿ   sW   € Ø•”ÒÐÝŒwˆØ•”	ÒÐÝŒ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          j        ¦  «        rJt          | j        t          j        ¦  «        rt          j        t          j        ¦  «        S || j                 S ||          S r(   )rˆ   r‰   rŠ   rL   r   rT   Ú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¦   «   sX  € Ý�(�BœOÑ,Ô,ð #ÝŒx�œ	Ñ"Ô"Ð"ðÝ
Œ•”�$‘”ðå
Œ
•B”H�RœZÑ(Ô(ðõ 	Œ
•B”H�RœZÑ(Ô(ðõ 	Œ
•B”H�RœZÑ(Ô(ð	õ
 	Œ•”�"œ'Ñ"Ô"ðõ 	Œ•"”(�2œ8Ñ$Ô$ðõ 	Œ•"”(�2œ8Ñ$Ô$ðõ 	Œ	•2”8�BœIÑ&Ô&ðõ 	Œ•"”(�2œ8Ñ$Ô$ðõ 	Œ	•2”8�BœIÑ&Ô&ðõ 	Œ•"”(�2œ8Ñ$Ô$ðõ 	Œ	•2”8�BœIÑ&Ô&ðõ 	Œ•R”X�bœiÑ(Ô(ðõ  	Œ•R”X�bœhÑ'Ô'ð!õ" 	Œ�œ¥¤Ñ*Ô*ð#õ$ 	Œ•r”x¥¤Ñ)Ô)ð%õ& 	Œ•r”x¥¤Ñ)Ô)ð'õ( 	Œ�œ¥¤Ñ*Ô*ð)ð €Hõ, �(�BœMÑ*Ô*ð -Ý�hÔ)­2¬?Ñ;Ô;ð 	'Ý”8�BœIÑ&Ô&Ð&Ø˜Ô+Ô,Ð,Ø�HÔÐr&   c                ó  — t          t          d|j        › �¦  «        }t          t          d|j        › �¦  «        }t          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                       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        k    rl|
|j        |j        z
  z	  d|j        z  dz
  z  }|t          j        j        k    r!|
d|j        |j        z
  dz
  z  z  }||dk    z   }|                     |¦  «        }n3|
                     |¦  «        |j        |j        z
  z  d|j        z  dz
  z  }|dk    }t          j	        |¦  «        r—||j        z	  d|z  dz
  z                       t          j        ¦  «        }|dk    }||z  }t          j
        |t          j        ¬¦  «        }d|z
  ||         |z
  z
  ||<   ||         ||         z	  d|j        ||         z
  z  z  ||<   ||j        dz
  z  ||j        z  z  |z  }|                     | j        ¦  «        S )NÚuintrK   r   r   )ÚgetattrrL   r!   Ú
frombufferÚtobytesÚfp_mantissa_widthÚexponent_biasrS   r•   ÚanyÚ
zeros_likerO   ÚmaximumÚminimumÚ_irÚROUNDING_MODEÚRTNErR   rD   )Ú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Ð#J¨+Ô*HÐ#JÐ#JÑKÔKÐÝ ¥Ð%M¨LÔ,KÐ%MÐ%MÑNÔNÐÝ”˜eŸmšm™oœoÐ5EÐFÑFÔF€IØ˜+Ô8¸1Ñ<Ñ=ÀÑE€DØ&Ô9¸KÔ<YÑYÐ\]Ñ]ÐØ(Ô;¸lÔ>\Ñ\Ð_`Ñ`ÐØ  [Ô%BÑ BÀaÑGÑH€KØÔ*€JØÔ,€KØ˜kÔ;Ñ;ÀÐFZÑAZÐ^_Ñ@_Ñ`×hÒhÕikÔiqÑrÔr€HØ !’m€OÝ	„vˆoÑÔð 6õ
 ”- 	µ´Ð:Ñ:Ô:ˆå�{Ô4Ñ5Ô5ð 	Hð 	HˆAØ%¨Ñ*¨dÑ2ˆIà&1Ô&CÀaÑ&GˆG�I ’NÑ#Ð#Ø!,°Ò!1ÐØ$%¨°Ô(@Ñ$@ˆ�Ñ!à=GÈ+Ñ=UˆÐ'¨/Ñ9Ñ:Ø(3°OÔ(DÈÐP_ÔH`Ñ(`Ø�+Ô/Ñ/°1Ñ4ñ(6ˆ�OÑ$õ ”j ¥B¤J°¸:Ñ0EÈÑ0SÐWXÐ\qÑWqÐuvÑVvÑ$wÔ$wÑxÔx€OØ%×,Ò,Ð-?Ñ@Ô@€OØ—+’+Ð0Ñ1Ô1€KØÔ%¨Ô(GÒGÐGØ)¨kÔ.KÈlÔNlÑ.lÑmØ�,Ô0Ñ0°AÑ5ñ7Ðà�CÔ-Ô2Ò2Ð2à! Q¨;Ô+HÈ<ÔKiÑ+iÐlmÑ+mÑ%nÑoˆGØ!3°wÀ²{Ñ!CÐØ/×6Ò6Ð7IÑJÔJÐÐà)×0Ò0Ð1CÑDÔDØ+Ô=ÀÔ@]Ñ]ñ_à#$¨Ô(FÑ#FÈ!Ñ"KñMÐð &¨Ò*€OÝ	„vˆoÑÔð Lð
  +Ô"?Ñ?ÀQÐJ^ÑE^ÐbcÑDcÑd×lÒlÕmoÔmuÑvÔvˆØ"*¨a¢-Ðà)Ð,CÑCˆÝ”˜i­r¬xÐ8Ñ8Ô8ˆØ"# k¡/°h¸Ô6OÐR\Ñ6\Ñ!]ˆˆoÑØ/AÀ/Ô/RÐV[Ð\kÔVlÑ/lØ�,Ô0°5¸Ô3IÑIÑJñ/LÐ˜?Ñ+à˜lÔ=ÀÑAÑBØ˜<Ô9Ñ9ñ;Ø=OñP€Fà�>Š>˜%œ+Ñ&Ô&Ð&r&   c                ó*   — t          j        | ¦  «        S r(   )ÚmathÚerf©Úxs    r$   Ú_erfrÕ     s   € åŒ8�A‰;Œ;Ðr&   c                óF   — t          | ¦  «        t          |¦  «        z  dz	  S )Né@   )r„   )ÚaÚbs     r$   Ú
_umulhi_64rÚ     s   € õ �‰FŒF•S˜‘V”V‰O Ñ"Ð"r&   )Úotypesc                  ó$   — e Zd Zed„ ¦   «         ZdS )ÚExtraFunctionsc                ój   — t          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˜Ô*×:Ò:¸5¼<ÈÐQeÑfÔfÐhnÑoÔoÐor&   N)r7   r8   r9   Ústaticmethodræ   r?   r&   r$   rÝ   rÝ     s2   € € € € € àðpð pñ „\ðpð pð pr&   rÝ   c                  ó8  — 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/„ ZDd0„ ZEd1„ ZFd2„ ZGd3„ ZHd4„ ZId5„ ZJd6„ ZKd7„ ZLd8„ ZMd9„ ZNd:„ ZOd;„ ZPd<„ ZQd=„ ZRd>„ ZSd?„ ZTd@„ ZUdA„ ZVdB„ ZWdC„ ZXdD„ ZYdE„ ZZdF„ Z[dG„ Z\dH„ Z]dI„ Z^dJ„ Z_dK„ Z`dL„ ZadM„ ZbdN„ ZcdO„ ZddP„ ZedQ„ ZfdR„ ZgdS„ ZhdT„ ZidU„ ZjdV„ ZkdW„ ZldX„ ZmdY„ ZndZ„ Zod[„ Zpd\„ Zqd]„ Zrd^„ Zsd_„ Ztd`„ Zuda„ Zvdb„ Zwdc„ Zxdd„ Zyde„ Zzdf„ Z{dg„ Z|eKZ}eKZ~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–„ Z­d—„ Z®	 d²d³d¤„Z¯d´d¨„Z°dµdª„Z±d¶d­„Z²d·d®„Z³d¯„ Z´d°S )¸ÚInterpreterBuilderÚreturnÚNonec                ó†   — d | _         t          ¦   «         | _        i | _        t          j        | j        d<   d„ | j        d<   d S )NÚconvert_custom_typesc                ó   — dS )N)r   r   r   r?   )ÚlhsTypeÚrhsTypes     r$   ú<lambda>z-InterpreterBuilder.__init__.<locals>.<lambda><  s   € ÀI€ r&   Úmin_dot_size)rv   rr   ÚoptionsÚcodegen_fnsrÝ   ræ   r"   s    r$   rI   zInterpreterBuilder.__init__7  sE   € ØˆŒ	Ý)Ñ+Ô+ˆŒØˆÔÝ3AÔ3WˆÔÐ/Ñ0Ø+MÐ+MˆÔ˜Ñ(Ð(Ð(r&   c                óÚ   — || j         d         k     st          d¦  «        ‚|| j         d         k     st          d¦  «        ‚|| j         d         k     st          d¦  «        ‚|||f| _        d S )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>  sv   € Ø�4”= Ô#Ò#Ð#ÝÐ/Ñ0Ô0Ð0Ø�4”= Ô#Ò#Ð#ÝÐ/Ñ0Ô0Ð0Ø�4”= Ô#Ò#Ð#ÝÐ/Ñ0Ô0Ð0Ø˜A˜q˜	ˆŒˆˆr&   c                ó   — |||f| _         d S r(   )rö   )r#   ÚnxÚnyÚnzs       r$   Úset_grid_dimzInterpreterBuilder.set_grid_dimG  s   € Ø˜R ˜ˆŒˆˆr&   c                ó   — t           j        S r(   )r‰   rš   r"   s    r$   Úget_half_tyzInterpreterBuilder.get_half_tyL  ó
   € ÝŒzÐr&   c                ó   — t           j        S r(   )r‰   r�   r"   s    r$   Úget_bf16_tyzInterpreterBuilder.get_bf16_tyO  ó
   € ÝŒ{Ðr&   c                ó   — t           j        S r(   )r‰   r›   r"   s    r$   Úget_float_tyzInterpreterBuilder.get_float_tyR  r  r&   c                ó   — t           j        S r(   )r‰   rœ   r"   s    r$   Úget_double_tyz InterpreterBuilder.get_double_tyU  r  r&   c                ó   — t           j        S r(   )r‰   r™   r"   s    r$   Úget_int1_tyzInterpreterBuilder.get_int1_tyX  ó	   € ÝŒwˆr&   c                ó   — t           j        S r(   )r‰   r‘   r"   s    r$   Úget_int8_tyzInterpreterBuilder.get_int8_ty[  r  r&   c                ó   — t           j        S r(   )r‰   r�   r"   s    r$   Úget_uint8_tyzInterpreterBuilder.get_uint8_ty^  ó	   € ÝŒxˆr&   c                ó   — t           j        S r(   )r‰   r“   r"   s    r$   Úget_int16_tyzInterpreterBuilder.get_int16_tya  r  r&   c                ó   — t           j        S r(   )r‰   r’   r"   s    r$   Úget_uint16_tyz InterpreterBuilder.get_uint16_tyd  ó
   € ÝŒyÐr&   c                ó   — t           j        S r(   )r‰   r•   r"   s    r$   Úget_int32_tyzInterpreterBuilder.get_int32_tyg  r  r&   c                ó   — t           j        S r(   )r‰   r”   r"   s    r$   Úget_uint32_tyz InterpreterBuilder.get_uint32_tyj  r  r&   c                ó   — t           j        S r(   )r‰   r–   r"   s    r$   Úget_int64_tyzInterpreterBuilder.get_int64_tym  r  r&   c                ó   — t           j        S r(   )r‰   rT   r"   s    r$   Úget_uint64_tyz InterpreterBuilder.get_uint64_typ  r  r&   c                ó   — t           j        S r(   )r‰   r    r"   s    r$   Úget_fp8e4nv_tyz!InterpreterBuilder.get_fp8e4nv_tys  ó
   € ÝŒ}Ðr&   c                ó   — t           j        S r(   )r‰   r¢   r"   s    r$   Úget_fp8e4b15_tyz"InterpreterBuilder.get_fp8e4b15_tyv  ó
   € ÝŒ~Ðr&   c                ó   — t           j        S r(   )r‰   r¡   r"   s    r$   Úget_fp8e4b8_tyz!InterpreterBuilder.get_fp8e4b8_tyy  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Ô2Ð2r&   c                ó,   — t          j        ||¦  «        S r(   )r‰   r£   )r#   r   rD   s      r$   Úget_block_tyzInterpreterBuilder.get_block_ty…  s   € ÝŒ}˜U EÑ*Ô*Ð*r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S ©NrK   )r   rL   ÚarrayÚbool_r‰   r™   ©r#   r5   s     r$   Úget_int1zInterpreterBuilder.get_int1ˆ  s'   € Ý�BœH e WµB´HÐ=Ñ=Ô=½r¼wÑGÔGÐGr&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  r�   r‰   r6  s     r$   Ú	get_uint8zInterpreterBuilder.get_uint8‹  ó'   € Ý�BœH e WµB´HÐ=Ñ=Ô=½r¼xÑHÔHÐHr&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  r‘   r‰   r6  s     r$   Úget_int8zInterpreterBuilder.get_int8Ž  s'   € Ý�BœH e WµB´GÐ<Ñ<Ô<½b¼gÑFÔFÐFr&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  r’   r‰   r6  s     r$   Ú
get_uint16zInterpreterBuilder.get_uint16‘  ó'   € Ý�BœH e WµB´IÐ>Ñ>Ô>ÅÄ	ÑJÔJÐJr&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  r“   r‰   r6  s     r$   Ú	get_int16zInterpreterBuilder.get_int16”  r:  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  r”   r‰   r6  s     r$   Ú
get_uint32zInterpreterBuilder.get_uint32—  r?  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  r•   r‰   r6  s     r$   Ú	get_int32zInterpreterBuilder.get_int32š  r:  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  rT   r‰   r6  s     r$   Ú
get_uint64zInterpreterBuilder.get_uint64�  r?  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  r–   r‰   r6  s     r$   Ú	get_int64zInterpreterBuilder.get_int64   r:  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  rš   r‰   r6  s     r$   Úget_fp16zInterpreterBuilder.get_fp16£  ó'   € Ý�BœH e WµB´JÐ?Ñ?Ô?ÅÄÑLÔLÐLr&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  r›   r‰   r6  s     r$   Úget_fp32zInterpreterBuilder.get_fp32¦  rL  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   r4  rœ   r‰   r6  s     r$   Úget_fp64zInterpreterBuilder.get_fp64©  rL  r&   c                óf   — t          t          j        dgt          |¦  «        ¬¦  «        |¦  «        S ©Nr   rK   )r   rL   r4  r¦   )r#   Útypes     r$   Úget_null_valuez!InterpreterBuilder.get_null_value¬  s+   € Ý�BœH a Sµ¸dÑ0CÔ0CÐDÑDÔDÀdÑKÔKÐKr&   c                ó¶   — | j         €t          d¦  «        ‚t          t          j        | j         |         gt          j        ¬¦  «        t          j        ¦  «        S )Nzgrid_idx is NonerK   )r÷   r   r   rL   r4  r•   r‰   ©r#   Úaxiss     r$   Úcreate_get_program_idz(InterpreterBuilder.create_get_program_id°  sF   € ØŒ=Ð ÝÐ/Ñ0Ô0Ð0Ý�BœH d¤m°DÔ&9Ð%:Å"Ä(ÐKÑKÔKÍRÌXÑVÔVÐVr&   c                óŠ   — t          t          j        | j        |         gt          j        ¬¦  «        t
          j        ¦  «        S r3  )r   rL   r4  rö   r•   r‰   rV  s     r$   Úcreate_get_num_programsz*InterpreterBuilder.create_get_num_programsµ  s/   € Ý�BœH d¤m°DÔ&9Ð%:Å"Ä(ÐKÑKÔKÍRÌXÑVÔVÐVr&   c                óª   — t          t          j        |j        t          ¬¦  «        t
          j        ¦  «        }d }|                      ||||||¦  «        S r3  )r   rL   Ú	ones_liker   r)   r‰   r™   Úcreate_masked_load)r#   ÚptrÚ_0Ú_1Úis_volatileÚmaskÚothers          r$   Úcreate_loadzInterpreterBuilder.create_load¹  sG   € Ý�BœL¨¬½Ð>Ñ>Ô>ÅÄÑHÔHˆØˆØ×&Ò& s¨D°%¸¸RÀÑMÔMÐMr&   c                ó¤   — t          t          j        |j        t          ¬¦  «        t
          j        ¦  «        }|                      |||d d ¦  «        S r3  )r   rL   r\  r   r)   r‰   r™   Úcreate_masked_store)r#   r^  Úvalr_  r`  rb  s         r$   Úcreate_storezInterpreterBuilder.create_store¾  s@   € Ý�BœL¨¬½Ð>Ñ>Ô>ÅÄÑHÔHˆØ×'Ò'¨¨S°$¸¸dÑCÔCÐCr&   c                ó
  — |                      ¦   «         }t          |¦  «        }|€)t          t          j        |j        |¬¦  «        |¦  «        }t          j        |j        |j        |j        |¦  «        }	t          |	|¦  «        S r3  )r/   r¦   r   rL   r¯   r   Ú_interpreterÚload)
r#   Úptrsrb  rc  Úcache_modifierÚeviction_policyra  rW   Údtype_npÚrets
             r$   r]  z%InterpreterBuilder.create_masked_loadÂ  sq   € Ø×&Ò&Ñ(Ô(ˆÝ  Ñ*Ô*ˆØˆ=Ý ¥¤¨t¬yÀÐ!IÑ!IÔ!IÈ8ÑTÔTˆEÝÔ ¤	¨4¬9°e´jÀ(ÑKÔKˆÝ˜C Ñ*Ô*Ð*r&   c                óL   — t          j        |j        |j        |j        ¦  «        S r(   )rj  Ústorer   )r#   rl  r5   rb  rm  rn  s         r$   rf  z&InterpreterBuilder.create_masked_storeÊ  s   € ÝÔ! $¤)¨U¬Z¸¼ÑCÔCÐCr&   c                ó´  — |j         j        }|j        }|t          j        k    r|t          j        k    s |t          j        k    r\|t          j        k    rLt          |j        ||d ¦  «                             t          |¦  «        ¦  «        }t          ||j        ¦  «        S t          |j         
                    t          |¦  «        ¦  «        |j        ¦  «        S r(   )r   rU   r‰   r�   r›   rÏ   r   Úviewr¦   r   rS   )r#   ÚsrcÚdst_typeÚsrc_element_typeÚdst_element_typer   s         r$   Ú	cast_implzInterpreterBuilder.cast_implÎ  s³   € Øœ9Ô+ÐØ#œ?ÐØ¥¤Ò+Ð+Ð0@ÅBÄJÒ0NÐ0NØ¥¤
Ò*Ð*Ð/?Å2Ä;Ò/NÐ/NÝ! #¤(Ð,<Ð>NÐPTÑUÔU×ZÒZÕ[hÐiqÑ[rÔ[rÑsÔsˆDÝ  h¤oÑ6Ô6Ð6å ¤§¢µ¸hÑ0GÔ0GÑ HÔ HÈ(Ì/ÑZÔZÐZr&   c                ó.   — |                       ||¦  «        S r(   ©ry  ©r#   ru  rv  s      r$   rñ   zInterpreterBuilder.<lambda>Ø  ó   € °$·.².ÀÀhÑ2OÔ2O€ r&   c                ó.   — |                       ||¦  «        S r(   r{  r|  s      r$   rñ   zInterpreterBuilder.<lambda>Ù  r}  r&   c                ó.   — |                       ||¦  «        S r(   r{  r|  s      r$   rñ   zInterpreterBuilder.<lambda>Ú  r}  r&   c                ó.   — |                       ||¦  «        S r(   r{  r|  s      r$   rñ   zInterpreterBuilder.<lambda>Û  r}  r&   c                ó.   — |                       ||¦  «        S r(   r{  r|  s      r$   rñ   zInterpreterBuilder.<lambda>Ü  s   € °·²¸sÀHÑ0MÔ0M€ r&   c                ó.   — |                       ||¦  «        S r(   r{  r|  s      r$   rñ   zInterpreterBuilder.<lambda>Ý  r}  r&   c                ó.   — |                       ||¦  «        S r(   r{  )r#   ru  rv  Ú	is_signeds       r$   rñ   zInterpreterBuilder.<lambda>Þ  s   € ¸T¿^º^ÈCÐQYÑ=ZÔ=Z€ r&   c                óÀ   — |j         j        }|j        }t          |j        |||¦  «                             t          |¦  «        ¦  «        }t          ||j        ¦  «        S r(   )r   rU   rÏ   r   rt  r¦   r   )r#   ru  rv  r¸   rw  rx  r   s          r$   rá   z"InterpreterBuilder.create_fp_to_fpà  sV   € Øœ9Ô+ÐØ#œ?ÐÝ˜cœhÐ(8Ð:JÈMÑZÔZ×_Ò_Õ`mÐnvÑ`wÔ`wÑxÔxˆÝ˜D (¤/Ñ2Ô2Ð2r&   c                óv   — t          |j                             t          |¦  «        ¦  «        |j        ¦  «        S r(   )r   r   rt  r¦   rU   r|  s      r$   Úcreate_bitcastz!InterpreterBuilder.create_bitcastæ  s*   € Ý˜CœHŸMšM­-¸Ñ*AÔ*AÑBÔBÀHÄOÑTÔTÐTr&   c                óÊ   —  ||j         |j         ¦  «        }|j        j        }t          ||¦  «        s"|                     t          |¦  «        ¦  «        }t          ||¦  «        S r(   ©r   r   rU   r   rS   r¦   r   )r#   ÚlhsÚrhsÚoprÎ   rŒ   s         r$   Ú	binary_opzInterpreterBuilder.binary_opê  s\   € Ø��C”H˜cœhÑ'Ô'ˆØ”9Ô#ˆå% f¨hÑ7Ô7ð 	<Ø—]’]¥=°Ñ#:Ô#:Ñ;Ô;ˆFå˜F HÑ-Ô-Ð-r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Úadd©r#   rŠ  r‹  s      r$   rñ   zInterpreterBuilder.<lambda>ó  s   € ¨¯ª¸¸SÅ"Ä&Ñ)IÔ)I€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Úmultiplyr‘  s      r$   rñ   zInterpreterBuilder.<lambda>ô  ó   € ¨¯ª¸¸SÅ"Ä+Ñ)NÔ)N€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Údivider‘  s      r$   rñ   zInterpreterBuilder.<lambda>õ  s   € ¨¯ª¸¸SÅ"Ä)Ñ)LÔ)L€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Úfmodr‘  s      r$   rñ   zInterpreterBuilder.<lambda>ö  ó   € ¨¯ª¸¸SÅ"Ä'Ñ)JÔ)J€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Úsubtractr‘  s      r$   rñ   zInterpreterBuilder.<lambda>÷  r•  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r“  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>ø  ó   € ¨¯ª°s¸CÅÄÑ(MÔ(M€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   r—  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>ù  s   € °·²ÀÀSÍ"Ì)Ñ1TÔ1T€ r&   c                ó.   — |                       ||¦  «        S r(   ©Úcreate_idivr‘  s      r$   rñ   zInterpreterBuilder.<lambda>ú  ó   € ¨×)9Ò)9¸#¸sÑ)CÔ)C€ r&   c                ó.   — |                       ||¦  «        S r(   r¤  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>û  r¦  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rš  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>ý  rœ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rš  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>þ  rœ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r�  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>ÿ  s   € ¨¯ª°s¸CÅÄÑ(HÔ(H€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   rž  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>   r¡  r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r�  rL   Ú
left_shiftr‘  s      r$   rñ   zInterpreterBuilder.<lambda>  s   € ¨¯ª°s¸CÅÄÑ(OÔ(O€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r�  rL   Úright_shiftr‘  s      r$   rñ   zInterpreterBuilder.<lambda>  s   € ¨¯ª¸¸SÅ"Ä.Ñ)QÔ)Q€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   r±   r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  ó   € ¨$¯.ª.¸¸cÅ2Ä:Ñ*NÔ*N€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   r±  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  r²  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r±  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  ó   € ¨T¯^ª^¸CÀÅbÄjÑ-QÔ-Q€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   r±  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  ó   € ¨D¯NªN¸3ÀÅRÄZÑ,PÔ,P€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   r°   r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  r²  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r¹  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  r²  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r¹  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>	  rµ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r¹  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>
  r·  r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Ú
less_equalr‘  s      r$   rñ   zInterpreterBuilder.<lambda>  ó   € ¨D¯NªN¸3ÀÅRÄ]Ñ,SÔ,S€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Úlessr‘  s      r$   rñ   zInterpreterBuilder.<lambda>  ó   € ¨D¯NªN¸3ÀÅRÄWÑ,MÔ,M€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Úgreater_equalr‘  s      r$   rñ   zInterpreterBuilder.<lambda>  ó   € ¨D¯NªN¸3ÀÅRÔEUÑ,VÔ,V€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Úgreaterr‘  s      r$   rñ   zInterpreterBuilder.<lambda>  r·  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r¾  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÀ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÂ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÄ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÆ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÈ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÊ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  r·  r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Úequalr‘  s      r$   rñ   zInterpreterBuilder.<lambda>  s   € ¨4¯>ª>¸#¸sÅBÄHÑ+MÔ+M€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r�  rL   Ú	not_equalr‘  s      r$   rñ   zInterpreterBuilder.<lambda>  s   € ¨4¯>ª>¸#¸sÅBÄLÑ+QÔ+Q€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÂ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÄ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÊ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  r·  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r¾  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÀ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÆ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÈ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÑ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  ó   € ¨D¯NªN¸3ÀÅRÄXÑ,NÔ,N€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÔ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  ó   € ¨D¯NªN¸3ÀÅRÄ\Ñ,RÔ,R€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÂ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÄ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÊ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  r·  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r¾  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÀ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÆ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÈ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÑ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>  rÛ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÔ  r‘  s      r$   rñ   zInterpreterBuilder.<lambda>   rÝ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r�  rL   Úbitwise_andr‘  s      r$   rñ   zInterpreterBuilder.<lambda>!  ó   € ¨¯ª°s¸CÅÄÑ(PÔ(P€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r�  rL   Úbitwise_xorr‘  s      r$   rñ   zInterpreterBuilder.<lambda>"  ræ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r�  rL   Ú
bitwise_orr‘  s      r$   rñ   zInterpreterBuilder.<lambda>#  s   €  t§~¢~°c¸3ÅÄÑ'NÔ'N€ r&   c                ó�   — t          |j        t          j        |j        |j        ¦  «        z
  |j        z  |j        j        ¦  «        S r(   )r   r   rL   r›  r   rU   r‘  s      r$   r¥  zInterpreterBuilder.create_idiv'  s9   € õ ˜SœX­¬°´¸#¼(Ñ(CÔ(CÑCÈÌÑPÐRUÔR[ÔRbÑcÔcÐcr&   c                ó$  — t          |j        j        ¦  «        }t          |j        j        ¦  «        }|j                             |¦  «        |_        |j                             |¦  «        |_        |                      ||t
          j        ¦  «        S r(   )r—   r   r   rS   r�  rL   r¯  )r#   rŠ  r‹  Ú	lhs_dtypeÚ	rhs_dtypes        r$   Úcreate_ashrzInterpreterBuilder.create_ashr-  sf   € å(¨¬¬Ñ8Ô8ˆ	Ý(¨¬¬Ñ8Ô8ˆ	Ø”8—?’? 9Ñ-Ô-ˆŒØ”8—?’? 9Ñ-Ô-ˆŒØ�~Š~˜c 3­¬Ñ7Ô7Ð7r&   c                ó  — |j         j        }|t          j        k    s|t          j        k    r2t          t          |j         |j         ¦  «        |j        j        ¦  «        S t          t          d|j	        dz  dz  › �¦  «        }|j          
                    |¦  «        }|j          
                    |¦  «        }t          j        ||¦  «        |j	        dz  z	  }t          | 
                    |¦  «        |j        j        ¦  «        S )Nr¨   r   r   )r   r   rL   r–   rT   r   Únp_umulhi_u64rU   r©   r    rS   r”  )r#   rŠ  r‹  r   Úcompute_dtypeÚlhs_dataÚrhs_dataÚret_datas           r$   Úcreate_umulhiz InterpreterBuilder.create_umulhi5  sÏ   € Ø””ˆØ•B”HÒÐ ­¬Ò 2Ð 2Ý¥¨c¬h¸¼Ñ AÔ AÀ3Ä9ÔCSÑTÔTÐTå#¥BÐ(G¨u¬~ÀÑ/AÀAÑ/EÐ(GÐ(GÑHÔHˆMØ”x—’ }Ñ5Ô5ˆHØ”x—’ }Ñ5Ô5ˆHÝ”{ 8¨XÑ6Ô6¸5¼>ÈAÑ;MÑNˆHÝ §¢°Ñ 6Ô 6¸¼	Ô8HÑIÔIÐIr&   c                óÖ   —  ||j         |j         |j         ¦  «        }|j        j        }t          ||¦  «        s"|                     t          |¦  «        ¦  «        }t          ||¦  «        S r(   r‰  )r#   rŠ  r‹  rc  rŒ  rÎ   rŒ   s          r$   Ú
ternary_opzInterpreterBuilder.ternary_opA  s`   € Ø��C”H˜cœh¨¬
Ñ3Ô3ˆØ”;Ô%ˆå% f¨hÑ7Ô7ð 	<Ø—]’]¥=°Ñ#:Ô#:Ñ;Ô;ˆFå˜F HÑ-Ô-Ð-r&   c                óF   — |                       |||t          j        ¦  «        S r(   )rø  rL   Úclip)r#   ÚargÚloÚhiÚpropagate_nanss        r$   rñ   zInterpreterBuilder.<lambda>J  s   € ¸d¿oºoÈcÐSUÐWYÕ[]Ô[bÑ>cÔ>c€ r&   c                óF   — |                       |||t          j        ¦  «        S r(   )rø  rL   Úwhere)r#   ÚcondrŠ  r‹  s       r$   rñ   zInterpreterBuilder.<lambda>K  s   € °·²ÀÀsÈCÕQSÔQYÑ1ZÔ1Z€ r&   c                ó`   — t          |j        |j        z  |j        z   |j        j        ¦  «        S r(   ©r   r   r   rU   rø   s       r$   Ú
create_fmazInterpreterBuilder.create_fmaM  s%   € Ý˜AœF Q¤V™O¨a¬fÑ4°a´g´nÑEÔEÐEr&   c                óR   — t           ||j        ¦  «        |j        j        ¦  «        S r(   r  )r#   rû  rŒ  s      r$   Úunary_opzInterpreterBuilder.unary_opQ  s!   € Ý˜B˜B˜sœx™LœL¨#¬)Ô*:Ñ;Ô;Ð;r&   c                ó   — |j         }|j        dz
  }t          t          d|j        › �¦  «        }|j                             |¦  «        }d|z  dz
  }||z                       t          |¦  «        ¦  «        }t          ||j         j        ¦  «        S )Nr   r¨   )	r   r!   r©   rL   r   rt  r¦   r   rU   )r#   rû  rW   Úmask_bitwidthÚnp_uint_dtyper   rb  rp  s           r$   Úcreate_fabszInterpreterBuilder.create_fabsT  s‡   € à”9ˆØ Ô3°aÑ7ˆÝ¥Ð$H¨8Ô+FÐ$HÐ$HÑIÔIˆØŒx�}Š}˜]Ñ+Ô+ˆØ�]Ñ" aÑ'ˆØ�d‰{× Ò ¥¨xÑ!8Ô!8Ñ9Ô9ˆÝ˜C ¤Ô!1Ñ2Ô2Ð2r&   c                óB   — |                       |t          j        ¦  «        S r(   )r  rL   Úcos©r#   rû  s     r$   rñ   zInterpreterBuilder.<lambda>^  ó   €  4§=¢=°µb´fÑ#=Ô#=€ r&   c                óB   — |                       |t          j        ¦  «        S r(   )r  rL   Úexpr  s     r$   rñ   zInterpreterBuilder.<lambda>_  r  r&   c                óB   — |                       |t          j        ¦  «        S r(   )r  rL   Úexp2r  s     r$   rñ   zInterpreterBuilder.<lambda>`  ó   €  D§M¢M°#µr´wÑ$?Ô$?€ r&   c                óB   — |                       |t          j        ¦  «        S r(   )r  rL   Úabsr  s     r$   rñ   zInterpreterBuilder.<lambda>a  s   €  D§M¢M°#µr´vÑ$>Ô$>€ r&   c                óB   — |                       |t          j        ¦  «        S r(   )r  rL   Úfloorr  s     r$   rñ   zInterpreterBuilder.<lambda>b  s   €  T§]¢]°3½¼Ñ%AÔ%A€ r&   c                óB   — |                       |t          j        ¦  «        S r(   )r  rL   Úceilr  s     r$   rñ   zInterpreterBuilder.<lambda>c  r  r&   c                óB   — |                       |t          j        ¦  «        S r(   )r  rL   Úlogr  s     r$   rñ   zInterpreterBuilder.<lambda>d  r  r&   c                óB   — |                       |t          j        ¦  «        S r(   )r  rL   Úlog2r  s     r$   rñ   zInterpreterBuilder.<lambda>e  r  r&   c                óB   — |                       |t          j        ¦  «        S r(   ©r  rL   Úsqrtr  s     r$   rñ   zInterpreterBuilder.<lambda>f  s   € ¨D¯MªM¸#½r¼wÑ,GÔ,G€ r&   c                óB   — |                       |t          j        ¦  «        S r(   r  r  s     r$   rñ   zInterpreterBuilder.<lambda>g  r  r&   c                óB   — |                       |t          j        ¦  «        S r(   )r  rL   Úsinr  s     r$   rñ   zInterpreterBuilder.<lambda>h  r  r&   c                óº   — |j         j        t          j        k    rt	          |j         ¦  «        nt          |j         ¦  «        }t          ||j        j        ¦  «        S r(   )r   r   rL   r›   Únp_erf_fp32Únp_erf_fp64r   rU   )r#   rû  rp  s      r$   Ú
create_erfzInterpreterBuilder.create_erfj  sG   € Ø'*¤x¤~½¼Ò'CÐ'C�k˜#œ(Ñ#Ô#Ð#ÍÐUXÔU]ÑI^ÔI^ˆÝ˜C ¤Ô!1Ñ2Ô2Ð2r&   c                ój   — t          dt          j        |j        ¦  «        z  |j        j        ¦  «        S ©Nr   )r   rL   r   r   r   rU   r  s     r$   Úcreate_rsqrtzInterpreterBuilder.create_rsqrtn  s(   € Ý˜A¥¤¨¬Ñ 1Ô 1Ñ1°3´9Ô3CÑDÔDÐDr&   c                óf   — t          |j                             |¦  «        |j        j        ¦  «        S r(   )r   r   rR   r   rU   )r#   rû  rD   Úallow_reorders       r$   rñ   zInterpreterBuilder.<lambda>r  s(   € ½\È#Ì(×JZÒJZÐ[`ÑJaÔJaÐcfÔclÔcsÑ=tÔ=t€ r&   c                óf   — t          t          j        |j        |¦  «        |j        j        ¦  «        S r(   )r   rL   Ú	transposer   r   rU   )r#   rû  Úperms      r$   Úcreate_transzInterpreterBuilder.create_transt  s%   € Ý�BœL¨¬°4Ñ8Ô8¸#¼)Ô:JÑKÔKÐKr&   c                ó<  — |j         }|j         }|j        j        dk    r|j                             ¦   «         s)|j        j        dk    r•|j                             ¦   «         r|t	          ||j        t
          j        d ¦  «                             t          j        ¦  «        }t	          ||j        t
          j        d ¦  «                             t          j        ¦  «        }t          t          j
        |||j         j        ¬¦  «        |j         z   |j        j        ¦  «        S )Nr   rK   )r   r   r!   Úis_floatingrÏ   r‰   rš   rt  rL   r   ÚmatmulrU   )r#   rØ   rÙ   ÚdÚinput_precisionÚmax_num_imprecise_accÚa_dataÚb_datas           r$   Ú
create_dotzInterpreterBuilder.create_dotw  s×   € Ø”ˆØ”ˆØŒGÔ&¨!Ò+Ð+°´×0CÒ0CÑ0EÔ0EÐ+ØŒGÔ&¨!Ò+Ð+°´×0CÒ0CÑ0EÔ0EÐ+Ý# F¨A¬GµR´ZÀÑFÔF×KÒKÍBÌJÑWÔWˆFÝ# F¨A¬GµR´ZÀÑFÔF×KÒKÍBÌJÑWÔWˆFÝ�BœI f¨f¸A¼F¼LÐIÑIÔIÈAÌFÑRÐTUÔT[ÔTbÑcÔcÐcr&   c                ót   — t          t          j        ||t          j        ¬¦  «        t          j        ¦  «        S r3  )r   rL   rQ   r•   r‰   )r#   Úret_tyÚstartÚstops       r$   Úcreate_make_rangez$InterpreterBuilder.create_make_range€  s'   € Ý�BœI e¨T½¼ÐBÑBÔBÅBÄHÑMÔMÐMr&   c                ó  — |€8t          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        ¦  «                             ¦   «         z  cc<   t          |t
          j        ¦  «        S )NrK   r   )ÚbinsrO   Úweights)r   rL   r\  r   r)   r‰   r™   r   r   r¯   Ú	histogramÚlogical_notÚsumr•   )r#   r   r@  rb  Údummy_weightsrB  s         r$   Úcreate_histogramz#InterpreterBuilder.create_histogramƒ  sÌ   € Øˆ<Ý¥¤¨T¬Y½dÐ CÑ CÔ CÅRÄWÑMÔMˆDõ œ T¤Y°d´i´oÐFÑFÔFˆõ Œx˜œ	 4¤9­b¬m¸D¼IÑ.FÔ.FÑGÔGˆÝ”L ¨D¸¸D¸	È=ÐYÑYÔYÐZ[Ô\ˆ	à�!ˆˆŒ�œ t¤yÑ1Ô1×5Ò5Ñ7Ô7Ñ7ˆˆ‰Ý˜I¥r¤xÑ0Ô0Ð0r&   c                ót   — t          t          j        |j        |j        |¬¦  «        |j        j        ¦  «        S )N©rW  )r   rL   Útake_along_axisr   r   rU   )r#   ru  ÚindicesrW  s       r$   Úcreate_gatherz InterpreterBuilder.create_gather•  s/   € Ý�BÔ.¨s¬x¸¼ÈDÐQÑQÔQÐSVÔS\ÔScÑdÔdÐdr&   c                óâ   — |                      ¦   «         }|j        }t          d|dz  ¦  «        }t          |j        ||j                             t          j        ¦  «        z  z   |j        ¦  «        S )Nr   r   )	r/   r!   Úmaxr   r   rS   rL   rT   r   )r#   r^  ÚoffsetrW   Úelement_bitwidthÚelement_bytewidths         r$   Úcreate_addptrz InterpreterBuilder.create_addptrš  se   € Ø×%Ò%Ñ'Ô'ˆØ#Ô6Ðå Ð#3°qÑ#8Ñ9Ô9ÐÝ˜CœHÐ'8¸6¼;×;MÒ;MÍbÌiÑ;XÔ;XÑ'XÑXÐZ]ÔZcÑdÔdÐdr&   c                óò  — |                      |¦  «        \  }}|                     ¦   «         }	t          |	¦  «        }
|€d }nž|t          j        j        k    r*t          t          j        |j	        |
¬¦  «        |	¦  «        }n_|t          j        j
        k    r8t          t          j        |j	        t          d¦  «        |
¬¦  «        |	¦  «        }nt          d|› �¦  «        ‚|                      ||||||¦  «        S )NrK   Únanzunsupported padding option )r_   r/   r¦   r²   ÚPADDING_OPTIONÚPAD_ZEROr   rL   r¯   r   ÚPAD_NANÚ	full_likeÚfloatr   r]  )r#   r^  rV   Úpadding_optionrm  rn  ra  rl  rZ   rW   ro  rc  s               r$   Úcreate_tensor_pointer_loadz-InterpreterBuilder.create_tensor_pointer_load¡  sé   € à×.Ò.¨~Ñ>Ô>‰ˆˆeØ×&Ò&Ñ(Ô(ˆÝ  Ñ*Ô*ˆØÐ!ØˆEˆEØ�sÔ1Ô:Ò:Ð:Ý ¥¤¨t¬yÀÐ!IÑ!IÔ!IÈ8ÑTÔTˆEˆEØ�sÔ1Ô9Ò9Ð9Ý ¥¤¨d¬i½¸u¹¼ÈXÐ!VÑ!VÔ!VÐX`ÑaÔaˆEˆEåÐK¸>ÐKÐKÑLÔLÐLØ×&Ò& t¨U°E¸>È?Ð\gÑhÔhÐhr&   c                ód   — |                      |¦  «        \  }}|                      |||||¦  «        S r(   ©r_   rf  )r#   r^  r5   rV   rm  rn  rl  rZ   s           r$   Úcreate_tensor_pointer_storez.InterpreterBuilder.create_tensor_pointer_store°  s5   € Ø×.Ò.¨~Ñ>Ô>‰ˆˆeØ×'Ò'¨¨e°U¸NÈOÑ\Ô\Ð\r&   c                óf   — t          t          j        |j        |¦  «        |j        j        ¦  «        S r(   )r   rL   Úexpand_dimsr   r   rU   )r#   rû  rW  s      r$   Úcreate_expand_dimsz%InterpreterBuilder.create_expand_dims´  s%   € Ý�BœN¨3¬8°TÑ:Ô:¸C¼IÔ<LÑMÔMÐMr&   c                óf   — t          t          j        |j        |¦  «        |j        j        ¦  «        S r(   )r   rL   rM   r   r   rU   )r#   rû  rD   s      r$   Úcreate_broadcastz#InterpreterBuilder.create_broadcast·  s%   € Ý�BœO¨C¬H°eÑ<Ô<¸c¼iÔ>NÑOÔOÐOr&   c                ór   — t          t          j        |j        |j        g¦  «        |j        j        ¦  «        S r(   )r   rL   Úconcatenater   r   rU   r‘  s      r$   Ú
create_catzInterpreterBuilder.create_catº  s*   € Ý�BœN¨C¬H°c´hÐ+?Ñ@Ô@À#Ä)ÔBRÑSÔSÐSr&   c                óv   — t          t          j        |j        |j        gd¬¦  «        |j        j        ¦  «        S )Nri   rH  )r   rL   Ústackr   r   rU   r‘  s      r$   Úcreate_joinzInterpreterBuilder.create_join½  s/   € å�BœH c¤h°´Ð%9ÀÐCÑCÔCÀSÄYÔEUÑVÔVÐVr&   c                ó–   — t          |j        d         |j        j        ¦  «        t          |j        d         |j        j        ¦  «        fS )N).r   ).r   r  )r#   rg  s     r$   Úcreate_splitzInterpreterBuilder.create_splitÁ  s<   € å˜SœX fÔ-¨s¬yÔ/?Ñ@Ô@Å,ÈsÌxÐX^ÔO_ÐadÔajÔaqÑBrÔBrÐsÐsr&   c           	     ór  — |j         }t          |j        t          j        ¦  «        rLt          t          j        ||j        d         t          |j        ¦  «        ¬¦  «        |j        j
        ¦  «        S t          t          j        ||j        t          |j        ¦  «        ¬¦  «        |j        j
        ¦  «        S rR  )rD   rˆ   r   r‰   r£   r   rL   Úfullr   r¦   rU   )r#   r;  rû  rD   s       r$   Úcreate_splatzInterpreterBuilder.create_splatÅ  sŽ   € Ø”ˆÝ�c”i¥¤Ñ/Ô/ð 	lÝ¥¤¨¨s¬x¸¬{Å-ÐPSÔPYÑBZÔBZÐ [Ñ [Ô [Ð]`Ô]fÔ]mÑnÔnÐnå¥¤¨¨s¬x½}ÈSÌYÑ?WÔ?WÐ XÑ XÔ XÐZ]ÔZcÔZjÑkÔkÐkr&   c           	     óš   — t          t          j        d|j        d         t	          |j        ¦  «        ¬¦  «        |j        j        ¦  «        S )N©r   r   rK   )r   rL   rl  r   r¦   r   rU   r  s     r$   Úcreate_unsplatz!InterpreterBuilder.create_unsplatÌ  s:   € Ý�BœG E¨3¬8°A¬;½mÈCÌIÑ>VÔ>VÐWÑWÔWÐY\ÔYbÔYiÑjÔ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   rj  Ú
atomic_casr   r   rU   )r#   r^  Úcmprg  ÚsemÚscopes         r$   Úcreate_atomic_casz$InterpreterBuilder.create_atomic_casÏ  sc   € Ø�dÔ4Ð4Ð4ÝÐ:°SÐ:Ð:Ñ;Ô;Ð;ØÔ,¨SÔ1ˆÝ�LÔ3°C´H¸c¼hÈÌÐRUÑVÔVÐX[ÔXaÔXhÑiÔiÐir&   c           	     ó   — || j         vrt          d|› �¦  «        ‚|| j        vrt          d|› �¦  «        ‚| j         |         }| j        |         }t          t	          j        ||j        |j        |j        |¦  «        |j        j        ¦  «        S )Nzunsupported rmwOp rr  )	Úir_rmw_op_to_interpreter_rmw_opr   rs  r   rj  Ú
atomic_rmwr   r   rU   )r#   ÚrmwOpr^  rg  rb  rv  rw  s          r$   Úcreate_atomic_rmwz$InterpreterBuilder.create_atomic_rmwÕ  s—   € Ø˜Ô<Ð<Ð<ÝÐ9°%Ð9Ð9Ñ:Ô:Ð:Ø�dÔ4Ð4Ð4ÝÐ:°SÐ:Ð:Ñ;Ô;Ð;ØÔ4°UÔ;ˆØÔ,¨SÔ1ˆÝ�LÔ3°E¸3¼8ÀSÄXÈtÌyÐZ]Ñ^Ô^Ð`cÔ`iÔ`pÑqÔ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ÔYÐYr&   c                ó    — t          d¦  «        ‚)Nz,inline_asm not supported in interpreter moder  )r#   Ú	inlineAsmÚconstraintsÚvaluesrS  r†  Úpacks          r$   Úcreate_inline_asmz$InterpreterBuilder.create_inline_asmá  ó   € Ý!Ð"PÑQÔ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 ¬
¦  «         d S d S )Nú(r   z, r   r   ú)ú r*   c                ó   — d| d›�S )NÚ0xÚ02xr?   rÓ   s    r$   rñ   z1InterpreterBuilder.create_print.<locals>.<lambda>í  s   € ¸LÀ¸L¸L¸L€ r&   )Ú	formatter)r÷   rL   Úset_printoptionsÚprintr   )r#   ÚprefixÚhexr‹  ÚisSignedÚmsgr5   s          r$   Úcreate_printzInterpreterBuilder.create_printä  sÔ   € ð
 N�$”- Ô"ÐMÐM d¤m°AÔ&6ÐMÐM¸$¼-ÈÔ:JÐMÐMÐMˆØð 	 Ø�<�v�<�<ÑˆCØð 	KÝÔ¨5Ð2HÐ2HÐ*IÐJÑJÔJÐJØð 	*ð 	*ˆEÝ�#Ð(˜EœJÐ(Ð(Ñ(Ñ)Ô)Ð)Ð)Øð 	0ÝÔ¨$Ð/Ñ/Ô/Ð/Ð/Ð/ð	0ð 	0r&   c                ó    — |sJ |› ¦   «         ‚d S r(   r?   )r#   Ú	conditionÚmessages      r$   Úcreate_assertz InterpreterBuilder.create_assertó  s   € àÐ&Ð&˜W˜,Ñ&Ô&ˆyÐ&Ð&r&   c                ó   — |s
J d¦   «         ‚d S )NzAssume failedr?   )r#   rŸ  s     r$   Úcreate_assumez InterpreterBuilder.create_assume÷  s   € ØÐ)Ð)˜/Ñ)Ô)ˆyÐ)Ð)r&   c                ó   — d S r(   r?   r"   s    r$   Úcreate_barrierz!InterpreterBuilder.create_barrierú  s   € àˆr&   c                óB   — d„ |D ¦   «         }t          ||||||¦  «        S )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS r?   ©r2   ©Ú.0rN  s     r$   ú
<listcomp>z<InterpreterBuilder.create_make_block_ptr.<locals>.<listcomp>   s    € Ð<Ð<Ð<¨&�v—|’|‘~”~Ð<Ð<Ð<r&   )rA   )r#   rC   rD   rE   rF   rG   rH   Únew_offsetss           r$   Úcreate_make_block_ptrz(InterpreterBuilder.create_make_block_ptrþ  s.   € à<Ð<°GÐ<Ñ<Ô<ˆÝ! $¨¨w¸À[ÐRWÑXÔXÐXr&   c                ót  — t          |j        ¦  «        t          |¦  «        k    rt          d¦  «        ‚d„ |j        D ¦   «         }t          |j        |j        |j        ||j        |j        ¦  «        }t          t          |¦  «        ¦  «        D ](}|j        |         xj
        ||         j
        z  c_
        Œ)|S )Nz len(ptr.offsets) != len(offsets)c                ó6   — g | ]}|                      ¦   «         ‘ŒS r?   r¨  r©  s     r$   r«  z5InterpreterBuilder.create_advance.<locals>.<listcomp>  s    € Ð@Ð@Ð@¨&�v—|’|‘~”~Ð@Ð@Ð@r&   )rP   rF   r   rA   rC   rD   rE   rG   rH   rO   r   )r#   r^  rF   r¬  rp  rÅ   s         r$   Úcreate_advancez!InterpreterBuilder.create_advance  s«   € ÝˆsŒ{ÑÔ�s 7™|œ|Ò+Ð+ÝÐ?Ñ@Ô@Ð@à@Ð@°C´KÐ@Ñ@Ô@ˆÝ  ¤¨3¬9°c´kÀ;ÐPSÔP_ÐadÔajÑkÔkˆÝ•s˜7‘|”|Ñ$Ô$ð 	3ð 	3ˆAØŒK˜ŒNÐÔ 7¨1¤:¤?Ñ2ÐÔÐØˆ
r&   ÚzerorC   r   rD   rb   rE   Útensor_shaperc   r„  r)   rf   r   c                óT   — t          |||||¦  «        }|                     ¦   «          |S r(   )ra   rn   )r#   rC   rD   rE   r²  r„  rf   Údescs           r$   Úcreate_make_tensor_descriptorz0InterpreterBuilder.create_make_tensor_descriptor  s)   € å  e¨W°lÀGÑLÔLˆØ�Š‰ŒˆØˆr&   r´  ra   rJ  c                ó&  — t          |t          ¦  «        sJ ‚|                     |¦  «        \  }}|                     ¦   «         }t	          |¦  «        }|j        }	|	t          j        j        k    r*t          t          j        |j        |¬¦  «        |¦  «        }
n_|	t          j        j        k    r8t          t          j        |j        t          d¦  «        |¬¦  «        |¦  «        }
nt!          d|	› �¦  «        ‚|                      |||
||d¬¦  «        S )NrK   rS  zunsupported padding F)rm  rn  ra  )rˆ   ra   r_   r/   r¦   rf   r²   rT  rU  r   rL   r¯   r   rV  rW  rX  r   r]  )r#   r´  rJ  rm  rn  rl  rb  rW   ro  rf   rc  s              r$   Úcreate_descriptor_loadz)InterpreterBuilder.create_descriptor_load  s	  € å˜$Õ 0Ñ1Ô1Ð1Ð1Ð1Ø×.Ò.¨wÑ7Ô7‰
ˆˆdØ×&Ò&Ñ(Ô(ˆÝ  Ñ*Ô*ˆØ”,ˆØ•cÔ(Ô1Ò1Ð1Ý ¥¤¨t¬yÀÐ!IÑ!IÔ!IÈ8ÑTÔTˆEˆEØ�Ô*Ô2Ò2Ð2Ý ¥¤¨d¬i½¸u¹¼ÈXÐ!VÑ!VÔ!VÐX`ÑaÔaˆEˆEåÐ=°GÐ=Ð=Ñ>Ô>Ð>Ø×&Ò& t¨T°5ÈØ7FÐTYð 'ñ [ô [ð 	[r&   r5   c                ód   — |                      |¦  «        \  }}|                      |||d d ¦  «        S r(   r\  )r#   r´  r5   rJ  rl  rb  s         r$   Úcreate_descriptor_storez*InterpreterBuilder.create_descriptor_store#  s5   € Ø×.Ò.¨wÑ7Ô7‰
ˆˆdØ×'Ò'¨¨e°T¸4ÀÑFÔFÐFr&   Ú	x_offsetsÚy_offsetc                ó„  — |j         j        j        }t          |¦  «        }t	          j        |j        j        d         |j        d         g|¬¦  «        }d }d }	t          |j        ¦  «        D ]E\  }
}t          |t          j        ¦  «        |g}|                      ||||	¦  «        j        ||
d d …f<   ŒFt          ||¦  «        S )Nr   ri   rK   )rC   r   r-   r¦   rL   Úzerosr   rD   rG   Ú	enumerater   r‰   r•   r·  )r#   r´  rº  r»  rS  r   Únp_dtypeÚresultrm  rn  rÅ   Úx_offsetrJ  s                r$   Úcreate_descriptor_gatherz+InterpreterBuilder.create_descriptor_gather'  sÁ   € Ø”	”Ô*ˆÝ  Ñ'Ô'ˆÝ”˜9œ>Ô/°Ô2°DÔ4DÀRÔ4HÐIÐQYÐZÑZÔZˆØˆØˆÝ$ Y¤^Ñ4Ô4ð 	lð 	l‰KˆAˆxÝ# H­b¬hÑ7Ô7¸ÐBˆGØ×6Ò6°t¸WÀnÐVeÑfÔfÔkˆF�1�a�a�a�4‰LˆLÝ˜F EÑ*Ô*Ð*r&   c                óà   — t          |j        ¦  «        D ]X\  }}t          |j        |         |j        ¦  «        }t          |t          j        ¦  «        |g}|                      |||¦  «         ŒYd S r(   )r¾  r   r   r   r‰   r•   r¹  )	r#   r´  r5   rº  r»  rÅ   rÁ  ÚslicerJ  s	            r$   Úcreate_descriptor_scatterz,InterpreterBuilder.create_descriptor_scatter2  sq   € å$ Y¤^Ñ4Ô4ð 	?ð 	?‰KˆAˆxÝ  ¤¨A¤°´Ñ<Ô<ˆEÝ# H­b¬hÑ7Ô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   ri   rK   Tzunsupported type )r¦   Únamer   rL   rl  rU   r5  Ú	TypeError)r#   rS  Únp_types      r$   Úget_all_ones_valuez%InterpreterBuilder.get_all_ones_value9  s†   € Ý Ñ%Ô%ˆØ�G”LÐ Ð Ý¥¤¨¨2°WÐ =Ñ =Ô =¸t¼{ÑKÔKÐKØ�œÒ Ð Ý¥¤¨¨4°wÐ ?Ñ ?Ô ?ÀÄÑMÔMÐMåÐ6°Ð6Ð6Ñ7Ô7Ð7r&   N©rê   rë   )r±  )rC   r   rD   rb   rE   rb   r²  rc   r„  r)   rf   r   )r´  ra   rJ  rb   )r´  ra   r5   r   rJ  rb   )r´  ra   rº  r   r»  r   )r´  ra   r5   r   rº  r   r»  r   )µr7   r8   r9   r²   ÚMEM_SEMANTICÚACQUIRErj  ÚRELEASEÚRELAXEDÚACQUIRE_RELEASErs  Ú	ATOMIC_OPÚADDÚRMW_OPÚFADDÚMINÚUMINÚMAXÚUMAXÚANDÚORÚXORÚXCHGrz  rI   rû   r   r  r  r  r
  r  r  r  r  r  r  r  r  r  r!  r$  r'  r)  r+  r/  r1  r7  r9  r<  r>  rA  rC  rE  rG  rI  rK  rN  rP  rT  rX  rZ  rd  rh  r]  rf  ry  Ú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_reshaper0  r9  r>  rF  rK  rQ  rZ  r]  r`  rb  re  rh  rj  rm  rp  rx  r}  r‡  r�  r�  r¡  r£  r¥  r­  r°  rµ  r·  r¹  rÂ  rÅ  rÊ  r?   r&   r$   ré   ré   "  s	  € € € € € àÔÔ  ,Ô";Ô"CØÔÔ  ,Ô";Ô"CØÔÔ  ,Ô";Ô"CØÔÔ(¨,Ô*CÔ*Sð	!Ðð 	ŒÔ˜<Ô.Ô2ØŒÔ˜LÔ/Ô4ØŒÔ˜<Ô.Ô2ØŒÔ˜LÔ/Ô4ØŒÔ˜<Ô.Ô2ØŒÔ˜LÔ/Ô4ØŒÔ˜<Ô.Ô2ØŒÔ˜,Ô-Ô0ØŒÔ˜<Ô.Ô2ØŒÔ˜LÔ/Ô4ð'Ð#ðNð Nð Nð Nð"ð "ð "ð%ð %ð %ð
ð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð3ð 3ð 3ð+ð +ð +ðHð Hð HðIð Ið IðGð Gð GðKð Kð KðIð Ið IðKð Kð KðIð Ið IðKð Kð KðIð Ið IðMð Mð MðMð Mð MðMð Mð MðLð Lð LðWð Wð Wð
Wð Wð WðNð Nð Nð
Dð Dð Dð+ð +ð +ðDð Dð Dð[ð [ð [ð PÐO€OØOÐO€OØOÐO€OØOÐO€OØMÐM€MØOÐO€OØZÐZ€Oð3ð 3ð 3ðUð Uð Uð.ð .ð .ð JÐI€KØNÐN€KØLÐL€KØJÐJ€KØNÐN€KØMÐM€JØTÐTÐØCÐC€KØCÐC€KàJÐJ€KØJÐJ€KØHÐH€JØMÐM€JØOÐO€JØQÐQ€KØNÐN€LØNÐN€LØQÐQ€OØPÐP€NØNÐN€LØNÐN€LØQÐQ€OØPÐP€NØSÐS€NØMÐM€NØVÐV€NØPÐP€NØSÐS€NØMÐM€NØVÐV€NØPÐP€NØMÐM€MØQÐQ€MØMÐM€NØPÐP€NØSÐS€NØVÐV€NØNÐN€NØRÐR€NØMÐM€NØPÐP€NØSÐS€NØVÐV€NØNÐN€NØRÐR€NØPÐP€JØPÐP€JØNÐN€IØ&ÐØ&Ððdð dð dð8ð 8ð 8ð	Jð 	Jð 	Jð.ð .ð .ð dÐc€MØZÐZ€MðFð Fð Fð<ð <ð <ð3ð 3ð 3ð >Ð=€JØ=Ð=€JØ?Ð?€KØ>Ð>€KØAÐA€LØ?Ð?€KØ=Ð=€JØ?Ð?€KØGÐGÐØ?Ð?€KØ=Ð=€Jð3ð 3ð 3ðEð Eð Eð uÐt€NðLð Lð Lðdð dð dðNð Nð Nð1ð 1ð 1ð$eð eð eð
eð eð eðið ið ið]ð ]ð ]ðNð Nð NðPð Pð PðTð Tð TðWð Wð Wðtð tð tðlð lð lðkð kð kðjð jð jðrð rð rðZð Zð ZðRð Rð Rð0ð 0ð 0ð'ð 'ð 'ð*ð *ð *ðð ð ðYð Yð Yð
ð ð ð `fðð ð ð ð ð[ð [ð [ð [ð Gð Gð Gð Gð	+ð 	+ð 	+ð 	+ð?ð ?ð ?ð ?ð8ð 8ð 8ð 8ð 8r&   ré   r   Úinterpreter_semanticc                  ó*   — e Zd ZdZdd„Zdd
„Zdd„ZdS )Ú_LangPatchScopez2Tracks patched attributes so they can be restored.rê   rë   c                ó   — g | _         d S r(   )Ú_changesr"   s    r$   rI   z_LangPatchScope.__init__K  s   € Ø:<ˆŒˆˆr&   ÚobjÚobjectrÇ  r   r5   c                óŽ   — t          ||t          ¦  «        }| j                             |||f¦  «         t	          |||¦  «         d S r(   )r©   Ú_MISSINGr(  ÚappendÚsetattr)r#   r)  rÇ  r5   Úoriginals        r$   r6   z_LangPatchScope.set_attrN  sH   € Ý˜3 ¥hÑ/Ô/ˆØŒ×Ò˜c 4¨Ð2Ñ3Ô3Ð3Ý��T˜5Ñ!Ô!Ð!Ð!Ð!r&   c                ó¶   — | j         rQ| j                              ¦   «         \  }}}|t          u rt          ||¦  «         nt	          |||¦  «         | j         °Od S d S r(   )r(  Úpopr,  Údelattrr.  )r#   r)  rÇ  r/  s       r$   Úrestorez_LangPatchScope.restoreS  sv   € ØŒmð 	-Ø"&¤-×"3Ò"3Ñ"5Ô"5ÑˆC��xØ�8Ð#Ð#Ý˜˜TÑ"Ô"Ð"Ð"å˜˜T 8Ñ,Ô,Ð,ð Œmð 	-ð 	-ð 	-ð 	-ð 	-r&   NrË  )r)  r*  rÇ  r   r5   r*  rê   rë   )r7   r8   r9   r:   rI   r6   r3  r?   r&   r$   r&  r&  H  sV   € € € € € Ø<Ð<ð=ð =ð =ð =ð"ð "ð "ð "ð
-ð -ð -ð -ð -ð -r&   r&  rw  c                ó@   — |dœd„}|                      | ||¦  «         d S )N)Úmemberc                ó\   —  | |i d„ |                      ¦   «         D ¦   «         ¤dt          i¤ŽS )Nc                ó&   — i | ]\  }}|d k    ¯||“ŒS )rå   r?   )rª  ÚkÚvs      r$   ú
<dictcomp>z1_patch_attr.<locals>.<lambda>.<locals>.<dictcomp>^  s;   € ð AVð AVð AVÙEIÀQÈØDEÈÒDTÐDTð BCÀAàDTÐDTÐDTr&   rå   )Úitemsr$  )r5  ÚargsÚkwargss      r$   rñ   z_patch_attr.<locals>.<lambda>]  sc   € ¸¸Àð :wðAVð AVØMSÏ\Ê\É^Ì^ðAVñ AVô AVð:wð :wõ bvð:wð :wð :w€ r&   )r6   )r)  rÇ  r5  rà   rw  Ú
new_members         r$   Ú_patch_attrr?  \  s=   € Ø&,ð xð xð xð x€Jð 
‡N‚N�3˜˜jÑ)Ô)Ð)Ð)Ð)r&   c                óž   — t          j        | ¦  «        D ]7\  }}t          j                             |¦  «        rt          | ||||¦  «         Œ8d S r(   )ÚinspectÚ
getmembersr‰   ÚcoreÚ
is_builtinr?  )Úpkgrà   rw  rÇ  r5  s        r$   Ú_patch_builtinrF  d  sY   € ÝÔ*¨3Ñ/Ô/ð ;ð ;‰ˆˆfÝŒ7×Ò˜fÑ%Ô%ð 	;Ý˜˜T 6¨7°EÑ:Ô:Ð:øð;ð ;r&   c                ó   ‡— d„ Šd„ }|                      | dd„ ¦  «         |                      | dˆfd„¦  «         |                      | dd„ ¦  «         |                      | d	d
„ ¦  «         |                      | dt          |¦  «        ¦  «         d S )Nc                óR   — | j         j        }|j        dk    rt          |¦  «        ndS )Nr   T)râ   r   Úsizer)   )r#   r   s     r$   Ú	_get_boolz%_patch_lang_tensor.<locals>._get_booll  s(   € ØŒ{Ôˆð "œY¨!š^˜^�t�D‰zŒzˆz°Ð5r&   c                óŽ  — t          t          j        | j        j        ¦  «        | j        j        ¦  «        }| j                             ¦   «         sJ ‚t          | j        j	        ¦  «        }|d         |d         c|d<   |d<   t          j                             | j        |¦  «        }t          j                             ||¦  «        S )Néþÿÿÿri   )r   rL   r.  râ   r   r   rS  Úis_blockÚlistrD   r‰   rC  r£   rß   )r#   râ   rG   Úres_tys       r$   Ú_get_transposez*_patch_lang_tensor.<locals>._get_transposer  s›   € Ý�bœl¨4¬;Ô+;Ñ<Ô<¸d¼kÔ>OÑPÔPˆØŒy×!Ò!Ñ#Ô#Ð#Ð#Ð#Ý˜4œ9œ?Ñ+Ô+ˆØ+6°r¬?¸KÈ¼OÐ(ˆ�B‰˜ R™Ý”×#Ò# D¤J°Ñ<Ô<ˆÝŒw�~Š~˜f fÑ-Ô-Ð-r&   Ú	__index__c                óX   — t          | j        j                             ¦   «         ¦  «        S r(   )r„   râ   r   Úsqueezer"   s    r$   rñ   z$_patch_lang_tensor.<locals>.<lambda>z  s   € µS¸¼Ô9I×9QÒ9QÑ9SÔ9SÑ5TÔ5T€ r&   r+   c                ó   •—  ‰| ¦  «        S r(   r?   )r#   rJ  s    €r$   rñ   z$_patch_lang_tensor.<locals>.<lambda>{  s   ø€ °I°I¸d±O´O€ r&   Ú__repr__c                ó4   — t          | j        j        ¦  «        S r(   )Úreprrâ   r   r"   s    r$   rñ   z$_patch_lang_tensor.<locals>.<lambda>|  s   € µD¸¼Ô9IÑ4JÔ4J€ r&   Ú__str__c                ó4   — t          | j        j        ¦  «        S r(   )r   râ   r   r"   s    r$   rñ   z$_patch_lang_tensor.<locals>.<lambda>}  s   € µ3°t´{Ô7GÑ3HÔ3H€ r&   r   )r6   Úproperty)rß   rw  rP  rJ  s      @r$   Ú_patch_lang_tensorr[  j  sµ   ø€ ð6ð 6ð 6ð.ð .ð .ð 
‡N‚N�6˜;Ð(TÐ(TÑUÔUÐUØ	‡N‚N�6˜:Ð'CÐ'CÐ'CÐ'CÑDÔDÐDØ	‡N‚N�6˜:Ð'JÐ'JÑKÔKÐKØ	‡N‚N�6˜9Ð&HÐ&HÑIÔIÐIØ	‡N‚N�6˜3¥¨Ñ 8Ô 8Ñ9Ô9Ð9Ð9Ð9r&   c                  ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚReduceScanOpInterfacec                ó"   — || _         || _        d S r(   )rW  Ú
combine_fn)r#   rW  r_  s      r$   rI   zReduceScanOpInterface.__init__ƒ  s   € ØˆŒ	Ø$ˆŒˆˆr&   c                ó^   — |�(|t          |¦  «        k    rt          d|› d|› �¦  «        ‚d S d S )Nzaxis z out of bounds for shape )rP   r   )r#   rD   rW  s      r$   Ú
check_axisz ReduceScanOpInterface.check_axis‡  sE   € ØÐ ­¨E©
¬
Ò 2Ð 2ÝÐK TÐKÐKÀEÐKÐKÑLÔLÐLð ÐÐ 2Ð 2r&   c                óÌ   — |D ]`}t          |t          j        j        ¦  «        st	          dt          |¦  «        › �¦  «        ‚|                      |j        | j        ¦  «         Œad S )Nzinput must be a tensor, got )	rˆ   r‰   rC  rß   r   rS  ra  rD   rW  )r#   rµ   rû  s      r$   Úcheck_tensorz"ReduceScanOpInterface.check_tensor‹  sj   € Øð 	2ð 	2ˆCÝ˜c¥2¤7¤>Ñ2Ô2ð MÝ Ð!KÅÀSÁ	Ä	Ð!KÐ!KÑLÔLÐLØ�OŠO˜CœI t¤yÑ1Ô1Ð1Ð1ð	2ð 	2r&   c                ó`  — t          |¦  «        }t          |d¦  «        rD|j        r=|                     |¦  «        }t	          j        |t          |j        ¦  «        ¦  «        }nt          j        |g|¬¦  «        }|}t          j	         
                    t          ||j        ¦  «        |¦  «        S )NrD   rK   )r¦   r.   rD   rS   r‰   r£   rN  rL   r4  rC  rß   r   rU   )r#   rp  r   r¿  Úret_types        r$   Ú	to_tensorzReduceScanOpInterface.to_tensor‘  s“   € Ý  Ñ'Ô'ˆÝ�3˜Ñ Ô ð 	 S¤Yð 	Ø—*’*˜XÑ&Ô&ˆCÝ”} U­D°´©O¬OÑ<Ô<ˆHˆHå”(˜C˜5¨Ð1Ñ1Ô1ˆCØˆHÝŒw�~Š~�l¨3°´Ñ=Ô=¸xÑHÔHÐHr&   c                ó    — t          d¦  «        ‚)Nz,apply_impl must be implemented by subclassesr  ©r#   rµ   s     r$   Ú
apply_implz ReduceScanOpInterface.apply_impl›  rŽ  r&   c                ó  — t          |t          ¦  «        s|                      |f¦  «        d         S |                      |¦  «         |                      |¦  «        }t          |t
          t          f¦  «        rt          |¦  «        n|fS ©Nr   )rˆ   ÚtupleÚapplyrc  ri  rN  )r#   rµ   rp  s      r$   rm  zReduceScanOpInterface.applyž  sw   € Ý˜%¥Ñ'Ô'ð 	,Ø—:’:˜u˜iÑ(Ô(¨Ô+Ð+Ø×Ò˜%Ñ Ô Ð Ø�oŠo˜eÑ$Ô$ˆÝ'¨­dµE¨]Ñ;Ô;ÐH�u�S‰zŒzˆzÀ#ÀÐHr&   N)	r7   r8   r9   rI   ra  rc  rf  ri  rm  r?   r&   r$   r]  r]  �  s|   € € € € € ð%ð %ð %ðMð Mð Mð2ð 2ð 2ðIð Ið IðRð Rð RðIð Ið Ið Ið Ir&   r]  c                  ó>   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zdd„Zd„ Zd„ Zˆ xZ	S )	Ú	ReduceOpsc                óZ   •— t          ¦   «                              ||¦  «         || _        d S r(   )ÚsuperrI   Ú	keep_dims)r#   rW  r_  rr  Ú	__class__s       €r$   rI   zReduceOps.__init__¨  s(   ø€ Ý‰Œ×Ò˜˜zÑ*Ô*Ð*Ø"ˆŒˆˆr&   c                óú   — g }|D ]f}|�|                      |¦  «         Œd}|                      |                      |j        j                             ¦   «         |j        ¦  «        ¦  «         Œgt          |¦  «        |fS rk  )r-  rf  râ   r   Úflattenr   rl  )r#   rµ   rW  rp  r   s        r$   ÚunravelzReduceOps.unravel¬  s   € ØˆØð 	Sð 	SˆDØÐØ—
’
˜4Ñ Ô Ð Ð à�Ø—
’
˜4Ÿ>š>¨$¬+Ô*:×*BÒ*BÑ*DÔ*DÀdÄjÑQÔQÑRÔRÐRÐRÝ�S‰zŒz˜4ÐÐr&   c                ó   ‡ ‡‡‡— ‰ j         }‰                      ‰‰ j         ¦  «        \  Š}g }g }‰d         j        j        j        }|d|…         ||dz   d …         z   }‰D ]Y}|                     |j        j        ¦  «         |                     t          j        ||j        j        j        ¬¦  «        ¦  «         ŒZt          |d         j
        ¦  «        D �]„}	t          j        |	|¦  «        Š‰d|…         ‰|dz   d …         z   Št          ˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        }
‰|         dk    rMt          t          |¦  «        ¦  «        D ]/}|
|         j        j                             ¦   «         ||         ‰<   Œ0Œ³t          ˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        } ‰ j        j        g |¢|
¢R Ž }t%          |t          ¦  «        s|fn|}t          t          |¦  «        ¦  «        D ]\}t%          ||         t&          j        j        ¦  «        r$||         j        j                             ¦   «         n||         ||         ‰<   Œ]�Œ†g }t          |¦  «        D ]£\  }	}‰ j        rM|�t          j        ||¦  «        }nKt          t          |¦  «        ¦  «        D ]}t          j        |d¦  «        }Œn|€|                     ¦   «         }|                     ‰                      |‰|	         j        ¦  «        ¦  «         Œ¤|S )Nr   r   rK   c              3  ól   •K  — | ].\  }}‰                      |‰         ‰|         j        ¦  «        V — Œ/d S r(   ©rf  r   )rª  Úiir4  rµ   Úinput_indexr#   s      €€€r$   ú	<genexpr>z+ReduceOps.generic_reduce.<locals>.<genexpr>Å  sB   øè è € ÐsÐsÑTYÐTVÐXY §¢¨q°¬~¸uÀR¼y¼Ñ OÔ OÐsÐsÐsÐsÐsÐsr&   c              3  ól   •K  — | ].\  }}‰                      |‰         ‰|         j        ¦  «        V — Œ/d S r(   ry  )rª  ÚoiÚorµ   Úoutput_indexr#   s      €€€r$   r|  z+ReduceOps.generic_reduce.<locals>.<genexpr>Ë  sB   øè è € Ð!wÐ!wÑW\ÐWYÐ[\ $§.¢.°°<´À%ÈÄ)Ä/Ñ"RÔ"RÐ!wÐ!wÐ!wÐ!wÐ!wÐ!wr&   )rW  rv  râ   r   rD   r-  rL   r½  r   rO   rI  Úunravel_indexrl  r¾  rP   rj   r_  Úfnrˆ   r‰   rC  rß   rr  r_  rf  )r#   rµ   Úoriginal_axisrW  Ú
input_dataÚoutput_dataÚinput_shapeÚoutput_shaperû  rÅ   Úinput_tupleÚjÚ	acc_tupleÚcombine_fn_retrp  r   Ú_r{  r€  s   ``               @@r$   Úgeneric_reducezReduceOps.generic_reduce¶  sE  øøøø€ Øœ	ˆØ—l’l 5¨$¬)Ñ4Ô4‰ˆˆtØˆ
ØˆØ˜A”h”oÔ*Ô0ˆØ" 1 T 6Ô*¨[¸À¹¸¸Ô-CÑCˆØð 	Tð 	TˆCØ×Ò˜cœjœoÑ.Ô.Ð.Ø×Ò�rœx¨¸C¼J¼OÔ<QÐRÑRÔRÑSÔSÐSÐSå�z !”}Ô)Ñ*Ô*ð 	Hñ 	HˆAåÔ*¨1¨kÑ:Ô:ˆKØ& q¨ vÔ.°¸TÀA¹X¸Y¸YÔ1GÑGˆLÝÐsÐsÐsÐsÐsÐsÕ]fÐgqÑ]rÔ]rÐsÑsÔsÑsÔsˆKØ˜4Ô  AÒ%Ð%å�s ;Ñ/Ô/Ñ0Ô0ð Uð U�AØ3>¸q´>Ô3HÔ3M×3RÒ3RÑ3TÔ3T�K ”N <Ñ0Ð0ðUõ "Ð!wÐ!wÐ!wÐ!wÐ!wÐ!wÕ`iÐjuÑ`vÔ`vÐ!wÑ!wÔ!wÑwÔw�	Ø!3 ¤Ô!3Ð!M°YÐ!MÀÐ!MÐ!MÐ!M�Ý6@ÀÕQVÑ6WÔ6WÐk˜^Ð.Ð.Ð]k�	Ý�s ;Ñ/Ô/Ñ0Ô0ð Hð H�AÝV`Ø! !œ¥b¤g¤nñW6ô W6ð 4H°9¸Q´<Ô3FÔ3K×3PÒ3PÑ3RÔ3RÐ3RØ;DÀQ¼<ð   ”N <Ñ0Ð0ñHð ˆÝ  Ñ-Ô-ð 	=ð 	=‰GˆAˆtØŒ~ð 	#Ø Ð,Ýœ>¨$°Ñ5Ô5�D�Då"¥3 {Ñ#3Ô#3Ñ4Ô4ð 7ð 7˜Ý!œ~¨d°AÑ6Ô6˜˜ð7ð Ð&à—y’y‘{”{�Ø�JŠJ�t—~’~ d¨E°!¬H¬NÑ;Ô;Ñ<Ô<Ð<Ð<Øˆ
r&   Nc                ó„  — t          |t          ¦  «        r|d         n|}d }d }|r;|                       ||j        j        | j        | j        ¬¦  «        |j        ¦  «        }|r@|                       ||j        j        | j        | j        ¬¦  «        t          j	        ¦  «        }|�|�||fS |�|S |�|S t          d¦  «        ‚)Nr   ©rW  Úkeepdimsz-val_reduce_op and idx_reduce_op are both None)rˆ   rl  rf  râ   r   rW  rr  r   r‰   r•   r   )r#   rµ   Úval_reduce_opÚidx_reduce_oprg  Úidxs         r$   Úmin_maxzReduceOps.min_maxá  sÕ   € å& u­eÑ4Ô4Ð?��a”�¸%ˆØˆØˆØð 	yØ—.’.  ¨u¬|Ô/@ÀtÄyÐ[_Ô[iÐ!jÑ!jÔ!jÐlqÔlwÑxÔxˆCØð 	vØ—.’.  ¨u¬|Ô/@ÀtÄyÐ[_Ô[iÐ!jÑ!jÔ!jÕlnÔltÑuÔuˆCØˆ?˜s˜Ø˜�8ˆOØˆ_ØˆJØˆ_ØˆJåÐLÑMÔMÐMr&   c                óŠ   — |                       t          j        |j        j        | j        | j        ¬¦  «        |j        ¦  «        S )Nr�  )rf  rL   rD  râ   r   rW  rr  r   rh  s     r$   rD  zReduceOps.sumó  s6   € Ø�~Š~�bœf U¤\Ô%6¸T¼YÐQUÔQ_Ð`Ñ`Ô`ÐbgÔbmÑnÔnÐnr&   c                óÎ  — | j         t          j        j        k    r2|                      |d         t
          j        t
          j        ¬¦  «        S | j         t          j        j        k    r2|                      |d         t
          j	        t
          j
        ¬¦  «        S | j         t          j        j        k    r(|                      |d         t
          j        d ¬¦  «        S | j         t          j        j        k    r(|                      |d         t
          j        d ¬¦  «        S | j         t          j        j        k    r|                      |d         ¦  «        S |                      |¦  «        S )Nr   )r‘  r’  )r_  r‰   ÚstandardÚ_argmin_combine_tie_break_leftr”  rL   ÚminÚargminÚ_argmax_combine_tie_break_leftrM  ÚargmaxÚ_elementwise_maxÚnanmaxÚ_elementwise_minÚnanminÚ_sum_combinerD  r�  rh  s     r$   ri  zReduceOps.apply_implö  s  € ØŒ?�bœkÔHÒHÐHØ—<’<  a¤½¼ÍbÌi�<ÑXÔXÐXØŒ_¥¤Ô JÒJÐJØ—<’<  a¤½¼ÍbÌi�<ÑXÔXÐXØŒ_¥¤Ô <Ò<Ð<Ø—<’<  a¤½¼	ÐQU�<ÑVÔVÐVØŒ_¥¤Ô <Ò<Ð<Ø—<’<  a¤½¼	ÐQU�<ÑVÔVÐVØŒ_¥¤Ô 8Ò8Ð8Ø—8’8˜E !œHÑ%Ô%Ð%ð ×&Ò& uÑ-Ô-Ð-r&   r(   )
r7   r8   r9   rI   rv  r�  r”  rD  ri  Ú__classcell__©rs  s   @r$   ro  ro  ¦  s�   ø€ € € € € ð#ð #ð #ð #ð #ð ð  ð  ð)ð )ð )ðVNð Nð Nð Nð$oð oð oð.ð .ð .ð .ð .ð .ð .r&   ro  c                  ó6   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚScanOpsc                óZ   •— t          ¦   «                              ||¦  «         || _        d S r(   )rq  rI   Úreverse)r#   rW  r_  r§  rs  s       €r$   rI   zScanOps.__init__  s(   ø€ Ý‰Œ×Ò˜˜zÑ*Ô*Ð*ØˆŒˆˆr&   c                ó‚   — |                       t          j        |j        j        | j        ¬¦  «        |j        ¬¦  «        gS ©NrH  rK   )rf  rL   Úcumsumrâ   r   rW  r   rh  s     r$   rª  zScanOps.cumsum  s5   € Ø—’�rœy¨¬Ô):ÀÄÐKÑKÔKÐSXÔS^�Ñ_Ô_Ð`Ð`r&   c                ó‚   — |                       t          j        |j        j        | j        ¬¦  «        |j        ¬¦  «        gS r©  )rf  rL   Úcumprodrâ   r   rW  r   rh  s     r$   r¬  zScanOps.cumprod  s5   € Ø—’�rœz¨%¬,Ô*;À$Ä)ÐLÑLÔLÐTYÔT_�Ñ`Ô`ÐaÐar&   c           	     ó  ‡ ‡‡‡— g }g }‰d         j         j        j        }‰D ]Y}|                     |j         j        ¦  «         |                     t	          j        ||j         j        j        ¬¦  «        ¦  «         ŒZt          |d         j        ¦  «        D �]§}t	          j	        ||¦  «        Št          ˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        }‰‰ j                 dk    rMt          t          |¦  «        ¦  «        D ]/}||         j         j                             ¦   «         ||         ‰<   Œ0Œ t          ˆˆ fd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        Št          ˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        }	 ‰ j        j        g |	¢|¢R Ž }
t#          |
t          ¦  «        s|
fn|
}	t          t          |¦  «        ¦  «        D ]\}t#          |	|         t$          j        j        ¦  «        r$|	|         j         j                             ¦   «         n|	|         ||         ‰<   Œ]�Œ©g }t          |¦  «        D ]9\  }}|                     ‰                      |‰|         j        ¦  «        ¦  «         Œ:|S )Nr   rK   c              3  ól   •K  — | ].\  }}‰                      |‰         ‰|         j        ¦  «        V — Œ/d S r(   ry  )rª  rz  r4  Úindexrµ   r#   s      €€€r$   r|  z'ScanOps.generic_scan.<locals>.<genexpr>  s?   øè è € ÐfÐfÁuÀrÈ1˜Ÿš¨¨%¬°%¸´)´/ÑBÔBÐfÐfÐfÐfÐfÐfr&   c              3  óT   •K  — | ]"}|‰j         k    r‰|         d z
  n‰|         V — Œ#dS )r   NrH  )rª  rÅ   r¯  r#   s     €€r$   r|  z'ScanOps.generic_scan.<locals>.<genexpr>#  s>   øè è € Ð"kÐ"kÐTU°1¸¼	²>°> 5¨¤8¨a¡< <ÀuÈQÄxÐ"kÐ"kÐ"kÐ"kÐ"kÐ"kr&   c              3  ól   •K  — | ].\  }}‰                      |‰         ‰|         j        ¦  «        V — Œ/d S r(   ry  )rª  r~  r  rµ   Ú
prev_indexr#   s      €€€r$   r|  z'ScanOps.generic_scan.<locals>.<genexpr>$  sB   øè è € Ð!uÐ!uÑUZÐUWÐYZ $§.¢.°°:´ÀÀbÄ	ÄÑ"PÔ"PÐ!uÐ!uÐ!uÐ!uÐ!uÐ!ur&   )râ   r   rD   r-  rL   r½  r   rO   rI  r�  rl  r¾  rW  rP   rj   r_  r‚  rˆ   r‰   rC  rß   rf  )r#   rµ   r„  r…  rD   rû  rÅ   r   r‰  rŠ  r‹  rp  r¯  r²  s   ``          @@r$   Úgeneric_scanzScanOps.generic_scan  s¯  øøøø€ Øˆ
ØˆØ�a””Ô$Ô*ˆØð 	Mð 	MˆCØ×Ò˜cœjœoÑ.Ô.Ð.Ø×Ò�rœx¨°S´Z´_Ô5JÐKÑKÔKÑLÔLÐLÐLå�z !”}Ô)Ñ*Ô*ð 	Hñ 	HˆAåÔ$ Q¨Ñ.Ô.ˆEÝÐfÐfÐfÐfÐfÐfÕPYÐZdÑPeÔPeÐfÑfÔfÑfÔfˆDØ�T”YÔ 1Ò$Ð$å�s ;Ñ/Ô/Ñ0Ô0ð Gð G�AØ,0°¬G¬NÔ,?×,DÒ,DÑ,FÔ,F�K ”N 5Ñ)Ð)ðGõ #Ð"kÐ"kÐ"kÐ"kÐ"kÕY^Õ_bÐchÑ_iÔ_iÑYjÔYjÐ"kÑ"kÔ"kÑkÔk�
Ý!Ð!uÐ!uÐ!uÐ!uÐ!uÐ!uÕ^gÐhsÑ^tÔ^tÐ!uÑ!uÔ!uÑuÔu�	Ø!3 ¤Ô!3Ð!F°YÐ!FÀÐ!FÐ!FÐ!F�Ý6@ÀÕQVÑ6WÔ6WÐk˜^Ð.Ð.Ð]k�	Ý�s ;Ñ/Ô/Ñ0Ô0ð Hð H�AÝOYØ! !œ¥b¤g¤nñP6ô P6ð -H¨I°a¬LÔ,?Ô,D×,IÒ,IÑ,KÔ,KÐ,KØ;DÀQ¼<ð   ”N 5Ñ)Ð)ñHð ˆÝ  Ñ-Ô-ð 	=ð 	=‰GˆAˆtØ�JŠJ�t—~’~ d¨E°!¬H¬NÑ;Ô;Ñ<Ô<Ð<Ð<Øˆ
r&   c           	     óB  — g }| j         rW|D ]S}|                     |                      t          j        |j        j        | j        ¬¦  «        |j        ¦  «        ¦  «         ŒTn|}| j	        t          j        j        k    r|                      |d         ¦  «        }nK| j	        t          j        j        k    r|                      |d         ¦  «        }n|                      |¦  «        }| j         r4|D ]1}t          j        |j        j        | j        ¬¦  «        |j        _        Œ2|S )NrH  r   )r§  r-  rf  rL   Úfliprâ   r   rW  r   r_  r‰   r—  r¡  rª  Ú_prod_combiner¬  r³  )r#   rµ   Ú	new_inputrû  rp  s        r$   ri  zScanOps.apply_impl0  s  € Øˆ	ØŒ<ð 	Øð fð f�Ø× Ò  §¢µ´¸¼
¼ÈdÌiÐ0XÑ0XÔ0XÐZ]ÔZcÑ!dÔ!dÑeÔeÐeÐeðfð ˆIØŒ?�bœkÔ6Ò6Ð6Ø—+’+˜i¨œlÑ+Ô+ˆCˆCØŒ_¥¤Ô 9Ò9Ð9Ø—,’,˜y¨œ|Ñ,Ô,ˆCˆCð ×#Ò# IÑ.Ô.ˆCØŒ<ð 	KØð Kð K�Ý"$¤'¨#¬*¬/ÀÄ	Ð"JÑ"JÔ"J�”
”�Øˆ
r&   )	r7   r8   r9   rI   rª  r¬  r³  ri  r¢  r£  s   @r$   r¥  r¥    sz   ø€ € € € € ðð ð ð ð ðað að aðbð bð bðð ð ð<ð ð ð ð ð ð r&   r¥  c                ó
  — dd„}dd„}|                       t          d|¦  «         |                       t          d|¦  «         |                       t          j        d|¦  «         |                       t          j        d|¦  «         d S )NFc                óJ   — t          |||¦  «                             | ¦  «        S r(   )ro  rm  )rµ   rW  r_  rr  r=  s        r$   Ú_new_reducez'_patch_reduce_scan.<locals>._new_reduceH  s"   € Ý˜˜z¨9Ñ5Ô5×;Ò;¸EÑBÔBÐBr&   c                óJ   — t          |||¦  «                             | ¦  «        S r(   )r¥  rm  )rµ   rW  r_  r§  r=  s        r$   Ú	_new_scanz%_patch_reduce_scan.<locals>._new_scanK  s"   € Ý�t˜Z¨Ñ1Ô1×7Ò7¸Ñ>Ô>Ð>r&   ÚreduceÚassociative_scan)F)r6   r‰   rC  )rw  rº  r¼  s      r$   Ú_patch_reduce_scanr¿  D  s”   € ðCð Cð Cð Cð?ð ?ð ?ð ?ð 
‡N‚N•2�x Ñ-Ô-Ð-Ø	‡N‚N•2Ð)¨9Ñ5Ô5Ð5Ø	‡N‚N•2”7˜H kÑ2Ô2Ð2Ø	‡N‚N•2”7Ð.°	Ñ:Ô:Ð:Ð:Ð:r&   c                ó  — d„ }dd„}dd„}d„ }|                      | d|¦  «         |                      | d|¦  «         |                      | d|¦  «         |                      | d	t          ¦  «         |                      | j        d
|¦  «         |                      | dt          |d¬¦  «        ¦  «         |                      | dt          |d¬¦  «        ¦  «         |                      | dt          |d¬¦  «        ¦  «         t	          |¦  «         d S )Nc                óF  — | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         d	k    r| 	                    ¦   «         S | j         d
k    r| 
                    ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S t%          d| › d�¦  «        ‚)NÚvoidr™   r‘   r�   r“   r’   r•   r”   r–   rT   rw   ry   r{   Ú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_irV  s+  € àŒ9˜ÒÐØ×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜(Ò"Ð"Ø×(Ò(Ñ*Ô*Ð*ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜(Ò"Ð"Ø×(Ò(Ñ*Ô*Ð*ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜(Ò"Ð"Ø×(Ò(Ñ*Ô*Ð*ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜)Ò#Ð#Ø×)Ò)Ñ+Ô+Ð+ØŒY˜*Ò$Ð$Ø×*Ò*Ñ,Ô,Ð,ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×'Ò'Ñ)Ô)Ð)ØŒY˜&Ò Ð Ø×(Ò(Ñ*Ô*Ð*ÝÐ=¨DÐ=Ð=Ð=Ñ>Ô>Ð>r&   c                óB   — |€d}|€d| }}n| |}}t          |||¦  «        S )Nr   r   )rO   )Úarg1Úarg2Ústepr=  r<  Úends         r$   Ú
_new_rangez$_patch_lang_core.<locals>._new_range~  s7   € Øˆ<ØˆDØˆ<Ø˜D�3ˆEˆEà˜t�3ˆEÝ�U˜C Ñ&Ô&Ð&r&   Ú c                ó   — | s
J |¦   «         ‚d S r(   r?   )r  rœ  s     r$   Ú_new_static_assertz,_patch_lang_core.<locals>._new_static_assert‡  s   € ØÐÐ�SÑÔˆtÐÐr&   c                óX  — t          | t          j        ¦  «        s| S t          |t          t          f¦  «        s|gn|}d„ |D ¦   «         }t          |¦  «        t          dt          | j        ¦  «        ¦  «        k    rt          d|› �¦  «        ‚| j	         
                    ||¦  «         | S )Nc                óT   — g | ]%}t          |t          j        ¦  «        r|j        n|‘Œ&S r?   )rˆ   r‰   Ú	constexprr5   ©rª  r9  s     r$   r«  z7_patch_lang_core.<locals>._set_attr.<locals>.<listcomp>�  s/   € ÐPÐPÐPÀA�Z¨­2¬<Ñ8Ô8Ð?�!”'�'¸aÐPÐPÐPr&   r   z$len(values) != len(input.shape) for )rˆ   r‰   rß   rN  rl  rP   rM  rD   r   râ   r6   )rµ   r‹  rÇ  s      r$   Ú	_set_attrz#_patch_lang_core.<locals>._set_attrŠ  s¥   € å˜%¥¤Ñ+Ô+ð 	ØˆLå!+¨FµT½5°MÑ!BÔ!BÐN�&��ÈˆØPÐPÈÐPÑPÔPˆÝˆv‰;Œ;�#˜a¥ U¤[Ñ!1Ô!1Ñ2Ô2Ò2Ð2ÝÐJÀDÐJÐJÑKÔKÐKØŒ×Ò˜d FÑ+Ô+Ð+Øˆr&   rO   Ústatic_rangeÚstatic_assertÚstatic_printÚto_irÚmultiple_ofztt.divisibility©rÇ  Úmax_contiguousztt.contiguityÚmax_constancyztt.constancy)NN)rÏ  )r6   r˜  r   r   r¿  )Úlangrw  rÈ  rÎ  rÑ  rÖ  s         r$   Ú_patch_lang_corerà  T  s;  € ð$?ð $?ð $?ðP'ð 'ð 'ð 'ðð ð ð ð
ð 
ð 
ð 
‡N‚N�4˜ *Ñ-Ô-Ð-Ø	‡N‚N�4˜¨Ñ4Ô4Ð4Ø	‡N‚N�4˜Ð*<Ñ=Ô=Ð=Ø	‡N‚N�4˜­Ñ/Ô/Ð/Ø	‡N‚N�4”:˜w¨
Ñ3Ô3Ð3Ø	‡N‚N�4˜­°	Ð@QÐ(RÑ(RÔ(RÑSÔSÐSØ	‡N‚N�4Ð)­7°9À?Ð+SÑ+SÔ+SÑTÔTÐTØ	‡N‚N�4˜­'°)À.Ð*QÑ*QÔ*QÑRÔRÐRå�uÑÔÐÐÐr&   c                óî  — t          ¦   «         }d„ | j                             ¦   «         D ¦   «         }t          |¦  «        dk    s
J d¦   «         ‚|D ]~}t	          |t
          |¦  «         t	          |j        t
          |¦  «         |t          k    rt	          |j        t
          |¦  «         t          |j        |¦  «         t          ||¦  «         Œt	          t          j        j        t
          |¦  «         |S )Nc                ój   — g | ]0\  }}t          j        |¦  «        ¯|t          t          j        fv ¯.|‘Œ1S r?   )rA  Úismoduler‰   rC  )rª  rŒ  r5   s      r$   r«  z_patch_lang.<locals>.<listcomp>¤  sA   € ÐpÐpÐp‘x�q˜%½WÔ=MÈeÑ=TÔ=TÐpÐY^ÕceÕgiÔgnÐboÐYoÐYoˆUÐYoÐYoÐYor&   r   z:triton.language must be visible from within jit'd function)r&  Ú__globals__r;  rP   rF  Úinterpreter_builderrß   r‰   rÑ   r[  rà  rC  Útensor_descriptor_base)r‚  rw  Úlangsrß  s       r$   Ú_patch_langrè  ¢  sß   € ÝÑÔ€EØpÐp 2¤>×#7Ò#7Ñ#9Ô#9ÐpÑpÔp€EÝˆu‰:Œ:˜Š?ˆ?ˆ?ÐX‰?Œ?ˆ?Øð &ð &ˆÝ�tÕ0°%Ñ8Ô8Ð8Ý�t”{Õ$7¸Ñ?Ô?Ð?Ø•2Š:ˆ:Ý˜4œ9Õ&9¸5ÑAÔAÐAÝ˜4œ;¨Ñ.Ô.Ð.Ý˜˜uÑ%Ô%Ð%Ð%Ý•2”7Ô1Õ3FÈÑNÔNÐNØ€Lr&   c                ó*  — t          | t          ¦  «        �rt          j        t          j        j                             | ¦  «        d ¦  «        }t          j	        }d| cxk    rdk     rn nt          j	        }nid| 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                             | ¦  «        d ¦  «        }t          t          j        |                      ¦   «         gt          j        ¬¦  «        |¦  «        }t          j        ||¦  «        S t          | t&          ¦  «        r#t)          | t+          t,          | ¦  «        ¦  «        S t          | t.          ¦  «        r�d
„ | j        D ¦   «         }| j        d         dk    sJ ‚t          j        d¦  «        |d<   t4                               t-          | j        ¦  «        d„ | j        D ¦   «         |d„ | j        D ¦   «         | j        ¬¦  «        S | S )Ni   €l        l        lûÿÿÿ         l            l            zUnsupported integer value rK   Údata_ptrc                ó,   — g | ]}t          |¦  «        ‘ŒS r?   ©Ú_implicit_cvt©rª  Úss     r$   r«  z!_implicit_cvt.<locals>.<listcomp>É  s    € Ð9Ð9Ð9¨•= Ñ#Ô#Ð9Ð9Ð9r&   ri   r   c                ó,   — g | ]}t          |¦  «        ‘ŒS r?   rì  rî  s     r$   r«  z!_implicit_cvt.<locals>.<listcomp>Í  s"   € ÐAfÐAfÐAfÐWXÅ-ÐPQÑBRÔBRÐAfÐAfÐAfr&   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r?   )r‰   rÔ  )rª  rÙ   s     r$   r«  z!_implicit_cvt.<locals>.<listcomp>Î  s"   € ÐGqÐGqÐGqÐ\]ÍÌÐUVÉÌÐGqÐGqÐGqr&   )rC   rD   rE   rG   rY  ) rˆ   r„   r‰   Ú	str_to_tyÚtritonÚruntimeÚjitÚmangle_typerL   r•   r”   r–   rT   r   r   r4  rß   r.   rê  rl  r   Úmaprí  r   rE   rÔ  r$  Úmake_tensor_descriptorrC   rD   rG   rf   )rû  Útyr   râ   rE   s        r$   rí  rí  ²  s‹  € Ý�#•sÑÔñ %ÝŒ\�&œ.Ô,×8Ò8¸Ñ=Ô=¸tÑDÔDˆÝ”ˆØ�SÐ Ð Ò Ð ˜5Ò Ð Ð Ð Ð Ý”HˆEˆEØ�cÐ!Ð!Ò!Ð!˜EÒ!Ð!Ð!Ð!Ð!Ý”IˆEˆEØ�sÐ"Ð"Ò"Ð"˜UÒ"Ð"Ð"Ð"Ð"Ý”HˆEˆEØ�cÐ!Ð!Ò!Ð!˜EÒ!Ð!Ð!Ð!Ð!Ý”IˆEˆEåÐ?¸#Ð?Ð?Ñ@Ô@Ð@Ý�bœh¨ u°EÐ:Ñ:Ô:¸BÑ?Ô?ˆÝŒy˜ Ñ$Ô$Ð$Ýˆs�JÑÔð WÝŒ\�&œ.Ô,×8Ò8¸Ñ=Ô=¸tÑDÔDˆÝ�bœh¨¯ª©¬Ð'7½r¼yÐIÑIÔIÈ2ÑNÔNˆÝŒy˜ Ñ$Ô$Ð$Ý	�C�Ñ	Ô	ð 	WÝ˜S¥#¥m°SÑ"9Ô"9Ñ:Ô:Ð:Ý	�CÕ)Ñ	*Ô	*ð WØ9Ð9¨S¬[Ð9Ñ9Ô9ˆØŒ{˜2Œ !Ò#Ð#Ð#Ð#Ý”l 1‘o”oˆ�‰Ý#×:Ò:ÅÈcÌhÑ@WÔ@WØAfÐAfÐ\_Ô\eÐAfÑAfÔAfÐpwØGqÐGqÐadÔapÐGqÑGqÔGqØJMÌ+ð ;ñ Wô Wð 	Wð €Jr&   c                ó\   — t          | t          j        j        j        ¦  «        r| j        S | S r(   )rˆ   ró  rô  rõ  ÚTensorWrapperrC   )Úts    r$   Ú_unwrap_tensorrý  Ó  s(   € Ý�!•V”^Ô'Ô5Ñ6Ô6ð ØŒvˆØ€Hr&   c                ó¢   — t          |t          j        j        j        ¦  «        r*t          j        j                             | |j        ¦  «        S | S r(   )rˆ   ró  rô  rõ  rû  r   )rü  Úoriginal_tensors     r$   Ú_rewrap_tensorr   Ù  s@   € Ý�/¥6¤>Ô#5Ô#CÑDÔDð JÝŒ~Ô!×/Ò/°°?Ô3HÑIÔIÐIØ€Hr&   c                  ó*   — e Zd Zg fd„Zd„ Zd„ Zd„ ZdS )ÚGridExecutorc                ó¾   ‡‡— ddl mŠ || _        || _        || _        || _        ˆfd„|j                             ¦   «         D ¦   «         Šˆfd„|D ¦   «         | _        d S )Nr   )Ú_normalize_tyc                ó.   •— i | ]\  }}| ‰|¦  «        “ŒS r?   r?   )rª  rÇ  rù  r  s      €r$   r:  z)GridExecutor.__init__.<locals>.<dictcomp>è  s)   ø€ Ð^Ð^Ð^±x°t¸R˜4  ¨rÑ!2Ô!2Ð^Ð^Ð^r&   c                óF   •— g | ]}‰                      |¦  «        d k    ¯|‘ŒS )rÔ  )Úget)rª  rÇ  r;   s     €r$   r«  z)GridExecutor.__init__.<locals>.<listcomp>é  s2   ø€ ÐbÐbÐb D¸×9LÒ9LÈTÑ9RÔ9RÐVaÒ9aÐ9a˜4Ð9aÐ9aÐ9ar&   )	rõ  r  r‚  Ú	arg_namesÚgridÚpre_run_hooksr;   r;  Ú
constexprs)r#   r‚  r  r	  r
  r;   r  s        @@r$   rI   zGridExecutor.__init__á  sz   øø€ Ø&Ð&Ð&Ð&Ð&Ð&àˆŒØ"ˆŒØˆŒ	Ø*ˆÔØ^Ð^Ð^Ð^À2ÔCU×C[ÒC[ÑC]ÔC]Ð^Ñ^Ô^ˆØbÐbÐbÐb¨IÐbÑbÔbˆŒˆˆr&   c                óŽ   ‡‡— i Šˆˆfd„Šˆfd„|D ¦   «         }i }|                      ¦   «         D ]\  }} ‰|¦  «        ||<   Œ||fS )Nc                ó^  •— t          | t          ¦  «        rt          | t          ‰| ¦  «        ¦  «        S t          | t          ¦  «        r;t	           ‰| j        ¦  «        | j        | j        | j        | j	        | j
        ¦  «        S t          | d¦  «        s| S t          | ¦  «        }|                     ¦   «                              ¦   «         ‰vr=|                     ¦   «         }|                     ¦   «         ‰|                     ¦   «         <   ‰|                     ¦   «                              ¦   «                  }|                     dd¬¦  «        }|                     ||                     ¦   «         |                     ¦   «         |                     ¦   «         ¦  «         t+          || ¬¦  «        }|S )Nrê  r   Úcpu)Údevice)rÿ  )rˆ   rl  r   r÷  r   rC   rD   rE   rG   rf   Úround_f32_to_tf32r.   rý  Úuntyped_storagerê  r  Ú	new_emptyÚset_Ústorage_offsetrI  rl   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Ô2ð 
Ý'Ø�G˜CœHÑ%Ô%Ø”IØ”KØ”OØ”KØÔ)ñô ð õ ˜S *Ñ-Ô-ð Ø�
å*¨3Ñ/Ô/ˆMØ×,Ò,Ñ.Ô.×7Ò7Ñ9Ô9ÀÐIÐIØ'×7Ò7Ñ9Ô9�Ø/6¯{ª{©}¬}�˜×)Ò)Ñ+Ô+Ñ,à˜}×<Ò<Ñ>Ô>×GÒGÑIÔIÔJˆGØ#×-Ò-¨a¸Ð-Ñ>Ô>ˆGØ�LŠL˜ -×">Ò">Ñ"@Ô"@À-×BTÒBTÑBVÔBVÐXe×XlÒXlÑXnÔXnÑoÔoÐoÝ$ W¸cÐBÑBÔBˆGØˆNr&   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS r?   r?   )rª  rû  r  s     €r$   r«  z/GridExecutor._init_args_hst.<locals>.<listcomp>  s!   ø€ Ð5Ð5Ð5 S�G�G˜C‘L”LÐ5Ð5Ð5r&   )r;  )	r#   Úargs_devr=  Úargs_hstÚ
kwargs_hstr4   r5   r  r  s	          @@r$   Ú_init_args_hstzGridExecutor._init_args_hstë  s‚   øø€ Øˆð	ð 	ð 	ð 	ð 	ð 	ð4 6Ð5Ð5Ð5¨HÐ5Ñ5Ô5ˆð ˆ
Ø Ÿ,š,™.œ.ð 	-ð 	-‰JˆC�Ø%˜g e™nœnˆJ�s‰OˆOØ˜Ð#Ð#r&   c                ó  ‡
‡— i Šˆ
ˆfd„Š
t          ||¦  «        D ]\  }} ‰
||¦  «         Œ|                     ¦   «         D ]\  }}||         }	 ‰
||	¦  «         Œ‰                     ¦   «         D ]\  }}|                     |¦  «         Œd S )Nc                óÒ  •— t          | d¦  «        rot          | ¦  «        t          |¦  «        }} |                      ¦   «         |                     ¦   «         f‰|                      ¦   «                              ¦   «         <   d S t	          | t
          ¦  «        r$t          | |¦  «        D ]\  } } ‰| |¦  «         Œd S t	          | t          ¦  «        r ‰| j        |j        ¦  «         d S d S )Nrê  )	r.   rý  r  rê  rˆ   rl  Úzipr   rC   )Úarg_devÚarg_hstÚ	_from_cpur  s     €€r$   r$  z1GridExecutor._restore_args_dev.<locals>._from_cpu  sü   ø€ Ý�w 
Ñ+Ô+ð 6å#1°'Ñ#:Ô#:½NÈ7Ñ<SÔ<S˜�ØBI×BYÒBYÑB[ÔB[Ð]d×]tÒ]tÑ]vÔ]vÐAw�˜×0Ò0Ñ2Ô2×;Ò;Ñ=Ô=Ñ>Ð>Ð>Ý˜G¥UÑ+Ô+ð 6Ý*-¨g°wÑ*?Ô*?ð 0ð 0Ñ&�W˜gØ�I˜g wÑ/Ô/Ð/Ð/ð0ð 0å˜GÕ%5Ñ6Ô6ð 6Ø�	˜'œ,¨¬Ñ5Ô5Ð5Ð5Ð5ð6ð 6r&   )r!  r;  r‹  Úcopy_)r#   r  r  r=  r  r"  r#  r4   Ú	kwarg_devÚ	kwarg_hstr$  r  s             @@r$   Ú_restore_args_devzGridExecutor._restore_args_dev  sÔ   øø€ Øˆð		6ð 		6ð 		6ð 		6ð 		6ð 		6õ !$ H¨hÑ 7Ô 7ð 	(ð 	(ÑˆG�WØˆI�g˜wÑ'Ô'Ð'Ð'ð %Ÿlšl™nœnð 	,ð 	,‰NˆC�Ø" 3œˆIØˆI�i Ñ+Ô+Ð+Ð+à"*§/¢/Ñ"3Ô"3ð 	#ð 	#ÑˆW�gØ�MŠM˜'Ñ"Ô"Ð"Ð"ð	#ð 	#r&   c                óV  ‡ ‡— t          j        ‰ j        ¦  «        Šˆfd„|                     ¦   «         D ¦   «         }‰                      ||¦  «        \  }}‰ j        D ]
} ||i |¤Ž Œt          ‰ j        ¦  «        }	 t          j        ‰ j        g|¢R i |¤Ž}ˆ fd„|                     ¦   «         D ¦   «         }t          ‰ j	        ¦  «        r‰  	                    |¦  «        n‰ j	        }t          |¦  «        dk    s
J d¦   «         ‚|ddt          |¦  «        z
  z  z   }t          j        |Ž  	 t          |d         ¦  «        D ][}	t          |d         ¦  «        D ]C}
t          |d         ¦  «        D ]+}t                               |	|
|¦  «          ‰ j        d	i |¤Ž Œ,ŒDŒ\nF# t          $ r9}t           j        j        j        r‚ t)          t+          |¦  «        ¦  «        |‚d }~ww xY w	 |                     ¦   «          n# |                     ¦   «          w xY w‰                      ||||¦  «         d S )
Nc                ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r?   )r<  )rª  r8  r9  Úargspecs      €r$   r:  z)GridExecutor.__call__.<locals>.<dictcomp>.  s+   ø€ ÐGÐGÐG™4˜1˜a°Q¸'¼,Ð5FÐ5F�!�QÐ5FÐ5FÐ5Fr&   c                óL   •— i | ] \  }}||‰j         v r|nt          |¦  «        “Œ!S r?   )r  rí  )rª  rÇ  rû  r#   s      €r$   r:  z)GridExecutor.__call__.<locals>.<dictcomp>:  s:   ø€ ÐoÐoÐoÑU^ÐUYÐ[^�D ¨¬Ð!8Ð!8˜#˜#½mÈCÑ>PÔ>PÐoÐoÐor&   é   z#grid must have at most 3 dimensionsro  r   r   r   r?   )rA  Úgetfullargspecr‚  r;  r  r
  rè  ÚgetcallargsÚcallabler	  rP   rå  r   rO   rû   Ú	Exceptionró  ÚknobsÚcompilationÚfront_end_debuggingr   rW  r3  r(  )r#   r  r=  r  r  ÚhookÚpatch_scoper<  r	  rÔ   rù   rú   Úer+  s   `            @r$   Ú__call__zGridExecutor.__call__)  sj  øø€ õ Ô(¨¬Ñ1Ô1ˆØGÐGÐGÐG 6§<¢<¡>¤>ÐGÑGÔGˆà#×2Ò2°8¸VÑDÔDÑˆ�*àÔ&ð 	*ð 	*ˆDØˆD�(Ð)˜jÐ)Ð)Ð)Ð)å! $¤'Ñ*Ô*ˆð	"õ Ô& t¤wÐH°ÐHÐHÐH¸ZÐHÐHˆDØoÐoÐoÐoÐbf×blÒblÑbnÔbnÐoÑoÔoˆDå&.¨t¬yÑ&9Ô&9ÐH�4—9’9˜T‘?”?�?¸t¼yˆDÝ�t‘9”9 ’>�>�>Ð#H‘>”>�>Ø˜% 1¥s¨4¡y¤y¡=Ñ1Ñ1ˆDÝÔ,¨dÐ3Ð3ð	7Ý˜t Aœw™œð ,ð ,�AÝ" 4¨¤7™^œ^ð ,ð ,˜Ý!& t¨A¤w¡¤ð ,ð ,˜AÝ/×<Ò<¸QÀÀ1ÑEÔEÐEØ#˜DœG˜O˜O d˜O˜O˜O˜Oð,ð,ð,øõ
 ð 7ð 7ð 7Ý”<Ô+Ô?ð ØÝ&¥t¨A¡w¤wÑ/Ô/°QÐ6øøøøð7øøøð,ð ×ÒÑ!Ô!Ð!Ð!øˆK×ÒÑ!Ô!Ð!Ð!øøøà×Ò˜x¨°6¸:ÑFÔFÐFÐFÐFs2   Á<B-G8 Ä*A1F ÆG8 Æ
GÆ&4GÇGÇG8 Ç8HN)r7   r8   r9   rI   r  r(  r8  r?   r&   r$   r  r  ß  sb   € € € € € à:<ð cð cð cð cð#$ð #$ð #$ðJ#ð #ð #ð2$Gð $Gð $Gð $Gð $Gr&   r  c                  ó   — e Zd Zd„ ZdS )ÚASTTransformerc           	     ó–  — g }|j         D ]}||                      |¦  «        gz  }Œt          |¦  «        dk    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 supportedr$  )ÚidÚctxrf  )r5   r   r=  F)r5   )Úfuncr<  Úkeywords)ÚtargetsÚvisitrP   r   ÚastÚCallÚ	AttributeÚNameÚLoadr5   ÚConstant)r#   ÚnodeÚnamesÚtargets       r$   Úvisit_AssignzASTTransformer.visit_AssignR  sÈ   € ØˆØ”lð 	*ð 	*ˆFØ�d—j’j Ñ(Ô(Ð)Ñ)ˆEˆEÝˆu‰:Œ:˜Š>ˆ>ÝÐEÑFÔFÐFõ ”XÝ”¥S¤XÐ1GÍSÌXÉZÌZÐ%XÑ%XÔ%XÐ_jÝ#&¤8¡:¤:ð/ñ /ô /Ø6:´jÅ#Ä,ÐUZÐB[ÑB[ÔB[Ð5\Ðgiðkñ kô kˆŒ
ð ˆr&   N)r7   r8   r9   rK  r?   r&   r$   r:  r:  P  s#   € € € € € ðð ð ð ð r&   r:  c                  óL   — e Zd Z e¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ ZdS )	ÚFunctionRewriterc                ó>   — || _         || _        d| _        d| _        d S )NrÏ  r   )r‚  r=  ÚfilenameÚdef_file_lineno)r#   r‚  r=  s      r$   rI   zFunctionRewriter.__init__c  s%   € ØˆŒØˆŒØˆŒà$%ˆÔÐÐr&   c                ó`  — 	 t          j        | j        ¦  «        \  }}n# t          $ r
 | j        cY S w xY w|                      ¦   «         \  | _        | _        |                      |¦  «        | _        |  	                    |¦  «        }|  
                    |¦  «        }|                      |¦  «        S r(   )rA  Úgetsourcelinesr‚  r1  Ú_get_jit_fn_file_linerO  rP  Ú	_find_defÚ
def_linenoÚ_prepare_sourceÚ_transform_astÚ_compile_and_exec)r#   ÚlinesrŒ  ru  Útransformed_asts        r$   Úrewrite_astzFunctionRewriter.rewrite_astj  s¯   € ð	ÝÔ-¨d¬gÑ6Ô6‰HˆE�1�1øÝð 	ð 	ð 	Ø”7ˆNˆNˆNð	øøøð /3×.HÒ.HÑ.JÔ.JÑ+ˆŒ�tÔ+ØŸ.š.¨Ñ/Ô/ˆŒØ×"Ò" 5Ñ)Ô)ˆØ×-Ò-¨cÑ2Ô2ˆØ×%Ò% oÑ6Ô6Ð6s   ‚ Ÿ3²3c                óD   — ddl m}m}  | || j        ¦  «        ¦  «        S )Nr   )Úget_jit_fn_file_lineÚJITFunction)rõ  r]  r^  r‚  )r#   r]  r^  s      r$   rS  z&FunctionRewriter._get_jit_fn_file_line~  s7   € Ø:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ø#Ð# K K°´Ñ$8Ô$8Ñ9Ô9Ð9r&   c                óŒ   — d}t          |¦  «        D ]1\  }}|                     ¦   «                              d¦  «        r|dz   }Œ2|S )Nr   zdef r   )r¾  ÚstripÚ
startswith)r#   rY  rU  rÅ   Úlines        r$   rT  zFunctionRewriter._find_def‚  sP   € Øˆ
å  Ñ'Ô'ð 	#ð 	#‰GˆAˆtØ�zŠz‰|Œ|×&Ò& vÑ.Ô.ð #Ø ™U�
øØÐr&   c                óx   — || j         dz
  d …         }d                     |¦  «        }t          j        |¦  «        S )Nr   rÏ  )rU  ÚjoinÚtextwrapÚdedent)r#   rY  ru  s      r$   rV  z FunctionRewriter._prepare_sourceŠ  s8   € Ø�d”o¨Ñ)Ð*Ð*Ô+ˆØ�gŠg�e‰nŒnˆÝŒ˜sÑ#Ô#Ð#r&   c                óÈ   — t          j        |¦  «        }| j                             |¦  «        }t          j        |¦  «         | j        dz
  }t          j        ||¦  «         |S r)  )rB  ÚparseÚast_transformerrA  Úfix_missing_locationsrP  Úincrement_lineno)r#   ru  Ú
parsed_astrZ  Ú
inc_linenos        r$   rW  zFunctionRewriter._transform_ast�  s^   € õ ”Y˜s‘^”^ˆ
ØÔ.×4Ò4°ZÑ@Ô@ˆÝÔ! /Ñ2Ô2Ð2ØÔ)¨AÑ-ˆ
ÝÔ˜_¨jÑ9Ô9Ð9ØÐr&   c                óþ   — t          || j        d¬¦  «        }i | j        ¥}| j        j        }t          ¦   «                              ¦   «         D ]\  }}||vr|||<   Œt          |||¦  «         || j        j                 S )NÚexec)rO  Úmode)	ÚcompilerO  r=  r‚  rä  Úglobalsr;  ro  r7   )r#   rZ  Úcompiled_codeÚlocal_namespaceÚ
fn_globalsr4   r5   s          r$   rX  z"FunctionRewriter._compile_and_execš  s…   € Ý ¸$¼-ÈfÐUÑUÔUˆØ)˜Tœ[˜/ˆØ”WÔ(ˆ
Ý!™)œ)Ÿ/š/Ñ+Ô+ð 	(ð 	(‰JˆC�Ø˜*Ð$Ð$Ø"'�
˜3‘øÝˆ]˜J¨Ñ8Ô8Ð8Ø˜tœwÔ/Ô0Ð0r&   N)r7   r8   r9   r:  ri  rI   r[  rS  rT  rV  rW  rX  r?   r&   r$   rM  rM  `  sŠ   € € € € € Ø$�nÑ&Ô&€Oð&ð &ð &ð7ð 7ð 7ð(:ð :ð :ðð ð ð$ð $ð $ð
	ð 	ð 	ð1ð 1ð 1ð 1ð 1r&   rM  c                  óT   — e Zd ZU i Zded<   dd„Zd„ Zd„ Zd„ Ze	d	„ ¦   «         Z d
„ Z
dS )ÚInterpretedFunctionzDict[Callable, Callable]Úrewritten_fnrê   rë   c                óÌ   — || _         t          |fi |¤Ž| _        || _        g | _        t          j        |¦  «        }d„ |j                             ¦   «         D ¦   «         | _	        d S )Nc                ó   — g | ]	}|j         ‘Œ
S r?   rÜ  rÕ  s     r$   r«  z0InterpretedFunction.__init__.<locals>.<listcomp>°  s   € ÐHÐHÐH Q˜!œ&ÐHÐHÐHr&   )
r‚  rM  Úrewriterr=  r
  rA  Ú	signatureÚ
parametersr‹  r  )r#   r‚  r=  r|  s       r$   rI   zInterpretedFunction.__init__©  sg   € ØˆŒÝ(¨Ð6Ð6¨vÐ6Ð6ˆŒØˆŒØˆÔåÔ% bÑ)Ô)ˆ	ØHÐH¨)Ô*>×*EÒ*EÑ*GÔ*GÐHÑHÔHˆŒˆˆr&   c               óv   — |rd S |                       ¦   «         } t          || j        || j        ¦  «        |i |¤ŽS r(   )Úrewriter  r  r
  )r#   r	  Úwarmupr<  r=  r‚  s         r$   ÚrunzInterpretedFunction.run²  sE   € Øð 	ØˆFØ�\Š\‰^Œ^ˆØI�|˜B ¤°°dÔ6HÑIÔIÈ4ÐZÐSYÐZÐZÐZr&   c                ó\   — t          |¦  «        sJ ‚| j                             |¦  «         d S r(   )r0  r
  r-  )r#   r5  s     r$   Úadd_pre_run_hookz$InterpretedFunction.add_pre_run_hook¸  s0   € Ý˜‰~Œ~ÐÐˆ~ØÔ×!Ò! $Ñ'Ô'Ð'Ð'Ð'r&   c                óŽ   — | j         | j        vr&| j                             ¦   «         | j        | j         <   | j        | j                  S r(   )r‚  rx  r{  r[  r"   s    r$   r  zInterpretedFunction.rewrite¼  s?   € ØŒ7˜$Ô+Ð+Ð+Ø)-¬×)BÒ)BÑ)DÔ)DˆDÔ˜dœgÑ&ØÔ  ¤Ô)Ð)r&   c                ó   — | j         j        S r(   )r‚  r7   r"   s    r$   r7   zInterpretedFunction.__name__Á  s   € àŒwÔÐr&   c                óÂ   — t          | j        ¦  «         |                      ¦   «         }	  ||i |¤ŽS # t          $ r"}t	          t          |¦  «        ¦  «        |‚d }~ww xY wr(   )rè  r‚  r  r1  r   rW  )r#   r<  r=  r‚  r7  s        r$   r8  zInterpretedFunction.__call__Å  sn   € å�D”GÑÔÐØ�\Š\‰^Œ^ˆð	3Ø�2�tÐ&˜vÐ&Ð&Ð&øÝð 	3ð 	3ð 	3Ý"¥4¨¡7¤7Ñ+Ô+°Ð2øøøøð	3øøøs   ª2 ²
A¼AÁANrË  )r7   r8   r9   rx  r;   rI   r�  rƒ  r  rZ  r8  r?   r&   r$   rw  rw  ¥  s™   € € € € € € à-/€LÐ/Ð/Ð/Ñ/ðIð Ið Ið Ið[ð [ð [ð(ð (ð (ð*ð *ð *ð
 ð ð  ñ „Xð ð3ð 3ð 3ð 3ð 3r&   rw  )rw  r&  )QÚ
__future__r   rB  re  rA  Útypingr   r   r   r   r   r	   rÑ   ÚnumpyrL   ró  Útriton.languageÚlanguager‰   r<   r
   Útriton.language.semanticr   Útriton.runtime.jitr   Útriton.tools.tensor_descriptorr   Úerrorsr   Ú	functoolsr   Ú_C.libtritonr   rj  r   r²   Ú_utilsr   r   r   rA   ra   rr   r   r—   r¦   rÏ   rÕ   rÚ   Ú	vectorizer›   r%  rœ   r&  rT   rñ  rÝ   ré   r*  r,  rå  r$  r;   r&  r?  rF  r[  r]  ro  r¥  r¿  rà  rè  rí  rý  r   r  ÚNodeTransformerr:  rM  rw  r?   r&   r$   ú<module>r•     s�  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "Ø 
€
€
€
Ø €€€Ø €€€Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà €€€Ø Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø .Ð .Ð .Ð .Ð .Ð .Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "à€GˆC�L„L€ð ðð ð ð ð ñ ô ñ „ðð@"ð "ð "ð "ð "ñ "ô "ð "ð4("ð ("ð ("ð ("ð ("ñ ("ô ("ð ("ðV €�$ÐÑÔð
&ð 
&ð 
&ð 
&ð 
&ñ 
&ô 
&ñ Ôð
&ðð ð ð 	ð 	ð 	ðð ð ð@='ð ='ð ='ð@ð ð ð
#ð #ð #ð ˆbŒl˜4¨¬¨Ð5Ñ5Ô5€ØˆbŒl˜4¨¬¨Ð5Ñ5Ô5€Ø�”˜Z°´°Ð<Ñ<Ô<€ðpð pð pð pð pñ pô pð pð^8ð ^8ð ^8ð ^8ð ^8ñ ^8ô ^8ð ^8ðB ˆ6‰8Œ8€Ø(Ð(Ñ*Ô*Ð Ø'5 ~Ð6IÑ'JÔ'JÐ Ð JÐ JÐ JÑ Jð-ð -ð -ð -ð -ñ -ô -ð -ð(*ð *ð *ð *ð;ð ;ð ;ð ;ð:ð :ð :ð :ð."Ið "Ið "Ið "Ið "Iñ "Iô "Ið "IðJ].ð ].ð ].ð ].ð ].Ð%ñ ].ô ].ð ].ð@;ð ;ð ;ð ;ð ;Ð#ñ ;ô ;ð ;ð|;ð ;ð ;ð ;ð Kð Kð Kð Kð\ð ð ð ð ð ðBð ð ðð ð ðnGð nGð nGð nGð nGñ nGô nGð nGðbð ð ð ð �SÔ(ñ ô ð ð B1ð B1ð B1ð B1ð B1ñ B1ô B1ð B1ðJ'3ð '3ð '3ð '3ð '3˜/¨!Ô,ñ '3ô '3ð '3ð '3ð '3r&   