§
    OŠtjK ã                   óÄ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZ ddlmZmZmZm Z! dd	l"m#Z#m$Z$m%Z% dd
l&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4 d„ Z5d„ Z6dede7fd„Z8dede7fd„Z9dede7fd„Z:dede7fd„Z;dede7fd„Z<d„ Z=e>fd„Z?d„ Z@dee$         fd„ZAdeejB                 dee%         fd„ZCe7eD eEd¦  «        hZF G d„ d ¦  «        ZG G d!„ d"e jH        ¦  «        ZI G d#„ d$¦  «        ZJ e
d%¬&¦  «         G d'„ d(¦  «        ¦   «         ZK G d)„ d*e jH        ¦  «        ZLd,d+„ZMdS )-é    N)Ú	dataclass)Ú
ModuleType)	ÚAnyÚCallableÚDictÚOptionalÚTupleÚTypeÚUnionÚIterableÚListé   )ÚknobsÚlanguage)ÚirÚgluon_ir)Ú	constexprÚ	str_to_tyÚtensorÚtuple)Ú_unwrap_if_constexprÚ
base_valueÚ	base_type)Úget_jit_fn_file_lineÚget_full_nameÚJITCallableÚBoundConstexprFunctionÚConstexprFunctionÚJITFunction)Úapply_with_pathÚset_iterable_pathÚis_namedtupleé   )ÚCompilationErrorÚCompileTimeAssertionFailureÚUnsupportedLanguageConstructc                 ó`   — d}t          j        || ¦  «        st          d|› d| › �| ¦  «        ‚| S )Nz^[a-zA-Z_][a-zA-Z0-9_]*$zinvalid z identifier: )ÚreÚmatchr$   )ÚnameÚtypeÚpatterns      ú\/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/triton/compiler/code_generator.pyÚcheck_identifier_legalityr.      sB   € Ø)€GÝŒ8�G˜TÑ"Ô"ð KÝÐC¨$ÐCÐC¸TÐCÐCÀTÑJÔJÐJØ€Kó    c                 ó  — d                      d„ |D ¦   «         ¦  «        }|                     dd¦  «        }|                     dd¦  «                             dd¦  «        }| › d|› �}|�||                     ¦   «         z  }|S )NÚ_c                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Úmangle)Ú.0Útys     r-   ú
<listcomp>zmangle_fn.<locals>.<listcomp>"   s    € Ð;Ð;Ð;¨R˜RŸYšY™[œ[Ð;Ð;Ð;r/   ú'Ú_sq_ú[ú]Ú__)ÚjoinÚreplacer4   )r*   Úarg_tysÚcaller_contextÚmangled_argsÚrets        r-   Ú	mangle_fnrC       s�   € à—8’8Ð;Ð;°7Ð;Ñ;Ô;Ñ<Ô<€LØ×'Ò'¨¨VÑ4Ô4€Là×'Ò'¨¨SÑ1Ô1×9Ò9¸#¸sÑCÔC€LØÐ
#Ð
#�\Ð
#Ð
#€CØÐ!Øˆ~×$Ò$Ñ&Ô&Ñ&ˆØ€Jr/   ÚoÚreturnc                 ó,   — t          | t          ¦  «        S ©N)Ú
isinstancer   ©rD   s    r-   Ú_is_triton_valuerJ   ,   s   € Ý�a�Ñ$Ô$Ð$r/   c                 ó,   — t          | t          ¦  «        S rG   )rH   r   rI   s    r-   Ú_is_triton_tensorrL   0   s   € Ý�a�Ñ Ô Ð r/   c                 ób   — | d u p+t          | t          t          j        j        t
          f¦  «        S rG   )rH   r   r   ÚcoreÚdtyper   rI   s    r-   Ú_is_constexprrP   4   s'   € Ø�ˆ9ÐT�
 1¥yµ(´-Ô2EÅ{Ð&SÑTÔTÐTr/   c                 ór   — t          | ¦  «        o(| j                             ¦   «         o| j        j        dk    S ©Nr#   )rL   r+   Úis_blockÚnumelrI   s    r-   Ú_is_non_scalar_tensorrU   8   s/   € Ý˜QÑÔÐM Q¤V§_¢_Ñ%6Ô%6Ð%L¸1¼6¼<È1Ò;LÐMr/   c                 ó:   — t          | t          t          f¦  «        S rG   )rH   Úlistr   rI   s    r-   Ú_is_list_likerX   <   s   € Ý�a�$¥˜Ñ'Ô'Ð'r/   c                 óÜ   — |j         rbt          |¦  «        D ]T\  }}t          |¦  «        s>t          |¦  «        r/t	          |j        | d|j        › d|j        |         › d|› �¦  «        ‚ŒSd S d S )Nz	Function z= is marked noinline, but was called with non-scalar argument ú:)ÚnoinlineÚ	enumeraterP   rU   r&   ÚsrcÚ__name__Ú	arg_names)ÚnodeÚfnÚargsÚidxÚargs        r-   Ú_check_fn_argsre   @   s´   € Ø	„{ð Ý! $™œð 	ð 	‰HˆC�Ý  Ñ%Ô%ð Õ*?ÀÑ*DÔ*Dð Ý2Ø”F˜Dð D ¤ð  Dð  DÐjlÔjvÐwzÔj{ð  Dð  Dð  Bð  Dð  Dñô ð øðð ð	ð 	r/   c                 ó0   — | s | |¦   «         ¦  «        ‚d S rG   r3   )ÚcondÚmsg_fnÚcategorys      r-   Ú_checkrj   J   s*   € Øð !Øˆh�v�v‘x”xÑ Ô Ð ð!ð !r/   c                 ój  ‡— t          t          | ¦  «        ¦  «        r| j        }nAt          | t          j        ¦  «        r| j        j        }nJ dt          | ¦  «        › �¦   «         ‚ˆfd„| D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }t	          j        |t	          j        ||¦  «        ¦  «        S )NFzUnsupported type c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r3   r3   )r5   Úvra   s     €r-   r7   z*_apply_to_tuple_values.<locals>.<listcomp>W   s!   ø€ Ð!Ð!Ð!�aˆBˆBˆq‰EŒEÐ!Ð!Ð!r/   c                 ó4   — g | ]}|€t          |¦  «        n|‘ŒS rG   )r   ©r5   rm   s     r-   r7   z*_apply_to_tuple_values.<locals>.<listcomp>X   s&   € Ð;Ð;Ð;°˜A˜I�I�a‰LŒLˆL¨1Ð;Ð;Ð;r/   c                 ó   — g | ]	}|j         ‘Œ
S r3   ©r+   ro   s     r-   r7   z*_apply_to_tuple_values.<locals>.<listcomp>Y   s   € Ð"Ð"Ð"˜ˆQŒVÐ"Ð"Ð"r/   )r"   r+   Ú_fieldsrH   r   r   ÚfieldsÚ
tuple_type)Úvaluera   rs   ÚvalsÚtypess    `   r-   Ú_apply_to_tuple_valuesrx   O   s¼   ø€ Ý•T˜%‘[”[Ñ!Ô!ð 8Ø”ˆˆÝ	�E�8œ>Ñ	*Ô	*ð 8Ø”Ô"ˆˆà7Ð7­$¨u©+¬+Ð7Ð7Ñ7Ô7ˆuà!Ð!Ð!Ð!˜5Ð!Ñ!Ô!€DØ;Ð;°dÐ;Ñ;Ô;€DØ"Ð"˜TÐ"Ñ"Ô"€EÝŒ>˜$¥Ô 3°E¸6Ñ BÔ BÑCÔCÐCr/   Úvaluesc                 ó>   — g }| D ]}|                      |¦  «         Œ|S rG   )Ú_flatten_ir)ry   Úhandlesrm   s      r-   Úflatten_values_to_irr}   ]   s0   € Ø€GØð ð ˆØ	�Š�gÑÔÐÐØ€Nr/   r|   rw   c              #   ó|   K  — d}|D ]}|                      | |¦  «        \  }}|V — Œ |t          | ¦  «        k    sJ ‚d S ©Nr   )Ú_unflatten_irÚlen)r|   rw   Úcursorr6   ru   s        r-   Úunflatten_ir_valuesrƒ   d   s[   è è € Ø€FØð ð ˆØ×(Ò(¨°&Ñ9Ô9‰ˆˆvØˆˆˆˆØ•S˜‘\”\Ò!Ð!Ð!Ð!Ð!Ð!r/   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Úenter_sub_regionc                 ó   — || _         d S rG   )Ú	generator)Úselfr‡   s     r-   Ú__init__zenter_sub_region.__init__q   s   € Ø"ˆŒˆˆr/   c                 ó:  — t          | j        j        ¦  «        | _        t          | j        j        ¦  «        | _        i | j        _        | j        j                             ¦   «         | _        | j        j         	                    ¦   «         | _
        | j        | j        fS rG   )Údictr‡   ÚlscopeÚliveinsÚ
local_defsÚ	prev_defsÚbuilderÚget_insertion_blockÚinsert_blockÚget_insertion_pointÚinsert_point)rˆ   s    r-   Ú	__enter__zenter_sub_region.__enter__t   sv   € å˜DœNÔ1Ñ2Ô2ˆŒÝ˜dœnÔ7Ñ8Ô8ˆŒØ$&ˆŒÔ!Ø œNÔ2×FÒFÑHÔHˆÔØ œNÔ2×FÒFÑHÔHˆÔØŒ|˜TÔ.Ð.Ð.r/   c                 ó’   — | j         j                             | j        ¦  «         | j        | j         _        | j        | j         _        d S rG   )r‡   r�   Úrestore_insertion_pointr”   r�   rŒ   r�   rŽ   )rˆ   rb   Úkwargss      r-   Ú__exit__zenter_sub_region.__exit__}   s<   € ØŒÔ×6Ò6°tÔ7HÑIÔIÐIØ $¤ˆŒÔØ$(¤NˆŒÔ!Ð!Ð!r/   N)r^   Ú
__module__Ú__qualname__r‰   r•   r™   r3   r/   r-   r…   r…   o   sA   € € € € € ð#ð #ð #ð/ð /ð /ð3ð 3ð 3ð 3ð 3r/   r…   c                   ó<  — e Zd Zd„ Zdefd„Zdefd„Zdefd„Zdej	        defd„Z
dej        defd„Zdej        defd	„Zdej        defd
„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„Zdej        defd„ZdS )ÚContainsReturnCheckerc                 ó   — || _         d S rG   )Úgscope)rˆ   rŸ   s     r-   r‰   zContainsReturnChecker.__init__†   s   € ØˆŒˆˆr/   rE   c                 ó:   ‡ — t          ˆ fd„|D ¦   «         ¦  «        S )Nc              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rG   ©Úvisit)r5   Úsrˆ   s     €r-   ú	<genexpr>z5ContainsReturnChecker._visit_stmts.<locals>.<genexpr>Š   s-   øè è € Ð/Ð/ Q�4—:’:˜a‘=”=Ð/Ð/Ð/Ð/Ð/Ð/r/   )Úany)rˆ   Úbodys   ` r-   Ú_visit_stmtsz"ContainsReturnChecker._visit_stmts‰   s&   ø€ ÝÐ/Ð/Ð/Ð/¨$Ð/Ñ/Ô/Ñ/Ô/Ð/r/   c                 ó   — dS ©NFr3   )rˆ   ra   s     r-   Ú_visit_functionz%ContainsReturnChecker._visit_functionŒ   s	   € ð ˆur/   c                 ó8  — d}t          j        |¦  «        D ]‚\  }}t          |t          ¦  «        r7|D ]3}t          |t           j        ¦  «        r|p|                      |¦  «        }Œ4ŒQt          |t           j        ¦  «        r|p|                      |¦  «        }Œƒ|S rª   )ÚastÚiter_fieldsrH   rW   ÚASTr£   )rˆ   r`   rB   r1   ru   Úitems         r-   Úgeneric_visitz#ContainsReturnChecker.generic_visit’   s§   € ØˆÝœ¨Ñ-Ô-ð 	/ð 	/‰HˆAˆuÝ˜%¥Ñ&Ô&ð /Ø!ð 6ð 6�DÝ! $­¬Ñ0Ô0ð 6Ø!Ð5 T§Z¢Z°Ñ%5Ô%5˜øð6õ ˜E¥3¤7Ñ+Ô+ð /ØÐ.˜TŸZšZ¨Ñ.Ô.�øØˆ
r/   r`   c                 ó   — t          |j        t          j        ¦  «        rV|j        j        | j        v rA| j        |j        j                 }t          ||j        ¦  «        }|                      |¦  «        S dS |  	                    |j        ¦  «        S rª   )
rH   ru   r­   ÚNameÚidrŸ   ÚgetattrÚattrr«   r£   )rˆ   r`   ru   ra   s       r-   Úvisit_Attributez%ContainsReturnChecker.visit_Attribute�   sy   € õ �d”j¥#¤(Ñ+Ô+ð 	ØŒzŒ} ¤Ð+Ð+Øœ D¤J¤MÔ2�Ý˜U D¤IÑ.Ô.�Ø×+Ò+¨BÑ/Ô/Ð/Ø�5Ø�zŠz˜$œ*Ñ%Ô%Ð%r/   c                 ó´   — t          |j        ¦  «        t          j        u rdS |j        | j        v r'| j        |j                 }|                      |¦  «        S dS rª   )r+   Úctxr­   ÚStorer´   rŸ   r«   )rˆ   r`   ra   s      r-   Ú
visit_Namez ContainsReturnChecker.visit_Name¬   sR   € Ý�”‰>Œ>�SœYÐ&Ð&Ø�5ØŒ7�d”kÐ!Ð!Ø”˜TœWÔ%ˆBØ×'Ò'¨Ñ+Ô+Ð+Øˆur/   c                 ó   — dS ©NTr3   ©rˆ   r`   s     r-   Úvisit_Returnz"ContainsReturnChecker.visit_Return´   ó   € Øˆtr/   c                 ó   — dS rª   r3   r¾   s     r-   Úvisit_Assignz"ContainsReturnChecker.visit_Assign·   ó	   € ð ˆur/   c                 ó   — dS rª   r3   r¾   s     r-   Úvisit_AugAssignz%ContainsReturnChecker.visit_AugAssign¼   rÃ   r/   c                 ó6   — |                       |j        ¦  «        S rG   ©r¨   r§   r¾   s     r-   Úvisit_Modulez"ContainsReturnChecker.visit_ModuleÁ   ó   € Ø× Ò  ¤Ñ+Ô+Ð+r/   c                 ó6   — |                       |j        ¦  «        S rG   rÇ   r¾   s     r-   Úvisit_FunctionDefz'ContainsReturnChecker.visit_FunctionDefÄ   rÉ   r/   c                 ó€   — |                       |j        ¦  «        }|j        r|p|                       |j        ¦  «        }|S rG   )r¨   r§   Úorelse)rˆ   r`   rB   s      r-   Úvisit_IfzContainsReturnChecker.visit_IfÇ   sB   € ð ×Ò ¤	Ñ*Ô*ˆØŒ;ð 	8ØÐ7˜×*Ò*¨4¬;Ñ7Ô7ˆCØˆ
r/   c                 ój   — |                       |j        ¦  «        p|                       |j        ¦  «        S rG   )r£   r§   rÍ   r¾   s     r-   Úvisit_IfExpz!ContainsReturnChecker.visit_IfExpÔ   s)   € Ø�zŠz˜$œ)Ñ$Ô$Ð?¨¯
ª
°4´;Ñ(?Ô(?Ð?r/   c                 ó6   — |                       |j        ¦  «        S rG   )r£   Úfuncr¾   s     r-   Ú
visit_Callz ContainsReturnChecker.visit_Call×   s   € Ø�zŠz˜$œ)Ñ$Ô$Ð$r/   N)r^   rš   r›   r‰   Úboolr¨   r«   r±   r­   Ú	Attributer·   r³   r»   ÚReturnr¿   ÚAssignrÂ   Ú	AugAssignrÅ   ÚModulerÈ   ÚFunctionDefrË   ÚIfrÎ   ÚIfExprÐ   ÚCallrÓ   r3   r/   r-   r�   r�   „   sâ  € € € € € ðð ð ð0 Dð 0ð 0ð 0ð 0ð Tð ð ð ð ð	 Tð 	ð 	ð 	ð 	ð& C¤Mð &°dð &ð &ð &ð &ð˜sœxð ¨Dð ð ð ð ð ¤ð °ð ð ð ð ð ¤ð °ð ð ð ð ð
 C¤Mð °dð ð ð ð ð
, ¤ð ,°ð ,ð ,ð ,ð ,ð, c¤oð ,¸$ð ,ð ,ð ,ð ,ð˜SœVð ¨ð ð ð ð ð@ ¤	ð @¨dð @ð @ð @ð @ð%˜sœxð %¨Dð %ð %ð %ð %ð %ð %r/   r�   c                   ó    — e Zd Zd„ Zdej        dee         deej                 fd„Z	dej        deej                 fd„Z
dej        fd„Zd„ Zd	S )
ÚASTFunctionc                 ó0   — || _         || _        || _        d S rG   )Ú	ret_typesÚ	arg_typesÚattrs)rˆ   rá   râ   rã   s       r-   r‰   zASTFunction.__init__Ý   s   € Ø"ˆŒØ"ˆŒØˆŒ
ˆ
ˆ
r/   r�   rw   rE   c                 óF   — g }|D ]}|€Œ|                      ||¦  «         Œ|S rG   )Ú_flatten_ir_types)rˆ   r�   rw   Úir_typesr6   s        r-   Úflatten_ir_typeszASTFunction.flatten_ir_typesâ   s<   € ØˆØð 	4ð 	4ˆBØˆzØØ× Ò  ¨(Ñ3Ô3Ð3Ð3Øˆr/   c                 ó8   — |                       || j        ¦  «        S rG   )rç   rá   )rˆ   r�   s     r-   Úreturn_types_irzASTFunction.return_types_irê   s   € Ø×$Ò$ W¨d¬nÑ=Ô=Ð=r/   c                 óŽ   — |                       || j        ¦  «        }|                      |¦  «        }|                     ||¦  «        S rG   )rç   râ   ré   Úget_function_ty)rˆ   r�   Úarg_types_irÚret_types_irs       r-   Ú	serializezASTFunction.serializeí   sB   € à×,Ò,¨W°d´nÑEÔEˆØ×+Ò+¨GÑ4Ô4ˆØ×&Ò& |°\ÑBÔBÐBr/   c                 óÖ   ‡ ‡‡‡‡‡— ˆfd„Š ‰‰ j         ¦  «        Šˆfd„t          ‰                     ¦   «         ¦  «        D ¦   «         ŠdŠˆˆˆˆ ˆfd„}t          ‰ j         |¦  «         ‰S )Nc                 ó¼   •— t          | t          t          t          j        f¦  «        r!t          j        ˆfd„| D ¦   «         | ¦  «        S t          j        d ¦  «        S )Nc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r3   r3   )r5   ÚxÚmake_templates     €r-   r7   zBASTFunction.deserialize.<locals>.make_template.<locals>.<listcomp>÷   s#   ø€ Ð&DÐ&DÐ&D¸A } }°QÑ'7Ô'7Ð&DÐ&DÐ&Dr/   )rH   rW   r   r   rt   r   )r6   ró   s    €r-   ró   z.ASTFunction.deserialize.<locals>.make_templateõ   sX   ø€ Ý˜"�t¥U­HÔ,?Ð@ÑAÔAð JÝ”~Ð&DÐ&DÐ&DÐ&DÀÐ&DÑ&DÔ&DÀbÑIÔIÐIÝÔ% dÑ+Ô+Ð+r/   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   )rb   )r5   Úira   s     €r-   r7   z+ASTFunction.deserialize.<locals>.<listcomp>û   s#   ø€ Ð@Ð@Ð@ !�2—7’7˜1‘:”:Ð@Ð@Ð@r/   r   c                 óÐ   •— ‰	j                              | g ¦  «        }|D ]\  }}‰                     ‰||¦  «         Œ|                     ‰‰¦  «        \  }Št	          ‰
| |¦  «         d S rG   )rã   ÚgetÚset_arg_attrr€   r!   )Úpathr6   Ú
attr_specsÚ	attr_nameÚattr_valÚvalr‚   ra   r|   rˆ   rv   s         €€€€€r-   Úbuild_valuez,ASTFunction.deserialize.<locals>.build_valueþ   sx   ø€ ð œŸš¨¨bÑ1Ô1ˆJØ'1ð =ð =Ñ#�	˜8Ø—’ ¨	°8Ñ<Ô<Ð<Ð<à×*Ò*¨7°FÑ;Ô;‰KˆC�Ý˜d D¨#Ñ.Ô.Ð.Ð.Ð.r/   )râ   ÚrangeÚget_num_argsr    )rˆ   ra   rþ   r‚   r|   ró   rv   s   `` @@@@r-   ÚdeserializezASTFunction.deserializeó   sª   øøøøøø€ ð	,ð 	,ð 	,ð 	,ð 	,ð
 ˆ}˜Tœ^Ñ,Ô,ˆØ@Ð@Ð@Ð@¥u¨R¯_ª_Ñ->Ô->Ñ'?Ô'?Ð@Ñ@Ô@ˆØˆð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/õ 	˜œ¨Ñ4Ô4Ð4Øˆr/   N)r^   rš   r›   r‰   r   r�   r   r   r+   rç   ré   rî   r  r3   r/   r-   rß   rß   Û   sµ   € € € € € ðð ð ð
¨¬
ð ¸4À	¼?ð ÈtÐTVÔT[Ì}ð ð ð ð ð> r¤zð >°d¸2¼7´mð >ð >ð >ð >ðC ¤ð Cð Cð Cð Cðð ð ð ð r/   rß   T)Úfrozenc                   ó$   — e Zd ZU eed<   eed<   dS )ÚBoundJITMethodÚ__self__Ú__func__N)r^   rš   r›   r   Ú__annotations__r   r3   r/   r-   r  r    s*   € € € € € € àÐÐÑØÐÐÑÐÐr/   r  c                   óP  ‡ — e Zd ZU ddddddddœdedee         dee         fd„Zd	„ ee	e
eeeeefD ¦   «         Zeeef         ed
<   e                     dej        j        fdej        j        fdej        j        ff¦  «         d„ Zd„ Zd„ Zej        d„ ¦   «         Zd„ Zdede e!e"f         ddfd„Z#d„ Z$d„ Z% e&¦   «         fde&e         fd„Z'd„ Z(d„ Z)d„ Z*de+j,        fd„Z-d „ Z.d!„ Z/d"„ Z0d#„ Z1d$„ Z2d%„ Z3d&„ Z4d'„ Z5d(„ Z6d)„ Z7d*„ Z8d+„ Z9d,„ Z:d-„ Z;d.„ Z<d/„ Z=d0„ Z>e+j?        d1e+j@        d2e+jA        d3e+jB        d4e+jC        d5e+jD        d6e+jE        d7e+jF        d8e+jG        d9e+jH        d:e+jI        d;e+jJ        d<iZKeeLe+jM                 ef         ed=<   d>„ ZNd?„ ZOd@„ ZPdA„ ZQdB„ ZRdC„ ZSdD„ ZTdE„ ZUe+jV        dFe+jW        dGe+jX        dHe+jY        dIe+jZ        dJe+j[        dKiZ\eeLe+j]                 ef         edL<   dM„ Z^e+j_        dNe+j`        dOe+ja        dPe+jb        dQiZceeLe+jd                 ef         edR<   dS„ ZedT„ ZfdU„ ZgdV„ ZhdW„ ZidX„ ZjdY„ ZkdZ„ Zld[„ Zmdeneef         fd\„Zodefd]„Zpdtd^efd_„Zqd`„ Zrda„ Zsdb„ Ztdc„ Zude+jv        fdd„Zwe+jx        dee+jy        dfiZzeeLe+j{                 ef         edg<   dh„ Z|di„ Z}dj„ Z~dk„ Zdl„ Z€ˆ fdm„Z�dn„ Z‚de+jƒ        ddfdo„Z„dp„ Z…dqdrl†mZ‡ ej        jˆ        e„ej        j‰         e…eŠ¦  «        e‡jˆ        e„e‡j‰         e…eŠ¦  «        e e…e¦  «        e e…e¦  «        iZ‹eeŒe�e+jƒ        gef         f         eds<   ˆ xZŽS )uÚCodeGeneratorNFr   )ÚmoduleÚ	is_kernelÚfunction_typesr[   r@   Ú	file_nameÚ
begin_lineÚjit_fnr  r  c                ó¬  — || _         |	| _        |	r5ddlm} t	          j        |¦  «        | _         || j        ¦  «        | _        n4ddlm	} t          j        |¦  «        | _         || j        ¦  «        | _        d | _        || _        |dz
  | _        | j                             ||d¦  «         || j        _        || j        _        |€i n|| j        _        |
€| j                             ¦   «         n|
| _        |€i n|| _        || _        g | _        g | _        i | _        |                     ¦   «         D ]�\  }}t5          |t6          ¦  «        r$|                     |j        |¦  «        | j        |<   Œ>t=          |dd¦  «        }||v r$t=          ||         |j        ¦  «        | j        |<   Œw|| j        |<   Œ‚i | _        || _         |r0|| !                    d¦  «        dz   d …         }tE          |d¦  «        }|| _#        || _$        d | _%        || _&        || _'        g | _(        d | _)        i | _*        |  +                    ¦   «         | _,        d | _-        d	| _.        d S )
Nr   )ÚGluonSemantic)ÚTritonSemanticr#   rš   Ú ú.ÚfunctionF)/ÚcontextÚis_gluonÚ,triton.experimental.gluon.language._semanticr  r   ÚGluonOpBuilderr�   ÚsemanticÚtriton.language.semanticr  r   Úname_loc_as_prefixr  r  Úset_locÚoptionsÚcodegen_fnsÚ
module_mapÚcreate_moduler
  Úfunction_ret_typesÚ	prototypeÚreturn_valsÚ
return_ipsrŸ   ÚitemsrH   r   r÷   r^   rµ   rŒ   r  Úrfindr.   Úfunction_namer  Úcur_noder[   r@   Ú	scf_stackÚret_typerŽ   Ú_define_name_lookupÚdereference_namera   Úvisiting_arg_default_value)rˆ   r  r#  rŸ   r(  r  r  r  r   r  r
  r  r  r[   r@   r  r  r  r  Úkrm   Úmodule_names                         r-   r‰   zCodeGenerator.__init__  st  € ð ˆŒØ ˆŒØð 	9ØRÐRÐRÐRÐRÐRÝ#Ô2°7Ñ;Ô;ˆDŒLØ)˜M¨$¬,Ñ7Ô7ˆDŒMˆMà?Ð?Ð?Ð?Ð?Ð?Ýœ: gÑ.Ô.ˆDŒLØ*˜N¨4¬<Ñ8Ô8ˆDŒMà"&ˆÔØ"ˆŒà$ q™.ˆŒØŒ×Ò˜Y¨
°AÑ6Ô6Ð6Ø&ˆŒÔð $/ˆŒÔ Ø(2Ð(: " "À
ˆŒÔØ6<°n�d”l×0Ò0Ñ2Ô2Ð2È&ˆŒØ(6Ð(> " "ÀNˆÔØ"ˆŒà46ˆÔØ?AˆŒàˆŒØ—L’L‘N”Nð 		#ð 		#‰DˆAˆqÝ˜!�ZÑ(Ô(ð Ø!+§¢°´
¸AÑ!>Ô!>�”˜A‘Øå! ! \°2Ñ6Ô6ˆKØ˜jÐ(Ð(Ý!(¨°KÔ)@À!Ä*Ñ!MÔ!M�”˜A‘�à!"�”˜A‘�àˆŒØˆŒàð 	QØ)¨-×*=Ò*=¸cÑ*BÔ*BÀQÑ*FÐ*GÐ*GÔHˆMÝ5°mÀZÑPÔPˆMØ*ˆÔØ"ˆŒØˆŒØ ˆŒØ,ˆÔØˆŒØˆŒð .0ˆŒØ6:×6NÒ6NÑ6PÔ6PˆÔØˆŒð +0ˆÔ'Ð'Ð'r/   c                 ó   — i | ]
}|j         |“ŒS r3   ©r^   ©r5   r1   s     r-   ú
<dictcomp>zCodeGenerator.<dictcomp>V  s,   € ð )ð )ð )àð 	
Œ
�Að)ð )ð )r/   Úbuiltin_namespaceÚprintÚminÚmaxc                 ó8   — t          | j        j        ||¦  «        S rG   )r&   r  r]   )rˆ   r`   Úmessages      r-   Ú_unsupportedzCodeGenerator._unsupported`  s   € Ý+¨D¬K¬O¸TÀ7ÑKÔKÐKr/   c                 ó†   — t          ¦   «         }| j                             ||¦  «        }||u rdS t          |¦  «        rdS dS )NFT)ÚobjectrŸ   r÷   rP   )rˆ   r*   Úabsent_markerrý   s       r-   Ú_is_constexpr_globalz"CodeGenerator._is_constexpr_globalc  sJ   € Ý™œˆØŒk�oŠo˜d MÑ2Ô2ˆØ�-ÐÐØ�5å˜ÑÔð 	Ø�4àˆur/   c                 óŒ   ‡ ‡‡‡— dt           fˆ fd„Šdt           fˆ fd„Št          ¦   «         Šdt           dt          fˆˆˆˆ fd„}|S )Nr*   c                 ó:   •— ‰j                              | |¦  «        S rG   )rŒ   r÷   )r*   Úabsentrˆ   s     €r-   Úlocal_lookupz7CodeGenerator._define_name_lookup.<locals>.local_lookupp  s   ø€ à”;—?’? 4¨Ñ0Ô0Ð0r/   c                 ó¤  •— ‰j                              | |¦  «        }t          ||u | ‰j        v t	          |¦  «        t
          u t          |t          ¦  «        t          |dd¦  «        t          |dd¦  «        t          |dd¦  «         	                    d¦  «        t          |dd¦  «         	                    d¦  «        t          |t          j        ¦  «        t          |¦  «        ‰                     | ¦  «        ‰j        t          j        j        g¦  «        r|S t%          t'          j        d| › d	�¦  «                             d
d¦  «        ¦  «        ‚)NÚ__triton_builtin__FÚ__triton_aggregate__rš   r  ztriton.languagez"triton.experimental.gluon.languagez.                Cannot access global variable aà   from within @jit'ed
                function. Triton kernels can only access global variables that
                are instanstiated as constexpr (`x = triton.language.constexpr(42)`). Note that this is different from
                annotating a variable as constexpr (`x: triton.language.constexpr = 42`), which is not supported.  Alternatively, set the
                envvar TRITON_ALLOW_NON_CONSTEXPR_GLOBALS=1, but we do not
                promise to support this forever.ú
ú )rŸ   r÷   r¦   r5  r+   r   rH   r   rµ   Ú
startswithr   rO   r"   r?  r.  r   ÚcompilationÚallow_non_constexpr_globalsÚ	NameErrorÚtextwrapÚdedentr>   )r*   rB  rý   rˆ   s      €r-   Úglobal_lookupz8CodeGenerator._define_name_lookup.<locals>.global_lookupt  sI  ø€ Ø”+—/’/ $¨Ñ/Ô/ˆCõ Ø˜6�MØ˜DÔ2Ð2Ý˜‘I”I¥Ð+Ý˜s¥KÑ0Ô0Ý˜CÐ!5°uÑ=Ô=Ý˜CÐ!7¸Ñ?Ô?Ý˜C ¨rÑ2Ô2×=Ò=Ð>OÑPÔPÝ˜C ¨rÑ2Ô2×=Ò=Ð>bÑcÔcÝ˜s¥H¤NÑ3Ô3Ý! #Ñ&Ô&Ø×-Ò-¨dÑ3Ô3ð Ô3ÝÔ%ÔAð!ñ ô ð ð$ �
ÝÝ”ð !4Ø/3ð!4ð !4ð !4ñ 5ô 5÷ 6=²W¸TÀ3Ñ5GÔ5GñIô Ið Ir/   rE   c                 óx   •— ‰}‰‰‰j         j        fD ]} || |¦  «        }||ur|c S Œt          | › d�¦  «        ‚)Nz is not defined)r5  r÷   rL  )r*   rB  Úlookup_functionru   r>  rO  rC  rˆ   s       €€€€r-   Úname_lookupz6CodeGenerator._define_name_lookup.<locals>.name_lookup—  se   ø€ Ø"ˆFØ#/°ÀÔ@VÔ@ZÐ#Zð !ð !�Ø'˜¨¨fÑ5Ô5�Ø Ð&Ð&Ø �L�L�Lð 'å˜tÐ4Ð4Ð4Ñ5Ô5Ð5r/   )Ústrr=  r   )rˆ   rR  r>  rO  rC  s   ` @@@r-   r,  z!CodeGenerator._define_name_lookupn  s¦   øøøø€ ð	1�sð 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð	I¥ð 	Ið 	Ið 	Ið 	Ið 	Ið 	IõB ™œˆð	6�cð 	6¥cð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð Ðr/   c              #   ó.   K  — || _         d V — d | _         d S rG   )r  )rˆ   Úprefixs     r-   Ú_name_loc_prefixzCodeGenerator._name_loc_prefix¡  s%   è è € à"(ˆÔØˆˆˆØ"&ˆÔÐÐr/   c                 ó°  — t          |t          j        t          j        f¦  «        rB|                     | j                             ||                     ¦   «         ¦  «        ¦  «         d S t          |¦  «        r\g }| 	                    |¦  «         |D ]D}|                     | j                             ||                     ¦   «         ¦  «        ¦  «         ŒCd S d S rG   )
rH   r   ru   Úblock_argumentr  r�   Úcreate_name_locÚget_locrJ   r{   )rˆ   rý   r*   r|   Úhandles        r-   Ú_maybe_set_loc_to_namez$CodeGenerator._maybe_set_loc_to_name§  sÓ   € Ý�c�BœH¥bÔ&7Ð8Ñ9Ô9ð 	UØ�KŠK˜œ×4Ò4°T¸3¿;º;¹=¼=ÑIÔIÑJÔJÐJÐJÐJÝ˜cÑ"Ô"ð 	UØˆGØ�OŠO˜GÑ$Ô$Ð$Ø!ð Uð U�Ø—’˜tœ|×;Ò;¸DÀ&Ç.Â.ÑBRÔBRÑSÔSÑTÔTÐTÐTð		Uð 	UðUð Ur/   r*   ru   rE   c                 ó.   — || j         |<   || j        |<   dS )zâ This function:
            called by visit_Assign() & visit_FunctionDef() to store left value (lvalue)
        1. record local defined name (FIXME: should consider control flow)
        2. store tensor in self.lvalue
        N)rŒ   rŽ   )rˆ   r*   ru   s      r-   Ú	set_valuezCodeGenerator.set_value°  s"   € ð "ˆŒ�DÑØ %ˆŒ˜ÑÐÐr/   c                 ón   — | j                              ¦   «         }| j                              ¦   «         }||fS rG   )r�   rZ  r“   )rˆ   ÚlocÚips      r-   Ú_get_insertion_point_and_locz*CodeGenerator._get_insertion_point_and_loc¹  s3   € ð Œl×"Ò"Ñ$Ô$ˆØŒ\×-Ò-Ñ/Ô/ˆØ�3ˆwˆr/   c                 ón   — | j                              |¦  «         | j                              |¦  «         d S rG   )r�   r—   r  )rˆ   ra  r`  s      r-   Ú_set_insertion_point_and_locz*CodeGenerator._set_insertion_point_and_locÁ  s4   € ØŒ×,Ò,¨RÑ0Ô0Ð0ØŒ×Ò˜SÑ!Ô!Ð!Ð!Ð!r/   Úignorec                 ó(  — | j                              ¦   «         }| j                              |¦  «         | j                             |¦  «         |                      |j        ¦  «         | j                             ¦   «          |                     ¦   «          g }g }g }| 	                    ¦   «         D ]¿\  }}	||v rŒ
t          |	¦  «        r�| j        |         }
|                      ||
|	¦  «         t          |	g¦  «        }t          |
g¦  «        }||k    rD|                     |¦  «         |                     |	j        ¦  «         |                     |¦  «         Œ¨|| j        vsJ d|› d�¦   «         ‚ŒÀ|                     ¦   «         | _        i | _        |||fS )NúLoop carried variable z is not a triton value)r�   Úcreate_blockÚset_insertion_point_to_startr*  ÚappendÚvisit_compound_statementr§   ÚpopÚeraser&  rJ   rŒ   Ú_verify_loop_carried_variabler}   r+   ÚextendrŽ   Úcopy)rˆ   r`   r�   re  ÚblockÚinit_tysÚinit_handlesÚnamesr*   Úlive_valÚloop_valÚlive_handlesÚloop_handless                r-   Ú_find_carrieszCodeGenerator._find_carriesÅ  sš  € à”×)Ò)Ñ+Ô+ˆØŒ×1Ò1°%Ñ8Ô8Ð8àŒ×Ò˜dÑ#Ô#Ð#Ø×%Ò% d¤iÑ0Ô0Ð0ØŒ×ÒÑÔÐØ�Š‰Œˆð
 ˆØˆØˆà%Ÿmšm™oœoð 	jð 	j‰NˆD�(Ø�vˆ~ˆ~Øå Ñ)Ô)ð jØœ; tÔ,�Ø×2Ò2°4¸À8ÑLÔLÐLå3°X°JÑ?Ô?�Ý3°X°JÑ?Ô?�Ø <Ò/Ð/Ø—L’L Ñ&Ô&Ð&Ø—O’O H¤MÑ2Ô2Ð2Ø ×'Ò'¨Ñ5Ô5Ð5øà 4¤?Ð2Ð2Ð2Ð4iÈTÐ4iÐ4iÐ4iÑ2Ô2Ð2Ð2ð —l’l‘n”nˆŒØˆŒà�l HÐ,Ð,r/   c                 ó˜   — t          |¦  «        s|g}|D ]4}|                      |¦  «         t          |t          j        ¦  «        r d S Œ5d S rG   )rX   r£   rH   r­   rÖ   )rˆ   ÚstmtsÚstmts      r-   rk  z&CodeGenerator.visit_compound_statementð  sf   € å˜UÑ#Ô#ð 	Ø�GˆEØð 	ð 	ˆDØ�JŠJ�tÑÔÐõ ˜$¥¤
Ñ+Ô+ð Ø��ðð		ð 	r/   c                 óF   — t           j                             | |¦  «         d S rG   ©r­   ÚNodeVisitorr±   r¾   s     r-   rÈ   zCodeGenerator.visit_Moduleû  ó    € ÝŒ×%Ò% d¨DÑ1Ô1Ð1Ð1Ð1r/   c                 óŽ   ‡ — ‰                       |j        ¦  «        }|�J ‚t          j        ˆ fd„|j        D ¦   «         ¦  «        }|S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   r¢   )r5   Úeltrˆ   s     €r-   r7   z,CodeGenerator.visit_List.<locals>.<listcomp>  s#   ø€ ÐDÐDÐD°3˜tŸzšz¨#™œÐDÐDÐDr/   )r£   r¹   r   r   Úelts)rˆ   r`   r¹   r„  s   `   r-   Ú
visit_ListzCodeGenerator.visit_Listþ  sJ   ø€ Ø�jŠj˜œÑ"Ô"ˆØˆ{ˆ{ˆ{ÝŒ~ÐDÐDÐDÐD¸$¼)ÐDÑDÔDÑEÔEˆØˆr/   r`   c                 ó¬  — t          |j        ¦  «        dk    rt          d¦  «        ‚|j        d         }|                      |j        ¦  «        }t          |t          ¦  «        st          d¦  «        ‚g }|D ]O}|                      |j	        j
        |¦  «         |                     |                      |j        ¦  «        ¦  «         ŒPt          |¦  «        S )Nr#   z'nested comprehensions are not supportedr   z'only tuple comprehensions are supported)r�   Ú
generatorsÚ
ValueErrorr£   ÚiterrH   Útl_tupleÚNotImplementedErrorr^  Útargetr´   rj  rƒ  )rˆ   r`   Úcompr‰  Úresultsr°   s         r-   Úvisit_ListCompzCodeGenerator.visit_ListComp  sÄ   € ÝˆtŒÑÔ 1Ò$Ð$ÝÐFÑGÔGÐGàŒ˜qÔ!ˆØ�zŠz˜$œ)Ñ$Ô$ˆÝ˜$¥Ñ)Ô)ð 	QÝ%Ð&OÑPÔPÐPàˆØð 	1ð 	1ˆDØ�NŠN˜4œ;œ>¨4Ñ0Ô0Ð0Ø�NŠN˜4Ÿ:š: d¤hÑ/Ô/Ñ0Ô0Ð0Ð0Ý˜Ñ Ô Ð r/   c                 óX  — |                       |j        ¦  «        }|€t          j        d ¦  «        }| j                             |¦  «         | j                             |                      ¦   «         ¦  «         | j         	                    ¦   «         }| j         
                    |¦  «         d S rG   )r£   ru   r   r   r$  rj  r%  rb  r�   rh  Úset_insertion_point_to_end)rˆ   r`   Ú	ret_valueÚpost_ret_blocks       r-   r¿   zCodeGenerator.visit_Return  s•   € Ø—J’J˜tœzÑ*Ô*ˆ	ØÐÝ Ô*¨4Ñ0Ô0ˆIØÔ×Ò 	Ñ*Ô*Ð*ØŒ×Ò˜t×@Ò@ÑBÔBÑCÔCÐCð œ×2Ò2Ñ4Ô4ˆØŒ×/Ò/°Ñ?Ô?Ð?Ð?Ð?r/   c                 ó  ‡ ‡‡‡‡— t          ‰ j        ¦  «        t          ‰ j        ¦  «        k    sJ ‚‰ j        st          j        d ¦  «        S t          j        Šˆfd„Šˆˆˆ ˆfd„Šd„ ‰ j        D ¦   «         Št          j        ‰‰¦  «        S )Nc                 ó*   •— d| › d|› d�}|d‰› �z  }|S )NzReturn type mismatch: ú and z. zNote all return types were: r3   )ÚaÚbÚerrÚreturn_typess      €r-   Ú	error_msgz3CodeGenerator.decide_return_type.<locals>.error_msg'  s3   ø€ Ø8¨1Ð8Ð8°1Ð8Ð8Ð8ˆCØÐ@°,Ð@Ð@Ñ@ˆCØˆJr/   c                 ó   •‡ ‡— t          ‰ ‰j        ¦  «        r�t          t          ‰‰j        ¦  «        ˆ ˆˆfd„¦  «         t          ‰ j        ‰j        k    ˆ ˆˆfd„¦  «         ‰                     ˆfd„t	          ‰ ‰¦  «        D ¦   «         ‰ j        ¬¦  «        S t          ‰ ‰j        ¦  «        r=‰ ‰k    r‰ S ‰j                             ‰ ¦  «        Š ‰j                             ‰¦  «        ŠnIt          ‰‰j        ¦  «        r4‰j                             ‰ ¦  «        Š ‰j                             ‰¦  «        Št          ‰ ‰k    ˆ ˆˆfd„¦  «         ‰ S )Nc                  ó   •—  ‰‰ ‰¦  «        S rG   r3   ©r—  r˜  r›  s   €€€r-   ú<lambda>zGCodeGenerator.decide_return_type.<locals>.common_type.<locals>.<lambda>.  s   ø€ ¸Y¸YÀqÈ!¹_¼_€ r/   c                  ó   •—  ‰‰ ‰¦  «        S rG   r3   rž  s   €€€r-   rŸ  zGCodeGenerator.decide_return_type.<locals>.common_type.<locals>.<lambda>/  s   ø€ °Y°Y¸qÀ!±_´_€ r/   c                 ó.   •— g | ]\  }} ‰||¦  «        ‘ŒS r3   r3   )r5   ÚaiÚbiÚcommon_types      €r-   r7   zICodeGenerator.decide_return_type.<locals>.common_type.<locals>.<listcomp>0  s)   ø€ Ð%RÐ%RÐ%R¹f¸bÀ" k k°"°bÑ&9Ô&9Ð%RÐ%RÐ%Rr/   )rs   c                  ó   •—  ‰‰ ‰¦  «        S rG   r3   rž  s   €€€r-   rŸ  zGCodeGenerator.decide_return_type.<locals>.common_type.<locals>.<lambda>9  s   ø€  9 9¨Q°¡?¤?€ r/   )rH   rt   rj   rs   ÚzipÚconstexpr_typer  Úto_tensor_type)r—  r˜  r¤  r›  rˆ   Útls   ``€€€€r-   r¤  z5CodeGenerator.decide_return_type.<locals>.common_type,  s]  øøø€ Ý˜!˜Rœ]Ñ+Ô+ð eÝ•z ! R¤]Ñ3Ô3Ð5LÐ5LÐ5LÐ5LÐ5LÐ5LÑMÔMÐMÝ�q”x 1¤8Ò+Ð-DÐ-DÐ-DÐ-DÐ-DÐ-DÑEÔEÐEØ—}’}Ð%RÐ%RÐ%RÐ%RÍÈAÈqÉ	Ì	Ð%RÑ%RÔ%RÐ[\Ô[c�}ÑdÔdÐdÝ˜!˜RÔ.Ñ/Ô/ð 4Ø˜’6�6Ø�HØ”M×0Ò0°Ñ3Ô3�Ø”M×0Ò0°Ñ3Ô3��Ý˜A˜rÔ0Ñ1Ô1ð 4Ø”M×0Ò0°Ñ3Ô3�Ø”M×0Ò0°Ñ3Ô3�Ý�1˜’6Ð2Ð2Ð2Ð2Ð2Ð2Ñ3Ô3Ð3ØˆHr/   c                 ó   — g | ]	}|j         ‘Œ
S r3   rq   )r5   rò   s     r-   r7   z4CodeGenerator.decide_return_type.<locals>.<listcomp><  s   € Ð9Ð9Ð9 1˜œÐ9Ð9Ð9r/   )r�   r$  r%  r   r§  rN   Ú	functoolsÚreduce)rˆ   r¤  r›  rš  r©  s   `@@@@r-   Údecide_return_typez CodeGenerator.decide_return_type   s¼   øøøøø€ Ý�4Ô#Ñ$Ô$­¨D¬OÑ(<Ô(<Ò<Ð<Ð<Ð<ØÔð 	1ÝÔ*¨4Ñ0Ô0Ð0åŒ]ˆð	ð 	ð 	ð 	ð 	ð
	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð  :Ð9¨Ô(8Ð9Ñ9Ô9ˆÝÔ ¨\Ñ:Ô:Ð:r/   c                 ó  ‡ ‡‡— ‰j         ‰k    r‰S t          j        }t          ‰|j        ¦  «        rQt          ‰|j        ¦  «        sJ ‚|                     ˆ fd„t          ‰j        ‰j        ¦  «        D ¦   «         ‰¦  «        S t          ‰|j	        ¦  «        rTt          ‰|j
        ¦  «        rt          ‰j         ‰k    ˆˆfd„¦  «         ‰S ‰ j                             ‰j        ‰¦  «        S t          ‰j         ‰k    ˆˆfd„¦  «         ‰S )Nc                 óB   •— g | ]\  }}‰                      ||¦  «        ‘ŒS r3   )Úcast_to)r5   rm   Útrˆ   s      €r-   r7   z)CodeGenerator.cast_to.<locals>.<listcomp>G  s+   ø€ ÐLÐLÐL©¨¨1�—’˜a Ñ#Ô#ÐLÐLÐLr/   c                  ó   •— d‰j         › d‰ › �S ©NzReturn type mismatch r–  rq   ©r6   ru   s   €€r-   rŸ  z'CodeGenerator.cast_to.<locals>.<lambda>L  s   ø€ Ð1^ÈÌÐ1^Ð1^ÐZ\Ð1^Ð1^€ r/   c                  ó   •— d‰j         › d‰ › �S r³  rq   r´  s   €€r-   rŸ  z'CodeGenerator.cast_to.<locals>.<lambda>O  s   ø€ Ð)VÀÄÐ)VÐ)VÐRTÐ)VÐ)V€ r/   )r+   r   rN   rH   r   rt   r¦  ry   rw   r   r§  rj   r  Úscalar_constantru   )rˆ   ru   r6   r©  s   ``` r-   r°  zCodeGenerator.cast_to?  s   øøø€ ØŒ:˜ÒÐØˆLåŒ]ˆÝ�e˜RœXÑ&Ô&ð 	Ý˜b "¤-Ñ0Ô0Ð0Ð0Ð0Ø—8’8ØLÐLÐLÐLµ°E´LÀ"Ä(Ñ0KÔ0KÐLÑLÔLØñô ð õ �e˜Rœ\Ñ*Ô*ð 	BÝ˜"˜bÔ/Ñ0Ô0ð Ý�u”z RÒ'Ð)^Ð)^Ð)^Ð)^Ð)^Ñ_Ô_Ð_Ø�Ø”=×0Ò0°´¸bÑAÔAÐAÝˆuŒz˜RÒÐ!VÐ!VÐ!VÐ!VÐ!VÑWÔWÐWØˆr/   c                 ó  ‡ — ‰                       ¦   «         }‰                      ¦   «         \  }}t          ‰ j        ¦  «        t          ‰ j        ¦  «        k    sJ ‚t          ‰ j        ‰ j        ¦  «        D ]|\  }} ‰ j        |Ž  ‰ j                             ¦   «          	                    ¦   «         rJ ‚‰  
                    ||¦  «        }t          |g¦  «        }‰ j                             |¦  «         Œ}‰                      ||¦  «         |‰ _        ‰ j                             ¦   «          	                    ¦   «         rJ ‚t          ‰ j        t          j        ¦  «        r$t#          ‰ j        j        ¦  «        ‰ j        _        n‰ j        g‰ j        _        ‰ j                             ‰ j                             ‰ j        ¦  «        ¦  «         ‰ j                             ˆ fd„‰ j                             ‰ j        ¦  «        D ¦   «         ¦  «         d S )Nc                 óD   •— g | ]}‰j                              |¦  «        ‘ŒS r3   )r�   Úcreate_poison)r5   r6   rˆ   s     €r-   r7   z0CodeGenerator.handle_returns.<locals>.<listcomp>f  s)   ø€ ÐpÐpÐp¸R˜$œ,×4Ò4°RÑ8Ô8ÐpÐpÐpr/   )r­  rb  r�   r$  r%  r¦  rd  r�   r‘   Úhas_terminatorr°  r}   rB   r+  rH   r   rt   rW   rw   r#  rá   ra   Ú
reset_typerî   ré   )rˆ   Úreturn_typera  r`  rB   Úret_ipÚret_handless   `      r-   Úhandle_returnszCodeGenerator.handle_returnsR  sÑ  ø€ Ø×-Ò-Ñ/Ô/ˆØ×3Ò3Ñ5Ô5‰ˆˆCå�4Ô#Ñ$Ô$­¨D¬OÑ(<Ô(<Ò<Ð<Ð<Ð<Ý˜tÔ/°´ÑAÔAð 	*ð 	*‰KˆC�Ø-ˆDÔ-¨vÐ6Ð6Ø”|×7Ò7Ñ9Ô9×HÒHÑJÔJÐJÐJÐJØ—,’,˜s KÑ0Ô0ˆCÝ.°¨uÑ5Ô5ˆKØŒL×Ò˜[Ñ)Ô)Ð)Ð)à×)Ò)¨"¨cÑ2Ô2Ð2Ø#ˆŒØ”<×3Ò3Ñ5Ô5×DÒDÑFÔFÐFÐFÐFÝ�d”m¥XÔ%8Ñ9Ô9ð 	7Ý'+¨D¬MÔ,?Ñ'@Ô'@ˆDŒNÔ$Ð$à(,¬ ˆDŒNÔ$ØŒ×Ò˜4œ>×3Ò3°D´LÑAÔAÑBÔBÐBØŒ×ÒÐpÐpÐpÐpÀ4Ä>×CaÒCaÐbfÔbnÑCoÔCoÐpÑpÔpÑqÔqÐqÐqÐqr/   c                 ót  — |                       |j        ¦  «        \  }}| j        r|                      |d¦  «        ‚t	          |j        j        d d d…         ¦  «        D ]º\  }}|j        j        | dz
           }|j        }|j        }t          j	        |t          j
        ¦   «         ¬¦  «        }	|€t          j        |	g|¬¦  «        }
nt          j        |	||¬¦  «        }
	 | j        rJ ‚d| _        |                       |
¦  «         d| _        Œ¯# d| _        w xY w| j        rd	nd
}| j                             | j        ¦  «        }| j                             | j        | j        ||| j        ¦  «        | _        | j                             | j        ¦  «         | j                             ¦   «         }| j                             | j        ¦  «        }| j        �%| j                             | j        | j        ¦  «         t7          ||¦  «        D ]1\  }}|                      ||¦  «         |                      ||¦  «         Œ2| j                             ¦   «         }| j                             |¦  «         |                       |j!        ¦  «         |  "                    ¦   «          |r| j         #                    |¦  «         d S d S )Nz,nested function definition is not supported.éÿÿÿÿr#   )r´   r¹   ©Útargetsru   )rŒ  ru   Ú
annotationTFÚpublicÚprivate)$r£   rb   ra   r;  r\   ÚdefaultsrÄ  rd   r­   r³   rº   r×   Ú	AnnAssignr.  r  r#  rî   r�   Úget_or_insert_functionr
  r(  r[   Ú	push_backÚadd_entry_blockr  r@   Úinitialize_calleer¦  r\  r^  r‘   ri  rk  r§   r¿  r‘  )rˆ   r`   r_   Úkwarg_namesrõ   Údefault_valueÚarg_noderÄ  r*   Ú	st_targetÚ	init_nodeÚ
visibilityÚfn_tyÚentryÚ
arg_valuesÚarg_nameÚ	arg_valueÚ	insert_pts                     r-   rË   zCodeGenerator.visit_FunctionDefh  s®  € Ø!%§¢¨D¬IÑ!6Ô!6Ñˆ	�;ØŒ7ð 	ZØ×#Ò# DÐ*XÑYÔYÐYå )¨$¬)Ô*<¸T¸T¸r¸TÔ*BÑ CÔ Cð 	8ð 	8ÑˆAˆ}Ø”y”~ q b¨1¡fÔ-ˆHØ!Ô,ˆJØ”<ˆDÝœ D­c¬i©k¬kÐ:Ñ:Ô:ˆIØÐ!ÝœJ°	¨{À-ÐPÑPÔP�	�	åœM°À-Ð\fÐgÑgÔg�	ð8ØÔ:Ð:Ð:Ð:Ø26�Ô/Ø—
’
˜9Ñ%Ô%Ð%à27�Ô/Ð/ø°%�Ô/Ð7Ð7Ð7Ð7ð "&¤Ð>�X�X°Yˆ
Ø”×(Ò(¨¬Ñ6Ô6ˆØ”,×5Ò5°d´kÀ4ÔCUÐW\Ð^hÐjnÔjwÑxÔxˆŒØŒ×Ò˜dœgÑ&Ô&Ð&Ø”×'Ò'Ñ)Ô)ˆØ”^×/Ò/°´Ñ8Ô8ˆ
ØÔÐ*ØÔ×1Ò1°$´'¸4¼<ÑHÔHÐHå#& y°*Ñ#=Ô#=ð 	0ð 	0ÑˆH�iØ×'Ò'¨	°8Ñ<Ô<Ð<Ø�NŠN˜8 YÑ/Ô/Ð/Ð/Ø”L×4Ò4Ñ6Ô6ˆ	ØŒ×1Ò1°%Ñ8Ô8Ð8à×%Ò% d¤iÑ0Ô0Ð0ð 	×ÒÑÔÐàð 	?ØŒL×3Ò3°IÑ>Ô>Ð>Ð>Ð>ð	?ð 	?s   Ã%DÄ	Dc                 óˆ   — g }|j         D ]}||                      |¦  «        gz  }Œ|                      |j        ¦  «        }||fS rG   )rb   r£   Úkwarg)rˆ   r`   r_   rd   rÍ  s        r-   Úvisit_argumentszCodeGenerator.visit_arguments•  sO   € Øˆ	Ø”9ð 	+ð 	+ˆCØ˜$Ÿ*š* S™/œ/Ð*Ñ*ˆIˆIØ—j’j ¤Ñ,Ô,ˆØ˜+Ð%Ð%r/   c                 ó  ‡— t           j                             | ‰¦  «         t          ˆfd„| j        j        D ¦   «         ¦  «        }|j        r1|j        s|j        r#t          | j        j
        ‰‰j        › d�¦  «        ‚‰j        S )Nc              3   ó<   •K  — | ]}|j         ‰j        k    ¯|V — Œd S rG   )r*   rd   )r5   Úpr`   s     €r-   r¥   z*CodeGenerator.visit_arg.<locals>.<genexpr>ž  s1   øè è € ÐIÐI˜1°a´fÀÄÒ6HÐ6H�QÐ6HÐ6HÐ6HÐ6HÐIÐIr/   z‰ marked as constexpr and listed in do_not_specialize/do_not_specialize_on_alignment. Remove constexpr designation to skip specialization.)r­   r  r±   Únextr  ÚparamsÚis_constexprÚdo_not_specializeÚdo_not_specialize_on_alignmentr$   r]   rd   )rˆ   r`   Úparams    ` r-   Ú	visit_argzCodeGenerator.visit_argœ  s¢   ø€ ÝŒ×%Ò% d¨DÑ1Ô1Ð1ÝÐIÐIÐIÐI ¤Ô 2ÐIÑIÔIÑIÔIˆØÔð 	H 5Ô#:ð 	H¸eÔ>bð 	HÝ"Ø”” Ø”8ð Gð Gð GñHô Hð Hð Œxˆr/   c                 ó`  — |                       |j        ¦  «        }|                       |j        ¦  «        }|                       |j        ¦  «        }|t          k    rA|| j        v rt          |› d�¦  «        ‚t	          |¦  «        }|| j        |<   | j        |         S |                      |¦  «        S )Nz4 is already defined. constexpr cannot be reassigned.)r£   rÄ  rŒ  ru   r   rŒ   rˆ  rÂ   )rˆ   r`   rÄ  rŒ  ru   s        r-   Úvisit_AnnAssignzCodeGenerator.visit_AnnAssign¦  s¶   € à—Z’Z ¤Ñ0Ô0ˆ
Ø—’˜DœKÑ(Ô(ˆØ—
’
˜4œ:Ñ&Ô&ˆà�Ò"Ð"Ø˜œÐ$Ð$Ý  Fð "Eð "Eð "Eñ Fô Fð Få˜eÑ$Ô$ˆEØ"'ˆDŒK˜ÑØ”;˜vÔ&Ð&à× Ò  Ñ&Ô&Ð&r/   c                 ó2  — t          |j        t          j        ¦  «        sJ ‚t          |t          j        ¦  «        r|                      ||¦  «        S t          |t          j        ¦  «        r=t          |j        ¦  «        D ]&\  }}|  	                    ||j
        |         ¦  «         Œ'd S t          |t          j        ¦  «        rt          d¦  «        ‚t          |t          j        ¦  «        sJ ‚|                      |                      |¦  «        |¦  «         d S )Nz/Attribute assignment is not supported in triton)rH   r¹   r­   rº   Ú	SubscriptÚvisit_Subscript_Storer	   r\   r„  ÚassignTargetry   rÕ   r‹  r³   r^  r£   )rˆ   rŒ  ru   rõ   s       r-   rë  zCodeGenerator.assignTarget¶  sý   € Ý˜&œ*¥c¤iÑ0Ô0Ð0Ð0Ð0Ý�f�cœmÑ,Ô,ð 	=Ø×-Ò-¨f°eÑ<Ô<Ð<Ý�f�cœiÑ(Ô(ð 	Ý& v¤{Ñ3Ô3ð ;ð ;‘	��6Ø×!Ò! &¨%¬,°q¬/Ñ:Ô:Ð:Ð:ØˆFÝ�f�cœmÑ,Ô,ð 	YÝ%Ð&WÑXÔXÐXÝ˜&¥#¤(Ñ+Ô+Ð+Ð+Ð+Ø�Š�t—z’z &Ñ)Ô)¨5Ñ1Ô1Ð1Ð1Ð1r/   c                 óô  ‡ ‡— ˆˆ fd„Št          |t          j        ¦  «        r|j        gn|j        }t          |¦  «        dk    sJ ‚|d         }t          |t          j        ¦  «        rV‰                      |j        ¦  «        5   ‰‰  	                    |j
        ¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   n# ‰‰  	                    |j
        ¦  «        ¦  «        }‰                      ||¦  «         d S )Nc                 ó   •— t          | t          j        ¦  «        rt          | ‰¦  «        S t          j        t          j        f}t          | ¦  «        } | �9t          | ¦  «        s*t          | |¦  «        s‰j                             | ¦  «        } | S rG   )	rH   r   r   rx   rO   r   rJ   r  Ú	to_tensor)ru   Únative_nontensor_typesÚ_sanitize_valuerˆ   s     €€r-   rð  z3CodeGenerator.visit_Assign.<locals>._sanitize_valueÅ  s‰   ø€ Ý˜%¥¤Ñ0Ô0ð FÝ-¨e°_ÑEÔEÐEÝ&.¤nµh´nÐ%EÐ"Ý(¨Ñ/Ô/ˆEØÐ Ý$ UÑ+Ô+ð !å˜uÐ&<Ñ=Ô=ð !ð œ×/Ò/°Ñ6Ô6�ØˆLr/   r#   r   )rH   r­   rÈ  rŒ  rÃ  r�   r³   rV  r´   r£   ru   rë  )rˆ   r`   rÃ  rŒ  ry   rð  s   `    @r-   rÂ   zCodeGenerator.visit_AssignÃ  sM  øø€ ð		ð 		ð 		ð 		ð 		ð 		õ $.¨dµC´MÑ#BÔ#BÐT�4”;�-�-ÈÌˆÝ�7‰|Œ|˜qÒ Ð Ð Ð Ø˜”ˆÝ�f�cœhÑ'Ô'ð 	=Ø×&Ò& v¤yÑ1Ô1ð Að AØ(˜¨¯ª°D´JÑ)?Ô)?Ñ@Ô@�ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aøð %�_ T§Z¢Z°´
Ñ%;Ô%;Ñ<Ô<ˆFØ×Ò˜& &Ñ)Ô)Ð)Ð)Ð)s   Â$B3Â3B7Â:B7c                 ó¾  — t          j        |j        ¦  «        }t          j        ¦   «         |_        t          j        ||j        |j        ¦  «        }t          j	        |j        g|¬¦  «        }dD ]D}t          ||¦  «        r2t          ||¦  «        }t          |||¦  «         t          |||¦  «         ŒE|                      |¦  «         |                      |¦  «        S )NrÂ  )ÚlinenoÚ
col_offsetÚ
end_linenoÚend_col_offset)rp  ÚdeepcopyrŒ  r­   ÚLoadr¹   ÚBinOpÚopru   r×   Úhasattrrµ   Úsetattrr£   )rˆ   r`   ÚlhsÚrhsÚassignrò   Úys          r-   rÅ   zCodeGenerator.visit_AugAssignÚ  sÆ   € ÝŒm˜DœKÑ(Ô(ˆÝ”(‘*”*ˆŒÝŒi˜˜TœW d¤jÑ1Ô1ˆÝ” T¤[ M¸Ð=Ñ=Ô=ˆØIð 	&ð 	&ˆAÝ�t˜QÑÔð &Ý˜D !Ñ$Ô$�Ý˜˜Q Ñ"Ô"Ð"Ý˜  1Ñ%Ô%Ð%øØ�
Š
�6ÑÔÐØ�zŠz˜#‰ŒÐr/   c                 ó„   — t          |j        ¦  «        t          j        u r|j        S |                      |j        ¦  «        S rG   )r+   r¹   r­   rº   r´   r-  r¾   s     r-   r»   zCodeGenerator.visit_Nameç  s4   € Ý�”‰>Œ>�SœYÐ&Ð&Ø”7ˆNØ×$Ò$ T¤WÑ-Ô-Ð-r/   c                 óF   — t           j                             | |¦  «         d S rG   r~  r¾   s     r-   Úvisit_StorezCodeGenerator.visit_Storeì  r€  r/   c                 óF   — t           j                             | |¦  «         d S rG   r~  r¾   s     r-   Ú
visit_LoadzCodeGenerator.visit_Loadï  r€  r/   c                 óR   ‡ — ˆ fd„|j         D ¦   «         }t          j        |¦  «        S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   r¢   )r5   rò   rˆ   s     €r-   r7   z-CodeGenerator.visit_Tuple.<locals>.<listcomp>ó  s#   ø€ Ð1Ð1Ð1 !�—
’
˜1‘”Ð1Ð1Ð1r/   )r„  r   r   )rˆ   r`   rb   s   `  r-   Úvisit_TuplezCodeGenerator.visit_Tupleò  s.   ø€ Ø1Ð1Ð1Ð1 t¤yÐ1Ñ1Ô1ˆÝŒ~˜dÑ#Ô#Ð#r/   c                 ó  — t          |¦  «        r  t          ||¦  «        || j        ¬¦  «        S t          |¦  «        r6t          j        dd|¦  «        } t          ||¦  «        || j        ¬¦  «        S t          |t          t          j        f¦  «        s$t          |t          ¦  «        rt          |¦  «        }t          |t          ¦  «        rt          ||¦  «        }n|  	                    ||¦  «        }|  
                    |||gi ¦  «        S )N©Ú	_semanticz__(.*)__z__r\1__)rL   rµ   r  r(   ÚsubrH   r   r   r   Úget_AttributeÚcall_Function)rˆ   r`   Úmethod_namerü  rý  Úreverse_method_namera   s          r-   Ú_apply_binary_methodz"CodeGenerator._apply_binary_methodö  s  € å˜SÑ!Ô!ð 	KØ,•7˜3 Ñ,Ô,¨S¸D¼MÐJÑJÔJÐJÝ˜SÑ!Ô!ð 	SÝ"$¤&¨°jÀ+Ñ"NÔ"NÐØ4•7˜3Ð 3Ñ4Ô4°SÀDÄMÐRÑRÔRÐRÝ˜#¥	­8¬>Ð:Ñ;Ô;ð 	!Å
È3ÕPYÑ@ZÔ@Zð 	!Ý˜C‘.”.ˆCÝ�c�9Ñ%Ô%ð 	6Ý˜˜kÑ*Ô*ˆBˆBà×#Ò# C¨Ñ5Ô5ˆBØ×!Ò! $¨¨S¨E°2Ñ6Ô6Ð6r/   c                 ó\  — |                       |j        ¦  «        }|                       |j        ¦  «        }| j                             t          |j        ¦  «        ¦  «        }|€3|                      |d                     |j        j	        ¦  «        ¦  «        ‚|  
                    ||||¦  «        S )Nz8AST binary operator '{}' is not (currently) implemented.)r£   ÚleftÚrightÚ_method_name_for_bin_opr÷   r+   rù  r;  Úformatr^   r  )rˆ   r`   rü  rý  r  s        r-   Úvisit_BinOpzCodeGenerator.visit_BinOp  s›   € Ø�jŠj˜œÑ#Ô#ˆØ�jŠj˜œÑ$Ô$ˆØÔ2×6Ò6µt¸D¼G±}´}ÑEÔEˆØÐØ×#Ò# DØ$^×$eÒ$eÐfjÔfmÔfvÑ$wÔ$wñyô yð yà×(Ò(¨¨{¸CÀÑEÔEÐEr/   Ú__add__Ú__sub__Ú__mul__Ú__truediv__Ú__floordiv__Ú__mod__Ú__pow__Ú
__lshift__Ú
__rshift__Ú__and__Ú__or__Ú__xor__r  c                 óÄ  — | j                              |¦  «         |                      |j        ¦  «         | j                              ¦   «         }| j                             ¦   «         }| j                             ¦   «         }i }|                     ¦   «         }|j        rŸ| j                              |¦  «         |                     ¦   «         | _        i | _        |                      |j        ¦  «         | j                             ¦   «         }| j                              ¦   «         }| j                             ¦   «         }g }	| 	                    ¦   «         D ]Û\  }
}t          |¦  «        sŒt          ||
         g¦  «        }t          ||
         g¦  «        }||k    rŒH|	                     |
¦  «         ||
         ||
<   ||
         ||
<   |df|dffD ]_\  }}t          ||
         ¦  «        t          |¦  «        k    }|r||
         j        |j        k    sJ d|
› d|› d|› d||
         › �¦   «         ‚Œ`ŒÜt          |                     ¦   «         |                     ¦   «         z  ¦  «        D ]v}
|
|	v rŒ||
         }|j        }||
         }|j        }t          |¦  «        t          |¦  «        k    }|r||k    sJ d|
› d|› d	|› d
�¦   «         ‚|	                     |
¦  «         Œw|||||	fS )NÚthenÚelsezinitial value for `z` is of type z
, but the z block redefines it as zMismatched type for z between then block (z) and else block (ú))r�   ri  rk  r§   r‘   rŽ   rp  rŒ   rÍ   r&  rJ   r}   rj  r+   ÚsortedÚkeys)rˆ   r`   r�   Ú
then_blockÚ
else_blockÚ	then_defsÚ	then_valsÚ	else_defsÚ	else_valsrt  r*   ru   Úthen_handlesÚelse_handlesÚdefsÚ
block_nameÚ
type_equalÚthen_valÚthen_tyÚelse_valÚelse_tys                        r-   Úvisit_then_else_blocksz$CodeGenerator.visit_then_else_blocks  s:  € àŒ×1Ò1°*Ñ=Ô=Ð=Ø×%Ò% d¤iÑ0Ô0Ð0Ø”\×5Ò5Ñ7Ô7ˆ
Ø”O×(Ò(Ñ*Ô*ˆ	Ø”K×$Ò$Ñ&Ô&ˆ	àˆ	Ø—L’L‘N”Nˆ	ØŒ;ð 	+ØŒL×5Ò5°jÑAÔAÐAØ!Ÿ,š,™.œ.ˆDŒKØ ˆDŒOØ×)Ò)¨$¬+Ñ6Ô6Ð6Øœ×,Ò,Ñ.Ô.ˆIØœ×9Ò9Ñ;Ô;ˆJØœ×(Ò(Ñ*Ô*ˆIð ˆà"Ÿ=š=™?œ?ð 	Oð 	O‰KˆD�%å# EÑ*Ô*ð ØÝ/°¸4´Ð0AÑBÔBˆLÝ/°¸4´Ð0AÑBÔBˆLØ˜|Ò+Ð+ØØ�LŠL˜ÑÔÐØ'¨œoˆI�d‰OØ'¨œoˆI�d‰Oà&/°Ð%8¸9ÀfÐ:MÐ$Nð Oð OÑ ��jÝ! $ t¤*Ñ-Ô-µ°e±´Ò<�
Ø!ð O d¨4¤j¤o¸¼Ò&CÐ&CÐ&CðO¨$ð Oð O¸Uð Oð OØ)ðOð OØBFÀtÄ*ðOð Oñ 'DÔ&CÐCÐ&CðOõ ˜9Ÿ>š>Ñ+Ô+¨i¯nªnÑ.>Ô.>Ñ>Ñ?Ô?ð 	ð 	ˆDØ�uˆ}ˆ}ØØ  ”ˆHØ”mˆGØ  ”ˆHØ”mˆGÝ˜h™œ­4°©>¬>Ò9ˆJØð . '¨WÒ"4Ð"4Ð"4ð. tð .ð .À'ð .ð .Ø#*ð.ð .ð .ñ #5Ô"4Ð4ð �LŠL˜ÑÔÐÐà˜) Z°¸UÐBÐBr/   c                 óx  ‡‡‡— t          | ¦  «        5 }|\  }}| j                             ¦   «         }| j                             ¦   «         }| j                             |¦  «         | j                             |j        ||¦  «         |                      ||||¦  «        \  ŠŠ}}}| j                             ¦   «         Š| j                             |¦  «         |                     ¦   «         rJ |› ¦   «         ‚t          ˆfd„|D ¦   «         ¦  «        }	| j         	                    ‰|	¦  «         | j                             |¦  «         |                     ¦   «         rJ |› ¦   «         ‚t          ˆfd„|D ¦   «         ¦  «        }
| j         	                    ‰|
¦  «         t          |	¦  «        t          |
¦  «        k    sJ ‚t          |	|
¦  «        D ]H\  }}|                     ¦   «         }||                     ¦   «         k    sJ ‚‰                     |¦  «         ŒI	 d d d ¦  «         n# 1 swxY w Y   | j                             ‰¦  «         ˆfd„t          t          |	¦  «        ¦  «        D ¦   «         }ˆfd„|D ¦   «         }t!          ||¦  «        }t          ||¦  «        D ]\  }}|                      ||¦  «         Œd S )Nc              3   ó(   •K  — | ]}‰|         V — Œd S rG   r3   ©r5   r*   r+  s     €r-   r¥   z3CodeGenerator.visit_if_top_level.<locals>.<genexpr>f  ó'   øè è € Ð/RÐ/RÀD°	¸$´Ð/RÐ/RÐ/RÐ/RÐ/RÐ/Rr/   c              3   ó(   •K  — | ]}‰|         V — Œd S rG   r3   ©r5   r*   r-  s     €r-   r¥   z3CodeGenerator.visit_if_top_level.<locals>.<genexpr>k  r<  r/   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   ©rd   )r5   rõ   Úendif_blocks     €r-   r7   z4CodeGenerator.visit_if_top_level.<locals>.<listcomp>v  s%   ø€ ÐLÐLÐL¨a�{—’ qÑ)Ô)ÐLÐLÐLr/   c                 ó*   •— g | ]}‰|         j         ‘ŒS r3   rq   r;  s     €r-   r7   z4CodeGenerator.visit_if_top_level.<locals>.<listcomp>w  ó    ø€ Ð8Ð8Ð8¨$�˜4”Ô%Ð8Ð8Ð8r/   )r…   r�   rh  r‘  Úcreate_cond_branchr[  r8  rº  r}   Úcreate_branchr�   r¦  Úget_typeÚadd_argumentri  rÿ   rƒ   r^  )rˆ   rg   r`   Úsrr�   Úip_blockr)  r*  rt  r/  r0  Úthen_hÚelse_hr6   Úres_handlesrw   Ú
new_valuesr*   Ú	new_valuer-  rA  r+  s                      @@@r-   Úvisit_if_top_levelz CodeGenerator.visit_if_top_levelV  s  øøø€ Ý˜dÑ#Ô#ð 	- rØ "ÑˆG�XØœ×2Ò2Ñ4Ô4ˆJØœ×2Ò2Ñ4Ô4ˆJàŒL×3Ò3°HÑ=Ô=Ð=ØŒL×+Ò+¨D¬K¸ÀZÑPÔPÐPð ×+Ò+¨D°'¸:ÀzÑRÔRñ @ˆI�y *¨j¸%ð œ,×3Ò3Ñ5Ô5ˆKàŒL×3Ò3°JÑ?Ô?Ð?Ø!×0Ò0Ñ2Ô2ÐCÐC°z°OÑCÔCÐ2Ý/Ð/RÐ/RÐ/RÐ/RÈEÐ/RÑ/RÔ/RÑRÔRˆLØŒL×&Ò& {°LÑAÔAÐAàŒL×3Ò3°JÑ?Ô?Ð?Ø!×0Ò0Ñ2Ô2ÐCÐC°z°OÑCÔCÐ2Ý/Ð/RÐ/RÐ/RÐ/RÈEÐ/RÑ/RÔ/RÑRÔRˆLØŒL×&Ò& {°LÑAÔAÐAÝ�|Ñ$Ô$­¨LÑ(9Ô(9Ò9Ð9Ð9Ð9Ý"% l°LÑ"AÔ"Að -ð -‘�˜Ø—_’_Ñ&Ô&�Ø˜VŸ_š_Ñ.Ô.Ò.Ð.Ð.Ð.Ø×(Ò(¨Ñ,Ô,Ð,Ð,ð-ð/	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð: 	Œ×1Ò1°+Ñ>Ô>Ð>àLÐLÐLÐLµ5½¸\Ñ9JÔ9JÑ3KÔ3KÐLÑLÔLˆØ8Ð8Ð8Ð8°%Ð8Ñ8Ô8ˆÝ(¨°eÑ<Ô<ˆ
Ý" 5¨*Ñ5Ô5ð 	,ð 	,‰OˆD�)Ø�NŠN˜4 Ñ+Ô+Ð+Ð+ð	,ð 	,s   “HH#È#H'È*H'c                 óþ  ‡‡‡— t          | ¦  «        5 }|\  }}|                      ¦   «         \  }}| j                             ¦   «         }|j        r| j                             ¦   «         nd }	|                      ||||	¦  «        \  ŠŠ}}	}
t          ˆfd„|
D ¦   «         ¦  «        }t          |
|¦  «        D ]\  }}|                      ||¦  «         Œ|  	                    ||¦  «         | j         
                    d„ |D ¦   «         |j        d¦  «        Š|                     ‰                     ¦   «         ¦  «         | j                             ‰                     ¦   «         ¦  «         t          |
¦  «        dk    r| j                             |¦  «         |j        s‰                     ¦   «         }	n'|	                     ‰                     ¦   «         ¦  «         | j                             ‰                     ¦   «         ¦  «         t          |
¦  «        dk    rat          ˆfd„|
D ¦   «         ¦  «        }t          |
|¦  «        D ]\  }}|                      ||¦  «         Œ| j                             |¦  «         d d d ¦  «         n# 1 swxY w Y   ˆfd„t%          t          |¦  «        ¦  «        D ¦   «         }ˆfd„|
D ¦   «         }t'          ||¦  «        }t          |
|¦  «        D ]\  }}|                      ||¦  «         Œd S )Nc              3   ó(   •K  — | ]}‰|         V — Œd S rG   r3   r;  s     €r-   r¥   z-CodeGenerator.visit_if_scf.<locals>.<genexpr>†  r<  r/   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r3   ©rF  ©r5   Úhs     r-   r7   z.CodeGenerator.visit_if_scf.<locals>.<listcomp>Š  s    € Ð.RÐ.RÐ.RÀ¨q¯zªz©|¬|Ð.RÐ.RÐ.Rr/   Tr   c              3   ó(   •K  — | ]}‰|         V — Œd S rG   r3   r>  s     €r-   r¥   z-CodeGenerator.visit_if_scf.<locals>.<genexpr>•  s'   øè è € Ð3VÐ3VÈ°I¸d´OÐ3VÐ3VÐ3VÐ3VÐ3VÐ3Vr/   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   ©Ú
get_result)r5   rõ   Úif_ops     €r-   r7   z.CodeGenerator.visit_if_scf.<locals>.<listcomp>š  s'   ø€ ÐMÐMÐM¨q�u×'Ò'¨Ñ*Ô*ÐMÐMÐMr/   c                 ó*   •— g | ]}‰|         j         ‘ŒS r3   rq   r;  s     €r-   r7   z.CodeGenerator.visit_if_scf.<locals>.<listcomp>›  rC  r/   )r…   rb  r�   rh  rÍ   r8  r}   r¦  r\  rd  Úcreate_if_opr[  Úmerge_block_beforeÚget_then_blockr‘  r�   Úcreate_yield_opÚget_else_blockrÿ   rƒ   r^  )rˆ   rg   r`   rH  r�   r1   ra  Úlast_locr)  r*  rt  r/  r*   rý   r0  rL  rw   rM  rN  r-  rZ  r+  s                      @@@r-   Úvisit_if_scfzCodeGenerator.visit_if_scf}  sP  øøø€ Ý˜dÑ#Ô#ð 	; rØ‰JˆG�QØ×<Ò<Ñ>Ô>‰LˆB�Øœ×2Ò2Ñ4Ô4ˆJØ8<¼ÐM˜œ×2Ò2Ñ4Ô4Ð4ÈˆJà×+Ò+¨D°'¸:ÀzÑRÔRñ @ˆI�y *¨j¸%õ 0Ð/RÐ/RÐ/RÐ/RÈEÐ/RÑ/RÔ/RÑRÔRˆLÝ  ¨Ñ5Ô5ð 7ð 7‘	��cØ×+Ò+¨C°Ñ6Ô6Ð6Ð6Ø×-Ò-¨b°(Ñ;Ô;Ð;Ø”L×-Ò-Ð.RÐ.RÀ\Ð.RÑ.RÔ.RÐTXÔT_ÐaeÑfÔfˆEØ×)Ò)¨%×*>Ò*>Ñ*@Ô*@ÑAÔAÐAØŒL×3Ò3°E×4HÒ4HÑ4JÔ4JÑKÔKÐKÝ�5‰zŒz˜AŠ~ˆ~Ø”×,Ò,¨\Ñ:Ô:Ð:Ø”;ð FØ"×1Ò1Ñ3Ô3�
�
à×-Ò-¨e×.BÒ.BÑ.DÔ.DÑEÔEÐEØŒL×3Ò3°E×4HÒ4HÑ4JÔ4JÑKÔKÐKÝ�5‰zŒz˜AŠ~ˆ~Ý3Ð3VÐ3VÐ3VÐ3VÐPUÐ3VÑ3VÔ3VÑVÔV�Ý!$ U¨LÑ!9Ô!9ð ;ð ;‘I�D˜#Ø×/Ò/°°TÑ:Ô:Ð:Ð:Ø”×,Ò,¨\Ñ:Ô:Ð:ð5	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð8 NÐMÐMÐMµE½#¸lÑ:KÔ:KÑ4LÔ4LÐMÑMÔMˆØ8Ð8Ð8Ð8°%Ð8Ñ8Ô8ˆÝ(¨°eÑ<Ô<ˆ
Ý" 5¨*Ñ5Ô5ð 	,ð 	,‰OˆD�)Ø�NŠN˜4 Ñ+Ô+Ð+Ð+ð	,ð 	,s   “I!J Ê JÊJc           	      ó  — |                       |j        ¦  «        }t          |¦  «        �r-t          |¦  «        r|                      |d¦  «        ‚|j                             ¦   «         rUt          j        dt          j
        |j        ¦  «        z  ¦  «         t          j                             || j        | ¬¦  «        }|                     t          j        | j        ¬¦  «        }t#          | j        ¦  «                              |¦  «        r5| j        r|                      |d¦  «        ‚|                      ||¦  «         d S |                      ||¦  «         d S t-          |¦  «        }t          |¦  «        t.          vr^|                      |d                     d                     d„ t.          D ¦   «         ¦  «        t          |¦  «        j        ¦  «        ¦  «        ‚|r|j        n|j        }|                      |¦  «         d S )	Nz=Boolean value of Tensor with more than one value is ambiguousziIf conditional called with multidimensional Tensor instead of scalar; please use "if (%s).item()" instead)r
  Ú
_generatorr	  zMCannot have `return` statements inside `while` or `for` statements in triton.úO`if` conditionals can only accept values of type {{{}}}, not objects of type {}ú, c              3   ó$   K  — | ]}|j         V — Œd S rG   r2  r3  s     r-   r¥   z)CodeGenerator.visit_If.<locals>.<genexpr>¹  ó$   è è € Ð!GÐ!G° !¤*Ð!GÐ!GÐ!GÐ!GÐ!GÐ!Gr/   )r£   ÚtestrL   rU   r;  r+   rS   ÚwarningsÚwarnr­   Úunparser   rN   Ú_unsplatr  ÚtoÚint1r�   rŸ   r*  rO  rb  r   Ú_condition_typesr  r=   r^   r§   rÍ   rk  )rˆ   r`   rg   Úactive_blocks       r-   rÎ   zCodeGenerator.visit_If   sö  € Ø�zŠz˜$œ)Ñ$Ô$ˆå˜TÑ"Ô"ñ 	8Ý$ TÑ*Ô*ð oØ×'Ò'¨Ð.mÑnÔnÐnØŒy×!Ò!Ñ#Ô#ð ^Ý”ð BÝ”k $¤)Ñ,Ô,ñ-ñ.ô .ð .õ  ”}×-Ò-¨d¸d¼mÐX\Ð-Ñ]Ô]�Ø—7’7�8œ=°D´M�7ÑBÔBˆDÝ$ T¤[Ñ1Ô1×7Ò7¸Ñ=Ô=ð .Ø”>ð oØ×+Ò+ØÐmñoô oð oà×'Ò'¨¨dÑ3Ô3Ð3Ð3Ð3à×!Ò! $¨Ñ-Ô-Ð-Ð-Ð-å'¨Ñ-Ô-ˆDå�D‰zŒzÕ!1Ð1Ð1Ø×'Ò'ØÐk×rÒrØŸ	š	Ð!GÐ!GÕ6FÐ!GÑ!GÔ!GÑGÔGÝ˜T™
œ
Ô+ñ-ô -ñ.ô .ð .ð
 )-Ð=˜4œ9˜9°$´+ˆLØ×)Ò)¨,Ñ7Ô7Ð7Ð7Ð7r/   c           	      óP  — |                       |j        ¦  «        }t          |¦  «        �rD|                     t          j        | j        ¬¦  «        }t          | ¦  «        5  |                      ¦   «         \  }}| j	         
                    ¦   «         }| j	                             |¦  «         | j                             |                       |j        ¦  «        ¦  «        }| j	                             ¦   «         }| j	         
                    ¦   «         }| j	                             |¦  «         | j                             |                       |j        ¦  «        ¦  «        }| j	                             ¦   «         }|                      ||¦  «         |j        |j        k    sJ d|j        › d|j        › �¦   «         ‚|j        }	|	t          j        k    r|	                     | j	        ¦  «        gng }
| j	                             |
|j        d¦  «        }|                     |                     ¦   «         ¦  «         |
rL| j	                             |                     ¦   «         ¦  «         | j	                             |j        g¦  «         | j	                             |                     ¦   «         ¦  «         |                     |                     ¦   «         ¦  «         |
rL| j	                             |                     ¦   «         ¦  «         | j	                             |j        g¦  «         |
r3t          j                             |                     d¦  «        |	¦  «        nd cd d d ¦  «         S # 1 swxY w Y   d S t=          |¦  «        }t#          |¦  «        t>          vr^|                       |d !                    d "                    d„ t>          D ¦   «         ¦  «        t#          |¦  «        j#        ¦  «        ¦  «        ‚|r|                       |j        ¦  «        S |                       |j        ¦  «        S )	Nr	  zATernary expression with dynamic condition has inconsistent types r–  Tr   re  rf  c              3   ó$   K  — | ]}|j         V — Œd S rG   r2  r3  s     r-   r¥   z,CodeGenerator.visit_IfExp.<locals>.<genexpr>í  rh  r/   )$r£   ri  rL   rn  r   ro  r  r…   rb  r�   rh  ri  rî  r§   r‘   rÍ   rd  r+   ÚvoidÚto_irr\  r[  r]  r^  r‘  r_  r`  rN   r   rY  r   rp  r;  r  r=   r^   )rˆ   r`   rg   ra  ra  r)  r4  r*  r6  r+  Úret_type_irrZ  s               r-   rÐ   zCodeGenerator.visit_IfExp¿  sý  € Ø�zŠz˜$œ)Ñ$Ô$ˆÝ˜TÑ"Ô"ñ 1	/Ø—7’7�8œ=°D´M�7ÑBÔBˆDå! $Ñ'Ô'ð !dð !dØ#×@Ò@ÑBÔB‘��Hà!œ\×6Ò6Ñ8Ô8�
Ø”×9Ò9¸*ÑEÔEÐEØœ=×2Ò2°4·:²:¸d¼iÑ3HÔ3HÑIÔI�Ø!œ\×=Ò=Ñ?Ô?�
à!œ\×6Ò6Ñ8Ô8�
Ø”×9Ò9¸*ÑEÔEÐEð  œ=×2Ò2°4·:²:¸d¼kÑ3JÔ3JÑKÔK�Ø!œ\×=Ò=Ñ?Ô?�
à×1Ò1°"°hÑ?Ô?Ð?à”}¨¬Ò5Ð5Ð5Ø{ÐX`ÔXeÐ{Ð{ÐltÔlyÐ{Ð{ñ 6Ô5Ð5à#œ=�à@HÍHÌMÒ@YÐ@Y˜xŸ~š~¨d¬lÑ;Ô;Ð<Ð<Ð_a�Øœ×1Ò1°+¸t¼{ÈDÑQÔQ�Ø×-Ò-¨e×.BÒ.BÑ.DÔ.DÑEÔEÐEØð DØ”L×;Ò;¸E×<PÒ<PÑ<RÔ<RÑSÔSÐSØ”L×0Ò0°(´/Ð1BÑCÔCÐCà”×7Ò7¸×8LÒ8LÑ8NÔ8NÑOÔOÐOØ×-Ò-¨e×.BÒ.BÑ.DÔ.DÑEÔEÐEØð DØ”L×;Ò;¸E×<PÒ<PÑ<RÔ<RÑSÔSÐSØ”L×0Ò0°(´/Ð1BÑCÔCÐCØNYÐc•x”}×+Ò+¨E×,<Ò,<¸QÑ,?Ô,?ÀÑJÔJÐJÐ_cðC!dð !dð !dð !dñ !dô !dð !dð !dð !dð !dð !dð !døøøð !dð !dð !dð !dð !dð !dõF (¨Ñ-Ô-ˆDõ �D‰zŒzÕ!1Ð1Ð1Ø×'Ò'ØÐk×rÒrØŸ	š	Ð!GÐ!GÕ6FÐ!GÑ!GÔ!GÑGÔGÝ˜T™
œ
Ô+ñ-ô -ñ.ô .ð .ð ð /Ø—z’z $¤)Ñ,Ô,Ð,à—z’z $¤+Ñ.Ô.Ð.s   Á K5M"Í"M&Í)M&c                 óÜ  ‡ — g }|j         D ]z}|j        }‰                      |j        ¦  «        }ˆ fd„|j        D ¦   «         }t          ˆ fd„|j        D ¦   «         ¦  «        } ||d‰ j        i|¤Ž}|                     |¦  «         Œ{t          ||j         ¦  «        D ]P\  }}| 
                    ¦   «         }	|j        �0‰                      |j        ¦  «        }
‰                      |
|	¦  «         ŒQt          ‰ j        ¦  «                             |¦  «        r‰                      |d¦  «        ‚‰                      |j        ¦  «         t%          |¦  «        D ]}|                     d d d ¦  «         Œd S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   r¢   ©r5   rd   rˆ   s     €r-   r7   z,CodeGenerator.visit_With.<locals>.<listcomp>û  s#   ø€ Ð9Ð9Ð9¨�D—J’J˜s‘O”OÐ9Ð9Ð9r/   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rG   r¢   )r5   Úkwrˆ   s     €r-   r¥   z+CodeGenerator.visit_With.<locals>.<genexpr>ü  s-   øè è € Ð>Ð>¨"�t—z’z "‘~”~Ð>Ð>Ð>Ð>Ð>Ð>r/   r
  zCCannot have `return` statements inside `with` statements in triton )r&  Úcontext_exprr£   rÒ   rb   r‹   Úkeywordsr  rj  r¦  r•   Úoptional_varsr^  r�   rŸ   r;  rk  r§   Úreversedr™   )rˆ   r`   Úcm_listr°   Úcallra   rb   ÚkwsÚcmÚresÚvar_names   `          r-   Ú
visit_WithzCodeGenerator.visit_Withô  s‹  ø€ ð ˆØ”Jð 	ð 	ˆDØÔ$ˆDØ—’˜DœIÑ&Ô&ˆBØ9Ð9Ð9Ð9¨t¬yÐ9Ñ9Ô9ˆDÝÐ>Ð>Ð>Ð>°´Ð>Ñ>Ô>Ñ>Ô>ˆCØ��TÐ: T¤]Ð:°cÐ:Ð:ˆBØ�NŠN˜2ÑÔÐÐÝ˜G T¤ZÑ0Ô0ð 	.ð 	.‰HˆB�Ø—,’,‘.”.ˆCØÔ!Ð-ØŸ:š: dÔ&8Ñ9Ô9�Ø—’˜x¨Ñ-Ô-Ð-øÝ  ¤Ñ-Ô-×3Ò3°DÑ9Ô9ð 	qØ×#Ò# DÐ*oÑpÔpÐpØ×%Ò% d¤iÑ0Ô0Ð0Ý˜7Ñ#Ô#ð 	*ð 	*ˆBØ�KŠK˜˜d DÑ)Ô)Ð)Ð)ð	*ð 	*r/   c                 ó   — d S rG   r3   r¾   s     r-   Ú
visit_PasszCodeGenerator.visit_Pass
  s   € Øˆr/   c                 ó$  — t          |j        ¦  «        dk    rt          |j        ¦  «        dk    s|                      |d¦  «        ‚|                      |j        ¦  «        }|                      |j        d         ¦  «        }t          |¦  «        }t          |¦  «        }t          |j        d         ¦  «        t          j	        u rt          ||u ¦  «        S t          |j        d         ¦  «        t          j        u rt          ||u¦  «        S | j                             t          |j        d         ¦  «        ¦  «        }|€9|                      |d                     |j        d         j        ¦  «        ¦  «        ‚|                      ||||¦  «        S )Nr#   z1simultaneous multiple comparison is not supportedr   z<AST comparison operator '{}' is not (currently) implemented.)r�   ÚcomparatorsÚopsr;  r£   r  r   r+   r­   ÚIsr   ÚIsNotÚ_method_name_for_comp_opr÷   r  r^   r  )rˆ   r`   rü  rý  Ú	lhs_valueÚ	rhs_valuer  s          r-   Úvisit_ComparezCodeGenerator.visit_Compare  sc  € Ý�DÔ$Ñ%Ô%¨Ò*Ð*­s°4´8©}¬}ÀÒ/AÐ/AØ×#Ò# DÐ*]Ñ^Ô^Ð^Ø�jŠj˜œÑ#Ô#ˆØ�jŠj˜Ô)¨!Ô,Ñ-Ô-ˆÝ(¨Ñ-Ô-ˆ	Ý(¨Ñ-Ô-ˆ	Ý�”˜”ÑÔ¥¤Ð&Ð&Ý˜Y¨)Ð3Ñ4Ô4Ð4Ý�”˜”ÑÔ¥¤	Ð)Ð)Ý˜Y¨iÐ7Ñ8Ô8Ð8ØÔ3×7Ò7½¸T¼XÀa¼[Ñ8IÔ8IÑJÔJˆØÐØ×#Ò#ØÐT×[Ò[Ð\`Ô\dÐefÔ\gÔ\pÑqÔqñsô sð sà×(Ò(¨¨{¸CÀÑEÔEÐEr/   Ú__eq__Ú__ne__Ú__lt__Ú__le__Ú__gt__Ú__ge__rŽ  c           
      ó  — |                       |j        ¦  «        }| j                             t	          |j        ¦  «        ¦  «        }|€$|                      |d|j        j        › d�¦  «        ‚t          |¦  «        r t          ||¦  «        | j
        ¬¦  «        S 	  t          ||¦  «        ¦   «         S # t          $ rG |dk    rt          | ¦  «        cY S |                      |d|› dt	          |¦  «        j        › �¦  «        ‚w xY w)NzAST unary operator 'z!' is not (currently) implemented.r	  Ú__not__z)' is not (currently) implemented on type )r£   ÚoperandÚ_method_name_for_unary_opr÷   r+   rù  r;  r^   rL   rµ   r  ÚAttributeErrorr   )rˆ   r`   rš  ra   s       r-   Úvisit_UnaryOpzCodeGenerator.visit_UnaryOp"  s)  € Ø—*’*˜Tœ\Ñ*Ô*ˆØÔ+×/Ò/µ°T´W±´Ñ>Ô>ˆØˆ:Ø×#Ò# DÐ*tÀÄÔAQÐ*tÐ*tÐ*tÑuÔuÐuÝ˜WÑ%Ô%ð 	AØ'•7˜7 BÑ'Ô'°$´-Ð@Ñ@Ô@Ð@ð	tØ'•7˜7 BÑ'Ô'Ñ)Ô)Ð)øÝð 	tð 	tð 	tØ�YŠˆÝ  W Ñ-Ô-Ð-Ð-Ð-Ø×#Ò#ØÐr¨RÐrÐrÕZ^Ð_fÑZgÔZgÔZpÐrÐrñtô tð tð	tøøøs   ÂB4 Â4 DÃ/DÚ__neg__Ú__pos__r™  Ú
__invert__r›  c           	      óŽ  — t          |¦  «        sJ d|› d�¦   «         ‚t          |¦  «        sJ d|› d�¦   «         ‚t          |¦  «        t          |¦  «        u s-J d|› dt          |¦  «        › dt          |¦  «        › �¦   «         ‚t          |¦  «        r.|j        |j        k    s J d|› d|j        › d|j        › d	�¦   «         ‚d S d S )
Nzcannot reassign constexpr z in the looprg  z changed type, was z but is now zLoop-carried variable z has initial type z but is re-assigned to z: in loop! Please make sure that the type stays consistent.)rJ   r+   rL   )rˆ   r*   rv  ru  s       r-   rn  z+CodeGenerator._verify_loop_carried_variable5  s  € Ý Ñ)Ô)ÐZÐZÐ+ZÈÐ+ZÐ+ZÐ+ZÑZÔZÐ)Ý Ñ)Ô)ÐZÐZÐ+ZÈÐ+ZÐ+ZÐ+ZÑZÔZÐ)Ý�H‰~Œ~¥ h¡¤Ð/Ð/Ð/Øj TÐjÐj½dÀ8¹n¼nÐjÐjÕZ^Ð_gÑZhÔZhÐjÐjñ 0Ô/Ð/å$ XÑ.Ô.ð 	@°(´-À8Ä=Ò2PÐ2PÐ2Pð@ Tð @ð @¸X¼]ð @ð @Ø%-¤]ð@ð @ð @ñ 3QÔ2PÐPð 	@ð 	@Ð2PÐ2Pr/   c                 óª  ‡ ‡‡‡— t          ‰ ¦  «        5 }|\  }}‰                      ¦   «         \  }}‰                      ||¦  «        \  }}}	d„ |D ¦   «         }
‰                      ||¦  «         ‰ j                             |
|¦  «        Š‰ j                             ‰                     ¦   «         |
¦  «        Š‰ j                             ‰¦  «         ˆfd„t          t          |¦  «        ¦  «        D ¦   «         }t          ||	¦  «        }t          ||¦  «        D ]/\  }}|‰ j        |<   |‰ j        |<   ‰                      ||¦  «         Œ0‰                      |j        ¦  «        }t%          |t&          j        ¦  «        r;|j        r-‰                     d‰ j                             ¦   «         ¦  «         |j        }‰ j                             ‰¦  «         ‰ j                             |j        |¦  «         ‰ j                             ‰                     ¦   «         |
¦  «        Š‰ j                             ‰¦  «         ˆfd„t          t          |¦  «        ¦  «        D ¦   «         }t          ||	¦  «        }t          ||¦  «        D ]/\  }}|‰ j        |<   |‰ j        |<   ‰                      ||¦  «         Œ0‰ j                             |¦  «         ‰                      |j        ¦  «         ‰ j                              ¦   «          tC          ˆ fd„|D ¦   «         ¦  «        }‰ j         "                    |¦  «         d d d ¦  «         n# 1 swxY w Y   ˆfd„t          t          |¦  «        ¦  «        D ¦   «         }t          ||	¦  «        }t          ||¦  «        D ]/\  }}|‰ j        |<   |‰ j        |<   ‰                      ||¦  «         Œ0|j#        D ]}J d¦   «         ‚d S )	Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r3   rS  rT  s     r-   r7   z-CodeGenerator.visit_While.<locals>.<listcomp>F  s    € Ð;Ð;Ð;¨˜Ÿ
š
™œÐ;Ð;Ð;r/   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   r@  )r5   rõ   Úbefore_blocks     €r-   r7   z-CodeGenerator.visit_While.<locals>.<listcomp>L  s'   ø€ ÐPÐPÐP°!˜,×*Ò*¨1Ñ-Ô-ÐPÐPÐPr/   úllvm.loop_annotationc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   r@  )r5   rõ   Úafter_blocks     €r-   r7   z-CodeGenerator.visit_While.<locals>.<listcomp>_  s%   ø€ ÐQÐQÐQ°1˜KŸOšO¨AÑ.Ô.ÐQÐQÐQr/   c              3   ó2   •K  — | ]}‰j         |         V — Œd S rG   ©rŒ   ©r5   r*   rˆ   s     €r-   r¥   z,CodeGenerator.visit_While.<locals>.<genexpr>i  ó*   øè è € Ð0UÐ0UÀt°´¸TÔ1BÐ0UÐ0UÐ0UÐ0UÐ0UÐ0Ur/   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   rX  )r5   rõ   Úwhile_ops     €r-   r7   z-CodeGenerator.visit_While.<locals>.<listcomp>m  s'   ø€ ÐSÐSÐS°Q˜(×-Ò-¨aÑ0Ô0ÐSÐSÐSr/   FzNot implemented)'r…   rb  ry  rd  r�   Úcreate_while_opÚcreate_block_with_parentÚ
get_beforeri  rÿ   r�   rƒ   r¦  rŒ   rŽ   r\  r£   ri  rH   r   Ú	conditionÚdisable_licmÚset_attrÚget_disable_loop_licm_attrr‘  Úcreate_condition_opr[  Ú	get_afterr*  rj  rk  r§   rl  r}   r_  rÍ   r­   r  r±   )rˆ   r`   rH  r�   r’   ra  ra  rt  rs  Úinit_fe_tysrr  Ú
block_argsÚcondition_argsr*   rý   rg   Úbody_handlesÚ	body_argsÚyield_handlesÚresult_handlesÚresult_valsÚnew_defr|  r¨  r¥  r®  s   `                      @@@r-   Úvisit_WhilezCodeGenerator.visit_While?  s  øøøø€ Ý˜dÑ#Ô#ð *	8 rØ$&Ñ!ˆG�\Ø×<Ò<Ñ>Ô>‰LˆB�à/3×/AÒ/AÀ$ÈÑ/PÔ/PÑ,ˆE�< à;Ð;¨lÐ;Ñ;Ô;ˆHØ×-Ò-¨b°(Ñ;Ô;Ð;Ø”|×3Ò3°H¸lÑKÔKˆHàœ<×@Ò@À×ATÒATÑAVÔAVÐX`ÑaÔaˆLØŒL×5Ò5°lÑCÔCÐCØPÐPÐPÐPµu½SÀÑ=NÔ=NÑ7OÔ7OÐPÑPÔPˆJÝ0°¸[ÑIÔIˆNÝ  ¨Ñ7Ô7ð 7ð 7‘	��cØ$'�”˜DÑ!Ø(+�” Ñ%Ø×+Ò+¨C°Ñ6Ô6Ð6Ð6Ø—:’:˜dœiÑ(Ô(ˆDÝ˜$¥Ô 2Ñ3Ô3ð &ØÔ$ð iØ×%Ò%Ð&<¸d¼l×>eÒ>eÑ>gÔ>gÑhÔhÐhØ”~�ØŒL×3Ò3°LÑAÔAÐAàŒL×,Ò,¨T¬[¸*ÑEÔEÐEàœ,×?Ò?À×@RÒ@RÑ@TÔ@TÐV^Ñ_Ô_ˆKð ŒL×5Ò5°kÑBÔBÐBØQÐQÐQÐQ½½cÀ,Ñ>OÔ>OÑ8PÔ8PÐQÑQÔQˆLÝ+¨L¸+ÑFÔFˆIÝ  ¨	Ñ2Ô2ð 7ð 7‘	��cØ$'�”˜DÑ!Ø(+�” Ñ%Ø×+Ò+¨C°Ñ6Ô6Ð6Ð6ØŒN×!Ò! $Ñ'Ô'Ð'Ø×)Ò)¨$¬)Ñ4Ô4Ð4ØŒN×ÒÑ Ô Ð å0Ð0UÐ0UÐ0UÐ0UÈuÐ0UÑ0UÔ0UÑUÔUˆMØŒL×(Ò(¨Ñ7Ô7Ð7ðU*	8ð *	8ð *	8ñ *	8ô *	8ð *	8ð *	8ð *	8ð *	8ð *	8ð *	8øøøð *	8ð *	8ð *	8ð *	8ðZ TÐSÐSÐS½%ÅÀLÑ@QÔ@QÑ:RÔ:RÐSÑSÔSˆÝ)¨.¸+ÑFÔFˆÝ  ¨Ñ4Ô4ð 	7ð 	7‰MˆD�'Ø 'ˆDŒK˜ÑØ$+ˆDŒO˜DÑ!Ø×'Ò'¨°Ñ6Ô6Ð6Ð6à”Kð 	6ð 	6ˆDØ+Ð+Ñ+Ô+�5ð	6ð 	6s   ”LL=Ì=MÍMc                 ó  — t          |j        t          j        ¦  «        sJ ‚|                      |j        ¦  «        }|                      |j        ¦  «        }t          |¦  «        r|                      ||j	        ||gi ¦  «        S ||         S rG   )
rH   r¹   r­   r÷  r£   ru   ÚslicerJ   Úcall_MethodÚ__getitem__)rˆ   r`   rü  Úslicess       r-   Úvisit_Subscript_Loadz"CodeGenerator.visit_Subscript_Loadx  s}   € Ý˜$œ(¥C¤HÑ-Ô-Ð-Ð-Ð-Ø�jŠj˜œÑ$Ô$ˆØ—’˜DœJÑ'Ô'ˆÝ˜CÑ Ô ð 	NØ×#Ò# D¨#¬/¸3ÀÀÈ"ÑMÔMÐMØ�6Œ{Ðr/   c                 ó    — t          d¦  «        ‚)Nz&__setitem__ is not supported in triton)r‹  )rˆ   r`   ru   s      r-   rê  z#CodeGenerator.visit_Subscript_Store€  s   € Ý!Ð"JÑKÔKÐKr/   c                 ó,   — |                       |¦  «        S rG   )rÇ  r¾   s     r-   Úvisit_SubscriptzCodeGenerator.visit_Subscriptƒ  s   € Ø×(Ò(¨Ñ.Ô.Ð.r/   c                 ó*   ‡ — ˆ fd„|j         D ¦   «         S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   r¢   )r5   Údimrˆ   s     €r-   r7   z0CodeGenerator.visit_ExtSlice.<locals>.<listcomp>‡  s#   ø€ Ð5Ð5Ð5 C�—
’
˜3‘”Ð5Ð5Ð5r/   )Údimsr¾   s   ` r-   Úvisit_ExtSlicezCodeGenerator.visit_ExtSlice†  s   ø€ Ø5Ð5Ð5Ð5¨4¬9Ð5Ñ5Ô5Ð5r/   c           	      ó^  ‡ ‡(‡)— ‰                       |j        j        ¦  «        }ˆ fd„|j        j        D ¦   «         }t	          ˆ fd„|j        j        D ¦   «         ¦  «        }|t          j        k    r£ ||i |¤Ž}t          |j	        j
        |j        j
        |j        j
        ¦  «        }|D ]g}t          |¦  «        ‰ j        |j        j        <   ‰                      |j        ¦  «         |j        D ]"}t(          j                             ‰ |¦  «         Œ#Œhd S d }	d }
d}d}d}d}|t          j        u rH ||i |¤Ž}|j	        }|j        }|j        }|j        }	|j        }
|j        }|j        }|j        }|j        }nÝ|t          u rÅt;          |¦  «        dk    r|d         n&‰                       t)          j        d¦  «        ¦  «        }t;          |¦  «        dk    r|d         n$‰                       |j        j        d         ¦  «        }t;          |¦  «        dk    r|d         n&‰                       t)          j        d¦  «        ¦  «        }nt?          d¦  «        ‚d}tA          |¦  «        r&|j
        dk     rt          |j
         ¦  «        }d}||}}‰ j!         "                    |¦  «        }‰ j!         "                    |¦  «        }‰ j!         "                    |¦  «        }|j#         $                    ¦   «         r2|j#         $                    ¦   «         r|j#         $                    ¦   «         s(tK          d	|j#        › d
|j#        › d
|j#        › d�¦  «        ‚tM          |¦  «        rtK          d|j'        › �¦  «        ‚tM          |¦  «        rtK          d|j'        › �¦  «        ‚tM          |¦  «        rtK          d|j'        › �¦  «        ‚‰ j!         (                    |j#        |j#        ¦  «        }‰ j!         (                    ||j#        ¦  «        }| )                    ‰ j*        ¦  «        }|j+        t          j,        j#        j-        j.        k    }|j/        }|j/        }|j/        }‰ j*         0                    |||¦  «        }‰ j*         0                    |||¦  «        }‰ j*         0                    |||¦  «        }‰ j*         1                    |¦  «        }‰  2                    |j        j        t          j,         3                    ||¦  «        ¦  «         ti          ‰ ¦  «        5 }|\  }}‰  5                    ¦   «         \  }}‰  6                    |||j        j        h¬¦  «        \  }}}‰  7                    ||¦  «         ‰ j*         8                    ||||¦  «        Š(ts          |	¦  «        �.‰( :                    d‰ j*         ;                    |	¦  «        ¦  «         ts          |
¦  «        �.‰( :                    d‰ j*         ;                    |
¦  «        ¦  «         |r-‰( :                    d‰ j*         <                    ¦   «         ¦  «         |r-‰( :                    d‰ j*         <                    ¦   «         ¦  «         |r-‰( :                    d‰ j*         <                    ¦   «         ¦  «         |r-‰( :                    d‰ j*         =                    ¦   «         ¦  «         ‰ j>         ?                    |¦  «         ‰( @                    d¦  «        Š)‰ j*         A                    ‰)¦  «         ˆ)fd„t          t;          |¦  «        ¦  «        D ¦   «         }t…          ||¦  «        } t‡          || ¦  «        D ]1\  }!}"‰  D                    |"|!¦  «         ‰  2                    |!|"¦  «         Œ2‰                      |j        ¦  «         ‰ j>         E                    ¦   «          t�          ˆ fd„|D ¦   «         ¦  «        }#t;          |#¦  «        dk    r‰ j*         G                    |#¦  «         ‰) H                    ¦   «         }$|$ I                    ¦   «         dk    s
J d¦   «         ‚‰ j*         A                    ‰)¦  «         ‰( J                    ¦   «         }%|r6‰ j*         K                    ||%¦  «        }%‰ j*         L                    |%|¦  «        }%| M                    |%¦  «         ‰  2                    |j        j        t          j,         3                    |%|¦  «        ¦  «         ‰  D                    |%|j        j        ¦  «         d d d ¦  «         n# 1 swxY w Y   ˆ(fd„t          t;          |¦  «        ¦  «        D ¦   «         }&t…          |&|¦  «        }'t‡          ||'¦  «        D ]1\  }!}"‰  2                    |!|"¦  «         ‰  D                    |"|!¦  «         Œ2|j        D ]}J d¦   «         ‚d S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   r¢   ry  s     €r-   r7   z+CodeGenerator.visit_For.<locals>.<listcomp>‹  s#   ø€ Ð?Ð?Ð?¨�T—Z’Z ‘_”_Ð?Ð?Ð?r/   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rG   r¢   ©r5   Úkeywordrˆ   s     €r-   r¥   z*CodeGenerator.visit_For.<locals>.<genexpr>Œ  s/   øè è € ÐQÐQ°7˜4Ÿ:š: gÑ.Ô.ÐQÐQÐQÐQÐQÐQr/   Fr#   r   r   zAOnly `range` and `static_range` iterators are currently supportedTz0For loop bounds and step must all be ints, are (rf  r&  z&For lower bound must be a scalar, got z&For upper bound must be a scalar, got zFor step must be a scalar, got )re  ztt.num_stagesztt.loop_unroll_factorztt.disallow_acc_multi_bufferz
tt.flattenztt.warp_specializer¦  c                 ó@   •— g | ]}‰                      |d z   ¦  «        ‘ŒS )r#   r@  )r5   rõ   Úfor_op_bodys     €r-   r7   z+CodeGenerator.visit_For.<locals>.<listcomp>î  s)   ø€ ÐVÐVÐV¸˜[Ÿ_š_¨Q°©UÑ3Ô3ÐVÐVÐVr/   c              3   ó2   •K  — | ]}‰j         |         V — Œd S rG   rª  r«  s     €r-   r¥   z*CodeGenerator.visit_For.<locals>.<genexpr>õ  r¬  r/   z7We use SCF, so the loop body should only have one blockc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   rX  )r5   rõ   Úfor_ops     €r-   r7   z+CodeGenerator.visit_For.<locals>.<listcomp>  s'   ø€ ÐQÐQÐQ°1˜&×+Ò+¨AÑ.Ô.ÐQÐQÐQr/   z)Don't know what to do with else after for)Nr£   r‰  rÒ   rb   r‹   r}  r   Ústatic_rangerÿ   Ústartru   ÚendÚstepr   rŒ   rŒ  r´   rk  r§   rÍ   r­   r  r±   Ú
num_stagesÚloop_unroll_factorÚdisallow_acc_multi_bufferÚflattenÚwarp_specializer³  r�   ÚConstantÚRuntimeErrorrP   r  rî  rO   Úis_intÚ	TypeErrorrU   r+   Úinteger_promote_implru  r�   Úint_signednessrN   Ú
SIGNEDNESSÚSIGNEDr[  Úcreate_int_castr¹  r^  r   r…   rb  ry  rd  Úcreate_for_opr   r´  Úget_int32_attrÚget_unit_attrrµ  r*  rj  Úget_bodyri  rƒ   r¦  r\  rl  r}   r_  Ú
get_parentÚsizeÚget_induction_varÚ
create_subÚ
create_addÚreplace_all_uses_with)*rˆ   r`   ÚIteratorClassÚ	iter_argsÚiter_kwargsÚiteratorrÚ  rõ   r|  rÞ  rß  rà  rá  râ  r³  ÚlbÚubrÝ  Únegative_stepÚiv_typeÚ
iv_ir_typeÚiv_is_signedÚiv_placeholderrH  r�   r’   ra  ra  rt  rs  rr  Úblock_handlesr¹  r*   rý   r½  Úfor_op_regionÚivr¾  Úresult_valuesrÙ  rÖ  s*   `                                       @@r-   Ú	visit_ForzCodeGenerator.visit_For‰  s…	  øøø€ ØŸ
š
 4¤9¤>Ñ2Ô2ˆØ?Ð?Ð?Ð?°´	´Ð?Ñ?Ô?ˆ	ÝÐQÐQÐQÐQ¸d¼iÔ>PÐQÑQÔQÑQÔQˆØ�HÔ1Ò1Ð1Ø$�} iÐ?°;Ð?Ð?ˆHÝ  ¤Ô!5°x´|Ô7IÈ8Ì=ÔK^Ñ_Ô_ˆLØ!ð >ð >�Ý.7¸©l¬l�”˜DœKœNÑ+Ø×-Ò-¨d¬iÑ8Ô8Ð8Ø œKð >ð >�DÝ”O×1Ò1°$¸Ñ=Ô=Ð=Ð=ð>àˆFØˆ
Ø!ÐØ$)Ð!ØˆØˆØˆØ�HœNÐ*Ð*Ø$�} iÐ?°;Ð?Ð?ˆHð ”ˆBØ”ˆBØ”=ˆDØ!Ô,ˆJØ!)Ô!<ÐØ(0Ô(JÐ%ØÔ&ˆGØ&Ô6ˆOØ#Ô0ˆLˆLØ�eÐ#Ð#õ "% Y¡¤°!Ò!3Ð!3�˜1”�¸¿ºÅCÄLÐQRÁOÄOÑ9TÔ9TˆBÝ!$ Y¡¤°!Ò!3Ð!3�˜1”�¸¿ºÀDÄIÄNÐSTÔDUÑ9VÔ9VˆBÝ#& y¡>¤>°AÒ#5Ð#5�9˜Q”<�<¸4¿:º:ÅcÄlÐSTÁoÄoÑ;VÔ;VˆDˆDåÐbÑcÔcÐcàˆÝ˜ÑÔð 	 4¤:°¢> >Ý˜dœj˜[Ñ)Ô)ˆDØ ˆMØ˜�ˆBØŒ]×$Ò$ RÑ(Ô(ˆØŒ]×$Ò$ RÑ(Ô(ˆØŒ}×&Ò& tÑ,Ô,ˆàŒx�ŠÑ Ô ð 	v¨¬¯ªÑ(9Ô(9ð 	vÀÄ×ARÒARÑATÔATð 	vÝÐtÈrÌxÐtÐtÐ[]Ô[cÐtÐtÐgkÔgqÐtÐtÐtÑuÔuÐuÝ  Ñ$Ô$ð 	PÝÐNÀRÄWÐNÐNÑOÔOÐOÝ  Ñ$Ô$ð 	PÝÐNÀRÄWÐNÐNÑOÔOÐOÝ  Ñ&Ô&ð 	KÝÐI¸d¼iÐIÐIÑJÔJÐJØ”-×4Ò4°R´X¸r¼xÑHÔHˆØ”-×4Ò4°W¸d¼jÑIÔIˆØ—]’] 4¤<Ñ0Ô0ˆ
ØÔ-µ´Ô1DÔ1OÔ1VÒVˆàŒYˆØŒYˆØŒ{ˆàŒ\×)Ò)¨"¨j¸,ÑGÔGˆØŒ\×)Ò)¨"¨j¸,ÑGÔGˆØŒ|×+Ò+¨D°*¸lÑKÔKˆàœ×3Ò3°JÑ?Ô?ˆØ�Š�t”{”~¥x¤}×';Ò';¸NÈGÑ'TÔ'TÑUÔUÐUå˜dÑ#Ô#ð 0	< rØ$&Ñ!ˆG�\Ø×<Ò<Ñ>Ô>‰LˆB�à,0×,>Ò,>¸tÀWÐVZÔVaÔVdÐUeÐ,>Ñ,fÔ,fÑ)ˆE�< ð ×-Ò-¨b°(Ñ;Ô;Ð;Ø”\×/Ò/°°B¸¸lÑKÔKˆFÝ# JÑ/Ô/Ð;Ø—’ °´×1LÒ1LÈZÑ1XÔ1XÑYÔYÐYÝ#Ð$6Ñ7Ô7ÐCØ—’Ð 7¸¼×9TÒ9TÐUgÑ9hÔ9hÑiÔiÐiØ(ð ^Ø—’Ð >ÀÄ×@ZÒ@ZÑ@\Ô@\Ñ]Ô]Ð]Øð LØ—’ ¨d¬l×.HÒ.HÑ.JÔ.JÑKÔKÐKØð TØ—’Ð 4°d´l×6PÒ6PÑ6RÔ6RÑSÔSÐSØð cØ—’Ð 6¸¼×8_Ò8_Ñ8aÔ8aÑbÔbÐbàŒN×!Ò! $Ñ'Ô'Ð'Ø Ÿ/š/¨!Ñ,Ô,ˆKØŒL×5Ò5°kÑBÔBÐBØVÐVÐVÐV½UÅ3À|ÑCTÔCTÑ=UÔ=UÐVÑVÔVˆMÝ,¨]¸HÑEÔEˆJÝ  ¨
Ñ3Ô3ð *ð *‘	��cØ×+Ò+¨C°Ñ6Ô6Ð6Ø—’˜t SÑ)Ô)Ð)Ð)Ø×)Ò)¨$¬)Ñ4Ô4Ð4ØŒN×ÒÑ Ô Ð Ý0Ð0UÐ0UÐ0UÐ0UÈuÐ0UÑ0UÔ0UÑUÔUˆMõ �=Ñ!Ô! AÒ%Ð%Ø”×,Ò,¨]Ñ;Ô;Ð;Ø'×2Ò2Ñ4Ô4ˆMØ ×%Ò%Ñ'Ô'¨1Ò,Ð,Ð,Ð.gÑ,Ô,Ð,ð ŒL×5Ò5°kÑBÔBÐBØ×)Ò)Ñ+Ô+ˆBØð 5Ø”\×,Ò,¨R°Ñ4Ô4�Ø”\×,Ò,¨R°Ñ4Ô4�Ø×0Ò0°Ñ4Ô4Ð4Ø�NŠN˜4œ;œ>­8¬=×+?Ò+?ÀÀGÑ+LÔ+LÑMÔMÐMØ×'Ò'¨¨D¬K¬NÑ;Ô;Ð;ða0	<ð 0	<ð 0	<ñ 0	<ô 0	<ð 0	<ð 0	<ð 0	<ð 0	<ð 0	<ð 0	<øøøð 0	<ð 0	<ð 0	<ð 0	<ðf RÐQÐQÐQ½½cÀ,Ñ>OÔ>OÑ8PÔ8PÐQÑQÔQˆÝ+¨N¸HÑEÔEˆÝ˜U MÑ2Ô2ð 	3ð 	3‰IˆD�#Ø�NŠN˜4 Ñ%Ô%Ð%Ø×'Ò'¨¨TÑ2Ô2Ð2Ð2à”Kð 	6ð 	6ˆDØEÐEÑEÔE�5ð	6ð 	6s   ÔO:dädädc                 óÊ   — |                       |j        ¦  «        }|                       |j        ¦  «        }|                       |j        ¦  «        }t	          j        |||¦  «        S rG   )r£   ÚlowerÚupperrÝ  r   rÃ  )rˆ   r`   r  r  rÝ  s        r-   Úvisit_SlicezCodeGenerator.visit_Slice  sO   € Ø—
’
˜4œ:Ñ&Ô&ˆØ—
’
˜4œ:Ñ&Ô&ˆØ�zŠz˜$œ)Ñ$Ô$ˆÝŒ~˜e U¨DÑ1Ô1Ð1r/   c                 ó6   — |                       |j        ¦  «        S rG   )r£   ru   r¾   s     r-   Úvisit_IndexzCodeGenerator.visit_Index  s   € Ø�zŠz˜$œ*Ñ%Ô%Ð%r/   c                 óD   — |j         |                      |j        ¦  «        fS rG   )rd   r£   ru   r¾   s     r-   Úvisit_keywordzCodeGenerator.visit_keyword  s   € ØŒx˜Ÿš D¤JÑ/Ô/Ð/Ð/r/   c                 óÊ   — |                       |j        ¦  «        }|j        �|                       |j        ¦  «        nd}t          j                             ||| j        ¬¦  «        S )Nr  r	  )r£   ri  Úmsgr   rN   Údevice_assertr  )rˆ   r`   ri  r  s       r-   Úvisit_AssertzCodeGenerator.visit_Assert  sS   € Ø�zŠz˜$œ)Ñ$Ô$ˆØ&*¤hÐ&:ˆd�jŠj˜œÑ"Ô"Ð"ÀˆÝŒ}×*Ò*¨4°ÀÄÐ*ÑNÔNÐNr/   ra   c                 óH  ‡‡—  |j         j        ‰i |¤Ž}|                     ¦   «          |j        Šˆfd„|j        D ¦   «         Št          ‰¦  «        D ]Q\  }}t          |t          ¦  «        rt          |t          ¦  «        r"t          j
                             |¦  «        ‰|<   ŒR|p| j        }d„ ‰D ¦   «         }t          t          |¦  «        ||¦  «        }	| j                             |	¦  «        �st#          |¦  «        \  }
}t%          g |t'          ¦   «         ¦  «        }t)          | j        ||                     ¦   «         | j        ||	| j        |j        |
|| j        j        | j        j        | j        j        || j        ¬¦  «        }	 |                     |                     ¦   «         ¦  «         nE# t@          $ r8}tB          j"        j#        r‚ tI          | j%        j&        | j'        d ¦  «        |‚d }~ww xY w|j(        }|| j        |	<   n| j        |	         }| j         )                    |	¦  «        }tU          ‰¦  «        }| j         +                    ||¦  «        Šˆfd„tY          ‰ -                    ¦   «         ¦  «        D ¦   «         }t]          t_          ||g¦  «        ¦  «        S )Nc                 ó    •— g | ]
}‰|         ‘ŒS r3   r3   )r5   r*   rb   s     €r-   r7   z2CodeGenerator.call_JitFunction.<locals>.<listcomp>'  s   ø€ Ð4Ð4Ð4˜t��T”
Ð4Ð4Ð4r/   c                 ó   — g | ]	}|j         ‘Œ
S r3   rq   )r5   rd   s     r-   r7   z2CodeGenerator.call_JitFunction.<locals>.<listcomp>-  s   € Ð.Ð.Ð. #�S”XÐ.Ð.Ð.r/   )r
  r  r(  r  r[   r  r  r  r  r   r@   r  c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r3   rX  )r5   rõ   Úcall_ops     €r-   r7   z2CodeGenerator.call_JitFunction.<locals>.<listcomp>I  s'   ø€ ÐSÐSÐS¨Q�7×%Ò% aÑ(Ô(ÐSÐSÐSr/   )0Ú	signatureÚbindÚapply_defaultsÚ	argumentsr_   r\   rH   r   r   r   rN   r   r@   rC   r   r
  Úhas_functionr   rß   r‹   r	  r  Úget_capture_scoper"  r[   r�   r  r  r   r  r£   ÚparseÚ	Exceptionr   rJ  Úfront_end_debuggingr$   r  r]   r)  r+  Úget_functionr}   r�  rÿ   Úget_num_resultsrß  rƒ   )rˆ   ra   rb   r˜   r@   Ú
bound_argsrõ   rd   râ   Úfn_namer  r  r#  r‡   ÚeÚcallee_ret_typeÚsymbolÚargs_valr|   r  s     `                @r-   Úcall_JitFunctionzCodeGenerator.call_JitFunction#  sŸ  øø€ Ø&�R”\Ô&¨Ð7°Ð7Ð7ˆ
Ø×!Ò!Ñ#Ô#Ð#ØÔ#ˆØ4Ð4Ð4Ð4 r¤|Ð4Ñ4Ô4ˆÝ ‘o”oð 	7ð 	7‰FˆAˆsÝ˜c¥:Ñ.Ô.ð 7µ*¸SÅ+Ñ2NÔ2Nð 7Ý"œ-×1Ò1°#Ñ6Ô6��Q‘øà'Ð>¨4Ô+>ˆØ.Ð.¨Ð.Ñ.Ô.ˆ	Ý�M¨"Ñ-Ô-¨y¸.ÑIÔIˆàŒ{×'Ò'¨Ñ0Ô0ñ 	?å$8¸Ñ$<Ô$<Ñ!ˆI�zÝ# B¨	µ4±6´6Ñ:Ô:ˆIÝ% d¤l°I¸r×?SÒ?SÑ?UÔ?UÐ^bÔ^iÐrtØ4;ÈDÔLcØ/1¬{ÀiÐ\fØ.2¬lÔ.BÐPTÔP\ÔPhØ15´Ô1HÐYgØ/3¬}ð>ñ >ô >ˆIðTØ—’ §¢¡
¤
Ñ+Ô+Ð+Ð+øÝð Tð Tð TåÔ$Ô8ð ØÝ& t¤{¤¸¼ÀtÑLÔLÐRSÐSøøøøð	Tøøøð (Ô0ˆOØ/>ˆDÔ# GÑ,Ð,à"Ô5°gÔ>ˆOØ”×)Ò)¨'Ñ2Ô2ˆÝ'¨Ñ-Ô-ˆØ”,×#Ò# F¨HÑ5Ô5ˆØSÐSÐSÐSµ%¸×8OÒ8OÑ8QÔ8QÑ2RÔ2RÐSÑSÔSˆÝÕ'¨°/Ð1BÑCÔCÑDÔDÐDs   Æ	'F1 Æ1
G3Æ;3G.Ç.G3c                 ó  — t          |t          t          f¦  «        r"|                     d|j        ¦  «         |j        }t          |dd¦  «        }|r†t          |dd¦  «        rudt          j        |j	        ¦  «        z  g}t          |t          ¦  «        r|                     |¦  «         t          | j        j        |d                     |¦  «        ¦  «        ‚t          |t           ¦  «        r(t#          |||¦  «         |                      |||¦  «        S t'          |d¦  «        rt)          |j        ¦  «        s4t*          j                             |¦  «        st          |t0          ¦  «        rùt3          ¦   «         }t          |dd ¦  «        }t          |t0          ¦  «        r| j        |d	<   n7|€t7          j        |¦  «        }d	|j        v r
| j        |d	<   d
|j        v r| |d
<   	  ||i |¤|¤Ž}	t          |	t<          ¦  «        rt+          j        |	¦  «        }	|	S # t>          $ r@}
t@          j!        j"        r‚ t          | j        j        |t          |
¦  «        ¦  «        |
‚d }
~
ww xY w|| j#         $                    ¦   «         v s$t'          |d¦  «        r)t)          |j        ¦  «        stK          tL          |¦  «        } ||i |¤Ž}	d„ }t          |	tN          j        t*          j        f¦  «        rtQ          |	|¦  «        S  ||	¦  «        S )Nr   Ú_must_use_resultFÚ
_is_unusedz#The result of %s is not being used.rH  r  r  r
  rd  c                 óB   — t          | ¦  «        r| S t          | ¦  «        S rG   )rJ   r   )rò   s    r-   Úwrap_constexprz3CodeGenerator.call_Function.<locals>.wrap_constexpr~  s#   € Ý Ñ"Ô"ð Ø�Ý˜Q‘<”<Ðr/   ))rH   r  r   Úinsertr  r  rµ   r­   rl  rÒ   rS  rj  r$   r  r]   r=   r   re   r(  rú  rJ   r   rN   Ú
is_builtinr   r‹   r  Úinspectr  Ú
parametersr   r  r   rJ  r  r5  ry   Úmapr   Úbuiltinsrx   )rˆ   r`   ra   rb   r‚  ÚmurÚerror_messageÚextra_kwargsÚsigrB   r$  r-  s               r-   r  zCodeGenerator.call_FunctionL  s&  € Ý�b�>Õ+AÐBÑCÔCð 	Ø�KŠK˜˜2œ;Ñ'Ô'Ð'Ø”ˆBå�bÐ,¨eÑ4Ô4ˆØð 	S•7˜4 ¨uÑ5Ô5ð 	SØBÅSÄ[ÐQUÔQZÑE[ÔE[Ñ[Ð\ˆMÝ˜#�sÑ#Ô#ð *Ø×$Ò$ SÑ)Ô)Ð)Ý" 4¤;¤?°D¸#¿(º(À=Ñ:QÔ:QÑRÔRÐRå�b�+Ñ&Ô&ð 	8Ý˜4  TÑ*Ô*Ð*Ø×(Ò(¨¨T°3Ñ7Ô7Ð7Ý�B˜
Ñ#Ô#ð 	MÕ(8¸¼Ñ(EÔ(Eð 	MÍ(Ì-×JbÒJbÐceÑJfÔJfð 	MÕjtØÕ%ñk'ô k'ð 	Må™6œ6ˆLå˜"˜k¨4Ñ0Ô0ˆCÝ˜"Õ/Ñ0Ô0ð 6Ø,0¬M�˜[Ñ)Ð)à�;Ý!Ô+¨BÑ/Ô/�CØ #¤.Ð0Ð0Ø04´�L Ñ-Ø 3¤>Ð1Ð1Ø15�L Ñ.ðMØ�b˜$Ð6 ,Ð6°#Ð6Ð6�å˜c¥5Ñ)Ô)ð .Ý"œ.¨Ñ-Ô-�CØ�
øÝð 	Mð 	Mð 	MÝÔ$Ô8ð Øõ ' t¤{¤¸½cÀ!¹f¼fÑEÔEÈ1ÐLøøøøð	Møøøð �Ô'×.Ò.Ñ0Ô0Ð0Ð0µW¸RÀÑ5LÔ5LÐ0ÕUeÐfhÔfqÑUrÔUrÐ0ÝÕ+¨TÑ2Ô2ˆDØˆb�$Ð˜#ÐÐˆð	 ð 	 ð 	 õ
 �c�HœN­H¬NÐ;Ñ<Ô<ð 	?Ý)¨#¨~Ñ>Ô>Ð>Øˆ~˜cÑ"Ô"Ð"s   Ç$4H È
I#È#;IÉI#c                 óˆ   — t          |t          ¦  «        r|                     d|¦  «         |                      ||||¦  «        S r   )rH   r   r.  r  )rˆ   r`   ra   Úfn_selfrb   r‚  s         r-   rÄ  zCodeGenerator.call_Method‡  sB   € Ý�b�+Ñ&Ô&ð 	$Ø�KŠK˜˜7Ñ#Ô#Ð#Ø×!Ò! $¨¨D°#Ñ6Ô6Ð6r/   c                 ó„  ‡ — t          ‰                      |j        ¦  «        ¦  «        }t          |t          ¦  «        s(‰ j                             |¦  «        }|� |‰ |¦  «        S t          ˆ fd„|j        D ¦   «         ¦  «        }g }|j	        D ]š}t          |t          j        ¦  «        rV‰                      |j        ¦  «        }t          |t          j        j        ¦  «        sJ ‚|                     |j        ¦  «         Œr|                     ‰                      |¦  «        ¦  «         Œ›‰                      ||||¦  «        S )Nc              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rG   r¢   rÓ  s     €r-   r¥   z+CodeGenerator.visit_Call.<locals>.<genexpr>“  s/   øè è € ÐDÐD¨7�4—:’:˜gÑ&Ô&ÐDÐDÐDÐDÐDÐDr/   )r   r£   rÒ   rH   r  Ú statically_implemented_functionsr÷   r‹   r}  rb   r­   ÚStarredru   r   rN   r   ro  ry   rj  r  )rˆ   r`   ra   Ústatic_implementationr‚  rb   rd   s   `      r-   rÓ   zCodeGenerator.visit_CallŒ  s,  ø€ Ý! $§*¢*¨T¬YÑ"7Ô"7Ñ8Ô8ˆÝ˜"�nÑ-Ô-ð 	9Ø$(Ô$I×$MÒ$MÈbÑ$QÔ$QÐ!Ø$Ð0Ø,Ð,¨T°4Ñ8Ô8Ð8åÐDÐDÐDÐD°d´mÐDÑDÔDÑDÔDˆØˆØ”9ð 	-ð 	-ˆCÝ˜#�sœ{Ñ+Ô+ð -Ø—j’j ¤Ñ+Ô+�Ý! #¥x¤}Ô':Ñ;Ô;Ð;Ð;Ð;Ø—’˜CœJÑ'Ô'Ð'Ð'à—’˜DŸJšJ s™OœOÑ,Ô,Ð,Ð,à×!Ò! $¨¨D°#Ñ6Ô6Ð6r/   c                 ó*   — t          |j        ¦  «        S rG   )r   ru   r¾   s     r-   Úvisit_ConstantzCodeGenerator.visit_ConstantŸ  s   € Ý˜œÑ$Ô$Ð$r/   c           
      óü  — | j                              t          |j        ¦  «        ¦  «        }|€3|                      |d                     |j        j        ¦  «        ¦  «        ‚g }|j        D ]Ò}|                      |¦  «        }t          |¦  «        s,t          |¦  «        }|du r
|dk    r|c S |du r
|dk    r|c S ŒR|j                             ¦   «         rRt          |dd ¦  «        }|�
|| j        z  }t          j        dt           | j        |t%          j        |¦  «        ¬¦  «         |                     |¦  «         ŒÓt+          |¦  «        d	k    r|                     |¦  «         t+          |¦  «        d
k    rh|                     ¦   «         }|                     ¦   «         }	|                      |||	|¦  «        }
|                     |
¦  «         t+          |¦  «        d
k    °ht+          |¦  «        dk    sJ ‚|d	         S )Nz9AST boolean operator '{}' is not (currently) implemented.FÚlogical_andTÚ
logical_orrò  zeLogical operators 'and' and 'or' are deprecated for non-scalar tensors; please use '&' or '|' instead)ri   Úfilenamerò  Úsourcer   r   r#   )Ú_method_name_for_bool_opr÷   r+   rù  r;  r  r^   ry   r£   rL   rÔ   rS   rµ   r  rj  Úwarn_explicitÚUserWarningr  r­   rl  rj  r�   rl  r  )rˆ   r`   r  Únontrivial_valuesÚsubnoderu   Úbvrò  rý  rü  r„  s              r-   Úvisit_BoolOpzCodeGenerator.visit_BoolOp¢  s/  € ØÔ3×7Ò7½¸T¼W¹¼ÑFÔFˆØÐØ×#Ò#ØÐQ×XÒXÐY]ÔY`ÔYiÑjÔjñlô lð lð Ðà”{ð 	0ð 	0ˆGð —J’J˜wÑ'Ô'ˆEÝ$ UÑ+Ô+ð 0å˜%‘[”[�Ø˜%�K�K k°]Ò&BÐ&Bà �L�L�LØ˜$�J�J [°LÒ%@Ð%@à �L�L�Løð ”:×&Ò&Ñ(Ô(ð 
Ý$ T¨8°TÑ:Ô:�FØÐ)Ø $¤/Ñ1˜ÝÔ*ØÝ!,Ø!%¤Ø%Ý"œ{¨4Ñ0Ô0ðñ ô ð ð "×(Ò(¨Ñ/Ô/Ð/Ð/åÐ Ñ!Ô! QÒ&Ð&ð ×$Ò$ UÑ+Ô+Ð+åÐ#Ñ$Ô$¨Ò)Ð)Ø#×'Ò'Ñ)Ô)ˆCØ#×'Ò'Ñ)Ô)ˆCØ×+Ò+¨D°+¸sÀCÑHÔHˆCØ×$Ò$ SÑ)Ô)Ð)õ	 Ð#Ñ$Ô$¨Ò)Ð)õ Ð$Ñ%Ô%¨Ò*Ð*Ð*Ð*Ø  Ô#Ð#r/   rB  rC  rF  c                 ó.  — t          |¦  «        r!|dk    r| j                             |d¦  «        S t          |t          ¦  «        r|dvr|j        }t          ||¦  «        }t          |¦  «        r%t          |t          ¦  «        rt          ||¦  «        S |S )NÚT)r#   r   )ru   r+   )
rL   r  ÚpermuterH   r   ru   rµ   rJ   r   r  )rˆ   rü  r¶   s      r-   r  zCodeGenerator.get_AttributeØ  s›   € Ý˜SÑ!Ô!ð 	6 d¨c¢k kØ”=×(Ò(¨¨fÑ5Ô5Ð5å�c�9Ñ%Ô%ð 	¨$Ð6GÐ*GÐ*GØ”)ˆCÝ�s˜DÑ!Ô!ˆÝ˜CÑ Ô ð 	-¥Z°µkÑ%BÔ%Bð 	-Ý! # tÑ,Ô,Ð,Øˆr/   c                 ó&  — |                       |j        ¦  «        }t          |t          ¦  «        rH|j        x}| j        j        v r3| j        j        |         }|j        |k    rn|j        x}| j        j        v °3|                      ||j        ¦  «        S rG   )	r£   ru   rH   r   r^   r�   r   r  r¶   )rˆ   r`   rü  r*   s       r-   r·   zCodeGenerator.visit_Attributeã  s�   € Ø�jŠj˜œÑ$Ô$ˆÝ�c�:Ñ&Ô&ð 	àœ<Ð'�4¨D¬LÔ,CÐCÐCØ”lÔ-¨dÔ3�Ø”< 4Ò'Ð'Øð œ<Ð'�4¨D¬LÔ,CÐCÐCð ×!Ò! # t¤yÑ1Ô1Ð1r/   c                 ó^   — d|j         _        t          j                             | |¦  «         d S r½   )ru   r+  r­   r  r±   r¾   s     r-   Ú
visit_ExprzCodeGenerator.visit_Exprí  s*   € Ø $ˆŒ
ÔÝŒ×%Ò% d¨DÑ1Ô1Ð1Ð1Ð1r/   c                 ó   — d S rG   r3   r¾   s     r-   Úvisit_NoneTypezCodeGenerator.visit_NoneTypeñ  rÀ   r/   c           
      ó¬  — t          |j        ¦  «        }t          |¦  «        D �]\  }}t          |t          j        ¦  «        rt          |j        ¦  «        ||<   Œ8t          |t          j        ¦  «        rœ|j	        }|  
                    |j        ¦  «        }t          |¦  «        s3|                      |dt          t          |¦  «        ¦  «        z   ¦  «        ‚|dk     rdndt          |¦  «        z   dz                        |j        ¦  «        ||<   Œît!          d                     t          |¦  «        ¦  «        ¦  «        ‚d                     |¦  «        S )Nz^Cannot evaluate f-string containing non-constexpr conversion values, found conversion of type r   z{}z{!Ú}z:encountered unexpected node of type {} in a JoinedStr noder  )rW   ry   r\   rH   r­   rã  rS  ru   ÚFormattedValueÚ
conversionr£   rP   r;  r+   Úchrr  ÚAssertionErrorr=   )rˆ   r`   ry   rõ   ru   Úconversion_codeÚ	evaluateds          r-   Úvisit_JoinedStrzCodeGenerator.visit_JoinedStrô  sD  € Ý�d”kÑ"Ô"ˆÝ! &Ñ)Ô)ð 	wñ 	w‰HˆAˆuÝ˜%¥¤Ñ.Ô.ð wÝ ¤Ñ,Ô,��q‘	�	Ý˜E¥3Ô#5Ñ6Ô6ð 
wØ"'Ô"2�Ø ŸJšJ u¤{Ñ3Ô3�	Ý$ YÑ/Ô/ð 0Ø×+Ò+ØØxÝ�d 9™oœoÑ.Ô.ñ/ñ0ô 0ð 0ð &5°qÒ%8Ð%8˜T˜T¸dÅSÈÑEYÔEYÑ>YÐ\_Ñ>_×gÒgÐhqÔhwÑxÔx��q‘	�	å$Ð%a×%hÒ%hÕimÐnsÑitÔitÑ%uÔ%uÑvÔvÐvØ�wŠw�v‰ŒÐr/   c                 ó.  •— |€d S | j         }| j                             ¦   «         }|| _         t          |d¦  «        r¶t          |d¦  «        r¦| j                             | j        | j        |j        z   |j        ¦  «        }| j	        �9| j         
                    | j                             | j	        |¦  «        ¦  «         n| j         
                    |¦  «         | j                             ¦   «         }	 t          ¦   «                              |¦  «        }n\# t          $ r ‚ t          $ rE}t           j        j        r‚ t          | j        j        | j         t+          |¦  «        ¦  «        d ‚d }~ww xY w|r!|| _         | j         
                    |¦  «         |S )Nrò  ró  )r)  r�   rZ  rú  Ú
create_locr  r  rò  ró  r  r  rY  Úsuperr£   r$   r  r   rJ  r  r  r]   Úrepr)rˆ   r`   Ú	last_nodera  Úhere_locrB   r$  Ú	__class__s          €r-   r£   zCodeGenerator.visit  s‘  ø€ Øˆ<ØˆFØ”Mˆ	Ø”<×'Ò'Ñ)Ô)ˆØˆŒÝ�4˜Ñ"Ô"ð 	.¥w¨t°\Ñ'BÔ'Bð 	.Ø”|×.Ò.¨t¬~¸t¼ÐQUÔQ\Ñ?\Ð^bÔ^mÑnÔnˆHØÔ&Ð2Ø”×$Ò$ T¤\×%AÒ%AÀ$ÔBYÐ[cÑ%dÔ%dÑeÔeÐeÐeà”×$Ò$ XÑ.Ô.Ð.Ø”|×+Ò+Ñ-Ô-ˆHð		VÝ‘'”'—-’- Ñ%Ô%ˆCˆCøÝð 	ð 	ð 	ØÝð 	Vð 	Vð 	VÝÔ Ô4ð Øõ # 4¤;¤?°D´MÅ4ÈÁ7Ä7ÑKÔKÐQUÐUøøøøð	Vøøøð ð 	+Ø%ˆDŒMØŒL× Ò  Ñ*Ô*Ð*Øˆ
s   Ã4!D ÄE/Ä*A E*Å*E/c                 óx   — |                       |d                     t          |¦  «        j        ¦  «        ¦  «        ‚)Nzunsupported AST node type: {})r;  r  r+   r^   r¾   s     r-   r±   zCodeGenerator.generic_visit$  s1   € Ø×Ò Ð&E×&LÒ&LÍTÐRVÉZÌZÔM`Ñ&aÔ&aÑbÔbÐbr/   c                 ó8  — t          |j        ¦  «        }d|cxk     rdk    rn nt          |j        ¦  «        rt          d¦  «        ‚t	          |                      |j        d         ¦  «        ¦  «        }t          |t          ¦  «        st          d¦  «        ‚|s|dk    rd}nN	 |                      |j        d         ¦  «        }n,# t          $ r}dt          |¦  «        z   dz   }Y d }~nd }~ww xY wt          | j        j        |t	          |¦  «        ¦  «        ‚d S )	Nr   r   z=`static_assert` requires one or two positional arguments onlyzqAssertion condition could not be determined at compile-time. Make sure that it depends only on `constexpr` valuesr#   r  z'<failed to evaluate assertion message: ú>)r�   rb   r}  ræ  r   r£   rH   rÔ   r‹  r  ra  r%   r  r]   )rˆ   r`   Ú	arg_countÚpassedr:  r$  s         r-   Úexecute_static_assertz#CodeGenerator.execute_static_assert'  s<  € Ý˜œ	‘N”Nˆ	Ø�IÐ"Ð"Ò"Ð" Ò"Ð"Ð"Ð"Ð"¥s¨4¬=Ñ'9Ô'9Ð"ÝÐ[Ñ\Ô\Ð\å% d§j¢j°´¸1´Ñ&>Ô&>Ñ?Ô?ˆÝ˜&¥$Ñ'Ô'ð 	Ý%ð Dñô ð ð ð 		dØ˜AŠ~ˆ~Ø��ðXØ"Ÿjšj¨¬°1¬Ñ6Ô6�G�GøÝ ð Xð Xð XØGÍ$ÈqÉ'Ì'ÑQÐTWÑW�G�G�G�G�G�GøøøøðXøøøõ .¨d¬k¬o¸tÕEYÐZaÑEbÔEbÑcÔcÐcØˆts   Â% C Ã
C/ÃC*Ã*C/c                 ó,   ‡ — dt           j        fˆ fd„}|S )Nr`   c                 ó�   •‡ — d„ ˆ fd„|j         D ¦   «         D ¦   «         }ˆ fd„|j        D ¦   «         }t           ‰|i |¤Ž¦  «        S )Nc                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r3   )r   )r5   r*   ru   s      r-   r4  z>CodeGenerator.static_executor.<locals>.ret.<locals>.<dictcomp>@  s7   € ð ð ð á�D˜%ð Õ*¨5Ñ1Ô1ðð ð r/   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rG   r¢   rÓ  s     €r-   r¥   z=CodeGenerator.static_executor.<locals>.ret.<locals>.<genexpr>B  s/   øè è € Ð#UÐ#U¸G D§J¢J¨wÑ$7Ô$7Ð#UÐ#UÐ#UÐ#UÐ#UÐ#Ur/   c                 óT   •— g | ]$}t          ‰                     |¦  «        ¦  «        ‘Œ%S r3   )r   r£   ry  s     €r-   r7   z>CodeGenerator.static_executor.<locals>.ret.<locals>.<listcomp>D  s,   ø€ ÐOÐOÐO¸cÕ(¨¯ª°C©¬Ñ9Ô9ÐOÐOÐOr/   )r}  rb   r   )rˆ   r`   r‚  rb   Ú	python_fns   `   €r-   rB   z*CodeGenerator.static_executor.<locals>.ret?  ss   øø€ ðð à#UÐ#UÐ#UÐ#UÀtÄ}Ð#UÑ#UÔ#Uðñ ô ˆCð PÐOÐOÐOÀTÄYÐOÑOÔOˆDÝ˜Y˜Y¨Ð4°Ð4Ð4Ñ5Ô5Ð5r/   )r­   rÝ   )rp  rB   s   ` r-   Ústatic_executorzCodeGenerator.static_executor=  s1   ø€ ð	6�CœHð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð ˆ
r/   r   )r   r<  rG   )�r^   rš   r›   r   r   r   rS  r‰   r�   rW   rÿ   ÚfloatÚintrH   rµ   rú  r5  r   r  Úupdater   rN   Údevice_printÚbuiltin_minÚbuiltin_maxr;  r?  r,  Ú
contextlibÚcontextmanagerrV  r\  r   r   r   r^  rb  rd  Úsetry  rk  rÈ   r…  r­   ÚListCompr�  r¿   r­  r°  r¿  rË   rÛ  rå  rç  rë  rÂ   rÅ   r»   r  r  r  r  r  ÚAddÚSubÚMultÚDivÚFloorDivÚModÚPowÚLShiftÚRShiftÚBitAndÚBitOrÚBitXorr  r
   Úoperatorr8  rO  rb  rÎ   rÐ   r†  rˆ  r‘  ÚEqÚNotEqÚLtÚLtEÚGtÚGtErŽ  Úcmpopr�  ÚUSubÚUAddÚNotÚInvertr›  Úunaryoprn  rÁ  rÇ  rê  rÊ  rÏ  r  r	  r  r	   r  r  r(  r  rÄ  rÓ   r@  ÚBoolOprL  ÚAndÚOrrF  Úboolopr  r·   rR  rT  r]  r£   r±   rÝ   rj  rq  Úexperimental.gluonÚttglÚstatic_assertÚstatic_printr6  r<  r=  r   Ú__classcell__)rd  s   @r-   r	  r	    sÇ  ø€ € € € € € ð /3¸eÐfjØ°ÐQUÐbcð@0ð @0ð @0È+ð @0ØU]Ð^bÔUcð@0àAIÈ#Äð@0ð @0ð @0ð @0ðD)ð )à�t˜U E¨3°
¸GÀWÐMð)ñ )ô )Ð�t˜C ˜H”~ð ð ñ ð ×ÒØ	�(”-Ô,Ð-Ø	�”Ô)Ð*Ø	�”Ô)Ð*ðñ ô ð ðLð Lð Lð	ð 	ð 	ð1ð 1ð 1ðf Ôð'ð 'ñ Ôð'ð
Uð Uð Uð&˜cð &¨%°
¸IÐ0EÔ*Fð &È4ð &ð &ð &ð &ðð ð ð"ð "ð "ð ?B¸c¹e¼eð &-ð &-°3°s´8ð &-ð &-ð &-ð &-ðV	ð 	ð 	ð2ð 2ð 2ðð ð ð! 3¤<ð !ð !ð !ð !ð 
@ð 
@ð 
@ð;ð ;ð ;ð>ð ð ð&rð rð rð,+?ð +?ð +?ðZ&ð &ð &ðð ð ð'ð 'ð 'ð 2ð 2ð 2ð*ð *ð *ð.ð ð ð.ð .ð .ð
2ð 2ð 2ð2ð 2ð 2ð$ð $ð $ð7ð 7ð 7ðFð Fð Fð 	Œ�ØŒ�ØŒ�)ØŒ�ØŒ�nØŒ�ØŒ�ØŒ
�LØŒ
�LØŒ
�IØŒ	�8ØŒ
�Ið>Ð˜T $ s¤|Ô"4°cÐ"9Ô:ð ð ñ ð7Cð 7Cð 7Cðr$,ð $,ð $,ðN!,ð !,ð !,ðF8ð 8ð 8ð>3/ð 3/ð 3/ðj*ð *ð *ð,ð ð ðFð Fð Fð$ 	Œ�˜#œ) X¨s¬v°xÀÄÈ(ÐTWÔTZÐ\dÐfiÔfmÐowð<Ð˜d 4¨¬	¤?°CÐ#7Ô8ð ð ñ ðtð tð tð  	Œ�)˜SœX y°#´'¸9ÀcÄjÐR^ð?Ð˜t D¨¬Ô$5°sÐ$:Ô;ð ð ñ ð@ð @ð @ð76ð 76ð 76ðrð ð ðLð Lð Lð/ð /ð /ð6ð 6ð 6ðG6ð G6ð G6ðR2ð 2ð 2ð&ð &ð &ð0 U¨3°¨8¤_ð 0ð 0ð 0ð 0ðO Cð Oð Oð Oð Oð
'Eð 'E ;ð 'Eð 'Eð 'Eð 'EðR9#ð 9#ð 9#ðv7ð 7ð 7ð
7ð 7ð 7ð&%ð %ð %ð2$ ¤ð 2$ð 2$ð 2$ð 2$ðh >A¼WÀmÐUXÔU[Ð]iÐ<jÐ˜d 4¨¬
Ô#3°SÐ#8Ô9ÐjÐjÑjð	ð 	ð 	ð2ð 2ð 2ð2ð 2ð 2ðð ð ðð ð ð$ð ð ð ð ð<cð cð cð¨#¬(ð °tð ð ð ð ð,
ð 
ð 
ð 6Ð5Ð5Ð5Ð5Ð5àŒÔ#Ð%:ØŒÔ" O O°EÑ$:Ô$:ØÔÐ1ØÔ˜?˜?¨5Ñ1Ô1Øˆ_ˆ_˜SÑ!Ô!Øˆ_ˆ_˜SÑ!Ô!ðQÐ$ d¨6°8¸S¼X¸JÈ¸OÔ3LÐ+LÔ&Mð ð ñ ð ð ð ð r/   r	  c                 óâ  ‡ ‡‡— d gt          ‰ j        ¦  «        z  }‰j                             ¦   «         D ]2\  }}	‰ j                             |¦  «        }
t          |	d ¦  «        ||
<   Œ3ˆfd„Š‰j                             ¦   «         D ](\  }} ‰|t          |¦  «        d d d…         |¦  «         Œ)t          g |‰j	        ¦  «        }t          ‰ ¦  «        \  }}ddlm} t          d„ ‰j        ¦  «        }ˆ ˆfd„|D ¦   «         }‰j        }  |ddd	g¦  «        ||¦  «        }t          ||‰                      ¦   «         ‰                      |¦  «        ‰ d
||||||‰                      ¦   «         ¬¦  «        }|                     ‰                      ¦   «         ¦  «         |j        }||_        |                     ¦   «         s2‰                      ¦   «         st/          |¦  «         t1          d¦  «        ‚|S )Nc                 ó  •— |                      ¦   «         }t          |¦  «        dk    rLt          | t          ¦  «        rt	          |¦  «        j        | |<   d S t	          |¦  «        j        | j        |<   d S  ‰| |         ||¦  «         d S r   )rl  r�   rH   rW   r   r+   rw   )ÚargumentÚindicesru   ÚindexÚapply_constexpr_typess       €r-   r£  z*ast_to_ttir.<locals>.apply_constexpr_types[  s‡   ø€ Ø—’‘”ˆÝˆw‰<Œ<˜1ÒÐÝ˜(¥DÑ)Ô)ð >Ý"+¨EÑ"2Ô"2Ô"7�˜‘��å(1°%Ñ(8Ô(8Ô(=�”˜uÑ%Ð%Ð%à!Ð! (¨5¤/°7¸EÑBÔBÐBÐBÐBr/   rÁ  r   )Ú
namedtuplec                 ó(   — t          | ¦  «        dk    S rR   )r�   )rm   s    r-   rŸ  zast_to_ttir.<locals>.<lambda>l  s   € �c !™fœf¨šk€ r/   c                 óN   •— i | ]!}‰j         |d                   ‰j        |         “Œ"S )r   )r_   Ú	constants)r5   rõ   ra   r]   s     €€r-   r4  zast_to_ttir.<locals>.<dictcomp>m  s-   ø€ ÐFÐFÐF¸!�”˜a œdÔ# S¤]°1Ô%5ÐFÐFÐFr/   ÚSpecializationProxyr§  r  T)rŸ   r(  r  r  r  r  r  r  r   r
  r  z error encountered during parsing)r�   r_   r  r&  r¢  r   r§  rW   rß   rã   r   Úcollectionsr¤  Úfilterr	  r  ra  r  r£   r  r
  r  Úverifyr6  rä  )ra   r]   r  r  r  r   r
  râ   r/  rm   rc   rù   ru   r#  r  r  r¤  Úleavesr§  r  Úproxyr‡   r£  s   ``                    @r-   Úast_to_ttirr®  T  s.  øøø€ Ø��˜Rœ\Ñ*Ô*Ñ*€Ià”×#Ò#Ñ%Ô%ð ,ð ,‰ˆˆ1ØŒl× Ò  Ñ#Ô#ˆÝ" 1 dÑ+Ô+ˆ	�#‰ˆðCð Cð Cð Cð Cð ”}×*Ò*Ñ,Ô,ð Bð B‰ˆˆeØÐ˜i­¨d©¬°D°D°b°DÔ)9¸5ÑAÔAÐAÐAå˜B 	¨3¬9Ñ5Ô5€IÝ0°Ñ4Ô4Ñ€Iˆzà&Ð&Ð&Ð&Ð&Ð&ÝÐ)Ð)¨3¬=Ñ9Ô9€FØFÐFÐFÐFÐF¸vÐFÑFÔF€IØ”€IØIˆJˆJÐ,¨{¸KÐ.HÑIÔIÈ)ÐU^Ñ_Ô_€EÝ˜g y¸×9MÒ9MÑ9OÔ9OÐ_a×_fÒ_fÐglÑ_mÔ_mØ%'°4À9ÐYcÐmtØ*5À*ÐU[Ðfh×fqÒfqÑfsÔfsðuñ uô u€Ið ‡O‚O�B—H’H‘J”JÑÔÐØÔ€Fà€F„NØ�=Š=‰?Œ?ð ?Ø�{Š{‰}Œ}ð 	Ý�&‰MŒMˆMÝÐ=Ñ>Ô>Ð>Ø€Mr/   rG   )Nr­   r3  rx  rp  r«  r0  r(   rj  rM  Údataclassesr   rw   r   Útypingr   r   r   r   r	   r
   r   r   r   r  r   r   Ú_C.libtritonr   r   r   r   r   r   rŠ  Úlanguage.corer   r   r   Úruntime.jitr   r   r   r   r   r   Ú_utilsr    r!   r"   Úerrorsr$   r%   r&   r.   rC   rÔ   rJ   rL   rP   rU   rX   re   ræ  rj   rx   r}   ru   rƒ   rs  r+   rp  r…   r  r�   rß   r  r	  r®  r3   r/   r-   ú<module>r¶     s\  ðØ 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tà Ð Ð Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gð Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  Cð  CØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fà aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aÐ aðð ð ð	ð 	ð 	ð%˜ð % ð %ð %ð %ð %ð!˜ð ! ð !ð !ð !ð !ðU�Sð U˜Tð Uð Uð Uð UðN˜Sð N Tð Nð Nð Nð Nð(�Sð (˜Tð (ð (ð (ð (ðð ð ð #,ð !ð !ð !ð !ð
Dð Dð Dð ¨*Ô!5ð ð ð ð ð"  b¤h¤ð "¸¸Y¼ð "ð "ð "ð "ð ˜#˜t˜t D™zœzÐ*Ð ð3ð 3ð 3ð 3ð 3ñ 3ô 3ð 3ð*T%ð T%ð T%ð T%ð T%˜CœOñ T%ô T%ð T%ðn.ð .ð .ð .ð .ñ .ô .ð .ðb €�$ÐÑÔðð ð ð ð ñ ô ñ Ôðð
ð ð ð ð �C”Oñ ô ð ðD*'ð 'ð 'ð 'ð 'ð 'r/   