§
    9˜ºh‹í  ã                  óh  — 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 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 e G d„ d¦  «        ¦   «         Z G d„ d¦  «        Z  G d„ d¦  «        Z! ed¬¦  «         G d„ d¦  «        ¦   «         Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z' ej(        e&ej)        g¬¦  «        Z* ej(        e&ej+        g¬¦  «        Z, ej(        e'ej-        g¬¦  «        Z. G d„ d¦  «        Z/ G d„ d ¦  «        Z0d!„ Z1d"„ Z2d#„ Z3 G d$„ d%¦  «        Z4 G d&„ d'e4¦  «        Z5 G d(„ d)e4¦  «        Z6d*„ Z7d+„ Z8d,„ Z9d-„ Z:d.„ Z; e0¦   «         Z< ee<¦  «        Z=d/„ Z>d0„ Z? G d1„ d2¦  «        Z@ G d3„ d4ejA        ¦  «        ZB G d5„ d6¦  «        ZC G d7„ d8¦  «        ZDdS )9é    )ÚannotationsN)ÚTupleÚListÚDict)Ú	dataclass)ÚTritonSemantic)ÚTensorDescriptoré   )ÚInterpreterError)Úpartialé   )Úinterpreter)Úirc                  ól   — 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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.arrayÚdataztl.dtypeÚdtype)Údefault_factoryr   Úattrc                óN   — t          | j                             ¦   «         ¦  «        S ©N)Úboolr   Úall©Úselfs    úb/var/www/html/services/rag-service/venv/lib/python3.11/site-packages/triton/runtime/interpreter.pyÚ__bool__zTensorHandle.__bool__#   s   € Ý�D”I—M’M‘O”OÑ$Ô$Ð$ó    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.clone,   s    € Ý˜DœIŸNšNÑ,Ô,¨d¬jÑ9Ô9Ð9r   c                ó   — || j         |<   d S r   )r   )r   ÚkeyÚvalues      r   Úset_attrzTensorHandle.set_attr/   s   € ØˆŒ	�#‰ˆˆr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__ÚdataclassesÚfieldÚdictr   r   r"   r%   r)   © r   r   r   r      s‘   € € € € € € ðð ð €N€N�NØ€O€O�OØ"�Ô"°4Ð8Ñ8Ô8€DÐ8Ð8Ð8Ñ8ð%ð %ð %ðð ð ð:ð :ð :ðð ð ð ð r   r   c                  ó   — e Zd Zd„ Zd„ ZdS )ÚBlockPointerHandlec                óZ   — || _         || _        || _        || _        || _        || _        d S r   )ÚbaseÚshapeÚstridesÚoffsetsÚblock_shapeÚorder)r   r6   r7   r8   r9   r:   r;   s          r   Ú__init__zBlockPointerHandle.__init__5   s1   € ØˆŒ	ØˆŒ
ØˆŒØˆŒØ&ˆÔØˆŒ
ˆ
ˆ
r   c                óð  — | j                              ¦   «         }|j        dz  }t          j        | j         j        | j        ¦  «        }t          j        | j        t          ¬¦  «        }t          t          | j        ¦  «        ¦  «        D ]Ë}dgt          | j        ¦  «        z  }| j        |         ||<   | j        |         j        t          j        | j        |         ¦  «        z                        |¦  «        }|||z  | j        |         j        z                       t          j        ¦  «        z   }||v r ||| j        |         j        k     z  |dk    z  }ŒÌt%          || j         j        j        ¦  «        }||fS )Né   ©r   r
   r   )r6   r"   Úprimitive_bitwidthÚnpÚbroadcast_tor   r:   Úonesr   ÚrangeÚlenr9   ÚarangeÚreshaper8   ÚastypeÚuint64r7   r   r   Úscalar)	r   Úboundary_checkÚdtype_ttÚn_bytesÚptrsÚmasksÚdimÚ
bcast_dimsÚoffs	            r   Úmaterialize_pointersz'BlockPointerHandle.materialize_pointers=   sL  € Ø”9×+Ò+Ñ-Ô-ˆØÔ-°Ñ2ˆÝŒ˜tœyœ~¨tÔ/?Ñ@Ô@ˆÝ”˜Ô(µÐ5Ñ5Ô5ˆÝ�˜TÔ-Ñ.Ô.Ñ/Ô/ð 	Jð 	JˆCØ˜�s 4Ô#3Ñ4Ô4Ñ4ˆJØ"Ô.¨sÔ3ˆJ�s‰OØ”< Ô$Ô)­B¬I°dÔ6FÀsÔ6KÑ,LÔ,LÑL×UÒUÐV`ÑaÔaˆCØ˜7 S™=¨4¬<¸Ô+<Ô+AÑA×IÒIÍ"Ì)ÑTÔTÑTˆDØ�nÐ$Ð$Ø  t¤z°#¤Ô';Ò!;Ñ<ÀÀqÂÑI�øÝ˜D $¤)¤/Ô"8Ñ9Ô9ˆØ�Uˆ{Ðr   N)r*   r+   r,   r<   rS   r2   r   r   r4   r4   3   s2   € € € € € ðð ð ðð ð ð ð r   r4   c                  ó$   — e Zd Zdd„Zd	„ Zdd„ZdS )ÚTensorDescHandler6   r   r7   úList[TensorHandle]r8   r:   ú	List[int]c                óf   — || _         t          |¦  «        | _        || _        || _        || _        d S r   )r6   rE   Úndimr7   r8   r:   )r   r6   r7   r8   r:   s        r   r<   zTensorDescHandle.__init__O   s2   € àˆŒ	Ý˜‘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 d…         D ],}|j                             ¦   «         dz  dk    s
J d¦   «         ‚Œ-| j        d         j                             ¦   «         dk    s
J d¦   «         ‚d S )Né   r   zbase must be 16-byte alignedéÿÿÿÿzstride must be 16-byte alignedr
   zlast dim must be contiguous)r6   r   ÚitemrE   r8   rY   r:   )r   Ústrides     r   ÚvalidatezTensorDescHandle.validateW   sî   € ØŒyŒ~×"Ò"Ñ$Ô$ rÑ)¨QÒ.Ð.Ð.Ð0NÑ.Ô.Ð.Ý�4”<Ñ Ô  D¤IÒ-Ð-Ð-Ð-Ý�4Ô#Ñ$Ô$¨¬	Ò1Ð1Ð1Ð1à”l 3 B 3Ô'ð 	Rð 	RˆFØ”;×#Ò#Ñ%Ô%¨Ñ*¨aÒ/Ð/Ð/Ð1QÑ/Ô/Ð/Ð/ØŒ|˜BÔÔ$×)Ò)Ñ+Ô+¨qÒ0Ð0Ð0Ð2OÑ0Ô0Ð0Ð0Ð0r   r9   c                ór  — t          |¦  «        | j        k    sJ ‚| j        j        j        }|j        dz  }|d         j        |z  dz  dk    s
J d¦   «         ‚t          j        | j        j        | j	        ¦  «        }t          j
        | j	        t          ¬¦  «        }t          t          | j	        ¦  «        ¦  «        D ]Â}dgt          | j	        ¦  «        z  }| j	        |         ||<   ||         j        t          j        | j	        |         ¦  «        z                        |¦  «        }|||z  | j        |         j        z                       t          j        ¦  «        z   }|d|k    z  || j        |         j        k     z  }ŒÃ|j        t          j        k    sJ ‚t'          || j        j        j        ¦  «        }||fS )Nr>   r\   r[   r   z*block offset start must be 16-byte alignedr?   r
   )rE   rY   r6   r   r    r@   r   rA   rB   r:   rC   r   rD   rF   rG   r8   rH   rI   r7   r   rJ   )	r   r9   Ú	scalar_tyÚitemsizerN   rO   rP   rQ   rR   s	            r   rS   z%TensorDescHandle.materialize_pointers`   s‘  € Ý�7‰|Œ|˜tœyÒ(Ð(Ð(Ð(Ø”I”OÔ.ˆ	ØÔ/°1Ñ4ˆØ˜”Ô  8Ñ+¨rÑ1°QÒ6Ð6Ð6Ð8dÑ6Ô6Ð6åŒ˜tœyœ~¨tÔ/?Ñ@Ô@ˆÝ”˜Ô(µÐ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Ø˜8 c™>¨D¬L¸Ô,=Ô,BÑB×JÒJÍ2Ì9ÑUÔUÑUˆDØ˜Q #šXÑ&¨#°´
¸3´Ô0DÒ*DÑEˆEˆEØŒz�RœYÒ&Ð&Ð&Ð&Ý˜D $¤)¤/Ô"8Ñ9Ô9ˆØ�Uˆ{Ðr   N)r6   r   r7   rV   r8   rV   r:   rW   )r9   rV   )r*   r+   r,   r<   r_   rS   r2   r   r   rU   rU   M   sN   € € € € € ð'ð 'ð 'ð 'ðPð Pð Pðð ð ð ð ð r   rU   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 )ÚInterpreterOptionsNr1   Úextern_libsFr   ÚdebugTÚsanitize_overflowÚstrÚarch)Úfp8e5Úfp8e5b16Úfp8e4nvÚfp8e4b8Úfp8e4b15z
Tuple[str]Úsupported_fp8_dtypesr2   Ú!deprecated_fp8_dot_operand_dtypesÚtf32Údefault_dot_input_precision)rr   Útf32x3ÚieeeÚallowed_dot_input_precisionsr   ÚintÚmax_num_imprecise_acc_defaultr   Úbackend_name)r*   r+   r,   rf   r.   rg   rh   rj   rp   rq   rs   rv   rx   ry   r2   r   r   re   re   s   sÂ   € € € € € € à€KÐÐÐÑØ€EÐÐÐÑØ"ÐÐ"Ð"Ð"Ñ"Ø€DÐÐÐÑØ'^ÐÐ^Ð^Ð^Ñ^Ø46Ð%Ð6Ð6Ð6Ñ6Ø'-ÐÐ-Ð-Ð-Ñ-Ø/IÐ ÐIÐIÐIÑIØ)*Ð!Ð*Ð*Ð*Ñ*Ø%€LÐ%Ð%Ð%Ñ%Ð%Ð%r   re   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   )	rA   Úuint8Úint8Úuint16Úint16Úuint32Úint32rI   Úint64r?   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   )Ú
isinstanceÚtlÚpointer_typerA   r   rI   Ú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Úuintr?   r
   r   )ÚgetattrrA   r@   Ú
frombufferÚtobytesÚfp_mantissa_widthÚexponent_biasrH   r€   ÚanyÚ
zeros_likerD   ÚmaximumÚminimumÚ_irÚROUNDING_MODEÚRTNErG   r7   )Ú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é@   )rw   )ÚaÚbs     r   Ú
_umulhi_64rÈ   ò   s   € õ �‰FŒF•S˜‘V”V‰O Ñ"Ð"r   )Úotypesc                  ó$   — e Zd Zed„ ¦   «         ZdS )ÚExtraFunctionsc                ój   — t          j        |j                             | j        ||¦  «        |¦  «        S r   )r…   ÚtensorÚbuilderÚcreate_fp_to_fpÚhandle)r£   Údst_tyÚfp_downcast_roundingÚ	_semantics       r   Ú_convert_custom_typesz$ExtraFunctions._convert_custom_typesÿ   s-   € åŒy˜Ô*×:Ò:¸5¼<ÈÐQeÑfÔfÐhnÑoÔoÐor   N)r*   r+   r,   ÚstaticmethodrÔ   r2   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|eKZ}eKZ~dh„ Zdi„ Z€dj„ Z�dk„ Z‚dl„ Zƒdm„ Z„dn„ Z…do„ Z†dp„ Z‡dq„ Zˆdr„ Z‰ds„ ZŠdt„ Z‹du„ ZŒdv„ Z�dw„ ZŽdx„ Z�dy„ Z�dz„ Z‘d{„ Z’d|„ Z“d}„ Z”d~„ Z•d„ Z–d€„ Z—d�„ Z˜d‚„ Z™dƒ„ Zšd„„ Z›d…„ Zœd†„ Z�d‡„ Zždˆ„ ZŸd‰„ Z dŠ„ Z¡d‹„ Z¢dŒ„ Z£d�„ Z¤dŽ„ Z¥d�„ Z¦d�„ Z§d‘„ Z¨d’„ Z©d“„ Zªd”„ Z«d•„ Z¬d–„ Z­d®d „Z®d¯d¤„Z¯d°d¦„Z°d±d©„Z±d²dª„Z²d«„ Z³d¬S )³ÚInterpreterBuilderÚreturnÚNonec                ó†   — d | _         t          ¦   «         | _        i | _        t          j        | j        d<   d„ | j        d<   d S )NÚconvert_custom_typesc                ó   — dS )N)r
   r
   r
   r2   )ÚlhsTypeÚrhsTypes     r   ú<lambda>z-InterpreterBuilder.__init__.<locals>.<lambda>  s   € ÀI€ r   Úmin_dot_size)rj   re   ÚoptionsÚcodegen_fnsrË   rÔ   r   s    r   r<   zInterpreterBuilder.__init__  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_dimÚ
ValueErrorÚ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_ty1  ó
   € ÝŒ{Ðr   c                ó   — t           j        S r   )r…   r‰   r   s    r   Úget_float_tyzInterpreterBuilder.get_float_ty4  rò   r   c                ó   — t           j        S r   )r…   rŠ   r   s    r   Úget_double_tyz InterpreterBuilder.get_double_ty7  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=  rü   r   c                ó   — t           j        S r   )r…   r{   r   s    r   Úget_uint8_tyzInterpreterBuilder.get_uint8_ty@  ó	   € ÝŒxˆr   c                ó   — t           j        S r   )r…   r~   r   s    r   Úget_int16_tyzInterpreterBuilder.get_int16_tyC  r  r   c                ó   — t           j        S r   )r…   r}   r   s    r   Úget_uint16_tyz InterpreterBuilder.get_uint16_tyF  ó
   € ÝŒyÐr   c                ó   — t           j        S r   )r…   r€   r   s    r   Úget_int32_tyzInterpreterBuilder.get_int32_tyI  r  r   c                ó   — t           j        S r   )r…   r   r   s    r   Úget_uint32_tyz InterpreterBuilder.get_uint32_tyL  r  r   c                ó   — t           j        S r   )r…   r�   r   s    r   Úget_int64_tyzInterpreterBuilder.get_int64_tyO  r  r   c                ó   — t           j        S r   )r…   rI   r   s    r   Úget_uint64_tyz InterpreterBuilder.get_uint64_tyR  r  r   c                ó   — t           j        S r   )r…   rŽ   r   s    r   Úget_fp8e4nv_tyz!InterpreterBuilder.get_fp8e4nv_tyU  ó
   € ÝŒ}Ðr   c                ó   — t           j        S r   )r…   r�   r   s    r   Úget_fp8e4b15_tyz"InterpreterBuilder.get_fp8e4b15_tyX  ó
   € ÝŒ~Ðr   c                ó   — t           j        S r   )r…   r�   r   s    r   Úget_fp8e4b8_tyz!InterpreterBuilder.get_fp8e4b8_ty[  r  r   c                ó   — t           j        S r   )r…   rŒ   r   s    r   Úget_fp8e5_tyzInterpreterBuilder.get_fp8e5_ty^  rõ   r   c                ó   — t           j        S r   )r…   r�   r   s    r   Úget_fp8e5b16_tyz"InterpreterBuilder.get_fp8e5b16_tya  r  r   c                ó,   — t          j        ||¦  «        S r   )r…   r†   )r   Úelt_tyÚ
addr_spaces      r   Ú
get_ptr_tyzInterpreterBuilder.get_ptr_tyd  s   € ÝŒ˜v zÑ2Ô2Ð2r   c                ó,   — t          j        ||¦  «        S r   )r…   r‘   )r   r   r7   s      r   Úget_block_tyzInterpreterBuilder.get_block_tyg  s   € ÝŒ}˜U EÑ*Ô*Ð*r   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S ©Nr?   )r   rA   ÚarrayÚbool_r…   r‡   ©r   r(   s     r   Úget_int1zInterpreterBuilder.get_int1j  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   rA   r#  r{   r…   r%  s     r   Ú	get_uint8zInterpreterBuilder.get_uint8m  ó'   € Ý�BœH e WµB´HÐ=Ñ=Ô=½r¼xÑHÔHÐHr   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r"  )r   rA   r#  r|   r…   r%  s     r   Úget_int8zInterpreterBuilder.get_int8p  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   rA   r#  r}   r…   r%  s     r   Ú
get_uint16zInterpreterBuilder.get_uint16s  ó'   € Ý�BœH e WµB´IÐ>Ñ>Ô>ÅÄ	ÑJÔJÐJr   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r"  )r   rA   r#  r~   r…   r%  s     r   Ú	get_int16zInterpreterBuilder.get_int16v  r)  r   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r"  )r   rA   r#  r   r…   r%  s     r   Ú
get_uint32zInterpreterBuilder.get_uint32y  r.  r   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r"  )r   rA   r#  r€   r…   r%  s     r   Ú	get_int32zInterpreterBuilder.get_int32|  r)  r   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r"  )r   rA   r#  rI   r…   r%  s     r   Ú
get_uint64zInterpreterBuilder.get_uint64  r.  r   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r"  )r   rA   r#  r�   r…   r%  s     r   Ú	get_int64zInterpreterBuilder.get_int64‚  r)  r   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r"  )r   rA   r#  rˆ   r…   r%  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   rA   r#  r‰   r…   r%  s     r   Úget_fp32zInterpreterBuilder.get_fp32ˆ  r;  r   c                ót   — t          t          j        |gt          j        ¬¦  «        t          j        ¦  «        S r"  )r   rA   r#  rŠ   r…   r%  s     r   Úget_fp64zInterpreterBuilder.get_fp64‹  r;  r   c                óf   — t          t          j        dgt          |¦  «        ¬¦  «        |¦  «        S ©Nr   r?   )r   rA   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 Noner?   )ræ   rå   r   rA   r#  r€   r…   ©r   Úaxiss     r   Úcreate_get_program_idz(InterpreterBuilder.create_get_program_id’  sF   € ØŒ=Ð ÝÐ/Ñ0Ô0Ð0Ý�BœH d¤m°DÔ&9Ð%:Å"Ä(ÐKÑKÔKÍRÌXÑVÔVÐVr   c                óŠ   — t          t          j        | j        |         gt          j        ¬¦  «        t
          j        ¦  «        S r"  )r   rA   r#  rä   r€   r…   rE  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   rA   Ú	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   rA   rK  r   r   r…   r‡   Úcreate_masked_store)r   rM  ÚvalrN  rO  rQ  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   rA   r�   r   Ú_interpreterÚload)
r   rN   rQ  rR  Úcache_modifierÚeviction_policyrP  rL   Údtype_npÚrets
             r   rL  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   )rY  Ústorer   )r   rN   r(   rQ  r[  r\  s         r   rU  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   rJ   r…   r‹   r‰   r½   r   Úviewr”   r   rH   )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   ©rg  ©r   rc  rd  s      r   rß   zInterpreterBuilder.<lambda>º  ó   € °$·.².ÀÀhÑ2OÔ2O€ r   c                ó.   — |                       ||¦  «        S r   ri  rj  s      r   rß   zInterpreterBuilder.<lambda>»  rk  r   c                ó.   — |                       ||¦  «        S r   ri  rj  s      r   rß   zInterpreterBuilder.<lambda>¼  rk  r   c                ó.   — |                       ||¦  «        S r   ri  rj  s      r   rß   zInterpreterBuilder.<lambda>½  rk  r   c                ó.   — |                       ||¦  «        S r   ri  rj  s      r   rß   zInterpreterBuilder.<lambda>¾  s   € °·²¸sÀHÑ0MÔ0M€ r   c                ó.   — |                       ||¦  «        S r   ri  rj  s      r   rß   zInterpreterBuilder.<lambda>¿  rk  r   c                ó.   — |                       ||¦  «        S r   ri  )r   rc  rd  Ú	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   rJ   r½   r   rb  r”   r   )r   rc  rd  r¦   re  rf  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   rb  r”   rJ   rj  s      r   Úcreate_bitcastz!InterpreterBuilder.create_bitcastÈ  s*   € Ý˜CœHŸMšM­-¸Ñ*AÔ*AÑBÔBÀHÄOÑTÔTÐTr   c                ó^   — t           ||j        |j        ¦  «        |j        j        ¦  «        S r   ©r   r   r   rJ   )r   ÚlhsÚrhsÚops       r   Ú	binary_opzInterpreterBuilder.binary_opÌ  s'   € Ý˜B˜B˜sœx¨¬Ñ2Ô2°C´IÔ4DÑEÔEÐEr   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Úadd©r   rx  ry  s      r   rß   zInterpreterBuilder.<lambda>Ï  s   € ¨¯ª¸¸SÅ"Ä&Ñ)IÔ)I€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Úmultiplyr  s      r   rß   zInterpreterBuilder.<lambda>Ð  ó   € ¨¯ª¸¸SÅ"Ä+Ñ)NÔ)N€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Údivider  s      r   rß   zInterpreterBuilder.<lambda>Ñ  s   € ¨¯ª¸¸SÅ"Ä)Ñ)LÔ)L€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Úfmodr  s      r   rß   zInterpreterBuilder.<lambda>Ò  ó   € ¨¯ª¸¸SÅ"Ä'Ñ)JÔ)J€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Úsubtractr  s      r   rß   zInterpreterBuilder.<lambda>Ó  rƒ  r   c                óD   — |                       ||t          j        ¦  «        S r   r�  r  s      r   rß   zInterpreterBuilder.<lambda>Ô  ó   € ¨¯ª°s¸CÅÄÑ(MÔ(M€ r   c                óD   — |                       ||t          j        ¦  «        S r   r…  r  s      r   rß   zInterpreterBuilder.<lambda>Õ  s   € °·²ÀÀSÍ"Ì)Ñ1TÔ1T€ r   c                ó.   — |                       ||¦  «        S r   ©Úcreate_idivr  s      r   rß   zInterpreterBuilder.<lambda>Ö  ó   € ¨×)9Ò)9¸#¸sÑ)CÔ)C€ r   c                ó.   — |                       ||¦  «        S r   r’  r  s      r   rß   zInterpreterBuilder.<lambda>×  r”  r   c                óD   — |                       ||t          j        ¦  «        S r   rˆ  r  s      r   rß   zInterpreterBuilder.<lambda>Ù  rŠ  r   c                óD   — |                       ||t          j        ¦  «        S r   rˆ  r  s      r   rß   zInterpreterBuilder.<lambda>Ú  rŠ  r   c                óD   — |                       ||t          j        ¦  «        S r   r}  r  s      r   rß   zInterpreterBuilder.<lambda>Û  s   € ¨¯ª°s¸CÅÄÑ(HÔ(H€ r   c                óD   — |                       ||t          j        ¦  «        S r   rŒ  r  s      r   rß   zInterpreterBuilder.<lambda>Ü  r�  r   c                óD   — |                       ||t          j        ¦  «        S r   )r{  rA   Ú
left_shiftr  s      r   rß   zInterpreterBuilder.<lambda>Ý  s   € ¨¯ª°s¸CÅÄÑ(OÔ(O€ r   c                óD   — |                       ||t          j        ¦  «        S r   )r{  rA   Úright_shiftr  s      r   rß   zInterpreterBuilder.<lambda>Þ  s   € ¨¯ª¸¸SÅ"Ä.Ñ)QÔ)Q€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   rŸ   r  s      r   rß   zInterpreterBuilder.<lambda>ß  ó   € ¨$¯.ª.¸¸cÅ2Ä:Ñ*NÔ*N€ r   c                óD   — |                       ||t          j        ¦  «        S r   rŸ  r  s      r   rß   zInterpreterBuilder.<lambda>à  r   r   c                óD   — |                       ||t          j        ¦  «        S r   rŸ  r  s      r   rß   zInterpreterBuilder.<lambda>á  ó   € ¨T¯^ª^¸CÀÅbÄjÑ-QÔ-Q€ r   c                óD   — |                       ||t          j        ¦  «        S r   rŸ  r  s      r   rß   zInterpreterBuilder.<lambda>â  ó   € ¨D¯NªN¸3ÀÅRÄZÑ,PÔ,P€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   rž   r  s      r   rß   zInterpreterBuilder.<lambda>ã  r   r   c                óD   — |                       ||t          j        ¦  «        S r   r§  r  s      r   rß   zInterpreterBuilder.<lambda>ä  r   r   c                óD   — |                       ||t          j        ¦  «        S r   r§  r  s      r   rß   zInterpreterBuilder.<lambda>å  r£  r   c                óD   — |                       ||t          j        ¦  «        S r   r§  r  s      r   rß   zInterpreterBuilder.<lambda>æ  r¥  r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Ú
less_equalr  s      r   rß   zInterpreterBuilder.<lambda>ç  ó   € ¨D¯NªN¸3ÀÅRÄ]Ñ,SÔ,S€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Úlessr  s      r   rß   zInterpreterBuilder.<lambda>è  ó   € ¨D¯NªN¸3ÀÅRÄWÑ,MÔ,M€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Úgreater_equalr  s      r   rß   zInterpreterBuilder.<lambda>é  ó   € ¨D¯NªN¸3ÀÅRÔEUÑ,VÔ,V€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Úgreaterr  s      r   rß   zInterpreterBuilder.<lambda>ê  r¥  r   c                óD   — |                       ||t          j        ¦  «        S r   r¬  r  s      r   rß   zInterpreterBuilder.<lambda>ë  r®  r   c                óD   — |                       ||t          j        ¦  «        S r   r°  r  s      r   rß   zInterpreterBuilder.<lambda>ì  r²  r   c                óD   — |                       ||t          j        ¦  «        S r   r´  r  s      r   rß   zInterpreterBuilder.<lambda>í  r¶  r   c                óD   — |                       ||t          j        ¦  «        S r   r¸  r  s      r   rß   zInterpreterBuilder.<lambda>î  r¥  r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Úequalr  s      r   rß   zInterpreterBuilder.<lambda>ï  s   € ¨4¯>ª>¸#¸sÅBÄHÑ+MÔ+M€ r   c                óD   — |                       ||t          j        ¦  «        S r   ©r{  rA   Ú	not_equalr  s      r   rß   zInterpreterBuilder.<lambda>ð  s   € ¨4¯>ª>¸#¸sÅBÄLÑ+QÔ+Q€ r   c                óD   — |                       ||t          j        ¦  «        S r   r°  r  s      r   rß   zInterpreterBuilder.<lambda>ñ  r²  r   c                óD   — |                       ||t          j        ¦  «        S r   r¸  r  s      r   rß   zInterpreterBuilder.<lambda>ò  r¥  r   c                óD   — |                       ||t          j        ¦  «        S r   r¬  r  s      r   rß   zInterpreterBuilder.<lambda>ó  r®  r   c                óD   — |                       ||t          j        ¦  «        S r   r´  r  s      r   rß   zInterpreterBuilder.<lambda>ô  r¶  r   c                óD   — |                       ||t          j        ¦  «        S r   r¿  r  s      r   rß   zInterpreterBuilder.<lambda>õ  ó   € ¨D¯NªN¸3ÀÅRÄXÑ,NÔ,N€ r   c                óD   — |                       ||t          j        ¦  «        S r   rÂ  r  s      r   rß   zInterpreterBuilder.<lambda>ö  ó   € ¨D¯NªN¸3ÀÅRÄ\Ñ,RÔ,R€ r   c                óD   — |                       ||t          j        ¦  «        S r   r°  r  s      r   rß   zInterpreterBuilder.<lambda>÷  r²  r   c                óD   — |                       ||t          j        ¦  «        S r   r¸  r  s      r   rß   zInterpreterBuilder.<lambda>ø  r¥  r   c                óD   — |                       ||t          j        ¦  «        S r   r¬  r  s      r   rß   zInterpreterBuilder.<lambda>ù  r®  r   c                óD   — |                       ||t          j        ¦  «        S r   r´  r  s      r   rß   zInterpreterBuilder.<lambda>ú  r¶  r   c                óD   — |                       ||t          j        ¦  «        S r   r¿  r  s      r   rß   zInterpreterBuilder.<lambda>û  rÉ  r   c                óD   — |                       ||t          j        ¦  «        S r   rÂ  r  s      r   rß   zInterpreterBuilder.<lambda>ü  rË  r   c                óD   — |                       ||t          j        ¦  «        S r   )r{  rA   Úbitwise_andr  s      r   rß   zInterpreterBuilder.<lambda>ý  ó   € ¨¯ª°s¸CÅÄÑ(PÔ(P€ r   c                óD   — |                       ||t          j        ¦  «        S r   )r{  rA   Úbitwise_xorr  s      r   rß   zInterpreterBuilder.<lambda>þ  rÔ  r   c                óD   — |                       ||t          j        ¦  «        S r   )r{  rA   Ú
bitwise_orr  s      r   rß   zInterpreterBuilder.<lambda>ÿ  s   €  t§~¢~°c¸3ÅÄÑ'NÔ'N€ r   c                ó�   — t          |j        t          j        |j        |j        ¦  «        z
  |j        z  |j        j        ¦  «        S r   )r   r   rA   r‰  r   rJ   r  s      r   r“  zInterpreterBuilder.create_idiv  s9   € õ ˜SœX­¬°´¸#¼(Ñ(CÔ(CÑCÈÌÑPÐRUÔR[ÔRbÑcÔcÐcr   c                ó$  — t          |j        j        ¦  «        }t          |j        j        ¦  «        }|j                             |¦  «        |_        |j                             |¦  «        |_        |                      ||t
          j        ¦  «        S r   )r‚   r   r   rH   r{  rA   r�  )r   rx  ry  Ú	lhs_dtypeÚ	rhs_dtypes        r   Úcreate_ashrzInterpreterBuilder.create_ashr	  sf   € å(¨¬¬Ñ8Ô8ˆ	Ý(¨¬¬Ñ8Ô8ˆ	Ø”8—?’? 9Ñ-Ô-ˆŒØ”8—?’? 9Ñ-Ô-ˆŒØ�~Š~˜c 3­¬Ñ7Ô7Ð7r   c                ó  — |j         j        }|t          j        k    s|t          j        k    r2t          t          |j         |j         ¦  «        |j        j        ¦  «        S t          t          d|j	        dz  dz  › �¦  «        }|j          
                    |¦  «        }|j          
                    |¦  «        }t          j        ||¦  «        |j	        dz  z	  }t          | 
                    |¦  «        |j        j        ¦  «        S )Nr–   r>   r   )r   r   rA   r�   rI   r   Únp_umulhi_u64rJ   r—   rb   rH   r‚  )r   rx  ry  r   Úcompute_dtypeÚlhs_dataÚrhs_dataÚret_datas           r   Úcreate_umulhiz InterpreterBuilder.create_umulhi  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   — t           ||j        |j        |j        ¦  «        |j        j        ¦  «        S r   rw  )r   rx  ry  rR  rz  s        r   Ú
ternary_opzInterpreterBuilder.ternary_op  s+   € Ý˜B˜B˜sœx¨¬°5´:Ñ>Ô>ÀÄÔ@RÑSÔSÐSr   c                óF   — |                       |||t          j        ¦  «        S r   )ræ  rA   Úclip)r   ÚargÚloÚhiÚpropagate_nanss        r   rß   zInterpreterBuilder.<lambda>   s   € ¸d¿oºoÈcÐSUÐWYÕ[]Ô[bÑ>cÔ>c€ r   c                óF   — |                       |||t          j        ¦  «        S r   )ræ  rA   Úwhere)r   Úcondrx  ry  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   rw  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   rw  )r   ré  rz  s      r   Úunary_opz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—   rA   r   rb  r”   r   rJ   )r   ré  rL   Úmask_bitwidthÚnp_uint_dtyper   rQ  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ó  rA   Úcos©r   ré  s     r   rß   zInterpreterBuilder.<lambda>4  ó   €  4§=¢=°µb´fÑ#=Ô#=€ r   c                óB   — |                       |t          j        ¦  «        S r   )ró  rA   Úexprú  s     r   rß   zInterpreterBuilder.<lambda>5  rû  r   c                óB   — |                       |t          j        ¦  «        S r   )ró  rA   Úexp2rú  s     r   rß   zInterpreterBuilder.<lambda>6  ó   €  D§M¢M°#µr´wÑ$?Ô$?€ r   c                óB   — |                       |t          j        ¦  «        S r   )ró  rA   Úabsrú  s     r   rß   zInterpreterBuilder.<lambda>7  s   €  D§M¢M°#µr´vÑ$>Ô$>€ r   c                óB   — |                       |t          j        ¦  «        S r   )ró  rA   Úfloorrú  s     r   rß   zInterpreterBuilder.<lambda>8  s   €  T§]¢]°3½¼Ñ%AÔ%A€ r   c                óB   — |                       |t          j        ¦  «        S r   )ró  rA   Úceilrú  s     r   rß   zInterpreterBuilder.<lambda>9  r   r   c                óB   — |                       |t          j        ¦  «        S r   )ró  rA   Úlogrú  s     r   rß   zInterpreterBuilder.<lambda>:  rû  r   c                óB   — |                       |t          j        ¦  «        S r   )ró  rA   Úlog2rú  s     r   rß   zInterpreterBuilder.<lambda>;  r   r   c                óB   — |                       |t          j        ¦  «        S r   ©ró  rA   Úsqrtrú  s     r   rß   zInterpreterBuilder.<lambda><  s   € ¨D¯MªM¸#½r¼wÑ,GÔ,G€ r   c                óB   — |                       |t          j        ¦  «        S r   r  rú  s     r   rß   zInterpreterBuilder.<lambda>=  r   r   c                óB   — |                       |t          j        ¦  «        S r   )ró  rA   Ú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   rA   r‰   Únp_erf_fp32Únp_erf_fp64r   rJ   )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   rA   r  r   r   rJ   rú  s     r   Úcreate_rsqrtzInterpreterBuilder.create_rsqrtD  s(   € Ý˜A¥¤¨¬Ñ 1Ô 1Ñ1°3´9Ô3CÑDÔDÐDr   c                óf   — t          |j                             |¦  «        |j        j        ¦  «        S r   )r   r   rG   r   rJ   )r   ré  r7   Úallow_reorders       r   rß   zInterpreterBuilder.<lambda>H  s(   € ½\È#Ì(×JZÒJZÐ[`ÑJaÔJaÐcfÔclÔcsÑ=tÔ=t€ r   c                óf   — t          t          j        |j        |¦  «        |j        j        ¦  «        S r   )r   rA   Ú	transposer   r   rJ   )r   ré  Úperms      r   Úcreate_transzInterpreterBuilder.create_transJ  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>   r?   )r   r   r@   Úis_floatingr½   r…   rˆ   rb  rA   r   ÚmatmulrJ   )r   rÆ   rÇ   ÚdÚinput_precisionÚmax_num_imprecise_accÚa_dataÚb_datas           r   Ú
create_dotzInterpreterBuilder.create_dotM  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   rA   rF   r€   r…   )r   Úret_tyÚstartÚstops       r   Úcreate_make_rangez$InterpreterBuilder.create_make_rangeV  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        t          j        |j        ¦  «        ¦  «        }t          j	        ||d|f¬¦  «        d         }|dxx         t          j
        |j        ¦  «                             ¦   «         z  cc<   t          |t
          j        ¦  «        S )Nr?   r   )ÚbinsrD   )r   rA   rK  r   r   r…   r‡   rî  r�   Ú	histogramÚlogical_notÚsumr€   )r   r   r-  rQ  r.  s        r   Úcreate_histogramz#InterpreterBuilder.create_histogramY  s«   € Øˆ<Ý¥¤¨T¬Y½dÐ CÑ CÔ CÅRÄWÑMÔMˆDåŒx˜œ	 4¤9­b¬m¸D¼IÑ.FÔ.FÑGÔGˆÝ”L ¨D¸¸D¸	ÐBÑBÔBÀ1ÔEˆ	à�!ˆˆŒ�œ t¤yÑ1Ô1×5Ò5Ñ7Ô7Ñ7ˆˆ‰Ý˜I¥r¤xÑ0Ô0Ð0r   c                ót   — t          t          j        |j        |j        |¬¦  «        |j        j        ¦  «        S )N©rF  )r   rA   Útake_along_axisr   r   rJ   )r   rc  ÚindicesrF  s       r   Úcreate_gatherz InterpreterBuilder.create_gatherc  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   rH   rA   rI   r   )r   rM  ÚoffsetrL   Úelement_bitwidthÚelement_bytewidths         r   Úcreate_addptrz InterpreterBuilder.create_addptrh  se   € Ø×%Ò%Ñ'Ô'ˆØ#Ô6Ðå Ð#3°qÑ#8Ñ9Ô9ÐÝ˜CœHÐ'8¸6¼;×;MÒ;MÍbÌiÑ;XÔ;XÑ'XÑXÐZ]ÔZcÑdÔdÐdr   c                óò  — |                      |¦  «        \  }}|                     ¦   «         }	t          |	¦  «        }
|€d }nž|t          j        j        k    r*t          t          j        |j	        |
¬¦  «        |	¦  «        }n_|t          j        j
        k    r8t          t          j        |j	        t          d¦  «        |
¬¦  «        |	¦  «        }nt          d|› �¦  «        ‚|                      ||||||¦  «        S )Nr?   Únanzunsupported padding option )rS   r"   r”   r    ÚPADDING_OPTIONÚPAD_ZEROr   rA   r�   r   ÚPAD_NANÚ	full_likeÚfloatrå   rL  )r   rM  rK   Úpadding_optionr[  r\  rP  rN   rO   rL   r]  rR  s               r   Úcreate_tensor_pointer_loadz-InterpreterBuilder.create_tensor_pointer_loado  sé   € à×.Ò.¨~Ñ>Ô>‰ˆˆeØ×&Ò&Ñ(Ô(ˆÝ  Ñ*Ô*ˆØÐ!ØˆEˆEØ�sÔ1Ô:Ò:Ð:Ý ¥¤¨t¬yÀÐ!IÑ!IÔ!IÈ8ÑTÔTˆEˆEØ�sÔ1Ô9Ò9Ð9Ý ¥¤¨d¬i½¸u¹¼ÈXÐ!VÑ!VÔ!VÐX`ÑaÔaˆEˆEåÐK¸>ÐKÐKÑLÔLÐLØ×&Ò& t¨U°E¸>È?Ð\gÑhÔhÐhr   c                ód   — |                      |¦  «        \  }}|                      |||||¦  «        S r   ©rS   rU  )r   rM  r(   rK   r[  r\  rN   rO   s           r   Úcreate_tensor_pointer_storez.InterpreterBuilder.create_tensor_pointer_store~  s5   € Ø×.Ò.¨~Ñ>Ô>‰ˆˆeØ×'Ò'¨¨e°U¸NÈOÑ\Ô\Ð\r   c                óf   — t          t          j        |j        |¦  «        |j        j        ¦  «        S r   )r   rA   Úexpand_dimsr   r   rJ   )r   ré  rF  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   rA   rB   r   r   rJ   )r   ré  r7   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   rA   Úconcatenater   r   rJ   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 )Nr\   r3  )r   rA   Ústackr   r   rJ   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
   rw  )r   rV  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 rA  )r7   r„   r   r…   r‘   r   rA   Úfullr   r”   rJ   )r   r(  ré  r7   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                óÎ   — || j         vrt          d|› �¦  «        ‚| j         |         }t          t          j        |j        |j        |j        |¦  «        |j        j        ¦  «        S )Núunsupported semantic )Úir_sem_to_interpreter_semrå   r   rY  Ú
atomic_casr   r   rJ   )r   rM  ÚcmprV  Ú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 rZ  )	Úir_rmw_op_to_interpreter_rmw_oprå   r[  r   rY  Ú
atomic_rmwr   r   rJ   )r   ÚrmwOprM  rV  rQ  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 moderg  )r   Ú	inlineAsmÚconstraintsÚvaluesrB  rn  Úpacks          r   Úcreate_inline_asmz$InterpreterBuilder.create_inline_asm¬  s   € Ý!Ð"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Ú02xr2   rÁ   s    r   rß   z1InterpreterBuilder.create_print.<locals>.<lambda>¸  s   € ¸LÀ¸L¸L¸L€ r   )Ú	formatter)ræ   rA   Úset_printoptionsÚprintr   )r   ÚprefixÚhexrs  ÚisSignedÚmsgr(   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   r2   )r   Ú	conditionÚmessages      r   Úcreate_assertz InterpreterBuilder.create_assert¾  s   € àÐ&Ð&˜W˜,Ñ&Ô&Ð&Ð&Ð&r   c                ó   — |s
J d¦   «         ‚d S )NzAssume failedr2   )r   r†  s     r   Úcreate_assumez InterpreterBuilder.create_assumeÂ  s   € ØÐ)Ð)˜/Ñ)Ô)Ð)Ð)Ð)r   c                ó   — d S r   r2   r   s    r   Úcreate_barrierz!InterpreterBuilder.create_barrierÅ  s   € àˆr   c                óB   — d„ |D ¦   «         }t          ||||||¦  «        S )Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS r2   ©r%   ©Ú.0r9  s     r   ú
<listcomp>z<InterpreterBuilder.create_make_block_ptr.<locals>.<listcomp>Ë  s    € Ð<Ð<Ð<¨&�v—|’|‘~”~Ð<Ð<Ð<r   )r4   )r   r6   r7   r8   r9   r:   r;   Únew_offsetss           r   Úcreate_make_block_ptrz(InterpreterBuilder.create_make_block_ptrÉ  s.   € à<Ð<°GÐ<Ñ<Ô<ˆÝ! $¨¨w¸À[ÐRWÑXÔXÐXr   c                ót  — t          |j        ¦  «        t          |¦  «        k    rt          d¦  «        ‚d„ |j        D ¦   «         }t          |j        |j        |j        ||j        |j        ¦  «        }t          t          |¦  «        ¦  «        D ](}|j        |         xj
        ||         j
        z  c_
        Œ)|S )Nz len(ptr.offsets) != len(offsets)c                ó6   — g | ]}|                      ¦   «         ‘ŒS r2   r�  r�  s     r   r’  z5InterpreterBuilder.create_advance.<locals>.<listcomp>Ò  s    € Ð@Ð@Ð@¨&�v—|’|‘~”~Ð@Ð@Ð@r   )rE   r9   rå   r4   r6   r7   r8   r:   r;   rD   r   )r   rM  r9   r“  r^  r³   s         r   Úcreate_advancez!InterpreterBuilder.create_advanceÎ  s«   € ÝˆsŒ{ÑÔ�s 7™|œ|Ò+Ð+ÝÐ?Ñ@Ô@Ð@à@Ð@°C´KÐ@Ñ@Ô@ˆÝ  ¤¨3¬9°c´kÀ;ÐPSÔP_ÐadÔajÑkÔkˆÝ•s˜7‘|”|Ñ$Ô$ð 	3ð 	3ˆAØŒK˜ŒNÐÔ 7¨1¤:¤?Ñ2ÐÔÐØˆ
r   r6   r   r7   rV   r8   Útensor_shaperW   rr  r   c                óR   — t          ||||¦  «        }|                     ¦   «          |S r   )rU   r_   )r   r6   r7   r8   r˜  rr  Údescs          r   Úcreate_make_tensor_descriptorz0InterpreterBuilder.create_make_tensor_descriptorØ  s)   € õ    e¨W°lÑCÔCˆØ�Š‰ŒˆØˆr   rš  rU   r5  c                ó–   — t          |t          ¦  «        sJ ‚|                     |¦  «        \  }}|                      ||d ||d¬¦  «        S )NF)rR  r[  r\  rP  )r„   rU   rS   rL  )r   rš  r5  r[  r\  rN   rQ  s          r   Úcreate_descriptor_loadz)InterpreterBuilder.create_descriptor_loadä  s^   € å˜$Õ 0Ñ1Ô1Ð1Ð1Ð1Ø×.Ò.¨wÑ7Ô7‰
ˆˆdØ×&Ò& t¨T¸ÈnØ7FÐTYð 'ñ [ô [ð 	[r   r(   c                ód   — |                      |¦  «        \  }}|                      |||d d ¦  «        S r   rG  )r   rš  r(   r5  rN   rQ  s         r   Úcreate_descriptor_storez*InterpreterBuilder.create_descriptor_storeë  s5   € Ø×.Ò.¨wÑ7Ô7‰
ˆˆdØ×'Ò'¨¨e°T¸4ÀÑFÔFÐFr   Ú	x_offsetsÚy_offsetc                ó„  — |j         j        j        }t          |¦  «        }t	          j        |j        j        d         |j        d         g|¬¦  «        }d }d }	t          |j        ¦  «        D ]E\  }
}t          |t          j        ¦  «        |g}|                      ||||	¦  «        j        ||
d d …f<   ŒFt          ||¦  «        S )Nr   r\   r?   )r6   r   r    r”   rA   Úzerosr   r7   r:   Ú	enumerater   r…   r€   r�  )r   rš  r   r¡  rB  r   Únp_dtypeÚresultr[  r\  r³   Úx_offsetr5  s                r   Úcreate_descriptor_gatherz+InterpreterBuilder.create_descriptor_gatherï  sÁ   € Ø”	”Ô*ˆÝ  Ñ'Ô'ˆÝ”˜9œ>Ô/°Ô2°DÔ4DÀRÔ4HÐIÐQYÐZÑZÔZˆØˆØˆÝ$ Y¤^Ñ4Ô4ð 	lð 	l‰KˆAˆxÝ# H­b¬hÑ7Ô7¸ÐBˆGØ×6Ò6°t¸WÀnÐVeÑfÔfÔkˆF�1�a�a�a�4‰LˆLÝ˜F EÑ*Ô*Ð*r   c                óà   — t          |j        ¦  «        D ]X\  }}t          |j        |         |j        ¦  «        }t          |t          j        ¦  «        |g}|                      |||¦  «         ŒYd S r   )r¤  r   r   r   r…   r€   rŸ  )	r   rš  r(   r   r¡  r³   r§  Úslicer5  s	            r   Úcreate_descriptor_scatterz,InterpreterBuilder.create_descriptor_scatterú  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|› �¦  «        ‚)Nrw   r
   r\   r?   Tzunsupported type )r”   Únamer   rA   rW  rJ   r$  Ú	TypeError)r   rB  Únp_types      r   Úget_all_ones_valuez%InterpreterBuilder.get_all_ones_value  s†   € Ý Ñ%Ô%ˆØ�G”LÐ Ð Ý¥¤¨¨2°WÐ =Ñ =Ô =¸t¼{ÑKÔKÐKØ�œÒ Ð Ý¥¤¨¨4°wÐ ?Ñ ?Ô ?ÀÄÑMÔMÐMåÐ6°Ð6Ð6Ñ7Ô7Ð7r   N©rØ   rÙ   )
r6   r   r7   rV   r8   rV   r˜  rW   rr  r   )rš  rU   r5  rV   )rš  rU   r(   r   r5  rV   )rš  rU   r   r   r¡  r   )rš  rU   r(   r   r   r   r¡  r   )´r*   r+   r,   r    ÚMEM_SEMANTICÚACQUIRErY  ÚRELEASEÚRELAXEDÚACQUIRE_RELEASEr[  Ú	ATOMIC_OPÚADDÚRMW_OPÚFADDÚMINÚUMINÚMAXÚUMAXÚANDÚORÚXORÚXCHGrb  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-  r0  r2  r4  r6  r8  r:  r=  r?  rC  rG  rI  rS  rW  rL  rU  rg  Ú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Ï   ru  r{  Úcreate_faddÚcreate_fmulÚcreate_fdivÚcreate_fremÚcreate_fsubÚ
create_mulÚcreate_precise_divfÚcreate_sdivÚcreate_udivÚcreate_sremÚcreate_uremÚ
create_addÚ
create_subÚ
create_shlÚcreate_lshrÚcreate_minsiÚcreate_minuiÚcreate_minimumfÚcreate_minnumfÚcreate_maxsiÚcreate_maxuiÚcreate_maximumfÚcreate_maxnumfÚcreate_icmpSLEÚcreate_icmpSLTÚcreate_icmpSGEÚcreate_icmpSGTÚcreate_icmpULEÚcreate_icmpULTÚcreate_icmpUGEÚcreate_icmpUGTÚcreate_icmpEQÚcreate_icmpNEÚcreate_fcmpOLTÚcreate_fcmpOGTÚcreate_fcmpOLEÚcreate_fcmpOGEÚcreate_fcmpOEQÚcreate_fcmpONEÚcreate_fcmpULTÚcreate_fcmpUGTÚcreate_fcmpULEÚcreate_fcmpUGEÚcreate_fcmpUEQÚcreate_fcmpUNEÚ
create_andÚ
create_xorÚ	create_orÚcreate_int_to_ptrÚcreate_ptr_to_intr“  rÝ  rä  ræ  Úcreate_clampfÚcreate_selectrñ  ró  r÷  Ú
create_cosÚ
create_expÚcreate_exp2Úcreate_iabsÚcreate_floorÚcreate_ceilÚ
create_logÚcreate_log2Úcreate_precise_sqrtÚcreate_sqrtÚ
create_sinr  r  Úcreate_reshaper  r&  r+  r1  r6  r<  rE  rH  rK  rM  rP  rS  rU  rX  r`  re  ro  ru  r„  rˆ  rŠ  rŒ  r”  r—  r›  r�  rŸ  r¨  r«  r°  r2   r   r   r×   r×     s÷  € € € € € àÔÔ  ,Ô";Ô"CØÔÔ  ,Ô";Ô"CØÔÔ  ,Ô";Ô"CØÔÔ(¨,Ô*CÔ*Sð	!Ðð 	ŒÔ˜<Ô.Ô2ØŒÔ˜LÔ/Ô4ØŒÔ˜<Ô.Ô2ØŒÔ˜LÔ/Ô4ØŒÔ˜<Ô.Ô2ØŒÔ˜LÔ/Ô4ØŒÔ˜<Ô.Ô2ØŒÔ˜,Ô-Ô0ØŒÔ˜<Ô.Ô2ØŒÔ˜LÔ/Ô4ð'Ð#ðNð Nð Nð Nð"ð "ð "ð%ð %ð %ð
ð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð3ð 3ð 3ð+ð +ð +ðHð Hð HðIð Ið IðGð Gð GðKð Kð KðIð Ið IðKð Kð KðIð Ið IðKð Kð KðIð Ið IðMð Mð MðMð Mð MðMð Mð MðLð Lð LðWð Wð Wð
Wð Wð WðNð Nð Nð
Dð Dð Dð+ð +ð +ðDð Dð Dð[ð [ð [ð PÐO€OØOÐO€OØOÐO€OØOÐO€OØMÐM€MØOÐO€OØZÐZ€Oð3ð 3ð 3ðUð Uð UðFð Fð Fð JÐI€KØNÐN€KØLÐL€KØJÐJ€KØNÐN€KØMÐM€JØTÐTÐØCÐC€KØCÐC€KàJÐJ€KØJÐJ€KØHÐH€JØMÐM€JØOÐO€JØQÐQ€KØNÐN€LØNÐN€LØQÐQ€OØPÐP€NØNÐN€LØNÐN€LØQÐQ€OØPÐP€NØSÐS€NØMÐM€NØVÐV€NØPÐP€NØSÐS€NØMÐM€NØVÐV€NØPÐP€NØMÐM€MØQÐQ€MØMÐM€NØPÐP€NØSÐS€NØVÐV€NØNÐN€NØRÐR€NØMÐM€NØPÐP€NØSÐS€NØVÐV€NØNÐN€NØRÐR€NØPÐP€JØPÐP€JØNÐN€IØ&ÐØ&Ððdð dð dð8ð 8ð 8ð	Jð 	Jð 	JðTð Tð Tð dÐc€MØZÐZ€MðFð Fð Fð<ð <ð <ð3ð 3ð 3ð >Ð=€JØ=Ð=€JØ?Ð?€KØ>Ð>€KØAÐA€LØ?Ð?€KØ=Ð=€JØ?Ð?€KØGÐGÐØ?Ð?€KØ=Ð=€Jð3ð 3ð 3ðEð Eð Eð uÐt€NðLð Lð Lðdð dð dðNð Nð Nð1ð 1ð 1ðeð eð eð
eð eð eðið ið ið]ð ]ð ]ðNð Nð NðPð Pð PðTð Tð TðWð Wð Wðtð tð tðlð lð lðjð jð jðrð rð rðZð Zð ZðRð Rð Rð0ð 0ð 0ð'ð 'ð 'ð*ð *ð *ðð ð ðYð Yð Yð
ð ð ð
ð 
ð 
ð 
ð[ð [ð [ð [ðGð Gð Gð Gð	+ð 	+ð 	+ð 	+ð?ð ?ð ?ð ?ð8ð 8ð 8ð 8ð 8r   r×   c                óX   ‡— t          |¦  «        Š|dœˆfd„
}t          | ||¦  «         d S )N)Úmemberc                óT   •—  | |i d„ |                      ¦   «         D ¦   «         ¤d‰i¤ŽS )Nc                ó&   — i | ]\  }}|d k    ¯||“ŒS )rÓ   r2   )r‘  ÚkÚvs      r   ú
<dictcomp>z1_patch_attr.<locals>.<lambda>.<locals>.<dictcomp>  s;   € ð AVð AVð AVÙEIÀQÈØDEÈÒDTÐDTð BCÀAàDTÐDTÐDTr   rÓ   ©Úitems)r  ÚargsÚkwargsÚsemantics      €r   rß   z_patch_attr.<locals>.<lambda>  sd   ø€ ¸¸Àð :kðAVð AVØMSÏ\Ê\É^Ì^ðAVñ AVô AVð:kð :kð bjð:kð :kð :k€ r   )r   Úsetattr)Úobjr­  r  rÎ   Ú
new_memberr  s        @r   Ú_patch_attrr    sS   ø€ Ý˜gÑ&Ô&€HØ&,ð lð lð lð lð lð l€Jõ ˆC��zÑ"Ô"Ð"Ð"Ð"r   c                óœ   — t          j        | ¦  «        D ]6\  }}t          j                             |¦  «        rt          | |||¦  «         Œ7d S r   )ÚinspectÚ
getmembersr…   ÚcoreÚ
is_builtinr  )ÚpkgrÎ   r­  r  s       r   Ú_patch_builtinr     sW   € ÝÔ*¨3Ñ/Ô/ð 4ð 4‰ˆˆfÝŒ7×Ò˜fÑ%Ô%ð 	4Ý˜˜T 6¨7Ñ3Ô3Ð3øð4ð 4r   c                ó€   ‡— d„ Šd„ }d„ | _         ˆf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 )Néþÿÿÿr\   )r   rA   r  rÐ   r   r   rB  Úis_blockÚlistr7   r…   r  r‘   rÍ   )r   rÐ   r:   Ú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   c                ó4   — t          | j        j        ¦  «        S r   )rw   rÐ   r   r   s    r   rß   z$_patch_lang_tensor.<locals>.<lambda>*  s   € ¥C¨¬Ô(8Ñ$9Ô$9€ r   c                ó   •—  ‰| ¦  «        S r   r2   )r   r$  s    €r   rß   z$_patch_lang_tensor.<locals>.<lambda>+  s   ø€  9 9¨T¡?¤?€ r   c                ó4   — t          | j        j        ¦  «        S r   )ÚreprrÐ   r   r   s    r   rß   z$_patch_lang_tensor.<locals>.<lambda>,  s   € ¥4¨¬Ô(8Ñ#9Ô#9€ r   c                ó4   — t          | j        j        ¦  «        S r   )ri   rÐ   r   r   s    r   rß   z$_patch_lang_tensor.<locals>.<lambda>-  s   € ¥# d¤kÔ&6Ñ"7Ô"7€ r   )Ú	__index__r   Ú__repr__Ú__str__ÚpropertyÚT)rÍ   r*  r$  s     @r   Ú_patch_lang_tensorr5    se   ø€ ð6ð 6ð 6ð.ð .ð .ð :Ð9€FÔØ2Ð2Ð2Ð2€F„OØ9Ð9€F„OØ7Ð7€F„NÝ˜Ñ'Ô'€F„H€H€Hr   c                  ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚReduceScanOpInterfacec                ó"   — || _         || _        d S r   )rF  Ú
combine_fn)r   rF  r9  s      r   r<   zReduceScanOpInterface.__init__3  s   € ØˆŒ	Ø$ˆŒˆˆr   c                ó^   — |�(|t          |¦  «        k    rt          d|› d|› �¦  «        ‚d S d S )Nzaxis z out of bounds for shape )rE   rå   )r   r7   rF  s      r   Ú
check_axisz ReduceScanOpInterface.check_axis7  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…   r  rÍ   rå   rB  r;  r7   rF  )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 )Nr7   r?   )r”   r!   r7   rH   r…   r‘   r(  rA   r#  r  rÍ   r   rJ   )r   r^  r   r¥  Úret_types        r   Ú	to_tensorzReduceScanOpInterface.to_tensorA  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          |t          ¦  «        s|                      |f¦  «        d         S |                      |¦  «         |                      |¦  «        }t          |t
          t          f¦  «        rt          |¦  «        n|fS ©Nr   )r„   ÚtupleÚapplyr=  Ú
apply_implr(  )r   r£   r^  s      r   rD  zReduceScanOpInterface.applyK  sw   € Ý˜%¥Ñ'Ô'ð 	,Ø—:’:˜u˜iÑ(Ô(¨Ô+Ð+Ø×Ò˜%Ñ Ô Ð Ø�oŠo˜eÑ$Ô$ˆÝ'¨­dµE¨]Ñ;Ô;ÐH�u�S‰zŒzˆzÀ#ÀÐHr   N)r*   r+   r,   r<   r;  r=  r@  rD  r2   r   r   r7  r7  1  sj   € € € € € ð%ð %ð %ðMð Mð Mð2ð 2ð 2ðIð Ið IðIð Ið Ið Ið Ir   r7  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   )Úsuperr<   Ú	keep_dims)r   rF  r9  rJ  Ú	__class__s       €r   r<   zReduceOps.__init__U  s(   ø€ Ý‰Œ×Ò˜˜zÑ*Ô*Ð*Ø"ˆŒˆˆr   c                óú   — g }|D ]f}|�|                      |¦  «         Œd}|                      |                      |j        j                             ¦   «         |j        ¦  «        ¦  «         Œgt          |¦  «        |fS rB  )Úappendr@  rÐ   r   Úflattenr   rC  )r   r£   rF  r^  r   s        r   ÚunravelzReduceOps.unravelY  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
   r?   c              3  ól   •K  — | ].\  }}‰                      |‰         ‰|         j        ¦  «        V — Œ/d S r   ©r@  r   )r‘  Úiir!  r£   Úinput_indexr   s      €€€r   ú	<genexpr>z+ReduceOps.generic_reduce.<locals>.<genexpr>r  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   rR  )r‘  ÚoiÚor£   Úoutput_indexr   s      €€€r   rU  z+ReduceOps.generic_reduce.<locals>.<genexpr>x  sB   øè è € Ð!wÐ!wÑW\ÐWYÐ[\ $§.¢.°°<´À%ÈÄ)Ä/Ñ"RÔ"RÐ!wÐ!wÐ!wÐ!wÐ!wÐ!wr   )rF  rO  rÐ   r   r7   rM  rA   r£  r   rD   r#  Úunravel_indexrC  r¤  rE   r]   r9  Úfnr„   r…   r  rÍ   rJ  rJ  r@  )r   r£   Úoriginal_axisrF  Ú
input_dataÚoutput_dataÚinput_shapeÚoutput_shaperé  r³   Úinput_tupleÚjÚ	acc_tupleÚcombine_fn_retr^  r   Ú_rT  rY  s   ``               @@r   Úgeneric_reducezReduceOps.generic_reducec  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   ©rF  Úkeepdimsz-val_reduce_op and idx_reduce_op are both None)r„   rC  r@  rÐ   r   rF  rJ  r   r…   r€   rå   )r   r£   Úval_reduce_opÚidx_reduce_oprV  Ú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 )Nrh  )r@  rA   r0  rÐ   r   rF  rJ  r   ©r   r£   s     r   r0  zReduceOps.sum   s6   € Ø�~Š~�bœf U¤\Ô%6¸T¼YÐQUÔQ_Ð`Ñ`Ô`ÐbgÔbmÑnÔnÐnr   c                óÎ  — | j         t          j        j        k    r2|                      |d         t
          j        t
          j        ¬¦  «        S | j         t          j        j        k    r2|                      |d         t
          j	        t
          j
        ¬¦  «        S | j         t          j        j        k    r(|                      |d         t
          j	        d ¬¦  «        S | j         t          j        j        k    r(|                      |d         t
          j        d ¬¦  «        S | j         t          j        j        k    r|                      |d         ¦  «        S |                      |¦  «        S )Nr   )rj  rk  )r9  r…   ÚstandardÚ_argmin_combine_tie_break_leftrm  rA   ÚminÚargminÚ_argmax_combine_tie_break_leftr8  ÚargmaxÚ_elementwise_maxÚ_elementwise_minÚ_sum_combiner0  rf  ro  s     r   rE  zReduceOps.apply_impl£  s  € ØŒ?�bœkÔHÒHÐHØ—<’<  a¤½¼ÍbÌi�<ÑXÔXÐXØŒ_¥¤Ô JÒJÐJØ—<’<  a¤½¼ÍbÌi�<ÑXÔXÐXØŒ_¥¤Ô <Ò<Ð<Ø—<’<  a¤½¼Èd�<ÑSÔSÐSØŒ_¥¤Ô <Ò<Ð<Ø—<’<  a¤½¼Èd�<ÑSÔSÐSØŒ_¥¤Ô 8Ò8Ð8Ø—8’8˜E !œHÑ%Ô%Ð%ð ×&Ò& uÑ-Ô-Ð-r   r   )
r*   r+   r,   r<   rO  rf  rm  r0  rE  Ú__classcell__©rK  s   @r   rG  rG  S  s�   ø€ € € € € ð#ð #ð #ð #ð #ð ð  ð  ð)ð )ð )ðVNð Nð Nð Nð$oð oð oð.ð .ð .ð .ð .ð .ð .r   rG  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   )rI  r<   Úreverse)r   rF  r9  r  rK  s       €r   r<   zScanOps.__init__µ  s(   ø€ Ý‰Œ×Ò˜˜zÑ*Ô*Ð*ØˆŒˆˆr   c                ó‚   — |                       t          j        |j        j        | j        ¬¦  «        |j        ¬¦  «        gS ©Nr3  r?   )r@  rA   ÚcumsumrÐ   r   rF  r   ro  s     r   r‚  zScanOps.cumsum¹  s5   € Ø—’�rœy¨¬Ô):ÀÄÐKÑKÔKÐSXÔS^�Ñ_Ô_Ð`Ð`r   c                ó‚   — |                       t          j        |j        j        | j        ¬¦  «        |j        ¬¦  «        gS r�  )r@  rA   ÚcumprodrÐ   r   rF  r   ro  s     r   r„  zScanOps.cumprod¼  s5   € Ø—’�rœz¨%¬,Ô*;À$Ä)ÐLÑLÔLÐTYÔT_�Ñ`Ô`ÐaÐar   c           	     ó  ‡ ‡‡‡— g }g }‰d         j         j        j        }‰D ]Y}|                     |j         j        ¦  «         |                     t	          j        ||j         j        j        ¬¦  «        ¦  «         ŒZt          |d         j        ¦  «        D �]§}t	          j	        ||¦  «        Št          ˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        }‰‰ j                 dk    rMt          t          |¦  «        ¦  «        D ]/}||         j         j                             ¦   «         ||         ‰<   Œ0Œ t          ˆˆ fd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        Št          ˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        }	 ‰ j        j        g |	¢|¢R Ž }
t#          |
t          ¦  «        s|
fn|
}	t          t          |¦  «        ¦  «        D ]\}t#          |	|         t$          j        j        ¦  «        r$|	|         j         j                             ¦   «         n|	|         ||         ‰<   Œ]�Œ©g }t          |¦  «        D ]9\  }}|                     ‰                      |‰|         j        ¦  «        ¦  «         Œ:|S )Nr   r?   c              3  ól   •K  — | ].\  }}‰                      |‰         ‰|         j        ¦  «        V — Œ/d S r   rR  )r‘  rS  r!  Úindexr£   r   s      €€€r   rU  z'ScanOps.generic_scan.<locals>.<genexpr>Ê  s?   øè è € ÐfÐfÁuÀrÈ1˜Ÿš¨¨%¬°%¸´)´/ÑBÔBÐfÐfÐfÐfÐfÐfr   c              3  óT   •K  — | ]"}|‰j         k    r‰|         d z
  n‰|         V — Œ#dS )r
   Nr3  )r‘  r³   r‡  r   s     €€r   rU  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   rR  )r‘  rW  rX  r£   Ú
prev_indexr   s      €€€r   rU  z'ScanOps.generic_scan.<locals>.<genexpr>Ñ  sB   øè è € Ð!uÐ!uÑUZÐUWÐYZ $§.¢.°°:´ÀÀbÄ	ÄÑ"PÔ"PÐ!uÐ!uÐ!uÐ!uÐ!uÐ!ur   )rÐ   r   r7   rM  rA   r£  r   rD   r#  rZ  rC  r¤  rF  rE   r]   r9  r[  r„   r…   r  rÍ   r@  )r   r£   r]  r^  r7   ré  r³   r   rb  rc  rd  r^  r‡  rŠ  s   ``          @@r   Úgeneric_scanzScanOps.generic_scan¿  s¯  øøøø€ Øˆ
ØˆØ�a””Ô$Ô*ˆØð 	Mð 	MˆCØ×Ò˜cœjœoÑ.Ô.Ð.Ø×Ò�rœx¨°S´Z´_Ô5JÐKÑKÔKÑLÔLÐLÐLå�z !”}Ô)Ñ*Ô*ð 	Hñ 	HˆAåÔ$ Q¨Ñ.Ô.ˆEÝÐfÐfÐfÐfÐfÐfÕPYÐZdÑPeÔPeÐfÑfÔfÑfÔfˆDØ�T”YÔ 1Ò$Ð$å�s ;Ñ/Ô/Ñ0Ô0ð Gð G�AØ,0°¬G¬NÔ,?×,DÒ,DÑ,FÔ,F�K ”N 5Ñ)Ð)ðGõ #Ð"kÐ"kÐ"kÐ"kÐ"kÕY^Õ_bÐchÑ_iÔ_iÑYjÔYjÐ"kÑ"kÔ"kÑkÔk�
Ý!Ð!uÐ!uÐ!uÐ!uÐ!uÐ!uÕ^gÐhsÑ^tÔ^tÐ!uÑ!uÔ!uÑuÔu�	Ø!3 ¤Ô!3Ð!F°YÐ!FÀÐ!FÐ!FÐ!F�Ý6@ÀÕQVÑ6WÔ6WÐk˜^Ð.Ð.Ð]k�	Ý�s ;Ñ/Ô/Ñ0Ô0ð Hð H�AÝOYØ! !œ¥b¤g¤nñP6ô P6ð -H¨I°a¬LÔ,?Ô,D×,IÒ,IÑ,KÔ,KÐ,KØ;DÀQ¼<ð   ”N 5Ñ)Ð)ñHð ˆÝ  Ñ-Ô-ð 	=ð 	=‰GˆAˆtØ�JŠJ�t—~’~ d¨E°!¬H¬NÑ;Ô;Ñ<Ô<Ð<Ð<Øˆ
r   c           	     óB  — g }| j         rW|D ]S}|                     |                      t          j        |j        j        | j        ¬¦  «        |j        ¦  «        ¦  «         ŒTn|}| j	        t          j        j        k    r|                      |d         ¦  «        }nK| j	        t          j        j        k    r|                      |d         ¦  «        }n|                      |¦  «        }| j         r4|D ]1}t          j        |j        j        | j        ¬¦  «        |j        _        Œ2|S )Nr3  r   )r  rM  r@  rA   ÚfliprÐ   r   rF  r   r9  r…   rq  ry  r‚  Ú_prod_combiner„  r‹  )r   r£   Ú	new_inputré  r^  s        r   rE  zScanOps.apply_implÝ  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   )	r*   r+   r,   r<   r‚  r„  r‹  rE  rz  r{  s   @r   r}  r}  ³  sz   ø€ € € € € ðð ð ð ð ðað að aðbð bð bðð ð ð<ð ð ð ð ð ð r   r}  c                 óŠ   — dd„} dd„}| t           _        |t           _        | t           j        _        |t           j        _        d S )NFc                óJ   — t          |||¦  «                             | ¦  «        S r   )rG  rD  )r£   rF  r9  rJ  r  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}  rD  )r£   rF  r9  r  r  s        r   Ú	_new_scanz%_patch_reduce_scan.<locals>._new_scanø  s"   € Ý�t˜Z¨Ñ1Ô1×7Ò7¸Ñ>Ô>Ð>r   )F)r…   ÚreduceÚassociative_scanr  )r’  r”  s     r   Ú_patch_reduce_scanr—  ñ  sX   € ðCð Cð Cð Cð?ð ?ð ?ð ?ð …B„IØ#…BÔØ …B„G„NØ(…B„GÔÐÐr   c                ó  — d„ }d
d„}dd„}d„ }|| _         || _        || _        t          | _        || j        _        t          |d¬¦  «        | _        t          |d¬¦  «        | _	        t          |d	¬¦  «        | _
        t          ¦   «          d S )Nc                óF  — | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         d	k    r| 	                    ¦   «         S | j         d
k    r| 
                    ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S | j         dk    r|                     ¦   «         S t%          d| › d�¦  «        ‚)NÚvoidr‡   r|   r{   r~   r}   r€   r   r�   rI   rk   rm   ro   Úfp16Úbf16Úfp32Úfp64zfail to convert z to ir type)r­  Úget_void_tyrû   rþ   r   r  r  r  r
  r  r  r  r  r  rñ   rô   r÷   rù   rå   )r   rÎ   s     r   Ú
_new_to_irz$_patch_lang_core.<locals>._new_to_ir  s+  € àŒ9˜ÒÐØ×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜(Ò"Ð"Ø×(Ò(Ñ*Ô*Ð*ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜(Ò"Ð"Ø×(Ò(Ñ*Ô*Ð*ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜(Ò"Ð"Ø×(Ò(Ñ*Ô*Ð*ØŒY˜'Ò!Ð!Ø×'Ò'Ñ)Ô)Ð)ØŒY˜)Ò#Ð#Ø×)Ò)Ñ+Ô+Ð+ØŒY˜*Ò$Ð$Ø×*Ò*Ñ,Ô,Ð,ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×&Ò&Ñ(Ô(Ð(ØŒY˜&Ò Ð Ø×'Ò'Ñ)Ô)Ð)ØŒY˜&Ò Ð Ø×(Ò(Ñ*Ô*Ð*ÝÐ=¨DÐ=Ð=Ð=Ñ>Ô>Ð>r   c                óB   — |€d}|€d| }}n| |}}t          |||¦  «        S )Nr
   r   )rD   )Úarg1Úarg2Ústepr  r)  Úends         r   Ú
_new_rangez$_patch_lang_core.<locals>._new_range+  s7   € Øˆ<ØˆDØˆ<Ø˜D�3ˆEˆEà˜t�3ˆEÝ�U˜C Ñ&Ô&Ð&r   Ú c                ó   — | s
J |¦   «         ‚d S r   r2   )rï  rƒ  s     r   Ú_new_static_assertz,_patch_lang_core.<locals>._new_static_assert4  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 r2   )r„   r…   Ú	constexprr(   ©r‘  r  s     r   r’  z7_patch_lang_core.<locals>._set_attr.<locals>.<listcomp>=  s/   € ÐPÐPÐPÀA�Z¨­2¬<Ñ8Ô8Ð?�!”'�'¸aÐPÐPÐPr   r
   z$len(values) != len(input.shape) for )r„   r…   rÍ   r(  rC  rE   r8  r7   rå   rÐ   r)   )r£   rs  r­  s      r   Ú	_set_attrz#_patch_lang_core.<locals>._set_attr7  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   ztt.divisibility©r­  ztt.contiguityztt.constancy)NN)r§  )rD   Ústatic_rangeÚstatic_assertr  Ústatic_printr   Úto_irr   Úmultiple_ofÚmax_contiguousÚmax_constancyr—  )Úlangr   r¦  r©  r®  s        r   Ú_patch_lang_corer¸    sÆ   € ð$?ð $?ð $?ðP'ð 'ð 'ð 'ðð ð ð ð
ð 
ð 
ð €D„JØ"€DÔØ+€DÔÝ€DÔØ!€D„JÔÝ˜yÐ/@ÐAÑAÔA€DÔÝ! )°/ÐBÑBÔB€DÔÝ  °Ð@Ñ@Ô@€DÔåÑÔÐÐÐr   c                óÆ  — d„ | j                              ¦   «         D ¦   «         }t          |¦  «        dk    s
J d¦   «         ‚|D ]y}t          |t          ¦  «         t          |j        t          ¦  «         |t          k    rt          |j        t          ¦  «         t          |j        ¦  «         t          |¦  «         Œzt          t          j
        j        t          ¦  «         d S )Nc                ój   — g | ]0\  }}t          j        |¦  «        ¯|t          t          j        fv ¯.|‘Œ1S r2   )r  Úismoduler…   r  )r‘  re  r(   s      r   r’  z_patch_lang.<locals>.<listcomp>P  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)Ú__globals__r  rE   r   Úinterpreter_builderrÍ   r…   r¿   r5  r¸  r  Útensor_descriptor_base)r[  Úlangsr·  s      r   Ú_patch_langrÀ  O  sÉ   € ØpÐp 2¤>×#7Ò#7Ñ#9Ô#9ÐpÑpÔp€EÝˆu‰:Œ:˜Š?ˆ?ˆ?ÐX‰?Œ?ˆ?Øð ð ˆÝ�tÕ0Ñ1Ô1Ð1Ý�t”{Õ$7Ñ8Ô8Ð8Ø•2Š:ˆ:Ý˜4œ9Õ&9Ñ:Ô:Ð:Ý˜4œ;Ñ'Ô'Ð'Ý˜ÑÔÐÐÝ•2”7Ô1Õ3FÑGÔGÐGÐGÐGr   c                óv   — t          | d¦  «        r t          | ¦  «        |Ž n t          | ¦  «        |¦  «        S )NÚ_fields)r!   rB  )ré  Úcontentss     r   Ú_tuple_createrÄ  \  s;   € õ $+¨3°	Ñ#:Ô#:ÐSˆ9�4�‰9Œ9�hÐÐÀ	ÅÀSÁ	Ä	È(Ñ@SÔ@SÐSr   c                óF  — t          | t          ¦  «        �rt          j        t          j        j                             | ¦  «        ¦  «        }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                             | ¦  «        ¦  «        }t          t          j        |                      ¦   «         gt          j        ¬¦  «        |¦  «        }t          j        ||¦  «        S t          | t&          ¦  «        r#t)          | t+          t,          | ¦  «        ¦  «        S t          | t.          ¦  «        rŸd
„ | j        D ¦   «         }| j        d         dk    sJ ‚t          j        d¦  «        |d<   t5          t7          ¦   «         ¦  «        }|                     t-          | j        ¦  «        d„ | j        D ¦   «         |d„ | j        D ¦   «         ¬¦  «        S | S )Ni   €l        l        lûÿÿÿ         l            l            zUnsupported integer value r?   Údata_ptrc                ó,   — g | ]}t          |¦  «        ‘ŒS r2   ©Ú_implicit_cvt©r‘  Úss     r   r’  z!_implicit_cvt.<locals>.<listcomp>}  s    € Ð9Ð9Ð9¨•= Ñ#Ô#Ð9Ð9Ð9r   r\   r
   c                ó,   — g | ]}t          |¦  «        ‘ŒS r2   rÈ  rÊ  s     r   r’  z!_implicit_cvt.<locals>.<listcomp>ƒ  s    € Ð7Ð7Ð7¨•= Ñ#Ô#Ð7Ð7Ð7r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS r2   )r…   r¬  )r‘  rÇ   s     r   r’  z!_implicit_cvt.<locals>.<listcomp>…  s    € ÐBÐBÐB¨Q�œ a™œÐBÐBÐBr   )r6   r7   r8   r:   ) r„   rw   r…   Ú	str_to_tyÚtritonÚruntimeÚjitÚmangle_typerA   r€   r   r�   rI   rå   r   r#  rÍ   r!   rÆ  rC  rÄ  ÚmaprÉ  r	   r8   r¬  r   r×   Úmake_tensor_descriptorr6   r7   r:   )ré  Útyr   rÐ   r8   r  s         r   rÉ  rÉ  f  s�  € Ý�#•sÑÔñ %ÝŒ\�&œ.Ô,×8Ò8¸Ñ=Ô=Ñ>Ô>ˆÝ”ˆØ�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ÑÔð 
ÝŒ\�&œ.Ô,×8Ò8¸Ñ=Ô=Ñ>Ô>ˆÝ�bœh¨¯ª©¬Ð'7½r¼yÐIÑIÔIÈ2ÑNÔNˆÝŒy˜ Ñ$Ô$Ð$Ý	�C�Ñ	Ô	ð 
Ý˜S¥#¥m°SÑ"9Ô"9Ñ:Ô:Ð:Ý	�CÕ)Ñ	*Ô	*ð 

Ø9Ð9¨S¬[Ð9Ñ9Ô9ˆØŒ{˜2Œ !Ò#Ð#Ð#Ð#Ý”l 1‘o”oˆ�‰Ý!Õ"4Ñ"6Ô"6Ñ7Ô7ˆØ×.Ò.Ý˜sœxÑ(Ô(Ø7Ð7¨S¬YÐ7Ñ7Ô7ØØBÐB°#´/ÐBÑBÔBð	 /ñ 
ô 
ð 	
ð €Jr   c                ó\   — t          | t          j        j        j        ¦  «        r| j        S | S r   )r„   rÏ  rÐ  rÑ  ÚTensorWrapperr6   )Ú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d„ Zd„ Zd„ Zd„ ZdS )ÚGridExecutorc                ó°   ‡‡— ddl mŠ || _        || _        || _        ˆfd„|j                             ¦   «         D ¦   «         Šˆfd„|D ¦   «         | _        d S )Nr
   )Ú_normalize_tyc                ó.   •— i | ]\  }}| ‰|¦  «        “ŒS r2   r2   )r‘  r­  rÕ  rà  s      €r   r  z)GridExecutor.__init__.<locals>.<dictcomp>¢  s)   ø€ Ð^Ð^Ð^±x°t¸R˜4  ¨rÑ!2Ô!2Ð^Ð^Ð^r   c                óF   •— g | ]}‰                      |¦  «        d k    ¯|‘ŒS )r¬  )Úget)r‘  r­  r.   s     €r   r’  z)GridExecutor.__init__.<locals>.<listcomp>£  s2   ø€ ÐbÐbÐb D¸×9LÒ9LÈTÑ9RÔ9RÐVaÒ9aÐ9a˜4Ð9aÐ9aÐ9ar   )rÑ  rà  r[  Ú	arg_namesÚgridr.   r  Ú
constexprs)r   r[  rä  rå  r.   rà  s       @@r   r<   zGridExecutor.__init__œ  sr   øø€ Ø&Ð&Ð&Ð&Ð&Ð&àˆŒØ"ˆŒØˆŒ	Ø^Ð^Ð^Ð^À2ÔCU×C[ÒC[ÑC]ÔC]Ð^Ñ^Ô^ˆØbÐbÐbÐb¨IÐbÑbÔbˆŒˆˆr   c                óŽ   ‡‡— i Šˆˆfd„Šˆfd„|D ¦   «         }i }|                      ¦   «         D ]\  }} ‰|¦  «        ||<   Œ||fS )Nc                óF  •— t          | t          ¦  «        rt          | t          ‰| ¦  «        ¦  «        S t          | t          ¦  «        r/t	           ‰| j        ¦  «        | j        | j        | j        ¦  «        S t          | d¦  «        s| S t          | ¦  «        }|                     ¦   «                              ¦   «         ‰vr=|                     ¦   «         }|                     ¦   «         ‰|                     ¦   «         <   ‰|                     ¦   «                              ¦   «                  }|                     dd¬¦  «        }|                     ||                     ¦   «         |                     ¦   «         |                     ¦   «         ¦  «         t'          || ¬¦  «        }|S )NrÆ  r   Úcpu)Údevice)rÛ  )r„   rC  rÄ  rÓ  r	   r6   r7   r8   r:   r!   rÙ  Úuntyped_storagerÆ  ré  Ú	new_emptyÚset_Ústorage_offsetr#  r^   rÜ  )ré  Úunwrapped_argÚstorageÚcpu_argÚ_to_cpuÚstoragess       €€r   rò  z,GridExecutor._init_args_hst.<locals>._to_cpu¨  sx  ø€ Ý˜#�uÑ%Ô%ð 
Ý$ S­#¨g°sÑ*;Ô*;Ñ<Ô<Ð<Ý˜CÕ!1Ñ2Ô2ð Ý'Ø�G˜CœHÑ%Ô%Ø”IØ”KØ”Oñ	ô ð õ ˜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 r2   r2   )r‘  ré  rò  s     €r   r’  z/GridExecutor._init_args_hst.<locals>.<listcomp>À  s!   ø€ Ð5Ð5Ð5 S�G�G˜C‘L”LÐ5Ð5Ð5r   r  )	r   Úargs_devr  Úargs_hstÚ
kwargs_hstr'   r(   rò  ró  s	          @@r   Ú_init_args_hstzGridExecutor._init_args_hst¥  s‚   øø€ Øˆð	ð 	ð 	ð 	ð 	ð 	ð0 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„   rC  Úzipr	   r6   )Úarg_devÚarg_hstÚ	_from_cpuró  s     €€r   rþ  z1GridExecutor._restore_args_dev.<locals>._from_cpuË  sü   ø€ Ý�w 
Ñ+Ô+ð 6å#1°'Ñ#:Ô#:½NÈ7Ñ<SÔ<S˜�ØBI×BYÒBYÑB[ÔB[Ð]d×]tÒ]tÑ]vÔ]vÐAw�˜×0Ò0Ñ2Ô2×;Ò;Ñ=Ô=Ñ>Ð>Ð>Ý˜G¥UÑ+Ô+ð 6Ý*-¨g°wÑ*?Ô*?ð 0ð 0Ñ&�W˜gØ�I˜g wÑ/Ô/Ð/Ð/ð0ð 0å˜GÕ%5Ñ6Ô6ð 6Ø�	˜'œ,¨¬Ñ5Ô5Ð5Ð5Ð5ð6ð 6r   )rû  r  rs  Úcopy_)r   rõ  rö  r  r÷  rü  rý  r'   Ú	kwarg_devÚ	kwarg_hstrþ  ró  s             @@r   Ú_restore_args_devzGridExecutor._restore_args_devÈ  sÔ   øø€ Øˆð		6ð 		6ð 		6ð 		6ð 		6ð 		6õ !$ H¨hÑ 7Ô 7ð 	(ð 	(ÑˆG�WØˆI�g˜wÑ'Ô'Ð'Ð'ð %Ÿlšl™nœnð 	,ð 	,‰NˆC�Ø" 3œˆIØˆI�i Ñ+Ô+Ð+Ð+à"*§/¢/Ñ"3Ô"3ð 	#ð 	#ÑˆW�gØ�MŠM˜'Ñ"Ô"Ð"Ð"ð	#ð 	#r   c                ó  ‡ ‡— |                      dd¦  «        rd S t          j        ‰ j        ¦  «        Šˆfd„|                     ¦   «         D ¦   «         }‰                      ||¦  «        \  }}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‰                      ||||¦  «         d S )NÚwarmupFc                ó.   •— i | ]\  }}|‰j         v ¯||“ŒS r2   )r  )r‘  r  r  Úargspecs      €r   r  z)GridExecutor.__call__.<locals>.<dictcomp>è  s+   ø€ ÐGÐGÐG™4˜1˜a°Q¸'¼,Ð5FÐ5F�!�QÐ5FÐ5FÐ5Fr   c                óL   •— i | ] \  }}||‰j         v r|nt          |¦  «        “Œ!S r2   )ræ  rÉ  )r‘  r­  ré  r   s      €r   r  z)GridExecutor.__call__.<locals>.<dictcomp>ð  s:   ø€ ÐkÐkÐkÑQZÐQUÐWZ�˜T T¤_Ð4Ð4�c�c½-ÈÑ:LÔ:LÐkÐkÐkr   é   z#grid must have at most 3 dimensions)r
   r   r
   r   r2   )Úpopr  Úgetfullargspecr[  r  rø  rÀ  ÚgetcallargsÚcallablerå  rE   r½  rï   rD   rê   Ú	ExceptionrÏ  ÚknobsÚcompilationÚfront_end_debuggingr   r.  r  )r   rõ  r  rö  r÷  r  rå  rÂ   rè   ré   Úer  s   `          @r   Ú__call__zGridExecutor.__call__á  s%  øø€ Ø�:Š:�h Ñ&Ô&ð 	ØˆFõ Ô(¨¬Ñ1Ô1ˆØGÐGÐGÐG 6§<¢<¡>¤>ÐGÑGÔGˆà#×2Ò2°8¸VÑDÔDÑˆ�*å�D”GÑÔÐõ Ô" 4¤7ÐD¨XÐDÐDÐD¸ÐDÐDˆØkÐkÐkÐkÐ^b×^hÒ^hÑ^jÔ^jÐkÑkÔkˆå"*¨4¬9Ñ"5Ô"5ÐDˆt�yŠy˜‰Œˆ¸4¼9ˆÝ�4‰yŒy˜AŠ~ˆ~ˆ~ÐD‰~Œ~ˆ~Ø�e˜q¥3 t¡9¤9™}Ñ-Ñ-ˆÝÔ(¨$Ð/Ð/ð		3Ý˜4 œ7‘^”^ð (ð (�Ý˜t Aœw™œð (ð (�AÝ" 4¨¤7™^œ^ð (ð (˜Ý+×8Ò8¸¸A¸qÑAÔAÐAØ˜œ˜˜ $˜˜˜˜ð(ð(ð(øõ
 ð 	3ð 	3ð 	3ÝŒ|Ô'Ô;ð ØÝ"¥4¨¡7¤7Ñ+Ô+°Ð2øøøøð	3øøøð
 	×Ò˜x¨°6¸:ÑFÔFÐFÐFÐFs   Ä/A1F! Æ!
G$Æ+4GÇG$N)r*   r+   r,   r<   rø  r  r  r2   r   r   rÞ  rÞ  š  sY   € € € € € ðcð cð cð!$ð !$ð !$ðF#ð #ð #ð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 supportedÚinterpreter_semantic)ÚidÚctxr@  )r(   r   r  F)r(   )Úfuncr  Úkeywords)ÚtargetsÚvisitrE   rå   ÚastÚCallÚ	AttributeÚNameÚLoadr(   Ú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)r*   r+   r,   r&  r2   r   r   r  r    s#   € € € € € ðð ð ð ð r   r  c                  óL   — e Zd Z e¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ ZdS )	ÚFunctionRewriterc                ó>   — || _         || _        d| _        d| _        d S )Nr§  r   )r[  r  ÚfilenameÚdef_file_lineno)r   r[  r  s      r   r<   zFunctionRewriter.__init__  s%   € ØˆŒØˆŒØˆŒà$%ˆÔÐÐr   c                ó`  — 	 t          j        | j        ¦  «        \  }}n# t          $ r
 | j        cY S w xY w|                      ¦   «         \  | _        | _        |                      |¦  «        | _        |  	                    |¦  «        }|  
                    |¦  «        }|                      |¦  «        S r   )r  Úgetsourcelinesr[  r  Ú_get_jit_fn_file_liner*  r+  Ú	_find_defÚ
def_linenoÚ_prepare_sourceÚ_transform_astÚ_compile_and_exec)r   Úlinesre  rc  Ú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                óD   — ddl m}m}  | || j        ¦  «        ¦  «        S )Nr
   )Úget_jit_fn_file_lineÚJITFunction)rÑ  r8  r9  r[  )r   r8  r9  s      r   r.  z&FunctionRewriter._get_jit_fn_file_line2  s7   € Ø:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ø#Ð# K K°´Ñ$8Ô$8Ñ9Ô9Ð9r   c                óŒ   — d}t          |¦  «        D ]1\  }}|                     ¦   «                              d¦  «        r|dz   }Œ2|S )Nr   zdef r
   )r¤  ÚstripÚ
startswith)r   r4  r0  r³   Úlines        r   r/  zFunctionRewriter._find_def6  sP   € Øˆ
å  Ñ'Ô'ð 	#ð 	#‰GˆAˆtØ�zŠz‰|Œ|×&Ò& vÑ.Ô.ð #Ø ™U�
øØÐr   c                óx   — || j         dz
  d …         }d                     |¦  «        }t          j        |¦  «        S )Nr
   r§  )r0  ÚjoinÚtextwrapÚdedent)r   r4  rc  s      r   r1  z FunctionRewriter._prepare_source>  s8   € Ø�d”o¨Ñ)Ð*Ð*Ô+ˆØ�gŠg�e‰nŒnˆÝŒ˜sÑ#Ô#Ð#r   c                óÈ   — t          j        |¦  «        }| j                             |¦  «        }t          j        |¦  «         | j        dz
  }t          j        ||¦  «         |S r  )r  ÚparseÚast_transformerr  Úfix_missing_locationsr+  Úincrement_lineno)r   rc  Ú
parsed_astr5  Ú
inc_linenos        r   r2  zFunctionRewriter._transform_astC  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*  r  r[  r¼  Úglobalsr  rJ  r*   )r   r5  Úcompiled_codeÚlocal_namespaceÚ
fn_globalsr'   r(   s          r   r3  z"FunctionRewriter._compile_and_execN  s…   € Ý ¸$¼-ÈfÐUÑUÔUˆØ)˜Tœ[˜/ˆØ”WÔ(ˆ
Ý!™)œ)Ÿ/š/Ñ+Ô+ð 	(ð 	(‰JˆC�Ø˜*Ð$Ð$Ø"'�
˜3‘øÝˆ]˜J¨Ñ8Ô8Ð8Ø˜tœwÔ/Ô0Ð0r   N)r*   r+   r,   r  rD  r<   r6  r.  r/  r1  r2  r3  r2   r   r   r(  r(    sŠ   € € € € € Ø$�nÑ&Ô&€Oð&ð &ð &ð7ð 7ð 7ð(:ð :ð :ðð ð ð$ð $ð $ð
	ð 	ð 	ð1ð 1ð 1ð 1ð 1r   r(  c                  óB   — e Zd Zi Zd	d„Zd„ Zed„ ¦   «         Z d„ Zd„ ZdS )
ÚInterpretedFunctionrØ   rÙ   c                óÊ   ‡ — |‰ _         t          |fi |¤Ž‰ _        ˆ fd„}|‰ _        t	          j        |¦  «        }d„ |j                             ¦   «         D ¦   «         ‰ _        d S )Nc                 ót   •— |d         }‰                      ¦   «         } t          |‰j        |¦  «        | i |¤ŽS )Nrå  ©ÚrewriterÞ  rä  )r  r  rå  r[  r   s       €r   Úrunz)InterpretedFunction.__init__.<locals>.runa  s<   ø€ Ø˜&”>ˆDØ—’‘”ˆBØ9•<  D¤N°DÑ9Ô9¸4ÐJÀ6ÐJÐJÐJr   c                ó   — g | ]	}|j         ‘Œ
S r2   r¯  r­  s     r   r’  z0InterpretedFunction.__init__.<locals>.<listcomp>h  s   € ÐHÐHÐH Q˜!œ&ÐHÐHÐHr   )	r[  r(  ÚrewriterrW  r  Ú	signatureÚ
parametersrs  rä  )r   r[  r  rW  rZ  s   `    r   r<   zInterpretedFunction.__init__]  s€   ø€ ØˆŒÝ(¨Ð6Ð6¨vÐ6Ð6ˆŒð	Kð 	Kð 	Kð 	Kð 	Kð
 ˆŒÝÔ% bÑ)Ô)ˆ	ØHÐH¨)Ô*>×*EÒ*EÑ*GÔ*GÐHÑHÔHˆŒˆˆr   c                óŽ   — | j         | j        vr&| j                             ¦   «         | j        | j         <   | j        | j                  S r   )r[  Úrewritten_fnrY  r6  r   s    r   rV  zInterpretedFunction.rewritej  s?   € ØŒ7˜$Ô+Ð+Ð+Ø)-¬×)BÒ)BÑ)DÔ)DˆDÔ˜dœgÑ&ØÔ  ¤Ô)Ð)r   c                ó   — | j         j        S r   )r[  r*   r   s    r   r*   zInterpretedFunction.__name__o  s   € àŒwÔÐr   c                óV   — |                       ¦   «         }t          || j        |¦  «        S r   rU  )r   rå  r[  s      r   Ú__getitem__zInterpretedFunction.__getitem__s  s#   € Ø�\Š\‰^Œ^ˆÝ˜B ¤°Ñ5Ô5Ð5r   c                óÂ   — t          | j        ¦  «         |                      ¦   «         }	  ||i |¤ŽS # t          $ r"}t	          t          |¦  «        ¦  «        |‚d }~ww xY wr   )rÀ  r[  rV  r  r   r.  )r   r  r  r[  r  s        r   r  zInterpretedFunction.__call__w  sn   € å�D”GÑÔÐØ�\Š\‰^Œ^ˆð	3Ø�2�tÐ&˜vÐ&Ð&Ð&øÝð 	3ð 	3ð 	3Ý"¥4¨¡7¤7Ñ+Ô+°Ð2øøøøð	3øøøs   ª2 ²
A¼AÁANr±  )	r*   r+   r,   r]  r<   rV  r3  r`  r  r2   r   r   rR  rR  Y  sy   € € € € € à€LðIð Ið Ið Ið*ð *ð *ð
 ð ð  ñ „Xð ð6ð 6ð 6ð3ð 3ð 3ð 3ð 3r   rR  )EÚ
__future__r   r  r@  r  Útypingr   r   r   r¿   ÚnumpyrA   rÏ  Útriton.languageÚlanguager…   r/   r   Útriton.language.semanticr   Útriton.tools.tensor_descriptorr	   Úerrorsr   Ú	functoolsr   Ú_C.libtritonr   rY  r   r    r   r4   rU   re   r‚   r”   r½   rÃ   rÈ   Ú	vectorizer‰   r  rŠ   r  rI   rß  rË   r×   r  r   r5  r7  rG  r}  r—  r¸  rÀ  rÄ  rÉ  r½  r  rÙ  rÜ  rÞ  ÚNodeTransformerr  r(  rR  r2   r   r   ú<module>rn     sì  ðØ "Ð "Ð "Ð "Ð "Ð "Ø 
€
€
€
Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $à €€€Ø Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø $Ð $Ð $Ð $Ð $Ð $ð ðð ð ð ð ñ ô ñ „ðð6ð ð ð ð ñ ô ð ð4#ð #ð #ð #ð #ñ #ô #ð #ðL €�$ÐÑÔð
&ð 
&ð 
&ð 
&ð 
&ñ 
&ô 
&ñ Ôð
&ð	ð 	ð 	ðð ð ð@='ð ='ð ='ð@ð ð ð
#ð #ð #ð ˆbŒl˜4¨¬¨Ð5Ñ5Ô5€ØˆbŒl˜4¨¬¨Ð5Ñ5Ô5€Ø�”˜Z°´°Ð<Ñ<Ô<€ðpð pð pð pð pñ pô pð pðD8ð D8ð D8ð D8ð D8ñ D8ô D8ð D8ðN#ð #ð #ð4ð 4ð 4ð(ð (ð (ð.Ið Ið Ið Ið Iñ Iô Ið IðD].ð ].ð ].ð ].ð ].Ð%ñ ].ô ].ð ].ð@;ð ;ð ;ð ;ð ;Ð#ñ ;ô ;ð ;ð|)ð )ð )ð Kð Kð Kð\
Hð 
Hð 
HðTð Tð Tð!ð !ð !ðH )Ð(Ñ*Ô*Ð Ø%�~Ð&9Ñ:Ô:Ð ðð ð ðð ð ðgGð gGð gGð gGð gGñ gGô gGð gGðTð ð ð ð �SÔ(ñ ô ð ð B1ð B1ð B1ð B1ð B1ñ B1ô B1ð B1ðJ%3ð %3ð %3ð %3ð %3ñ %3ô %3ð %3ð %3ð %3r   