§
    ÕóÉjh ã                  óø  — 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( ed¬¦  «         G d„ d¦  «        ¦   «         Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d „ Z2d!„ Z3d"„ Z4 ej5        e.ej6        g¬#¦  «        Z7 ej5        e.ej8        g¬#¦  «        Z9 ej5        e/ej:        g¬#¦  «        Z; G d$„ d%¦  «        Z< G d&„ d'¦  «        Z= e>¦   «         Z? e=¦   «         Z@ ee@¦  «        ZAd(eBd)<    G d*„ d+¦  «        ZCdDd-„ZDdDd.„ZEdDd/„ZF G d0„ d1¦  «        ZG G d2„ d3eG¦  «        ZH G d4„ d5eG¦  «        ZIdDd6„ZJdDd7„ZKd8„ ZLd9„ ZMd:„ ZNd;„ ZO G d<„ d=¦  «        ZP G d>„ d?ejQ        ¦  «        ZR G d@„ dA¦  «        ZS G dB„ dCee&         ¦  «        ZTdS )Eé    )Ú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    ú/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/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d„Zd	„ Zdd„ZdS )ÚTensorDescHandleÚbaser   ÚshapeúList[TensorHandle]ÚstridesÚblock_shapeú	List[int]c                ót   — || _         t          |¦  «        | _        || _        || _        || _        || _        d S r(   )rB   ÚlenÚndimrC   rE   rF   Úpadding)r#   rB   rC   rE   rF   rK   s         r$   Ú__init__zTensorDescHandle.__init__>   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)
rB   r   ÚitemrI   rE   rJ   rF   r   r-   r!   )r#   Ú	scalar_tyr    ÚstrideÚbyte_strides        r$   ÚvalidatezTensorDescHandle.validateG   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&   Úoffsetsc                ó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   rO   rN   r   z*block offset start must be 16-byte aligned©r   r   )rI   rJ   rB   r   r-   r!   r   ÚnpÚbroadcast_torF   Úonesr)   ÚrangeÚarangeÚreshaperE   ÚastypeÚuint64rC   r   Úscalar)
r#   rU   rQ   r    Ú	ptrs_dataÚmasksÚdimÚ
bcast_dimsÚoffÚptrs_handles
             r$   Úmaterialize_pointersz%TensorDescHandle.materialize_pointersT   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)rB   r   rC   rD   rE   rD   rF   rG   )rU   rD   )r7   r8   r9   rL   rT   rg   r?   r&   r$   rA   rA   <   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)rv   Útf32x3ÚieeeÚallowed_dot_input_precisionsr   ÚintÚmax_num_imprecise_acc_defaultr   Úbackend_name)r7   r8   r9   rk   r;   rl   rm   rn   rt   ru   rx   r{   r}   r~   r?   r&   r$   rj   rj   g   sÂ   € € € € € € à"&€KÐ&Ð&Ð&Ñ&Ø€EÐÐÐÑØ"ÐÐ"Ð"Ð"Ñ"Ø€DÐÐÐÑØ,cÐÐcÐcÐcÑcØ9;Ð%Ð;Ð;Ð;Ñ;Ø'-ÐÐ-Ð-Ð-Ñ-Ø4NÐ ÐNÐNÐNÑNØ)*Ð!Ð*Ð*Ð*Ñ*Ø%€LÐ%Ð%Ð%Ñ%Ð%Ð%r&   rj   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   u   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(   )	rX   Úuint8Úint8Úuint16Úint16Úuint32Úint32r_   Úint64rW   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‚   rX   r   r_   Ú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ÚuintrW   r   r   )ÚgetattrrX   r!   Ú
frombufferÚtobytesÚfp_mantissa_widthÚexponent_biasr^   r�   ÚanyÚ
zeros_liker[   ÚmaximumÚminimumÚ_irÚROUNDING_MODEÚRTNEr]   rC   )Ú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&   c                ó  — | j         t          j        t          j        fv sJ ‚|                      t          j        ¦  «        } |                      t          j        ¦  «        } | dz  } |                      t          j        ¦  «        } | S )Né   )r   rX   rˆ   r‰   r^   r�   Úviewr“   )Úscales    r$   Ú_e8m0_to_f32r×   ü   se   € ØŒ;�2œ8¥R¤WÐ-Ð-Ð-Ð-Ð-Ø�LŠL�œÑ"Ô"€EØ�LŠL�œÑ"Ô"€EØ�R‰K€EØ�JŠJ•r”zÑ"Ô"€EØ€Lr&   c                ó  — | j         t          j        k    sJ ‚| t          j        d¦  «        z  }| t          j        d¦  «        z	  }| j        d d…         | j        d         dz  fz   }t          j        |t          j        ¬¦  «        }||ddd d…f<   ||ddd d…f<   t          j        g d	¢t          j        ¬¦  «        }||t          j        d
¦  «        z           }|t          j        d¦  «        z  dk    }t          j        || |¦  «        S )Né   é   rO   r   rW   .r   r   )g        g      à?g      ð?g      ø?g       @g      @g      @g      @é   r   )r   rX   rˆ   rC   ÚemptyÚarrayr“   Úwhere)r5   ÚlowÚhighÚunpacked_shapeÚunpacked_valÚpositive_e2m1_lutÚ
abs_valuesÚsignss           r$   Ú_e2m1_to_f32ræ     s  € ØŒ;�"œ(Ò"Ð"Ð"Ð"à
•"”(˜4‘.”.Ñ
 €CØ•B”H˜Q‘K”KÑ€Dà”[  " Ô%¨¬°R¬¸1Ñ)<Ð(?Ñ?€NÝ”8˜Nµ"´(Ð;Ñ;Ô;€LØ!€L��a�d˜�d�ÑØ"€L��a�d˜�d�Ñõ œÐ!IÐ!IÐ!IÕQSÔQ[Ð\Ñ\Ô\ÐØ" Lµ2´8¸D±>´>Ñ$AÔC€JØ�BœH T™NœNÑ*¨qÒ0€EÝŒ8�E˜J˜;¨
Ñ3Ô3Ð3r&   c                ó”  — | j         t          j        k    rt          | j        ¦  «        }not          | j        | j         t          j        t          j        j	        ¦  «         
                    t          j        ¦  «                             t          j        ¦  «        }| j         t          j        k    �r)| j        t          j        d¦  «        k    }t          j        |t          j        d¦  «        |¦  «        }| j        t          j        d¦  «        k    }t          j        |t          j        d¦  «         |¦  «        }t          j        | j        t          j        d¦  «        z  t          j        d¦  «        k    | j        t          j        d¦  «        z  t          j        d¦  «        k    ¦  «        }t          j        |t          j        d¦  «        |¦  «        }no| j         t          j        k    rZ| j        t          j        d¦  «        z  t          j        d¦  «        k    }t          j        |t          j        d¦  «        |¦  «        }|S )Né|   Úinféü   é   r   Únané   )r   r�   rˆ   ræ   r   rÇ   r’   rª   r«   r¬   rÕ   rX   r^   r“   r–   rÞ   Úlogical_andr˜   )Úvalue_handleÚvalue_floatÚpos_inf_maskÚneg_inf_maskÚnan_masks        r$   Ú_mxfp_value_handle_to_float32rô     s²  € ØÔ�RœXÒ%Ð%Ý" <Ô#4Ñ5Ô5ˆˆõ
 %ØÔØÔÝŒJÝÔÔ"ñ	
ô 
÷
 Š$�rŒzÑ
Ô
Ÿ6š6¥"¤*Ñ-Ô-ð 	ð Ô�Rœ[Ò(Ñ(Ø#Ô(­B¬H°T©N¬NÒ:ˆÝ”h˜|­R¬Z¸Ñ->Ô->ÀÑLÔLˆà#Ô(­B¬H°T©N¬NÒ:ˆÝ”h˜|­b¬j¸Ñ.?Ô.?Ð-?ÀÑMÔMˆå”> <Ô#4µr´xÀ±~´~Ñ#EÍ"Ì(ÐSWÉ.Ì.Ò"XØ#/Ô#4µr´xÀ±{´{Ñ#BÅrÄxÐPQÁ{Ä{Ò"RñTô Tˆå”h˜x­¬°EÑ):Ô):¸KÑHÔHˆˆØ	Ô	�rœ}Ò	,Ð	,ØÔ$¥r¤x°¡~¤~Ñ5½¼À$¹¼ÒGˆÝ”h˜x­¬°EÑ):Ô):¸KÑHÔHˆàÐr&   c                óx   — t          j        | |d¦  «        } t          | ¦  «        }t          j        |d|¦  «        S )NrO   )rX   Úmoveaxisræ   )r   ÚaxisÚunpackeds      r$   Ú_unpack_e2m1rù   7  s8   € õ Œ;�t˜T 2Ñ&Ô&€DÝ˜DÑ!Ô!€HÝŒ;�x  TÑ*Ô*Ð*r&   c                óÀ  — |t           j        j        k    r%|r|rdnd}n|rdnd}t          | j        |¦  «        }nt          | ¦  «        }|€|S t          |j        ¦  «        }|rGt          j        ||j	        d         |j	        d         z  d¬¦  «        }t          j
        |dd¦  «        }n0t          j        ||j	        d         |j	        d         z  d¬¦  «        }||z  S )NéþÿÿÿrO   ©r÷   )rª   ÚScaleDotElemTypeTYÚE2M1rù   r   rô   r×   rX   ÚrepeatrC   Úswapaxes)rï   Úscale_handleÚformat_enumÚk_packÚis_rhsÚunpack_axisr5   rÖ   s           r$   Ú_prepare_dot_scaled_operandr  ?  së   € Ø•cÔ,Ô1Ò1Ð1Øð 	/Ø &Ð.˜"˜"¨BˆKˆKà &Ð.˜"˜"¨BˆKÝ˜\Ô.°Ñ<Ô<ˆˆå-¨lÑ;Ô;ˆàÐØˆå˜Ô*Ñ+Ô+€Eàð Nå”	˜% ¤¨R¤°E´KÀ´OÑ!CÈ"ÐMÑMÔMˆÝ”˜E 2 rÑ*Ô*ˆˆå”	˜% ¤¨R¤°E´KÀ´OÑ!CÈ"ÐMÑMÔMˆà�5‰=Ð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                  ó.  — 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|dh„ Z}eKZ~eKZ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¼d½d¡„Z¬d¾d¥„Z­d¿d§„Z®dÀdª„Z¯dÁd«„Z°d¬„ Z±dÂ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)rn   rj   ÚoptionsÚcodegen_fnsr	  r  r"   s    r$   rL   zInterpreterBuilder.__init__y  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_dim‰  s   € Ø˜R ˜ˆŒˆˆr&   c                ó   — t           j        S r(   )r�   r’   r"   s    r$   Úget_half_tyzInterpreterBuilder.get_half_tyŽ  ó
   € ÝŒzÐr&   c                ó   — t           j        S r(   )r�   r•   r"   s    r$   Úget_bf16_tyzInterpreterBuilder.get_bf16_ty‘  ó
   € ÝŒ{Ðr&   c                ó   — t           j        S r(   )r�   r“   r"   s    r$   Úget_float_tyzInterpreterBuilder.get_float_ty”  r/  r&   c                ó   — t           j        S r(   )r�   r”   r"   s    r$   Úget_double_tyz InterpreterBuilder.get_double_ty—  r/  r&   c                ó   — t           j        S r(   )r�   r‘   r"   s    r$   Úget_int1_tyzInterpreterBuilder.get_int1_tyš  ó	   € ÝŒwˆr&   c                ó   — t           j        S r(   )r�   r‰   r"   s    r$   Úget_int8_tyzInterpreterBuilder.get_int8_ty�  r9  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_ty£  r>  r&   c                ó   — t           j        S r(   )r�   rŠ   r"   s    r$   Úget_uint16_tyz InterpreterBuilder.get_uint16_ty¦  ó
   € ÝŒyÐr&   c                ó   — t           j        S r(   )r�   r�   r"   s    r$   Úget_int32_tyzInterpreterBuilder.get_int32_ty©  r>  r&   c                ó   — t           j        S r(   )r�   rŒ   r"   s    r$   Úget_uint32_tyz InterpreterBuilder.get_uint32_ty¬  rC  r&   c                ó   — t           j        S r(   )r�   rŽ   r"   s    r$   Úget_int64_tyzInterpreterBuilder.get_int64_ty¯  r>  r&   c                ó   — t           j        S r(   )r�   r_   r"   s    r$   Úget_uint64_tyz InterpreterBuilder.get_uint64_ty²  rC  r&   c                ó   — t           j        S r(   )r�   r˜   r"   s    r$   Úget_fp8e4nv_tyz!InterpreterBuilder.get_fp8e4nv_tyµ  ó
   € ÝŒ}Ðr&   c                ó   — t           j        S r(   )r�   rš   r"   s    r$   Úget_fp8e4b15_tyz"InterpreterBuilder.get_fp8e4b15_ty¸  ó
   € ÝŒ~Ðr&   c                ó   — t           j        S r(   )r�   r™   r"   s    r$   Úget_fp8e4b8_tyz!InterpreterBuilder.get_fp8e4b8_ty»  rN  r&   c                ó   — t           j        S r(   )r�   r–   r"   s    r$   Úget_fp8e5_tyzInterpreterBuilder.get_fp8e5_ty¾  r2  r&   c                ó   — t           j        S r(   )r�   r—   r"   s    r$   Úget_fp8e5b16_tyz"InterpreterBuilder.get_fp8e5b16_tyÁ  rQ  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   rC   s      r$   Úget_block_tyzInterpreterBuilder.get_block_tyÇ  s   € ÝŒ}˜U EÑ*Ô*Ð*r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S ©NrW   )r   rX   rÝ   Ú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 r_  )r   rX   rÝ   rˆ   r�   ra  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 r_  )r   rX   rÝ   r‰   r�   ra  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 r_  )r   rX   rÝ   rŠ   r�   ra  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 r_  )r   rX   rÝ   r‹   r�   ra  s     r$   Ú	get_int16zInterpreterBuilder.get_int16Ö  re  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r_  )r   rX   rÝ   rŒ   r�   ra  s     r$   Ú
get_uint32zInterpreterBuilder.get_uint32Ù  rj  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r_  )r   rX   rÝ   r�   r�   ra  s     r$   Ú	get_int32zInterpreterBuilder.get_int32Ü  re  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r_  )r   rX   rÝ   r_   r�   ra  s     r$   Ú
get_uint64zInterpreterBuilder.get_uint64ß  rj  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r_  )r   rX   rÝ   rŽ   r�   ra  s     r$   Ú	get_int64zInterpreterBuilder.get_int64â  re  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r_  )r   rX   rÝ   r’   r�   ra  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 r_  )r   rX   rÝ   r“   r�   ra  s     r$   Úget_fp32zInterpreterBuilder.get_fp32è  rw  r&   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r_  )r   rX   rÝ   r”   r�   ra  s     r$   Úget_fp64zInterpreterBuilder.get_fp64ë  rw  r&   c                óf   — t          t          j        dgt          |¦  «        ¬¦  «        |¦  «        S ©Nr   rW   )r   rX   rÝ   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 NonerW   )r#  r   r   rX   rÝ   r�   r�   ©r#   r÷   s     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 r_  )r   rX   rÝ   r"  r�   r�   r�  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 r_  )r   rX   Ú	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 r_  )r   rX   r†  r   r)   r�   r‘   Úcreate_masked_store)r#   rˆ  Úvalr‰  rŠ  rŒ  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 r_  )r/   rž   r   rX   r§   r   Ú_interpreterÚload)
r#   ÚptrsrŒ  r�  Úcache_modifierÚeviction_policyr‹  Údtype_ttÚ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(   )r”  Ústorer   )r#   r–  r5   rŒ  r—  r˜  s         r$   r�  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   r`   r�   r•   r“   rÇ   r   rÕ   rž   r   r^   )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(   ©r£  ©r#   rŸ  r   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#   rŸ  r   Ú	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   r`   rÇ   r   rÕ   rž   r   )r#   rŸ  r   r°   r¡  r¢  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   rÕ   rž   r`   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   r`   r   r^   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·  rX   Úadd©r#   r´  rµ  s      r$   r  zInterpreterBuilder.<lambda>5  s   € ¨¯ª¸¸SÅ"Ä&Ñ)IÔ)I€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Úmultiplyr»  s      r$   r  zInterpreterBuilder.<lambda>6  ó   € ¨¯ª¸¸SÅ"Ä+Ñ)NÔ)N€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Údivider»  s      r$   r  zInterpreterBuilder.<lambda>7  s   € ¨¯ª¸¸SÅ"Ä)Ñ)LÔ)L€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Úfmodr»  s      r$   r  zInterpreterBuilder.<lambda>8  ó   € ¨¯ª¸¸SÅ"Ä'Ñ)JÔ)J€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Úsubtractr»  s      r$   r  zInterpreterBuilder.<lambda>9  r¿  r&   c                óB   — |                       |t          j        ¦  «        S r(   )Úunary_oprX   Únegative©r#   r­   s     r$   r  zInterpreterBuilder.<lambda>:  s   €  d§m¢m°E½2¼;Ñ&GÔ&G€ 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>A  rÆ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r¹  r»  s      r$   r  zInterpreterBuilder.<lambda>B  s   € ¨¯ª°s¸CÅÄÑ(HÔ(H€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   rÈ  r»  s      r$   r  zInterpreterBuilder.<lambda>C  rÏ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r·  rX   Ú
left_shiftr»  s      r$   r  zInterpreterBuilder.<lambda>D  s   € ¨¯ª°s¸CÅÄÑ(OÔ(O€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r·  rX   Úright_shiftr»  s      r$   r  zInterpreterBuilder.<lambda>E  s   € ¨¯ª¸¸SÅ"Ä.Ñ)QÔ)Q€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   r©   r»  s      r$   r  zInterpreterBuilder.<lambda>F  ó   € ¨$¯.ª.¸¸cÅ2Ä:Ñ*NÔ*N€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   rß  r»  s      r$   r  zInterpreterBuilder.<lambda>G  rà  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rß  r»  s      r$   r  zInterpreterBuilder.<lambda>H  ó   € ¨T¯^ª^¸CÀÅbÄjÑ-QÔ-Q€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r·  rX   Úfminr»  s      r$   r  zInterpreterBuilder.<lambda>I  ó   € ¨D¯NªN¸3ÀÅRÄWÑ,MÔ,M€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   r¨   r»  s      r$   r  zInterpreterBuilder.<lambda>J  rà  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rè  r»  s      r$   r  zInterpreterBuilder.<lambda>K  rà  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rè  r»  s      r$   r  zInterpreterBuilder.<lambda>L  rã  r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r·  rX   Úfmaxr»  s      r$   r  zInterpreterBuilder.<lambda>M  ræ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Ú
less_equalr»  s      r$   r  zInterpreterBuilder.<lambda>N  ó   € ¨D¯NªN¸3ÀÅRÄ]Ñ,SÔ,S€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Úlessr»  s      r$   r  zInterpreterBuilder.<lambda>O  ræ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Úgreater_equalr»  s      r$   r  zInterpreterBuilder.<lambda>P  ó   € ¨D¯NªN¸3ÀÅRÔEUÑ,VÔ,V€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Úgreaterr»  s      r$   r  zInterpreterBuilder.<lambda>Q  ó   € ¨D¯NªN¸3ÀÅRÄZÑ,PÔ,P€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   rî  r»  s      r$   r  zInterpreterBuilder.<lambda>R  rð  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rò  r»  s      r$   r  zInterpreterBuilder.<lambda>S  ræ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rõ  r»  s      r$   r  zInterpreterBuilder.<lambda>T  r÷  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rù  r»  s      r$   r  zInterpreterBuilder.<lambda>U  rû  r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Úequalr»  s      r$   r  zInterpreterBuilder.<lambda>V  s   € ¨4¯>ª>¸#¸sÅBÄHÑ+MÔ+M€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   ©r·  rX   Ú	not_equalr»  s      r$   r  zInterpreterBuilder.<lambda>W  s   € ¨4¯>ª>¸#¸sÅBÄLÑ+QÔ+Q€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   rò  r»  s      r$   r  zInterpreterBuilder.<lambda>X  ræ  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rù  r»  s      r$   r  zInterpreterBuilder.<lambda>Y  rû  r&   c                óD   — |                       ||t          j        ¦  «        S r(   rî  r»  s      r$   r  zInterpreterBuilder.<lambda>Z  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>a  r÷  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r  r»  s      r$   r  zInterpreterBuilder.<lambda>b  r  r&   c                óD   — |                       ||t          j        ¦  «        S r(   r  r»  s      r$   r  zInterpreterBuilder.<lambda>c  r  r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r·  rX   Úbitwise_andr»  s      r$   r  zInterpreterBuilder.<lambda>d  ó   € ¨¯ª°s¸CÅÄÑ(PÔ(P€ r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r·  rX   Úbitwise_xorr»  s      r$   r  zInterpreterBuilder.<lambda>e  r  r&   c                óD   — |                       ||t          j        ¦  «        S r(   )r·  rX   Ú
bitwise_orr»  s      r$   r  zInterpreterBuilder.<lambda>f  s   €  t§~¢~°c¸3ÅÄÑ'NÔ'N€ r&   c                ó�   — t          |j        t          j        |j        |j        ¦  «        z
  |j        z  |j        j        ¦  «        S r(   )r   r   rX   rÅ  r   r`   r»  s      r$   rÓ  zInterpreterBuilder.create_idivj  s9   € õ ˜SœX­¬°´¸#¼(Ñ(CÔ(CÑCÈÌÑPÐRUÔR[ÔRbÑcÔcÐcr&   c                ód  — t          |j        j        ¦  «        }t          |j        j        ¦  «        }|j                             |¦  «        }|j                             |¦  «        }t	          ||j        ¦  «        }t	          ||j        ¦  «        }|                      ||t          j        ¦  «        S r(   )r�   r   r   r^   r   r·  rX   rÝ  )r#   r´  rµ  Ú	lhs_dtypeÚ	rhs_dtypeÚlhs_dataÚrhs_datas          r$   Úcreate_ashrzInterpreterBuilder.create_ashrp  s„   € å(¨¬¬Ñ8Ô8ˆ	Ý(¨¬¬Ñ8Ô8ˆ	Ø”8—?’? 9Ñ-Ô-ˆØ”8—?’? 9Ñ-Ô-ˆÝ˜8 S¤YÑ/Ô/ˆÝ˜8 S¤YÑ/Ô/ˆØ�~Š~˜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   rX   rŽ   r_   r   Únp_umulhi_u64r`   r¡   r    r^   r¾  )r#   r´  rµ  r   Úcompute_dtyper  r   Úret_datas           r$   Úcreate_umulhiz InterpreterBuilder.create_umulhiz  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µ  r�  r¶  rÆ   r„   s          r$   Ú
ternary_opzInterpreterBuilder.ternary_op†  s`   € Ø��C”H˜cœh¨¬
Ñ3Ô3ˆØ”;Ô%ˆå% f¨hÑ7Ô7ð 	<Ø—]’]¥=°Ñ#:Ô#:Ñ;Ô;ˆFå˜F HÑ-Ô-Ð-r&   c                óð   — |t           j        j        k    r@|                      |                      ||t          j        ¦  «        |t          j        ¦  «        S |                      |||t          j        ¦  «        S r(   )	rª   ÚPROPAGATE_NANÚNONEr·  rX   rì  rå  r(  Úclip)r#   ÚargÚloÚhiÚpropagate_nanss        r$   Úcreate_clampfz InterpreterBuilder.create_clampf�  sW   € Ø�SÔ.Ô3Ò3Ð3Ø—>’> $§.¢.°°b½"¼'Ñ"BÔ"BÀBÍÌÑPÔPÐPà—?’? 3¨¨Bµ´Ñ8Ô8Ð8r&   c                óF   — |                       |||t          j        ¦  «        S r(   )r(  rX   rÞ   )r#   Úcondr´  rµ  s       r$   r  zInterpreterBuilder.<lambda>•  s   € °·²ÀÀsÈCÕQSÔQYÑ1ZÔ1Z€ r&   c                ó`   — t          |j        |j        z  |j        z   |j        j        ¦  «        S r(   ©r   r   r   r`   r$  s       r$   Ú
create_fmazInterpreterBuilder.create_fma—  s%   € Ý˜AœF Q¤V™O¨a¬fÑ4°a´g´nÑEÔEÐEr&   c                óR   — t           ||j        ¦  «        |j        j        ¦  «        S r(   r5  )r#   r-  r¶  s      r$   rË  zInterpreterBuilder.unary_op›  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¡   rX   r   rÕ   rž   r   r`   )r#   r-  r™  Úmask_bitwidthÚnp_uint_dtyper   rŒ  r›  s           r$   Úcreate_fabszInterpreterBuilder.create_fabsž  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Ë  rX   Úcos©r#   r-  s     r$   r  zInterpreterBuilder.<lambda>¨  ó   €  4§=¢=°µb´fÑ#=Ô#=€ r&   c                óB   — |                       |t          j        ¦  «        S r(   )rË  rX   Úexpr>  s     r$   r  zInterpreterBuilder.<lambda>©  r?  r&   c                óB   — |                       |t          j        ¦  «        S r(   )rË  rX   Úexp2r>  s     r$   r  zInterpreterBuilder.<lambda>ª  ó   €  D§M¢M°#µr´wÑ$?Ô$?€ r&   c                óB   — |                       |t          j        ¦  «        S r(   )rË  rX   Úabsr>  s     r$   r  zInterpreterBuilder.<lambda>«  s   €  D§M¢M°#µr´vÑ$>Ô$>€ r&   c                óB   — |                       |t          j        ¦  «        S r(   )rË  rX   Úfloorr>  s     r$   r  zInterpreterBuilder.<lambda>¬  s   €  T§]¢]°3½¼Ñ%AÔ%A€ r&   c                óB   — |                       |t          j        ¦  «        S r(   )rË  rX   Úceilr>  s     r$   r  zInterpreterBuilder.<lambda>­  rD  r&   c                óB   — |                       |t          j        ¦  «        S r(   )rË  rX   Úlogr>  s     r$   r  zInterpreterBuilder.<lambda>®  r?  r&   c                óB   — |                       |t          j        ¦  «        S r(   )rË  rX   Úlog2r>  s     r$   r  zInterpreterBuilder.<lambda>¯  rD  r&   c                óB   — |                       |t          j        ¦  «        S r(   ©rË  rX   Úsqrtr>  s     r$   r  zInterpreterBuilder.<lambda>°  s   € ¨D¯MªM¸#½r¼wÑ,GÔ,G€ r&   c                óB   — |                       |t          j        ¦  «        S r(   rP  r>  s     r$   r  zInterpreterBuilder.<lambda>±  rD  r&   c                óB   — |                       |t          j        ¦  «        S r(   )rË  rX   Úsinr>  s     r$   r  zInterpreterBuilder.<lambda>²  r?  r&   c                óº   — |j         j        t          j        k    rt	          |j         ¦  «        nt          |j         ¦  «        }t          ||j        j        ¦  «        S r(   )r   r   rX   r“   Únp_erf_fp32Únp_erf_fp64r   r`   )r#   r-  r›  s      r$   Ú
create_erfzInterpreterBuilder.create_erf´  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   rX   rQ  r   r   r`   r>  s     r$   Úcreate_rsqrtzInterpreterBuilder.create_rsqrt¸  s(   € Ý˜A¥¤¨¬Ñ 1Ô 1Ñ1°3´9Ô3CÑDÔDÐDr&   c                óf   — t          |j                             |¦  «        |j        j        ¦  «        S r(   )r   r   r]   r   r`   )r#   r-  rC   Úallow_reorders       r$   r  zInterpreterBuilder.<lambda>¼  s(   € ½\È#Ì(×JZÒJZÐ[`ÑJaÔJaÐcfÔclÔcsÑ=tÔ=t€ r&   c                óf   — t          t          j        |j        |¦  «        |j        j        ¦  «        S r(   )r   rX   Ú	transposer   r   r`   )r#   r-  Úperms      r$   Úcreate_transzInterpreterBuilder.create_trans¾  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   rW   )r   r   r!   Úis_floatingrÇ   r�   r’   rÕ   rX   r   Úmatmulr`   )r#   rÐ   rÑ   ÚdÚinput_precisionÚmax_num_imprecise_accÚa_dataÚb_datas           r$   Ú
create_dotzInterpreterBuilder.create_dotÁ  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 r_  )r   rX   r\   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 )NrW   r   )Úbinsr[   Úweights)r   rX   r†  r   r)   r�   r‘   r   rÞ   r§   Ú	histogramÚlogical_notÚsumr�   )r#   r   rq  rŒ  Údummy_weightsrs  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 )Nrü   )r   rX   Útake_along_axisr   r   r`   )r#   rŸ  Úindicesr÷   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   r^   rX   r_   r   )r#   rˆ  Úoffsetr™  Ú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                óf   — t          t          j        |j        |¦  «        |j        j        ¦  «        S r(   )r   rX   Úexpand_dimsr   r   r`   )r#   r-  r÷   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   rX   rY   r   r   r`   )r#   r-  rC   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   rX   Úconcatenater   r   r`   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 )NrO   rü   )r   rX   Ústackr   r   r`   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   r5  )r#   r‘  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 r}  )rC   r€   r   r�   r›   r   rX   Úfullr   rž   r`   )r#   rl  r-  rC   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   rW   )r   rX   r�  r   rž   r   r`   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   r”  Ú
atomic_casr   r   r`   )r#   rˆ  Úcmpr‘  Ú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 r–  )	Úir_rmw_op_to_interpreter_rmw_opr   r—  r   r”  Ú
atomic_rmwr   r   r`   )r#   ÚrmwOprˆ  r‘  rŒ  rš  r›  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Úvaluesr~  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#  rX   Ú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˜,Ñ&Ô&Ð&Ð&Ð&r&   c                ó   — |s
J d¦   «         ‚d S )NzAssume failedr?   )r#   rÃ  s     r$   Úcreate_assumez InterpreterBuilder.create_assume.  s   € ØÐ)Ð)˜/Ñ)Ô)Ð)Ð)Ð)r&   c                ó   — d S r(   r?   r"   s    r$   Úcreate_barrierz!InterpreterBuilder.create_barrier1  s   € àˆr&   ÚzerorB   r   rC   rD   rE   Útensor_shaperG   r®  r)   rK   rw   c                óT   — t          |||||¦  «        }|                     ¦   «          |S r(   )rA   rT   )r#   rB   rC   rE   rË  r®  rK   Údescs           r$   Úcreate_make_tensor_descriptorz0InterpreterBuilder.create_make_tensor_descriptor5  s)   € å  e¨W°lÀGÑLÔLˆØ�Š‰ŒˆØˆr&   rÍ  rA   rz  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 )NrW   rì   zunsupported padding F)r—  r˜  r‹  )r€   rA   rg   r/   rž   rK   rª   ÚPADDING_OPTIONÚPAD_ZEROr   rX   r§   r   ÚPAD_NANÚ	full_likeÚfloatr   r‡  )r#   rÍ  rz  r—  r˜  r–  rŒ  r™  rš  rK   r�  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(   )rg   r�  )r#   rÍ  r5   rz  r–  rŒ  s         r$   Úcreate_descriptor_storez*InterpreterBuilder.create_descriptor_storeK  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   rO   rW   )rB   r   r-   rž   rX   Úzerosr   rC   rF   Ú	enumerater   r�   r�   rÕ  )r#   rÍ  rØ  rÙ  r~  r   Únp_dtypeÚresultr—  r˜  r½   Úx_offsetrz  s                r$   Úcreate_descriptor_gatherz+InterpreterBuilder.create_descriptor_gatherO  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ß  Úslicerz  s	            r$   Úcreate_descriptor_scatterz,InterpreterBuilder.create_descriptor_scatterZ  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   rO   rW   Tzunsupported type )rž   Únamer   rX   r�  r`   r`  Ú	TypeError)r#   r~  Únp_types      r$   Úget_all_ones_valuez%InterpreterBuilder.get_all_ones_valuea  s†   € Ý Ñ%Ô%ˆØ�G”LÐ Ð Ý¥¤¨¨2°WÐ =Ñ =Ô =¸t¼{ÑKÔKÐKØ�œÒ Ð Ý¥¤¨¨4°wÐ ?Ñ ?Ô ?ÀÄÑMÔMÐMåÐ6°Ð6Ð6Ñ7Ô7Ð7r&   r´  Úlhs_scale_handleúOptional[TensorHandle]Úlhs_format_enumú_ir.ScaleDotElemTypeTYrµ  Úrhs_scale_handleÚrhs_format_enumÚ	fast_mathÚ
lhs_k_packÚ
rhs_k_packÚ
acc_handlec                óÀ   — t          ||||d¬¦  «        }t          ||||	d¬¦  «        }t          j        ||¦  «        |
j        z   }t	          |t
          j        ¦  «        S )NF)r  T)r  rX   rd  r   r   r�   r“   )r#   r´  ré  rë  rµ  rí  rî  rï  rð  rñ  rò  r  r   rÞ  s                 r$   Úcreate_dot_scaledz$InterpreterBuilder.create_dot_scaledj  sd   € õ
 /¨sÐ4DÀoÐWaÐjoÐpÑpÔpˆÝ.¨sÐ4DÀoÐWaÐjnÐoÑoÔoˆå”˜8 XÑ.Ô.°´Ñ@ˆÝ˜F¥B¤JÑ/Ô/Ð/r&   N©r  r  )rÊ  )rB   r   rC   rD   rE   rD   rË  rG   r®  r)   rK   rw   )rÍ  rA   rz  rD   )rÍ  rA   r5   r   rz  rD   )rÍ  rA   rØ  r   rÙ  r   )rÍ  rA   r5   r   rØ  r   rÙ  r   )r´  r   ré  rê  rë  rì  rµ  r   rí  rê  rî  rì  rï  r)   rð  r)   rñ  r)   rò  r   r  r   )³r7   r8   r9   rª   ÚMEM_SEMANTICÚACQUIREr”  ÚRELEASEÚRELAXEDÚACQUIRE_RELEASEr—  Ú	ATOMIC_OPÚADDÚRMW_OPÚFADDÚMINÚUMINÚMAXÚUMAXÚANDÚORÚXORÚXCHGrž  rL   r'  r,  r.  r1  r4  r6  r8  r;  r=  r@  rB  rE  rG  rI  rK  rM  rP  rS  rU  rW  r[  r]  rb  rd  rg  ri  rl  rn  rp  rr  rt  rv  ry  r{  r  r‚  r„  rŽ  r’  r‡  r�  r£  Ú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_fnegÚ
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(  r1  Úcreate_selectr6  rË  r;  Ú
create_cosÚ
create_expÚcreate_exp2Úcreate_iabsÚcreate_floorÚcreate_ceilÚ
create_logÚcreate_log2Úcreate_precise_sqrtÚcreate_sqrtÚ
create_sinrX  r[  Úcreate_reshapera  rj  ro  rw  r{  r�  r„  r†  r‰  rŒ  rŽ  r‘  r”  rœ  r¡  r«  r±  rÁ  rÅ  rÇ  rÉ  rÎ  rÕ  r×  rà  rã  rè  rô  r?   r&   r$   r  r  d  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ØGÐG€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ØMÐM€NØNÐN€LØNÐN€LØQÐQ€OØMÐM€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ð.ð .ð .ð9ð 9ð 9ð [Ð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ð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ð'ð 'ð 'ð*ð *ð *ðð ð ð
 `fðð ð ð ð ð[ð [ð [ð [ð Gð Gð Gð Gð	+ð 	+ð 	+ð 	+ð?ð ?ð ?ð ?ð8ð 8ð 8ð	0ð 	0ð 	0ð 	0ð 	0ð 	0r&   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$   rL   z_LangPatchScope.__init__~  s   € Ø:<ˆŒˆˆr&   ÚobjÚobjectrå  rw   r5   c                óŽ   — t          ||t          ¦  «        }| j                             |||f¦  «         t	          |||¦  «         d S r(   )r¡   Ú_MISSINGrR  ÚappendÚsetattr)r#   rS  rå  r5   Úoriginals        r$   r6   z_LangPatchScope.set_attr�  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(   )rR  ÚpoprV  ÚdelattrrX  )r#   rS  rå  rY  s       r$   Úrestorez_LangPatchScope.restore†  sv   € ØŒmð 	-Ø"&¤-×"3Ò"3Ñ"5Ô"5ÑˆC��xØ�8Ð#Ð#Ý˜˜TÑ"Ô"Ð"Ð"å˜˜T 8Ñ,Ô,Ð,ð Œmð 	-ð 	-ð 	-ð 	-ð 	-r&   Nrõ  )rS  rT  rå  rw   r5   rT  r  r  )r7   r8   r9   r:   rL   r6   r]  r?   r&   r$   rP  rP  {  sV   € € € € € Ø<Ð<ð=ð =ð =ð =ð"ð "ð "ð "ð
-ð -ð -ð -ð -ð -r&   rP  r›  c                ó@   — |dœd„}|                      | ||¦  «         d S )N)Úmemberc                ó\   —  | |i d„ |                      ¦   «         D ¦   «         ¤dt          i¤ŽS )Nc                ó&   — i | ]\  }}|d k    ¯||“ŒS )r  r?   )Ú.0Ú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  )ÚitemsrN  )r_  Ú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   )rS  rå  r_  r  r›  Ú
new_members         r$   Ú_patch_attrrj  �  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_builtinrj  )Úpkgr  r›  rå  r_  s        r$   Ú_patch_builtinrq  —  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_boolŸ  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 )Nrû   rO   )r   rX   r_  r  r   r   r~  Úis_blockÚlistrC   r�   rn  r›   r  )r#   r  rF   Úres_tys       r$   Ú_get_transposez*_patch_lang_tensor.<locals>._get_transpose¥  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>­  s   € µS¸¼Ô9I×9QÒ9QÑ9SÔ9SÑ5TÔ5T€ r&   r+   c                ó   •—  ‰| ¦  «        S r(   r?   )r#   ru  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(   )rw   r  r   r"   s    r$   r  z$_patch_lang_tensor.<locals>.<lambda>°  s   € µ3°t´{Ô7GÑ3HÔ3H€ r&   r   )r6   Úproperty)r  r›  rz  ru  s      @r$   Ú_patch_lang_tensorr…  �  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(   )r÷   Ú
combine_fn)r#   r÷   r‰  s      r$   rL   zReduceScanOpInterface.__init__¶  s   € ØˆŒ	Ø$ˆŒˆˆr&   c                ó^   — |�(|t          |¦  «        k    rt          d|› d|› �¦  «        ‚d S d S )Nzaxis z out of bounds for shape )rI   r   )r#   rC   r÷   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�   rn  r  r   r~  r‹  rC   r÷   )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 )NrC   rW   )rž   r.   rC   r^   r�   r›   rx  rX   rÝ   rn  r  r   r`   )r#   r›  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Í  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Úapplyr�  r’  rx  )r#   r­   r›  s      r$   r–  zReduceScanOpInterface.applyÑ  sw   € Ý˜%¥Ñ'Ô'ð 	,Ø—:’:˜u˜iÑ(Ô(¨Ô+Ð+Ø×Ò˜%Ñ Ô Ð Ø�oŠo˜eÑ$Ô$ˆÝ'¨­dµE¨]Ñ;Ô;ÐH�u�S‰zŒzˆzÀ#ÀÐHr&   N)	r7   r8   r9   rL   r‹  r�  r�  r’  r–  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(   )ÚsuperrL   Ú	keep_dims)r#   r÷   r‰  r›  Ú	__class__s       €r$   rL   zReduceOps.__init__Û  s(   ø€ Ý‰Œ×Ò˜˜zÑ*Ô*Ð*Ø"ˆŒˆˆr&   c                óú   — g }|D ]f}|�|                      |¦  «         Œd}|                      |                      |j        j                             ¦   «         |j        ¦  «        ¦  «         Œgt          |¦  «        |fS r”  )rW  r�  r  r   Úflattenr   r•  )r#   r­   r÷   r›  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   rW   c              3  ól   •K  — | ].\  }}‰                      |‰         ‰|         j        ¦  «        V — Œ/d S r(   ©r�  r   )rb  Úiire  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(   r¢  )rb  Ú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&   )r÷   rŸ  r  r   rC   rW  rX   rÛ  r   r[   rt  Úunravel_indexr•  rÜ  rI   rP   r‰  Úfnr€   r�   rn  r  r›  rƒ  r�  )r#   r­   Úoriginal_axisr÷   Ú
input_dataÚoutput_dataÚinput_shapeÚoutput_shaper-  r½   Úinput_tupleÚjÚ	acc_tupleÚcombine_fn_retr›  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   ©r÷   Úkeepdimsz-val_reduce_op and idx_reduce_op are both None)r€   r•  r�  r  r   r÷   r›  r   r�   r�   r   )r#   r­   Úval_reduce_opÚidx_reduce_opr‘  Ú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¸  )r�  rX   ru  r  r   r÷   r›  r   rÍ  s     r$   ru  zReduceOps.sum&  s6   € Ø�~Š~�bœf U¤\Ô%6¸T¼YÐQUÔQ_Ð`Ñ`Ô`ÐbgÔbmÑnÔnÐnr&   c                ó  — | j         t          j        j        u s| j         t          j        j        u r2|                      |d         t          j        t          j        ¬¦  «        S | j         t          j        j	        u s| j         t          j        j
        u r2|                      |d         t          j        t          j        ¬¦  «        S | j         t          j        j        u r(|                      |d         t          j        d ¬¦  «        S | j         t          j        j        u r(|                      |d         t          j        d ¬¦  «        S | j         t          j        j        u r|                      |d         ¦  «        S |                      |¦  «        S )Nr   )rº  r»  )r‰  r�   ÚstandardÚ_argmin_combine_tie_break_leftÚ_argmin_combine_tie_break_fastr½  rX   ÚnanminÚ	nanargminÚ_argmax_combine_tie_break_leftÚ_argmax_combine_tie_break_fastÚnanmaxÚ	nanargmaxÚ_elementwise_maxÚ_elementwise_minÚ_sum_combineru  r¶  rÍ  s     r$   r’  zReduceOps.apply_impl)  s0  € ð
 ŒO�rœ{ÔIÐIÐIØ”?¥b¤kÔ&PÐPÐPØ—<’<  a¤½¼	ÕQSÔQ]�<Ñ^Ô^Ð^ØŒo¥¤Ô!KÐKÐKØ”¥B¤KÔ$NÐNÐNØ—<’<  a¤½¼	ÕQSÔQ]�<Ñ^Ô^Ð^ØŒ_¥¤Ô <Ð<Ð<Ø—<’<  a¤½¼	ÐQU�<ÑVÔVÐVØŒ_¥¤Ô <Ð<Ð<Ø—<’<  a¤½¼	ÐQU�<ÑVÔVÐVØŒ_¥¤Ô 8Ð8Ð8Ø—8’8˜E !œHÑ%Ô%Ð%ð ×&Ò& uÑ-Ô-Ð-r&   r(   )
r7   r8   r9   rL   rŸ  r¶  r½  ru  r’  Ú__classcell__©rœ  s   @r$   r˜  r˜  Ù  s�   ø€ € € € € ð#ð #ð #ð #ð #ð ð  ð  ð)ð )ð )ðVNð Nð Nð Nð$oð oð oð.ð .ð .ð .ð .ð .ð .r&   r˜  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(   )rš  rL   Úreverse)r#   r÷   r‰  rÑ  rœ  s       €r$   rL   zScanOps.__init__A  s(   ø€ Ý‰Œ×Ò˜˜zÑ*Ô*Ð*ØˆŒˆˆr&   c                ó‚   — |                       t          j        |j        j        | j        ¬¦  «        |j        ¬¦  «        gS ©Nrü   rW   )r�  rX   Úcumsumr  r   r÷   r   rÍ  s     r$   rÔ  zScanOps.cumsumE  s5   € Ø—’�rœy¨¬Ô):ÀÄÐKÑKÔKÐSXÔS^�Ñ_Ô_Ð`Ð`r&   c                ó‚   — |                       t          j        |j        j        | j        ¬¦  «        |j        ¬¦  «        gS rÓ  )r�  rX   Úcumprodr  r   r÷   r   rÍ  s     r$   rÖ  zScanOps.cumprodH  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   rW   c              3  ól   •K  — | ].\  }}‰                      |‰         ‰|         j        ¦  «        V — Œ/d S r(   r¢  )rb  r£  re  Úindexr­   r#   s      €€€r$   r¥  z'ScanOps.generic_scan.<locals>.<genexpr>V  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   Nrü   )rb  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(   r¢  )rb  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   rC   rW  rX   rÛ  r   r[   rt  rª  r•  rÜ  r÷   rI   rP   r‰  r«  r€   r�   rn  r  r�  )r#   r­   r­  r®  rC   r-  r½   r   r²  r³  r´  r›  rÙ  rÜ  s   ``          @@r$   Úgeneric_scanzScanOps.generic_scanK  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 )Nrü   r   )rÑ  rW  r�  rX   Úflipr  r   r÷   r   r‰  r�   rÀ  rË  rÔ  Ú_prod_combinerÖ  rÝ  )r#   r­   Ú	new_inputr-  r›  s        r$   r’  zScanOps.apply_impli  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   rL   rÔ  rÖ  rÝ  r’  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(   )r˜  r–  )r­   r÷   r‰  r›  rh  s        r$   Ú_new_reducez'_patch_reduce_scan.<locals>._new_reduce�  s"   € Ý˜˜z¨9Ñ5Ô5×;Ò;¸EÑBÔBÐBr&   c                óJ   — t          |||¦  «                             | ¦  «        S r(   )rÏ  r–  )r­   r÷   r‰  rÑ  rh  s        r$   Ú	_new_scanz%_patch_reduce_scan.<locals>._new_scan„  s"   € Ý�t˜Z¨Ñ1Ô1×7Ò7¸Ñ>Ô>Ð>r&   ÚreduceÚassociative_scan)F)r6   r�   rn  )r›  rä  ræ  s      r$   Ú_patch_reduce_scanré  }  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                óÂ  — | 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 | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S t)          d| › d�¦  «        ‚)NÚvoidr‘   r‰   rˆ   r‹   rŠ   r�   rŒ   rŽ   r_   ro   rq   rs   rp   rr   Úfp16Úbf16Úfp32Úfp64zfail to convert z to ir type)rå  Úget_void_tyr8  r;  r=  r@  rB  rE  rG  rI  rK  rU  rM  rP  rW  rS  r.  r1  r4  r6  r   )r#   r  s     r$   Ú
_new_to_irz$_patch_lang_core.<locals>._new_to_ir�  si  € àŒ9˜ÒÐØ×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒ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   )r[   )Úarg1Úarg2Ústeprh  rm  Ú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?   )r3  rÀ  s     r$   Ú_new_static_assertz,_patch_lang_core.<locals>._new_static_assertÄ  s   € ØÐÐ�SÑÔÐÐÐ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   ©rb  rd  s     r$   ú
<listcomp>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  rx  r•  rI   r}  rC   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&   r[   Ú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é  )Úlangr›  rò  rø  rû  r  s         r$   Ú_patch_lang_corer  �  s;  € ð(?ð (?ð (?ðX'ð 'ð 'ð 'ðð ð ð ð
ð 
ð 
ð 
‡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?   )rl  Úismoduler�   rn  )rb  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)rP  Ú__globals__rf  rI   rq  Úinterpreter_builderr  r�   rÉ   r…  r  rn  Útensor_descriptor_base)r«  r›  Ú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          ¦  «        rXt          t          j        | gt          j        ¬¦  «        t          j        ¦  «        }t          j        |t          j        ¦  «        S 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/          | t1          t2          | ¦  «        ¦  «        S t          | t4          ¦  «        r�d
„ | j        D ¦   «         }| j        d         dk    sJ ‚t          j        d¦  «        |d<   t:                               t3          | j        ¦  «        d„ | j         D ¦   «         |d„ | j!        D ¦   «         | j"        ¬¦  «        S | S )NrW   i   €l        l        lûÿÿÿ         l            l            zUnsupported integer value Údata_ptrc                ó,   — g | ]}t          |¦  «        ‘ŒS r?   ©Ú_implicit_cvt©rb  Úss     r$   r   z!_implicit_cvt.<locals>.<listcomp>	  s    € Ð9Ð9Ð9¨•= Ñ#Ô#Ð9Ð9Ð9r&   rO   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þ  )rb  rÑ   s     r$   r   z!_implicit_cvt.<locals>.<listcomp>  s"   € ÐGqÐGqÐGqÐ\]ÍÌÐUVÉÌÐGqÐGqÐGqr&   )rB   rC   rE   rF   Úpadding_option)#r€   r)   r   rX   rÝ   r`  r�   r‘   r  r|   Ú	str_to_tyÚtritonÚruntimeÚjitÚmangle_typer�   rŒ   rŽ   r_   r   r.   r  r•  r   Úmapr  r   rE   rþ  rN  Úmake_tensor_descriptorrB   rC   rF   rK   )r-  r  Útyr   rE   s        r$   r  r  ï  sÕ  € Ý�#•tÑÔð *Ý�bœh¨ uµB´HÐ=Ñ=Ô=½r¼wÑGÔGˆÝŒy˜¥¤Ñ)Ô)Ð)Ý�#•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!  ÚTensorWrapperrB   )Ú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„t          j        |¦  «                             ¦   «         D ¦   «         Šˆfd„|D ¦   «         | _	        d S )Nr   )Ú_normalize_tyc                ó.   •— i | ]\  }}| ‰|¦  «        “ŒS r?   r?   )rb  rå  r%  r0  s      €r$   re  z)GridExecutor.__init__.<locals>.<dictcomp>(  s)   ø€ ÐgÐgÐg±x°t¸R˜4  ¨rÑ!2Ô!2ÐgÐgÐgr&   c                óF   •— g | ]}‰                      |¦  «        d k    ¯|‘ŒS )rþ  )Úget)rb  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!  r0  r«  Ú	arg_namesÚgridÚpre_run_hooksrl  Úget_annotationsrf  Ú
constexprs)r#   r«  r4  r5  r6  r;   r0  s        @@r$   rL   zGridExecutor.__init__!  sƒ   øø€ Ø&Ð&Ð&Ð&Ð&Ð&àˆŒØ"ˆŒØˆŒ	Ø*ˆÔØgÐgÐgÐgÅ7ÔCZÐ[]ÑC^ÔC^×CdÒCdÑCfÔCfÐgÑgÔgˆØ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€   r•  r   r#  r   rB   rC   rE   rF   rK   Úround_f32_to_tf32r.   r)  Úuntyped_storager  r;  Ú	new_emptyÚset_Ústorage_offsetrt  rR   r,  )r-  Úunwrapped_argÚstorageÚcpu_argÚ_to_cpuÚstoragess       €€r$   rE  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?   )rb  r-  rE  s     €r$   r   z/GridExecutor._init_args_hst.<locals>.<listcomp>H  s!   ø€ Ð5Ð5Ð5 S�G�G˜C‘L”LÐ5Ð5Ð5r&   )rf  )	r#   Úargs_devrh  Úargs_hstÚ
kwargs_hstr4   r5   rE  rF  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€   r•  Úzipr   rB   )Úarg_devÚarg_hstÚ	_from_cpurF  s     €€r$   rQ  z1GridExecutor._restore_args_dev.<locals>._from_cpuS  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&   )rN  rf  r¯  Úcopy_)r#   rH  rI  rh  rJ  rO  rP  r4   Ú	kwarg_devÚ	kwarg_hstrQ  rF  s             @@r$   Ú_restore_args_devzGridExecutor._restore_args_devP  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?   )rg  )rb  rc  rd  Úargspecs      €r$   re  z)GridExecutor.__call__.<locals>.<dictcomp>n  s+   ø€ ÐGÐGÐG™4˜1˜a°Q¸'¼,Ð5FÐ5F�!�QÐ5FÐ5FÐ5Fr&   c                óL   •— i | ] \  }}||‰j         v r|nt          |¦  «        “Œ!S r?   )r8  r  )rb  rå  r-  r#   s      €r$   re  z)GridExecutor.__call__.<locals>.<dictcomp>z  s:   ø€ ÐoÐoÐoÑU^ÐUYÐ[^�D ¨¬Ð!8Ð!8˜#˜#½mÈCÑ>PÔ>PÐoÐoÐor&   rë   z#grid must have at most 3 dimensionsr“  r   r   r   r?   )rl  Úgetfullargspecr«  rf  rK  r6  r  ÚgetcallargsÚcallabler5  rI   r  r,  r[   r'  Ú	Exceptionr  ÚknobsÚcompilationÚfront_end_debuggingr   r�  r]  rU  )r#   rH  rh  rI  rJ  ÚhookÚpatch_scoperg  r5  rÌ   r%  r&  ÚerX  s   `            @r$   Ú__call__zGridExecutor.__call__i  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   rL   rK  rU  rd  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 supportedrN  )ÚidÚctxr�  )r5   r   ri  F)r5   )Úfuncrg  Úkeywords)ÚtargetsÚvisitrI   r   ÚastÚCallÚ	AttributeÚNameÚLoadr5   ÚConstant)r#   ÚnodeÚnamesÚtargets       r$   Úvisit_AssignzASTTransformer.visit_Assign’  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   rw  r?   r&   r$   rf  rf  �  s#   € € € € € ðð ð ð ð r&   rf  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«  rh  ÚfilenameÚdef_file_lineno)r#   r«  rh  s      r$   rL   zFunctionRewriter.__init__£  s%   € ØˆŒØˆŒØˆŒà$%ˆÔÐÐr&   c                ó`  — 	 t          j        | j        ¦  «        \  }}n# t          $ r
 | j        cY S w xY w|                      ¦   «         \  | _        | _        |                      |¦  «        | _        |  	                    |¦  «        }|  
                    |¦  «        }|                      |¦  «        S r(   )rl  Úgetsourcelinesr«  r]  Ú_get_jit_fn_file_liner{  r|  Ú	_find_defÚ
def_linenoÚ_prepare_sourceÚ_transform_astÚ_compile_and_exec)r#   Úlinesrµ  rŸ  Útransformed_asts        r$   Úrewrite_astzFunctionRewriter.rewrite_astª  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                óJ   — ddl m}  || j        ¦  «        }|j        |j        fS )Nr   )ÚJITFunction)r!  r‰  r«  Ú	file_nameÚdef_file_line_number)r#   r‰  Újit_funcs      r$   r  z&FunctionRewriter._get_jit_fn_file_line¾  s6   € Ø$Ð$Ð$Ð$Ð$Ð$Ø�;˜tœwÑ'Ô'ˆØÔ! 8Ô#@Ð@Ð@r&   c                óŒ   — d}t          |¦  «        D ]1\  }}|                     ¦   «                              d¦  «        r|dz   }Œ2|S )Nr   zdef r   )rÜ  ÚstripÚ
startswith)r#   r…  r�  r½   Úlines        r$   r€  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ù  )r�  ÚjoinÚtextwrapÚdedent)r#   r…  rŸ  s      r$   r‚  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 rZ  )rn  ÚparseÚast_transformerrm  Úfix_missing_locationsr|  Úincrement_lineno)r#   rŸ  Ú
parsed_astr†  Ú
inc_linenos        r$   rƒ  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)r{  Úmode)	Úcompiler{  rh  r«  r  Úglobalsrf  r�  r7   )r#   r†  Úcompiled_codeÚlocal_namespaceÚ
fn_globalsr4   r5   s          r$   r„  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   rf  r—  rL   r‡  r  r€  r‚  rƒ  r„  r?   r&   r$   ry  ry     s�   € € € € € Ø$�nÑ&Ô&€Oð&ð &ð &ð7ð 7ð 7ð(Að Að Að
ð ð ð$ð $ð $ð
	ð 	ð 	ð1ð 1ð 1ð 1ð 1r&   ry  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«  ry  Úrewriterrh  r6  rl  Ú	signatureÚ
parametersr¯  r4  )r#   r«  rh  rª  s       r$   rL   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.  r4  r6  )r#   r5  Úwarmuprg  rh  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(   )r\  r6  rW  )r#   ra  s     r$   Úadd_pre_run_hookz$InterpretedFunction.add_pre_run_hookù  s1   € Ý˜‰~Œ~ÐÐÐØÔ×!Ò! $Ñ'Ô'Ð'Ð'Ð'r&   c                óŽ   — | j         | j        vr&| j                             ¦   «         | j        | j         <   | j        | j                  S r(   )r«  r¦  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­  r]  r   r�  )r#   rg  rh  r«  rc  s        r$   rd  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   r¦  r;   rL   r¯  r±  r­  r„  rd  r?   r&   r$   r¥  r¥  æ  s™   € € € € € € à-/€LÐ/Ð/Ð/Ñ/ðIð Ið Ið Ið[ð [ð [ð(ð (ð (ð*ð *ð *ð
 ð ð  ñ „Xð ð3ð 3ð 3ð 3ð 3r&   r¥  )r›  rP  )UÚ
__future__r   rn  r“  rl  Útypingr   r   r   r   r   r	   rÉ   ÚnumpyrX   r  Útriton.languageÚlanguager�   r<   r
   Útriton.language.semanticr   Útriton.runtime.jitr   Útriton.tools.tensor_descriptorr   Úerrorsr   Ú	functoolsr   Ú_C.libtritonr   r”  r   rª   Ú_utilsr   r   r   rA   rj   r   r�   rž   rÇ   rÍ   rÒ   r×   ræ   rô   rù   r  Ú	vectorizer“   rV  r”   rW  r_   r#  r	  r  rT  rV  r  rN  r;   rP  rj  rq  r…  r‡  r˜  rÏ  ré  r  r  r  r)  r,  r.  ÚNodeTransformerrf  ry  r¥  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€ð ðð ð ð ð ñ ô ñ „ðð@("ð ("ð ("ð ("ð ("ñ ("ô ("ð ("ðV €�$ÐÑÔð
&ð 
&ð 
&ð 
&ð 
&ñ 
&ô 
&ñ Ôð
&ðð ð ð 	ð 	ð 	ðð ð ð@='ð ='ð ='ð@ð ð ð
#ð #ð #ðð ð ð4ð 4ð 4ð$ð ð ð@+ð +ð +ðð ð ð2 ˆbŒl˜4¨¬¨Ð5Ñ5Ô5€ØˆbŒl˜4¨¬¨Ð5Ñ5Ô5€Ø�”˜Z°´°Ð<Ñ<Ô<€ðpð pð pð pð pñ pô pð pðO0ð O0ð O0ð O0ð O0ñ O0ô O0ð O0ðd ˆ6‰8Œ8€Ø(Ð(Ñ*Ô*Ð Ø'5 ~Ð6IÑ'JÔ'JÐ Ð JÐ JÐ JÑ Jð-ð -ð -ð -ð -ñ -ô -ð -ð(*ð *ð *ð *ð;ð ;ð ;ð ;ð:ð :ð :ð :ð."Ið "Ið "Ið "Ið "Iñ "Iô "Ið "IðJc.ð c.ð c.ð c.ð c.Ð%ñ c.ô c.ð c.ðL;ð ;ð ;ð ;ð ;Ð#ñ ;ô ;ð ;ð|;ð ;ð ;ð ;ð Oð Oð Oð Oðdð ð ð !ð !ð !ðHð ð ðð ð ðnGð nGð nGð nGð nGñ nGô nGð nGðbð ð ð ð �SÔ(ñ ô ð ð C1ð C1ð C1ð C1ð C1ñ C1ô C1ð C1ðL'3ð '3ð '3ð '3ð '3˜/¨!Ô,ñ '3ô '3ð '3ð '3ð '3r&   