§
    Ì²ÅjÐv  ã                  óv  — d dl mZ d dlZd dlmZ d dlmZ d dlmc m	Z	 d dl
mZ d dlmZmZ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mZmZmZmZm Z m!Z!m"Z"m#Z# d d	l$m%Z% erd d
l&m'Z' ddgZ(ddgZ)g d¢Z*dgZ+d8d„Z,d9d„Z-d:d„Z.d:d„Z/d;d„Z0d:d „Z1d<d&„Z2d=d,„Z3d>d1„Z4d?d3„Z5ed@d6„¦   «         Z6ed@d7„¦   «         Z7dS )Aé    )ÚannotationsN)Údefaultdict)ÚTYPE_CHECKING)Ú	translate)ÚBindingÚDispatcherSignatureÚExpr)Úwith_native_function)Ú
AnnotationÚArgumentÚBackendIndexÚBackendMetadataÚBaseOperatorNameÚBaseTyÚBaseTypeÚDEFAULT_KERNEL_NAMESPACEÚDeviceCheckTypeÚDispatchKeyÚFunctionSchemaÚNativeFunctionÚNativeFunctionsGroupÚOperatorNameÚReturnÚ
SchemaKindÚVariant)Ú	concatMap)ÚSequencez'adaptive_avg_pool3d_backward.grad_inputz _slow_conv2d_backward.grad_inputÚ_cummax_helperÚ_cummin_helper)$Ú_assert_asyncz_assert_async.msgÚ_assert_tensor_metadataÚ_cslt_sparse_mm_searchÚ_assert_scalarÚ_dimIÚ_dimVÚ_has_same_storage_numelÚ_linalg_check_errorsÚ_local_scalar_denseÚ%_nested_tensor_from_mask_left_alignedÚ_nnzÚ_use_cudnn_ctc_lossz_use_cudnn_ctc_loss.TensorÚ#_validate_compressed_sparse_indicesÚallcloseÚ	dense_dimÚequalÚis_coalescedÚ	is_pinnedÚis_same_sizeÚ	is_set_toÚq_per_channel_axisÚq_scaleÚq_zero_pointÚqschemeÚrecord_streamÚ
sparse_dimÚsym_constrain_rangeÚsym_constrain_range_for_sizeÚ_nested_tensor_storage_offsetsÚ'_chunk_grad_outputs_efficient_attentionÚ_fused_sdp_choiceÚ_printÚ_sink_tokensÚ_nested_get_ragged_idxÚ
polygamma_Únative_functionsúSequence[NativeFunction]Úreturnú6dict[FunctionSchema, dict[SchemaKind, NativeFunction]]c                óè   — t          t          ¦  «        }| D ]Z}||j                             ¦   «                  }|j                             ¦   «         |vsJ ‚|||j                             ¦   «         <   Œ[|S ©N)r   ÚdictÚfuncÚ	signatureÚkind)rC   Úpre_grouped_native_functionsÚfÚds       úTC:\Projects\Historical\venv\Lib\site-packages\torchgen/native_function_generation.pyÚpre_group_native_functionsrQ   n   su   € õ
 	•DÑÔð !ð ð ð ˆØ(¨¬×)9Ò)9Ñ);Ô);Ô<ˆØŒv�{Š{‰}Œ} AÐ%Ð%Ð%Ð%Øˆˆ!Œ&�+Š+‰-Œ-ÑÐØ'Ð'ó    Úoverload_nameú
str | NoneÚstrc                ó   — | sdn| › d�S )NÚoutÚ_out© )rS   s    rP   Ú&get_expected_out_variant_overload_namerZ   |   s   € Ø%ÐAˆ5ˆ5¨mÐ+AÐ+AÐ+AÐArR   rJ   r   c                óÞ  — |                       ¦   «         t          j        k    sJ ‚| j        j        €J ‚t          | j                             ¦   «                              t          | j        j
        ¦  «        ¦  «        | j                             ¦   «                              t          d| j        j        j        j        d | j        j        j        j        ¬¦  «        g¦  «        | j        ¬¦  «        S )NrW   ©ÚnameÚtypeÚdefaultÚ
annotation©r]   Ú	argumentsÚreturns)rL   r   Úinplacerb   Úself_argr   r]   Úremove_inplaceÚwith_overloadrZ   rS   Úremove_self_annotationÚwith_out_argsr   Úargumentr^   r`   rc   )rJ   s    rP   Úself_to_out_signaturerk   …   sÜ   € à�9Š9‰;Œ;�*Ô,Ò,Ð,Ð,Ð,ØŒ>Ô"Ð.Ð.Ð.õ
 ØŒY×%Ò%Ñ'Ô'×5Ò5Ý2°4´9Ô3JÑKÔKñ
ô 
ð ”.×7Ò7Ñ9Ô9×GÒGåØØœÔ0Ô9Ô>Ø Ø#œ~Ô6Ô?ÔJð	ñ ô ðñ	
ô 	
ð ”ðñ ô ð rR   c                ó^  — |                       ¦   «         t          j        k    sJ ‚t          | ¦  «        \  }}t	          | j                             t          | j        j        ¦  «        ¦  «        | j	         
                    ¦   «                              |¦  «        t          |¦  «        ¬¦  «        S ©Nra   )rL   r   Ú
functionalÚgenerate_out_args_from_schemar   r]   rg   rZ   rS   rb   rK   ri   Útuple©rJ   Únew_returnsÚnew_out_argss      rP   Úfunctional_to_out_signaturert   ¦   s¡   € à�9Š9‰;Œ;�*Ô/Ò/Ð/Ð/Ð/å =¸dÑ CÔ CÑ€K�õ
 ØŒY×$Ò$Ý2°4´9Ô3JÑKÔKñ
ô 
ð ”.×*Ò*Ñ,Ô,×:Ò:Øñ
ô 
õ �kÑ"Ô"ðñ ô ð rR   ú#tuple[list[Return], list[Argument]]c           
     ó  ‡
— t          d„ | j        D ¦   «         ¦  «        rJ ‚d„ | j        D ¦   «         }t          |¦  «        dk    sJ ‚t          d„ | j        j        ¦  «        Š
ˆ
fd„t          j        D ¦   «         }t          d„ | j        D ¦   «         ¦  «        }g }g }t          | j        ¦  «        D ]Ì\  }}|j
                             ¦   «         r™t          t          | j        ¦  «        dk    rdnd|› �|j
        d t          j        ||         › d	�¦  «        ¬
¦  «        }|                     |¦  «         |r1t!          d |j
        |j        ¬¦  «        }	|                     |	¦  «         Œ·|                     |¦  «         ŒÍ||fS )Nc              3  ó@   K  — | ]}|j         d uo|j         j        V — Œd S rH   )r`   Úis_write©Ú.0Úrs     rP   ú	<genexpr>z0generate_out_args_from_schema.<locals>.<genexpr>À   sD   è è € ð ð Ø?@ˆŒ˜DÐ Ð: Q¤\Ô%:ðð ð ð ð ð rR   c                óD   — g | ]}|j                              ¦   «         ¯|‘ŒS rY   ©r^   Úis_tensor_likery   s     rP   ú
<listcomp>z1generate_out_args_from_schema.<locals>.<listcomp>Ä   s+   € ÐJÐJÐJ˜Q°!´&×2GÒ2GÑ2IÔ2IÐJ�qÐJÐJÐJrR   r   c                ó,   — | j         €g n| j         j        S rH   )r`   Ú	alias_set)Úas    rP   ú<lambda>z/generate_out_args_from_schema.<locals>.<lambda>È   s   € ˜œÐ,�"�"°!´,Ô2H€ rR   c                ó   •— g | ]}|‰v¯|‘Œ	S rY   rY   )rz   ÚxÚused_annotationss     €rP   r€   z1generate_out_args_from_schema.<locals>.<listcomp>Ë   s$   ø€ ÐXÐXÐX˜q¸aÐGWÐ>WÐ>W˜Ð>WÐ>WÐ>WrR   c              3  óZ   K  — | ]&}|j         t          t          j        ¦  «        k    V — Œ'd S rH   )r^   r   r   ÚTensorry   s     rP   r|   z0generate_out_args_from_schema.<locals>.<genexpr>Í   s3   è è € ÐWÐWÀQ˜qœv­µ&´-Ñ)@Ô)@Ò@ÐWÐWÐWÐWÐWÐWrR   é   rW   ú!r\   )r]   r^   r`   )Úanyrc   Úlenr   rb   Úflat_allÚstringÚascii_lowercaseÚallÚ	enumerater^   r   r   r   ÚparseÚappendr   r`   )rJ   Útensorlike_retsÚvalid_annotationsÚall_rets_are_tensorsrs   rr   Úir{   Únew_outÚnew_retr‡   s             @rP   ro   ro   »   sß  ø€ õ
 ð ð ØDHÄLðñ ô ñ ô ð ð ð ð KÐJ $¤,ÐJÑJÔJ€OÝˆÑÔ !Ò#Ð#Ð#Ð#å ØHÐHØŒÔñô Ðð YÐXÐXÐX¥FÔ$:ÐXÑXÔXÐåÐWÐWÈ$Ì,ÐWÑWÔWÑWÔWÐà#%€Lð !#€KÝ˜$œ,Ñ'Ô'ð "ð "‰ˆˆ1ØŒ6× Ò Ñ"Ô"ð 	"ÝÝ! $¤,Ñ/Ô/°1Ò4Ð4�U�U¸)À¸)¸)Ø”VØÝ%Ô+Ð/@ÀÔ/CÐ,FÐ,FÐ,FÑGÔGð	ñ ô ˆGð ×Ò Ñ(Ô(Ð(Ø#ð ,õ !Ø G¤L¸WÔ=Oðñ ô �ð ×"Ò" 7Ñ+Ô+Ð+øà×Ò˜qÑ!Ô!Ð!Ð!Ø˜Ð$Ð$rR   c                ó^  — |                       ¦   «         t          j        k    sJ ‚t          | ¦  «        \  }}t	          | j                             ¦   «                              t          | j        j	        ¦  «        ¦  «        | j
                             |¦  «        t          |¦  «        ¬¦  «        S rm   )rL   r   Úmutablero   r   r]   rf   rg   rZ   rS   rb   ri   rp   rq   s      rP   Úmutable_to_out_signaturer�   î   sš   € à�9Š9‰;Œ;�*Ô,Ò,Ð,Ð,Ð,õ !>¸dÑ CÔ CÑ€K�åØŒY×%Ò%Ñ'Ô'×5Ò5Ý2°4´9Ô3JÑKÔKñ
ô 
ð ”.×.Ò.¨|Ñ<Ô<Ý�kÑ"Ô"ðñ ô ð rR   rN   r   Úkr   úMtuple[NativeFunction, dict[DispatchKey, dict[OperatorName, BackendMetadata]]]c                ó  — ddl m} |t          j        k    rÔ| j                             ¦   «         t          j        k    sJ ‚| j                             d¬¦  «                             t          t          | j        j
        j
        j        d| j        j
        j
        j        | j                             ¦   «         t          j        k    ¬¦  «        | j        j
        j        ¬¦  «        ¦  «        }nâ|t          j        k    rÃ| j                             ¦   «         t          j        k    rt#          | j        ¦  «        }n–| j                             ¦   «         t          j        k    rt%          | j        ¦  «        }nZ| j                             ¦   «         t          j        k    rt'          | j        ¦  «        }nt)          d¦  «        ‚t)          d	¦  «        ‚|                     ¦   «         t          j        k    r|j
                             ¦   «         n| 
                    |¦  «        }| j                             ¦   «         r|d
z  }t.          j        |j
        t3          |dt4          ¬¦  «        ii}dht7          | j        h d£z  ¦  «        z  }t;          d&i d|“d| j        “dt>          j         h“dd“dd “dd “dd “dg “di “dd“dd“dd “dd “dd“dtB          j"        “d| j#        “dt7          ¦   «         “d| j$        “d d“d!d“d"d“d#d“d$|“d%| j%        “Ž|fS )'Nr   )ÚcppT)Úkeep_return_namesF)Úbaserd   Údunder_methodÚfunctional_overload)r]   rS   z^We only bother generating out= functions from either inplace or mutable or functional variantszDWe currently only generate either functional or out= NativeFunctionsÚ_symint)ÚkernelÚ
structuredÚcpp_namespaceÚ	generated>   Ú	view_copyÚpt2_compliant_tagÚnondeterministic_seededrJ   Ú!use_const_ref_for_mutable_tensorsÚvariantsr¨   Ústructured_delegateÚstructured_inheritsÚprecomputedÚautogenÚufunc_inner_loopÚmanual_kernel_registrationÚmanual_cpp_bindingÚpython_moduleÚcategory_overrideÚdevice_guardÚdevice_checkÚlocÚcpp_no_default_argsÚis_abstractÚ&has_composite_implicit_autograd_kernelÚ4has_composite_implicit_autograd_nested_tensor_kernelÚ&has_composite_explicit_autograd_kernelÚ5has_composite_explicit_autograd_non_functional_kernelÚtagsÚ	namespacerY   )&Útorchgen.apir¡   r   rn   rJ   rL   rK   Ú	with_namer   r   r]   r£   r¤   rœ   rS   rW   rd   rk   r�   rt   ÚAssertionErrorÚunambiguous_nameÚ
has_symintr   ÚCompositeExplicitAutogradr   r   ÚsetrÂ   r   r®   r   Úfunctionr   ÚNoCheckr»   r½   rÃ   )rN   rž   r¡   rJ   Úkernel_nameÚbackend_metadatarÂ   s          rP   Úgenerate_functionrÏ     s¢  € ð !Ð Ð Ð Ð Ð à�JÔ!Ò!Ð!ØŒv�{Š{‰}Œ}¥
Ô 5Ò5Ð5Ð5Ð5ð Œv×Ò°$ÐÑ7Ô7×AÒAÝÝ%ØœœÔ)Ô.Ø!Ø"#¤&¤+Ô"2Ô"@à()¬¯ª©¬½Ô9KÒ(Kðñ ô ð  œfœkÔ7ð	ñ 	ô 	ñ
ô 
ˆˆð 
�jŒnÒ	Ð	ð Œ6�;Š;‰=Œ=�JÔ.Ò.Ð.Ý(¨¬Ñ0Ô0ˆDˆDØŒV�[Š[‰]Œ]�jÔ0Ò0Ð0Ý+¨A¬FÑ3Ô3ˆDˆDØŒV�[Š[‰]Œ]�jÔ3Ò3Ð3Ý.¨q¬vÑ6Ô6ˆDˆDå Øpñô ð õ ØRñ
ô 
ð 	
ð �9Š9‰;Œ;�*œ.Ò(Ð(ð 	Œ	×"Ò"Ñ$Ô$Ð$à�XŠX�d‰^Œ^ð ð
 	„v×ÒÑÔð !Ø�yÑ ˆåÔ-ØŒI•Ø"Ø Ý6ðñ ô ð0
ðÐð ˆ=�3Ø	ŒÐNÐNÐNÑNñô ñ €Dõ
 	ð 	
ð 	
ð 	
Ø�ð	
à./Ô.QÐ.Qð	
õ Ô&Ð'Ð'ð		
ð
 �uð	
ð !% ð	
ð !% ð	
ð ˜ð	
ð �Bð	
ð  ˜Rð	
ð (- uð	
ð  %˜uð	
ð ˜$ð	
ð #˜dð	
ð ˜ð	
õ  )Ô0Ð0ð!	
ð" ”�ð#	
õ$ !$¡¤ ð%	
ð& œ˜ð'	
ð( 49°5ð)	
ð* BGÀð+	
ð, 48°4ð-	
ð. CHÀ%ð/	
ð4 �ð5	
ð6 ”k�kð7	
ð: 	ð=ð rR   Úrsúlist[NativeFunction]Úindicesú6dict[DispatchKey, dict[OperatorName, BackendMetadata]]ÚNonec                óx  — t          | ¦  «        }|                     ¦   «         D �]”}t          j        |v }t          j        |v }t          j        |v }t          j        |v }t          d„ |                     ¦   «         D ¦   «         ¦  «        }|s|s|s|�r%t          d„ |                     ¦   «         D ¦   «         ¦  «        }	t          d„ |                     ¦   «         D ¦   «         ¦  «        }
t          d„ |                     ¦   «         D ¦   «         ¦  «        }|	s|
s|r|sŒù|r‹t          |                     ¦   «         ¦  «        dk    rft          |t          j                 j        j        ¦  «        t          vr4t          dt          |t          j                 j        ¦  «        › �¦  «        ‚�Œ†|r2t          |t          j                 j        j        ¦  «        t          v r�Œº|r|t          j                 n9|r|t          j                 n%|r|t          j                 n|t          j                 }|j                             ¦   «         t          j        k    p"t          d„ |j        j        D ¦   «         ¦  «        }t          d„ |j        D ¦   «         ¦  «        }| o|o|}|sg|set          |j        j        ¦  «        t&          vrEt          |j        j        ¦  «        t(          vr%t          d	t          |j        ¦  «        › d
�¦  «        ‚|rVt+          |t          j        ¦  «        \  }}||t          j        <   t-          j        ||¦  «         |                      |¦  «         |sZ|s|rVt+          |t          j        ¦  «        \  }}||t          j        <   t-          j        ||¦  «         |                      |¦  «         �Œ–d S )Nc              3  ó(   K  — | ]}d |j         v V — ŒdS )ÚcoreN)rÂ   )rz   Úvariants     rP   r|   z1add_generated_native_functions.<locals>.<genexpr>Œ  s)   è è € ÐGÐG°�f ¤Ð,ÐGÐGÐGÐGÐGÐGrR   c              3  ó$   K  — | ]}|j         V — Œd S rH   )r¶   ©rz   rN   s     rP   r|   z1add_generated_native_functions.<locals>.<genexpr>–  s%   è è € ÐFÐF°a˜QÔ1ÐFÐFÐFÐFÐFÐFrR   c              3  óh   K  — | ]-}|j         o!t          |j        j        j        ¦  «        d k    V — Œ.dS )Úset_N)Ú
is_view_oprU   rJ   r]   rÚ   s     rP   r|   z1add_generated_native_functions.<locals>.<genexpr>š  sN   è è € ð ð ØEF�”Ð@¥ Q¤V¤[Ô%5Ñ!6Ô!6¸&Ò!@ðð ð ð ð ð rR   c              3  ó$   K  — | ]}|j         V — Œd S rH   )r¾   rÚ   s     rP   r|   z1add_generated_native_functions.<locals>.<genexpr>¡  s6   è è € ð )ð )Ø=>�Ô8ð)ð )ð )ð )ð )ð )rR   rŠ   zEFound an out= operator that we could not find any other variants of: c              3  óH   K  — | ]}|j                              ¦   «         V — Œd S rH   r~   ry   s     rP   r|   z1add_generated_native_functions.<locals>.<genexpr>Ó  sI   è è € ð Mð MØ,-�”×%Ò%Ñ'Ô'ðMð Mð Mð Mð Mð MrR   c              3  ó8   K  — | ]}d t          |¦  «        v V — ŒdS )rW   N)rU   )rz   Úop_names     rP   r|   z1add_generated_native_functions.<locals>.<genexpr>Û  s-   è è € ÐQÐQ°g˜E¥S¨¡\¤\Ð1ÐQÐQÐQÐQÐQÐQrR   zBFound an operator that we could not generate an out= variant for: zã.
This type of operators don't have tensor-like return, making it difficult to generate a proper out= variant. If
out= variant is not needed, please add the function name into FUNCTIONAL_OPS_THAT_CANNOT_GET_AN_OUT_VARIANT list.)rQ   Úvaluesr   rn   rd   rœ   rW   rŒ   r‘   r�   rU   rJ   r]   Ú&OUT_OPS_THAT_DONT_GET_GROUPED_PROPERLYrÆ   Ú*INPLACE_OPS_THAT_DONT_GET_GROUPED_PROPERLYrL   rc   r³   Ú*MUTABLE_OPS_THAT_CANNOT_GET_AN_OUT_VARIANTÚ-FUNCTIONAL_OPS_THAT_CANNOT_GET_AN_OUT_VARIANTrÏ   r   Ú
grow_indexr”   )rÐ   rÒ   rM   rO   Úhas_functionalÚhas_inplaceÚhas_mutableÚhas_outÚis_coreÚ
are_manualÚhas_view_opsÚare_composite_implicitÚbase_fnÚbase_fn_validÚ	needs_outÚgets_out_variantÚfnÚmetadatas                     rP   Úadd_generated_native_functionsrö     s0  € õ $>¸bÑ#AÔ#AÐ Ø)×0Ò0Ñ2Ô2ð qñ qˆÝ#Ô.°!Ð3ˆÝ Ô(¨AÐ-ˆÝ Ô(¨AÐ-ˆÝ”. AÐ%ˆÝÐGÐG¸A¿HºH¹J¼JÐGÑGÔGÑGÔGˆð ð d	˜+ð d	¨ð d	°Nñ d	åÐFÐF¸1¿8º8¹:¼:ÐFÑFÔFÑFÔFˆJõ ð ð ØJKÏ(Ê(É*Ì*ðñ ô ñ ô ˆLõ &)ð )ð )ØBCÇ(Â(Á*Ä*ð)ñ )ô )ñ &ô &Ð"ð ð ˜\ð Ð-Cð ÈGð ØØð �3˜qŸxšx™zœz™?œ?¨aÒ/Ð/õ ˜�*œ.Ô)Ô.Ô3Ñ4Ô4ÝAðBð Bõ )Ø}Õ`cÐdeÕfpÔftÔduÔdzÑ`{Ô`{Ð}Ð}ñô ð ñ ð
 ðå˜�*Ô,Ô-Ô2Ô7Ñ8Ô8Ý=ð>ð >ñ ð ð.�•*Ô$Ô%Ð%ð ð.�Q•zÔ)Ô*Ð*ð ð.�Q•z”~Ô&Ð&à•zÔ,Ô-ð ð" $œL×-Ò-Ñ/Ô/µ:Ô3EÒEð Íð Mð MØ18´Ô1EðMñ Mô Mñ Jô JˆMõ ÐQÐQÀÄÐQÑQÔQÑQÔQˆIØ#*˜{ÐJ¨}ÐJÀÐØð  =ð å˜œÔ)Ñ*Ô*ÝEðFð Få˜GœLÔ-Ñ.Ô.ÝHðIð Iõ )ðuÕ_bÐcjÔcoÑ_pÔ_pð uð uð uñô ð ð  ð Ý0°½*¼.ÑIÔI‘��HØ$&�•*”.Ñ!ÝÔ'¨°Ñ:Ô:Ð:Ø—	’	˜"‘”�ð
 "ð  wð Ð2Bð Ý0°½*Ô:OÑPÔP‘��HØ+-�•*Ô'Ñ(ÝÔ'¨°Ñ:Ô:Ð:Ø—	’	˜"‘”�ùðcqð qrR   Úretsútuple[Return, ...]Únamesú	list[str]c                ó.  — t          | ¦  «        t          |¦  «        k    sJ ‚t          | ¦  «        dk    rdS t          | ¦  «        dk    rd|d         › d�S dt          j        | ¦  «                             ¦   «         › dd                     |¦  «        › d�S )	Nr   Ú rŠ   zreturn ú;ú(ú, ú);)r�   Ú
dispatcherÚreturns_typeÚcpp_typeÚjoin)r÷   rù   s     rP   Ú
return_strr  û  s“   € Ýˆt‰9Œ9�˜E™
œ
Ò"Ð"Ð"Ð"Ý
ˆ4�y„y�A‚~€~ØˆrÝ	ˆT‰Œ�aŠˆØ$˜˜qœÐ$Ð$Ð$Ð$àX�Ô0°Ñ6Ô6×?Ò?ÑAÔAÐXÐXÀDÇIÂIÈeÑDTÔDTÐXÐXÐXÐXrR   Úout_varc                óÐ   — |                       ¦   «         }g }t          | j        ¦  «        dk    }t          |¦  «        D ]'\  }}|€ |                     |r	d|› d|› d�n|¦  «         Œ(|S )NrŠ   ú	std::get<ú>(ú))Úaliased_return_namesr�   rc   r’   r”   )rJ   r  Úaliased_retsÚnon_aliased_namesÚis_out_var_a_tupler˜   r{   s          rP   Úgather_nonaliased_inner_retsr    s�   € Ø×,Ò,Ñ.Ô.€LØÐÝ˜Tœ\Ñ*Ô*¨QÒ.ÐÝ˜,Ñ'Ô'ð ð ‰ˆˆ1Øˆ9Ø×$Ò$Ø/AÐNÐ+˜AÐ+Ð+ Ð+Ð+Ð+Ð+Àwñô ð øð ÐrR   Úgr   c                ó¸  — d| j         j        vrd S | j        �d| j        j        vr| j        }nC| j        �d| j        j        vr| j        }n&t	          t          | j         j        ¦  «        ¦  «        ‚t          | j         j        ¦  «        }t          |j        ¦  «        }g }g }g }t          t          j
        | j         j        ¦  «        t          j
        |j        ¦  «        ¦  «        D ]È\  }}|j        �•|j        j        r‰|                     d|j        › d|j        › d�¦  «         |                     t          |j        › d�t          j        ||j        ¬¦  «        ¬¦  «        ¦  «         |                     |j        › d�¦  «         Œ¡|                     t          j        |¦  «        ¦  «         ŒÉd                     d	„ t'          ||                     ¦   «         ¦  «        D ¦   «         ¦  «        }	d
}
t+          |j        j        ¦  «        dk    rd|
› d�nd}t/          |j        |
¦  «        }t1          | j         j        j        ||z   ¦  «        }d                     |¦  «        }d|                     |                     ¦   «         | j        j                             ¦   «         rdndz   ¬¦  «        › d|› d|› d|j        j                             ¦   «         › d|	› d|› d�S )Nrª   zauto z_clone = clone_arg(r   Ú_clone)Úbinds)Úexprr^   rÿ   c                ó   — g | ]	}|j         ‘Œ
S rY   ©r  ©rz   Úes     rP   r€   z3gen_composite_functional_kernel.<locals>.<listcomp>?  s   € ÐRÐRÐR !�q”vÐRÐRÐRrR   Úoutputr   z = rü   ú
r¦   ©r]   z {
  ú
  z
at::_ops::ú::call(ú);
  ú
}
)rn   rÂ   rd   rœ   rÆ   rU   rJ   r   Úzipr  Újit_argumentsr`   rx   r”   r]   r	   Úargument_typerj   r  r   rb   r�   rc   r  r  ÚdefnrW   rÈ   rÇ   )r  Útarget_fÚsigÚ
target_sigÚcontextÚclone_mutable_inputsÚcloned_return_namesÚa_currÚa_tgtÚexprsÚout_nameÚmaybe_assignÚinner_return_namesÚret_strÚclone_mutable_inputs_strs                  rP   Úgen_composite_functional_kernelr2    s   € ð ˜!œ,Ô+Ð+Ð+Øˆtà„yÐ °A´I´NÐ!BÐ!BØ”9ˆˆØ	
ŒÐ	 ;°a´i´nÐ#DÐ#DØ”9ˆˆõ �S ¤Ô!2Ñ3Ô3Ñ4Ô4Ð4å
˜aœlÔ/Ñ
0Ô
0€CÝ$ X¤]Ñ3Ô3€Jà$&€GØÐØÐõ ÝÔ  ¤Ô!2Ñ3Ô3ÝÔ  ¤Ñ/Ô/ñô ð 8ð 8‰ˆ�ð ÔÐ'¨EÔ,<Ô,EÐ'Ø ×'Ò'ØG˜œÐGÐG¸¼ÐGÐGÐGñô ð ð �NŠNÝØ"œKÐ/Ð/Ð/Ý#Ô1°&ÀÄÐLÑLÔLðñ ô ñô ð ð  ×&Ò&¨&¬+Ð'=Ð'=Ð'=Ñ>Ô>Ð>Ð>à�NŠN�:Ô.¨vÑ6Ô6Ñ7Ô7Ð7Ð7Ø�IŠIÐRÐR¥y°¸*×:NÒ:NÑ:PÔ:PÑ'QÔ'QÐRÑRÔRÑSÔS€Eà€HÝ,/°´Ô0EÑ,FÔ,FÈÒ,JÐ,JÐ(˜8Ð(Ð(Ð(Ð(ÐPR€LÝ5°h´mÀXÑNÔNÐÝØ	ŒÔÔ!Ð#5Ð8KÑ#Kñô €Gð  $ŸyšyÐ)=Ñ>Ô>ÐðØ‡‚ˆs�xŠx‰zŒz¨!¬%¬*×*?Ò*?Ñ*AÔ*AÐI˜Y˜YÀrÑJ€ÑKÔKðð àðð ð ðð ð $œ=Ô-×>Ò>Ñ@Ô@ðð ð JOðð ð ð	ð ð ð rR   c                óÎ  — d| j         j        vrd S t          | j         j        ¦  «        }t          | j        j        ¦  «        }d                     d„ t          |                     ¦   «         |                     ¦   «         ¦  «        D ¦   «         ¦  «        }g }d}t          | j         j        j        j         ¦  «        D ]^\  }}t          | j        j        j
        ¦  «        dk    r|nd|› d|› d�}|                     d	|j        › d|› d
|j        › d|› d�	¦  «         Œ_g }	t          | j         j                             ¦   «         ¦  «        D ]_\  }}
|
�|	                     |
¦  «         Œt          | j        j        j
        ¦  «        dk    r|nd|› d|› d�}|	                     |¦  «         Œ`d                     |¦  «        }d|                     | j         j        j                             ¦   «         | j         j                             ¦   «         rdndz   ¬¦  «        › d|› d| j        j        j                             ¦   «         › d|› d|› dt#          | j         j        j
        |	¦  «        › d�S )Nrª   rÿ   c                ó   — g | ]	}|j         ‘Œ
S rY   r  r  s     rP   r€   z,gen_composite_out_kernel.<locals>.<listcomp>b  s   € ÐLÐLÐL�AˆŒÐLÐLÐLrR   Ú
tmp_outputrŠ   r  r	  r
  z  resize_out_helper(z);
  copy_arg(r   r  r¦   rü   r  z
 {
  auto z = at::_ops::r  r  r  r  )rW   rÂ   r   rJ   rn   r  r   rb   r’   r�   rc   r”   r]   r  r#  rÇ   rÈ   r  )r  r%  r&  r,  Ú	copy_outsr-  r˜   Úout_argÚfunctional_return_namer÷   Úret_nameÚcopy_outs_strs               rP   Úgen_composite_out_kernelr;  T  sÌ  € ð ˜!œ%œ*Ð$Ð$Øˆtõ ˜aœeœjÑ
)Ô
)€CÝ$ Q¤\Ô%6Ñ7Ô7€Jà�IŠIØLÐL� 3§=¢=¡?¤?°J×4HÒ4HÑ4JÔ4JÑKÔKÐLÑLÔLñô €Eð €IØ€HÝ ¤¤
Ô 4Ô 8Ñ9Ô9ð 

ð 

‰
ˆˆ7õ �1”<Ô$Ô,Ñ-Ô-°Ò2Ð2ð ˆHà-˜QÐ-Ð- (Ð-Ð-Ð-ð 	ð
 	×Òð9Ø”\ð9ð 9Ø%;ð9ð 9àŒLð9ð 9à2ð9ð 9ð 9ñ	
ô 	
ð 	
ð 	
ð €Dõ ! ¤¤×!@Ò!@Ñ!BÔ!BÑCÔCð 	0ð 	0‰ˆˆ8ØÐØ�KŠK˜Ñ!Ô!Ð!Ð!õ �q”|Ô(Ô0Ñ1Ô1°QÒ6Ð6ð �à1 Ð1Ð1 hÐ1Ð1Ð1ð #ð
 �KŠKÐ.Ñ/Ô/Ð/Ð/à—I’I˜iÑ(Ô(€MðØ‡‚ˆqŒuŒzŒ×/Ò/Ñ1Ô1À!Ä%Ä*×BWÒBWÑBYÔBYÐ5a°Y°YÐ_aÑb€ÑcÔcðð àðð à œ|Ô0Ô5×FÒFÑHÔHðð àQVðð ð ðð õ ˆaŒeŒjÔ  $Ñ'Ô'ð	ð ð ð rR   )rC   rD   rE   rF   )rS   rT   rE   rU   )rJ   r   rE   r   )rJ   r   rE   ru   )rN   r   rž   r   rE   rŸ   )rÐ   rÑ   rÒ   rÓ   rE   rÔ   )r÷   rø   rù   rú   rE   rU   )rJ   r   r  rU   rE   rú   )r  r   rE   rT   )8Ú
__future__r   r�   Úcollectionsr   Útypingr   Útorchgen.api.dispatcherÚapir  Útorchgen.api.translater   Útorchgen.api.typesr   r   r	   Útorchgen.contextr
   Útorchgen.modelr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Útorchgen.utilsr   Úcollections.abcr   rã   rå   ræ   rä   rQ   rZ   rk   rt   ro   r�   rÏ   rö   r  r  r2  r;  rY   rR   rP   ú<module>rG     sû  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø  Ð  Ð  Ð  Ð  Ð  à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð& %Ð $Ð $Ð $Ð $Ð $ð ð )Ø(Ð(Ð(Ð(Ð(Ð(ð .ð 'ð*Ð &ð àð	.Ð *ð%1ð %1ð %1Ð -ðZ ð.Ð *ð
(ð 
(ð 
(ð 
(ðBð Bð Bð Bðð ð ð ðBð ð ð ð*+%ð +%ð +%ð +%ðfð ð ð ðFcð cð cð cð\yð yð yð yðxYð Yð Yð Yð	ð 	ð 	ð 	ð ð9ð 9ð 9ñ Ôð9ð| ð6ð 6ð 6ñ Ôð6ð 6ð 6rR   