Ë
    úÍ:j;» ã                  ó.  — U d dl m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m	Z	m
Z
 d dlmZmZ d dlmZ d dlmZmZmZmZmZ d dlmZ d dlZd dlmc mZ d dlmc mZ d dlmc mZ d dl mc m!Z! d dl"m#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/ d dl0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY d dlZm[Z[m\Z\m]Z]m^Z^ d dl_m`Z` d dlambZbmcZcmdZdmeZemfZfmgZgmhZh d dlimjZjmkZk erd dllmmZm  ed«      Zn G d„ dek«      Zo e	dddg«      Zpi aqderd<   i asderd<   	 	 	 	 	 	 	 	 d^d„Zt	 	 	 d_	 	 	 	 	 	 	 	 	 	 	 d`d!„Zudadbd"„Zvejî                  dcd#„«       Zx	 ddd dd$œ	 	 	 	 	 	 	 	 	 	 	 ded%„Zydfd&„Zzdgd'„Z{dhd(„Z|	 	 	 	 	 	 did)„Z}	 	 	 	 	 	 djd*„Z~dkd+„Z	 	 	 	 	 	 dld,„Z€	 	 	 	 	 	 	 	 dmd-„Z�	 	 	 	 	 	 	 	 dnd.„Z‚	 	 	 	 	 	 	 	 dnd/„Zƒ ed0¬1«       G d2„ d3«      «       Z„ ed0¬1«       G d4„ d5«      «       Z… ed0¬1«       G d6„ d7«      «       Z† ed0¬1«       G d8„ d9«      «       Z‡ ed0¬1«       G d:„ d;«      «       Zˆe3dod<„«       Z‰dpd=„ZŠdqd>„Z‹ ed0¬1«       G d?„ d@«      «       ZŒdrdA„Z�dsdB„ZŽdtdC„Z�dudD„Z�	 	 	 	 dvdE„Z‘	 	 	 	 	 	 	 	 	 	 	 	 dwdF„Z’	 	 	 	 	 	 	 	 	 	 	 	 dxdG„Z“e3dydH„«       Z”dzdI„Z•e4	 	 	 	 	 	 d{dJ„«       Z–	 	 	 	 	 	 d|dK„Z—	 	 	 	 d}dL„Z˜	 	 	 	 d~dM„Z™e#�j4                  dNœ	 	 	 	 	 	 	 ddO„Z›	 	 	 	 d€dP„Zœe#�j4                  dNœ	 	 	 	 	 	 	 d�dQ„Z�	 	 	 	 	 	 d‚dR„Zž	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dƒdS„ZŸ	 	 	 	 	 	 	 	 	 	 	 	 	 	 d„dT„Z 	 	 	 	 	 	 d…dU„Z¡	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d†dV„Z¢	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d‡dW„Z£	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dˆdX„Z¤	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d‰dY„Z¥	 	 	 	 	 	 dŠdZ„Z¦d‹d[„Z§dŒd\„Z¨e©d]k(  r e¨«        yy)�é    )ÚannotationsN)ÚdefaultdictÚ
namedtupleÚOrderedDict)Ú	dataclassÚfield)ÚPath)ÚAnyÚCallableÚLiteralÚTYPE_CHECKINGÚTypeVar)Úassert_never)Úcpp)Ú	translate)ÚBindingÚCppSignatureÚCppSignatureGroupÚDispatcherSignatureÚ
NamedCTypeÚNativeSignatureÚSpecialArgName)Úmethod_with_native_functionÚnative_function_managerÚwith_native_functionÚ with_native_function_and_indices)Úgen_aoti_c_shim_filesÚ*gen_static_dispatch_backend_call_signature)Ú gen_functionalization_definitionÚ"gen_functionalization_registrationÚ.gen_functionalization_view_inverse_declarationÚGenCompositeViewCopyKernel©Úgen_all_vmap_plumbing)ÚArgumentÚBackendIndexÚBackendMetadataÚBaseOperatorNameÚDEFAULT_KERNEL_NAMESPACEÚdispatch_device_mapÚDispatchKeyÚFRAGMENT_NAMESPACESÚFunctionSchemaÚis_cuda_dispatch_keyÚis_generic_dispatch_keyÚis_ufunc_dispatch_keyÚis_xpu_dispatch_keyÚLocationÚNativeFunctionÚNativeFunctionsGroupÚNativeFunctionsViewGroupÚOperatorNameÚOptionalTypeÚ
SchemaKindÚSelfArgumentÚSTRUCTURED_DISPATCH_KEYSÚTensorOptionsArgumentsÚTypeÚVariantÚViewSchemaKind)Úadd_generated_native_functionsÚgen_composite_functional_kernelÚgen_composite_out_kernelÚpre_group_native_functions)ÚSelectiveBuilder)Ú	concatMapÚcontextÚFileManagerÚmake_file_managerÚmapMaybeÚNamespaceHelperÚTarget)Ú
YamlDumperÚ
YamlLoader)ÚSequenceÚTc                  ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )Ú
LineLoaderc                ób   •— t         ‰| �  ||¬«      }|j                  j                  dz   |d<   |S )N)Údeepé   Ú__line__)ÚsuperÚconstruct_mappingÚ
start_markÚline)ÚselfÚnoderR   ÚmappingÚ	__class__s       €úa/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torchgen/gen.pyrV   zLineLoader.construct_mapping†   s5   ø€ Ü‘'Ñ+¨D°tÐ+Ó<ˆà"Ÿo™o×2Ñ2°QÑ6ˆ�
ÑØˆó    )F)Ú__name__Ú
__module__Ú__qualname__rV   Ú__classcell__)r\   s   @r]   rP   rP   …   s   ø„ ÷ñ r^   rP   Ú
ParsedYamlÚnative_functionsÚbackend_indiceszdict[str, ParsedYaml]Ú_GLOBAL_PARSE_NATIVE_YAML_CACHEzdict[str, set[str]]Ú_GLOBAL_PARSE_TAGS_YAML_CACHEc                óv   ‡ — |j                  t        ˆ fd„t        j                  «       D «       d«      |«      }|S )Nc              3  ó8   •K  — | ]  \  }} |‰«      r|–— Œ y ­w©N© )Ú.0ÚcheckÚdeviceÚdispatch_keys      €r]   ú	<genexpr>z1file_manager_from_dispatch_key.<locals>.<genexpr>œ   s%   øè ø€ ò á!�E˜6Ù˜Ô&ô ñùs   ƒÚ )ÚgetÚnextr*   Úitems)ro   Ú
device_fmsÚ
default_fmÚfms   `   r]   Úfile_manager_from_dispatch_keyrx   •   sB   ø€ ð
 
�‰Üóä%8×%>Ñ%>Ó%@ôð
 ó	
ð 	ó

€Bð €Ir^   Fc           	     óä  ‡‡— t        | t        «      sJ ‚g }t        t        «      }| D ]È  }t        |t        «      s
J d|› �«       ‚t        |j	                  d«      t
        «      sJ |«       ‚t        ||d   «      Š|j	                  d«      Š‰€
J d|› �«       ‚t        ˆˆfd„«      5  t        j                  |‰||«      \  }}	|j                  |«       t        j                  ||	«       d d d «       ŒÊ t        |«       t        d„ «      }
|st        ||«       |j                  «       D ].  \  }}t        |ddt!        |«      xs t#        |«      |¬	«      |
|<   Œ0 t%        ||
«      S # 1 sw Y   �ŒGxY w)
Nzexpected to be dict: rT   Úfunczmissed 'func' in c                 ó   •— d‰› d‰ › �S ©Nzin z:
  rk   )ÚfuncsÚlocs   €€r]   ú<lambda>z*parse_native_yaml_struct.<locals>.<lambda>¸   s   ø€ ˜s 3 % u¨U¨GÐ4€ r^   c                 ó>   — t        t        j                  dddi ¬«      S )NTF©ro   Úuse_out_as_primaryÚexternalÚdevice_guardÚindex)r&   r+   Ú	Undefinedrk   r^   r]   r   z*parse_native_yaml_struct.<locals>.<lambda>¿   s"   € ”Ü$×.Ñ.Ø#ØØð ô
€ r^   TFr�   )Ú
isinstanceÚlistr   Údictrr   Úintr2   rE   r3   Ú	from_yamlÚappendr&   Ú
grow_indexÚerror_check_native_functionsr?   rt   r.   r1   rc   )ÚesÚ
valid_tagsÚignore_keysÚpathÚskip_native_fns_genÚrsÚbsÚerz   ÚmÚindicesÚkÚvr}   r~   s                @@r]   Úparse_native_yaml_structr›   ¨   sy  ù€ ô �bœ$ÔÐÐØ!€BÜALÌTÓAR€BØò 	+ˆÜ˜!œTÔ"Ð?Ð&;¸A¸3Ð$?Ó?Ð"Ü˜!Ÿ%™% 
Ó+¬SÔ1Ð4°1Ó4Ð1Ü�t˜Q˜z™]Ó+ˆØ—‘�f“ˆØÐ Ð9Ð$5°a°SÐ"9Ó9Ð ÜÔ4Ó5ñ 	+Ü$×.Ñ.¨q°#°zÀ;ÓO‰GˆD�!Ø�I‰I�dŒOÜ×#Ñ# B¨Ô*÷	+ð 	+ð	+ô ! Ô$ä/:ñ	
ó
0€Gñ Ü& r¨2Ô.Ø—‘“
ò 	
‰ˆˆ1ä!ØØ#Øä-¨aÓ0ÒJÔ4GÈÓ4JØô
ˆ�Š
ð	
ô �b˜'Ó"Ð"÷;	+ñ 	+ús   Â&AE%Å%E/	c                óº  ‡‡— t        | t        «      sJ ‚t        «       }| D ]«  }t        |j                  d«      t        «      sJ |«       ‚t        ||d   «      Š|j                  d«      Št        ˆˆfd„«      5  |j                  «       }|j                  d«      }|j                  dd«      }|dk7  sJ ‚|j                  |«       d d d «       Œ­ |S # 1 sw Y   Œ¹xY w)NrT   Útagc                 ó   •— d‰ › d‰› �S r|   rk   )r~   Útagss   €€r]   r   z(parse_tags_yaml_struct.<locals>.<lambda>ß   s   ø€ ˜s 3 % u¨T¨FÐ3€ r^   Údescrq   )
r‡   rˆ   Úsetrr   rŠ   r2   rE   ÚcopyÚpopÚadd)	r�   r’   r”   r–   Úe_iÚnamer    r~   rŸ   s	          @@r]   Úparse_tags_yaml_structr§   Ø   sÍ   ù€ Ü�bœ$ÔÐÐÜ“5€BØò 
ˆÜ˜!Ÿ%™% 
Ó+¬SÔ1Ð4°1Ó4Ð1Ü�t˜Q˜z™]Ó+ˆØ�u‰u�U‹|ˆÜÔ3Ó4ñ 	Ø—&‘&“(ˆCØ—7‘7˜5“>ˆDØ—7‘7˜6 2Ó&ˆDà˜2’:Ð�:Ø�F‰F�4ŒL÷	ð 	ð	
ð €I÷	ð 	ús   Á9ACÃC	c                óä   — | t         vrLt        | «      5 }t        j                  |t        ¬«      }t        || ¬«      t         | <   d d d «       t         |    S t         |    S # 1 sw Y   t         |    S xY w)N©ÚLoader)r’   )rg   ÚopenÚyamlÚloadrP   r§   )r’   Úfr�   s      r]   Úparse_tags_yamlr¯   é   sq   € ð Ô0Ñ0Ü�$‹Zð 	X˜1Ü—‘˜1¤ZÔ0ˆBÜ2HÈÐRVÔ2WÔ)¨$Ñ/÷	Xô )¨Ñ.Ð.Ô(¨Ñ.Ð.÷		Xô )¨Ñ.Ð.ús   ”0AÁA/)r“   Úloaded_yamlc               óè   — | t         vrVt        |«      }|€0t        | «      5 }t        j                  |t
        ¬«      }d d d «       n|}t        ||| |¬«      t         | <   t         |    S # 1 sw Y   Œ)xY w)Nr©   )r’   r“   )rf   r¯   r«   r¬   r­   rP   r›   )r’   Útags_yaml_pathr‘   r“   r°   r�   r®   r�   s           r]   Úparse_native_yamlr³   ô   s…   € ð Ô2Ñ2Ü$ ^Ó4ˆ
ð ÐÜ�d“ð 5˜qÜ—Y‘Y˜q¬Ô4�÷5ð 5ð ˆBä0HØØØØØ 3ô1
Ô'¨Ñ-ô +¨4Ñ0Ð0÷5ð 5ús   ¡A(Á(A1c           	     óÈ  — i }t        t        «      }| D ]M  }|||j                  j                  <   ||j                  j                  j                     j	                  |«       ŒO | D �]y  }|j
                  �™|j                  |j
                  «      }|€8J |j                  j                  › d|j
                  › d|j
                  › d�«       ‚|j                  s8J |j                  j                  › d|j
                  › d|j
                  › d�«       ‚t        t        j                  «      }h d£}|j                  j                  j                  D ]n  }|j                  |v sŒt        |j                  j                  «      |j                  f|vsŒ@t        d|j                  › d|j                  j                  › d�«      ‚ d	|j                  v s�Œgt        |j                  j                  «      d
k7  s�Œ‹t        |j                  j                  «      dk7  s�Œ¯t        |j                  j                  j                  «      dk7  s�ŒÝ|j                  j                  j                  }|j                   sJ |j                  j                  › d�«       ‚t#        |j$                  d|j&                  «      }	t)        ||	   «      dkD  r�Œ[J |j                  j                  › d|› d�«       ‚ y )Nz0 is marked as a structured_delegate pointing to z, but z is missing.zY is not marked as structured. Consider adding 'structured=True' to the delegated operator>   ©zrandom_.fromÚfrom©Úuniform_r¶   ©Ú!_has_compatible_shallow_copy_typer¶   zArgument name 'z' in function 'z' is a reserved Python keyword.Úinplace_viewÚresize_Ú
resize_as_Úset_z¢ is marked with tag: inplace_view, but it doesn't follow the naming convention for inplace ops - the codegen expects the base name to have a trailing underscore. Fr   zw is marked with tag: inplace_view. The codegen expects there to be a corresponding out-of-place view op with the name 'z/' and matching schema, but it didn't find one. )r   rˆ   rz   r¦   rŒ   Ústructured_delegaterr   Ú
structuredr¡   ÚkeywordÚkwlistÚ	argumentsÚflat_allÚstrÚAssertionErrorrŸ   Úinplacer(   ÚbaseÚdunder_methodÚlen)
r}   Úfunc_mapÚbase_func_mapr®   Údelegate_funcÚPYTHON_RESERVED_KEYWORDSÚEXCLUSION_LISTÚargÚ	base_nameÚout_of_place_base_names
             r]   rŽ   rŽ     sœ  € Ø35€HÜBMÌdÓBS€MØò 2ˆØ !ˆ�—‘—‘ÑØ�a—f‘f—k‘k×&Ñ&Ñ'×.Ñ.¨qÕ1ð2ð ó 3ˆØ× Ñ Ð,Ø$ŸL™L¨×)>Ñ)>Ó?ˆMØ Ð,ð Ø—6‘6—;‘;�-ÐOØ×(Ñ(Ð)¨°×0EÑ0EÐ/FÀlðTóÐ,ð !×+Ò+ð Ø—6‘6—;‘;�-ÐOØ×(Ñ(Ð)¨°×0EÑ0EÐ/Fð GNðOóÐ+ô $'¤w§~¡~Ó#6Ð ò
ˆð —6‘6×#Ñ#×,Ñ,ò 	ˆCØ�x‰xÐ3Ò3Ü˜Ÿ™Ÿ™Ó$ c§h¡hÐ/°~ÒEÜ(Ø)¨#¯(©(¨°?À1Ç6Á6Ç;Á;À-ÐOnÐoóð ð	ð ˜aŸf™fÓ$Ü�A—F‘F—K‘KÓ  IÔ-Ü�A—F‘F—K‘KÓ  LÔ0Ü�A—F‘F—K‘K×$Ñ$Ó%¨Ô/àŸ™Ÿ™×(Ñ(ˆIØ×$Ò$ð Ø—6‘6—;‘;�-ð  qð qóÐ$ô &6Ø—‘  y×'>Ñ'>ó&Ð"ô �}Ð%;Ñ<Ó=ÀÔAð Ø—6‘6—;‘;�-ð  7Ø7@°kÐApðróÐAña3r^   c                ó.  — | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  d	d
«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } d| › d�S )z1Convert a python string into a c++ string literalú\z\\ú"z\"úz\aúz\búz\fú
z\núz\vú	z\t)Úreplace©Úss    r]   Ú
cpp_stringrß   P  s�   € à	�	‰	�$˜Ó€AØ	�	‰	�#�uÓ€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØ	�	‰	�$˜Ó€AØˆqˆc�ˆ8€Or^   c                óÞ   — t        | «      dk(  rg S | D �cg c]  }|j                  ‘Œ c}t        j                  t        j                  t        j
                  t        j                  gz   S c c}w )Nr   )rÊ   ro   r+   ÚCompositeImplicitAutogradÚ%CompositeImplicitAutogradNestedTensorÚCompositeExplicitAutogradÚ&CompositeExplicitAutogradNonFunctional)ÚbackendsÚbackends     r]   Ústatic_dispatch_keysrç   j  s^   € Ü
ˆ8ƒ}˜ÒØˆ	à4<Ö=¨�×$Ó$Ò=Ü×1Ñ1Ü×=Ñ=Ü×1Ñ1Ü×>Ñ>ð	A
ñ 
ð 	
ùÒ=s   •A*c                ó6  — | j                   €|j                  | «      r|j                  S | j                  rt        j
                  S | j                  rt        j                  S | j                  rt        j                  S | j                  rt        j                  S y rj   )r¿   Ú
has_kernelro   Ú&has_composite_explicit_autograd_kernelr+   rã   Ú5has_composite_explicit_autograd_non_functional_kernelrä   Ú&has_composite_implicit_autograd_kernelrá   Ú4has_composite_implicit_autograd_nested_tensor_kernelrâ   )r®   Úbackend_indexs     r]   Úget_static_dispatch_backendrï   v  s‚   € ð 	×ÑÐ(¨M×,DÑ,DÀQÔ,Gð
 ×)Ñ)Ð)Ø	
×	1Ò	1Ü×4Ñ4Ð4Ø	
×	@Ò	@Ü×AÑAÐAØ	
×	1Ò	1Ü×4Ñ4Ð4Ø	
×	?Ò	?Ü×@Ñ@Ð@Ør^   c                óÒ   — |�| j                   ry g }|D ]A  }t        | |«      }|€Œ|j                  d| j                  › d|j	                  «       › d�«       ŒC dj                  |«      S )Nú#include <ATen/ops/Ú_ú_dispatch.h>rÙ   )Úmanual_kernel_registrationrï   rŒ   Ú	root_nameÚlowerÚjoin)r®   rî   Úoutputr…   ro   s        r]   Ústatic_dispatch_ops_headerrù   Š  sx   € ð Ð × <Ò <Øà€FØò ˆÜ2°1°eÓ<ˆØÑ#Ø�M‰MØ% a§k¡k ]°!°L×4FÑ4FÓ4HÐ3IÈÐVõðð �9‰9�VÓÐr^   c                óF   — t        | «      D �cg c]  }d|› d�‘Œ
 c}S c c}w )Nú#include <ATen/úFunctions.h>)rç   )rå   ro   s     r]   Ústatic_dispatch_extra_headersrý   š  s2   € ô 1°Ó:öàð ˜,˜ |Ò4òð ùò s   Žc                ó&  — dd„}t        | j                  «       «      }t        |j                  «       «      }|D ]3  }|j                  j                  t        j
                  k(  sŒ+ ||«      } n t        ||«      }dj                  d„ |D «       «      S )Nc                ó.  — g }| D ]�  }|j                   dk(  rkt        t        t        j                  |j
                  j                  «      |j                   |j                  |j                  ¬«      }|j                  |«       Œ}|j                  |«       Œ� |S )NÚmemory_format)Únctyper¦   ÚdefaultÚargument)
r¦   r   r   r   Ú possibly_redundant_memory_formatr  Útyper  r  rŒ   )Úinput_bindingsÚoutput_bindingsÚbindingÚspl_mem_format_bindings       r]   Úadd_spl_memory_format_bindingz5translate_args.<locals>.add_spl_memory_format_binding©  s‹   € Ø)+ˆØ%ò 	0ˆGØ�|‰|˜Ò.Ü)0Ü%Ü&×GÑGØŸ™×+Ñ+óð !Ÿ™Ø#ŸO™OØ$×-Ñ-ô*Ð&ð  ×&Ñ&Ð'=Õ>à×&Ñ& wÕ/ð	0ð Ðr^   ú, c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrj   ©Úexpr©rl   Úas     r]   rp   z!translate_args.<locals>.<genexpr>Ä  s   è ø€ Ò+ �Q—V•VÑ+ùó   ‚)r  úlist[Binding]Úreturnr  )rˆ   rÃ   r  r¦   r   r  r   r÷   )ÚsigÚcpp_sigr
  Úsrc_bindingsÚgoal_bindingsrÐ   Úexprss          r]   Útranslate_argsr  ¤  sƒ   € ó
ô$ ˜Ÿ™›Ó(€LÜ˜×*Ñ*Ó,Ó-€Mð ò ˆØ�:‰:�?‰?œn×MÑMÓMÙ8¸ÓFˆLÙðô �l MÓ2€EØ�9‰9Ñ+ UÔ+Ó+Ð+r^   c           	     ó&  — t        | |«      }|j                  «       }t        | |«      }|j                  |«      }|r|j                  r|j                  nt
        }|j                  dd«      }d|› d|j                  j                  «       › d|› d|› d�	S )Nú::nativerq   úreturn ú::ú(ú);)	r   r¦   r  Ú
get_kernelÚcpp_namespacer)   rÜ   ro   rö   )	r  r®   rî   r  r¦   r  Úbackend_metadataÚ	kernel_nsÚnss	            r]   Ú%generate_static_dispatch_backend_callr%  Ç  sž   € ô
 9¸¸aÓ@€GØ�<‰<‹>€DÜ˜3 Ó(€EØ$×/Ñ/°Ó2Ðñ Ð 0× >Ò >ð 	×&Ò&ä%ð ð
 
×	Ñ	˜: rÓ	*€BØ�R�D˜˜=×5Ñ5×;Ñ;Ó=Ð>¸bÀÀÀaÈÀwÈbÐQÐQr^   c                óP  — t        j                  |dd¬«      }| j                  r'|j                  j	                  «       r|j
                  }n|j                  }|€J ‚|j                  «       }t        | |«      }t        j                  dd«      }|j                  r+d|› dt        j                  j                  «       › d|› d|› d�	S |j                  r+d|› dt        j                   j                  «       › d|› d|› d�	S |j"                  r+d|› dt        j$                  j                  «       › d|› d|› d�	S |j&                  r+d|› dt        j(                  j                  «       › d|› d|› d�	S d	|› d
dj+                  |D �cg c]  }t-        |j.                  «      ‘Œ c}«      › d�S c c}w )NF©ÚmethodÚfallback_bindingr  rq   r  r  r  r  z5TORCH_CHECK(false, "Static dispatch does not support z forr  z ");)r   Úfrom_native_functionÚsymintrz   Ú
has_symintÚsymint_signatureÚ	signaturer¦   r  r)   rÜ   rê   r+   rã   rö   rë   rä   rì   rá   rí   râ   r÷   rÅ   ro   )	r  r®   re   Úcpp_sigsr  r¦   r  r$  r…   s	            r]   Ú&generate_static_dispatch_fallback_callr0  Ù  sÁ  € ô
 !×5Ñ5Ø	�%¨%ô€Hð ‡z‚z�a—f‘f×'Ñ'Ô)Ø×+Ñ+‰à×$Ñ$ˆØÐÐÐØ�<‰<‹>€DÜ˜3 Ó(€EÜ	!×	)Ñ	)¨*°bÓ	9€BØ×/Ò/Ø˜˜˜Bœ{×DÑD×JÑJÓLÐMÈRÐPTÈvÐUVÐW\ÐV]Ð]_Ð`Ð`Ø	
×	@Ò	@Ø˜˜˜Bœ{×QÑQ×WÑWÓYÐZÐZ\Ð]aÐ\bÐbcÐdiÐcjÐjlÐmÐmØ	
×	1Ò	1Ø˜˜˜Bœ{×DÑD×JÑJÓLÐMÈRÐPTÈvÐUVÐW\ÐV]Ð]_Ð`Ð`Ø	
×	?Ò	?Ø˜˜˜Bœ{×PÑP×VÑVÓXÐYÐY[Ð\`Ð[aÐabÐchÐbiÐikÐlÐlàHÈÈð OØ‡�°ÖA¨ŒC�×"Ñ"Õ#ÒAÓBÐ CÀ4ðKð 	KùÚAs   Å=F#c           	     óh  — t        |«      dk(  s|j                  ry|D �cg c]3  }|j                  |«      s|j                  �|j                  t
        v r|‘Œ5 }}t        |«      dk(  rt        | ||d   «      S t        |«      dk(  rt        | ||«      S | j                  «       D �cg c]f  }t        |j                  t        «      s>t        |j                  t        «      r0|j                  j                  j                  «       r|j                  ‘Œh }}dj!                  |«      }|j"                  j                  j$                  }g }	g }
|�|
j'                  d«       |dk7  r|
j'                  d|› d�«       |	j'                  dd	j!                  |
«      › d
�«       |	j'                  d«       g }|D ]A  }|j'                  d|j                  › d�«       |j'                  dt        | ||«      › d
�«       ŒC t        | ||«      }d}d|j!                  |	«      › d|j!                  |«      › d|› d�S c c}w c c}w )a  
    For a given `NativeFunction`, find out the corresponding backend and dispatch to it. If more than one
    backends exist, fallback to static dispatch by determining dispatch key from inputs.
    Arguments:
        sig: A CppSignature or DispatcherSignature for this native function we want to use.
        f: NativeFunction to generate static dispatch.
        backend_indices: All available backends.
    Return:
        C++ code to call backend-specific functions, e.g., "return at::cpu::add(self, other, scale);"
    r   rq   rS   r  z>DispatchKeySet(c10::computeDispatchKey(dtype, layout, device))z$c10::detail::multi_dispatch_key_set(ú)zDispatchKeySet _dk_set = z | ú;z=DispatchKey _dk = c10::highestPriorityBackendTypeId(_dk_set);zcase DispatchKey::ú:rÛ   z
		ú
    z
    switch (_dk) {
        z
        default:
            z
    }
    )rÊ   rô   ré   r¿   ro   r:   r%  r0  rÃ   r‡   r  r9   r%   r  Úis_tensor_liker¦   r÷   rz   Útensor_optionsrŒ   )r  r®   re   ÚbÚkeysr  Únative_tensor_argsÚtensor_argsÚtensor_optsÚstmtsÚsubexprsÚdispatch_coder…   ÚfallbackÚ	connectors                  r]   Ústatic_dispatchrB  ö  s>  € ô ˆ?Ó˜qÒ  A×$@Ò$@Øð !öàØ�<‰<˜Œ?à×!Ñ!Ð-Ø—‘Ô":Ñ:ò 	
ð€Dð ô ˆ4ƒy�A‚~Ü4°S¸!¸TÀ!¹WÓEÐEÜ	ˆT‹�aŠÜ5°c¸1¸oÓNÐNð —‘“öàÜ�a—j‘j¤,Ô/Ü�a—j‘j¤(Ô+Ø�J‰J�O‰O×*Ñ*Ô,ð	 	
�‹ðÐð ð —)‘)Ð.Ó/€KØ—&‘&×"Ñ"×1Ñ1€Kà€EØ€HØÐØ�‰ØLô	
ð �bÒØ�‰Ð>¸{¸mÈ1ÐMÔNØ	‡L�LÐ.¨u¯z©z¸(Ó/CÐ.DÀAÐHÔIØ	‡L�LÐPÔQà€MØò 
ˆØ×ÑÐ!3°E×4FÑ4FÐ3GÀqÐKÔLØ×ÑØÔ8¸¸aÀÓGÐHÈÐLõ	
ð
ô 6°c¸1¸oÓN€HØ€IðØ‡^�^�EÓÐð 	à	�‰˜Ó	&Ð'ð (àˆJð ðð ùò[ùòs    8H*Â%A+H/T)Úfrozenc                  óF   — e Zd ZU ded<    ee¬«      Zded<   edd„«       Zy)	ÚRegisterSchemarC   Úselector)Údefault_factoryzdict[str, int]Ú
known_tagsc                óÌ  — | j                   j                  |«      sy ddj                  d„ t        |j                  «      D «       «      z   dz   }|dk(  r"dt        t        |j                  «      «      › d�S d}|| j                  vr-t        | j                  «      }|| j                  |<   d	|› d
|› d�}|› dt        t        |j                  «      «      › d| j                  |   › d�S )Nú{r  c              3  ó&   K  — | ]	  }d |› �–— Œ y­w)z	at::Tag::Nrk   )rl   r�   s     r]   rp   z*RegisterSchema.__call__.<locals>.<genexpr>K  s   è ø€ ÒK°S ¨3¨%Ô0ÑKùs   ‚ú}z{}zm.def(z, {});
rq   z const std::vector<at::Tag> tags_z = ú;
z, tags_z);
)
rF  Úis_native_function_selectedr÷   ÚsortedrŸ   rß   rÅ   rz   rH  rÊ   )rY   r®   rŸ   Ú
maybe_tagsÚidxs        r]   Ú__call__zRegisterSchema.__call__G  sÕ   € à�}‰}×8Ñ8¸Ô;ØØ�T—Y‘YÑK¼FÀ1Ç6Á6»NÔKÓKÑKÈcÑQˆØ�4Š<ØœJ¤s¨1¯6©6£{Ó3Ð4°JÐ?Ð?Øˆ
Ø�t—‘Ñ&Ü�d—o‘oÓ&ˆCØ$'ˆD�O‰O˜DÑ!Ø;¸C¸5ÀÀDÀ6ÈÐMˆJØ�˜V¤J¬s°1·6±6«{Ó$;Ð#<¸GÀDÇOÁOÐTXÑDYÐCZÐZ^Ð_Ð_r^   N©r®   r3   r  ú
str | None)	r_   r`   ra   Ú__annotations__r   r‰   rH  r   rR  rk   r^   r]   rE  rE  B  s+   … àÓÙ!&°tÔ!<€J�Ó<à ò`ó !ñ`r^   rE  c                  ó4   — e Zd ZU ded<   ded<   edd„«       Zy)ÚComputeOperatorsú.Literal[Target.DECLARATION, Target.DEFINITION]Útargetúlist[BackendIndex]Ústatic_dispatch_backend_indicesc                óž  — t        j                  |j                  «      }|j                  j                  j	                  «       }| j
                  t        j                  u r d|› d|j                  «       › d|j                  j                  j                  › d|j                  j                  j                  › dt        t        |j                  «      «      › d|j                  dd¬	«      › d|j                  d
d¬	«      › d�S | j
                  t        j                  u �rd|j                  › d|› d|› d|› d|› d|› d�}dD ]ì  }|r>dj                  dg|j                  «       D �cg c]  }|j                  ‘Œ c}z   «      }d
}n9dj                  |j                  «       D �cg c]  }|j                  ‘Œ c}«      }d}|}	|› d|› �}
d|› d|	› d|› d�}|s0t!        | j"                  «      dkD  rt%        ||| j"                  ¬«      }|d|j                  › d|j                  |
|¬	«      › d|› d �z  }Œî |S t'        | j
                  «       y c c}w c c}w )!Nz
struct TORCH_API z {
  using schema = z�;
  using ptr_schema = schema*;
  // See Note [static constexpr char* members for windows NVCC]
  static constexpr const char* name = "aten::z3";
  static constexpr const char* overload_name = "z/";
  static constexpr const char* schema_str = z;
  static ÚcallF)r¦   Úis_redispatching_fnÚ
redispatchTz;
};ú

// aten::z.
static C10_NOINLINE c10::TypedOperatorHandle<z::schema> create_zQ_typed_handle() {
  return c10::Dispatcher::singleton()
      .findSchemaOrThrow(z::name, z::overload_name)
      .typed<z::schema>();
}
)FTr  ÚdispatchKeySetr  z
    static auto op = create_z_typed_handle();
    return op.r  r  r   )re   rÙ   ú {
    z
}
)r   Úfrom_schemarz   r¦   Úunambiguous_namerY  rJ   ÚDECLARATIONr  Úoverload_namerß   rÅ   ÚdefnÚ
DEFINITIONr÷   rÃ   rÊ   r[  rB  r   )rY   r®   r  r¦   Údefnsr^  r  Údispatcher_exprs_strÚmethod_baseÚdispatcher_callÚmethod_nameÚfn_bodys               r]   rR  zComputeOperators.__call__`  sˆ  € ä!×-Ñ-¨a¯f©fÓ5ˆØ�v‰v�{‰{×+Ñ+Ó-ˆà�;‰;œ&×,Ñ,Ñ,ð0Ø�ð Ø—(‘(“*�ð .ð /0¯f©f¯k©k×.>Ñ.>Ð-?ð @1Ø12·±·±×1JÑ1JÐ0Kð L-Ü-7¼¸A¿F¹F»Ó-DÐ,Eð F
Ø
�(‰(˜°Eˆ(Ó
:Ð	;ð <
Ø
�(‰(˜¸$ˆ(Ó
?Ð	@ð Að
ð 
ð �[‰[œF×-Ñ-Ò-ð
Ø
�&‰&ˆð .Ø.2¨VÐ3DÀTÀFð Kà˜˜x¨ vð .ØˆVð ðˆEð (5ò Ð#Ù&Ø+/¯9©9Ø)Ð*¸c¿m¹m»oÖ-N¸¨a¯f«fÒ-NÑNó,Ð(ð #/‘Kà+/¯9©9ÀcÇmÁmÃoÖ5VÀ°a·f³fÒ5VÓ+WÐ(Ø"(�Kà"-�Ø!%  b¨¨Ð6�ðØ!˜Fð #ØÐ˜qÐ!5Ð 6°bð<�ñ
 ,Ü˜D×@Ñ@ÓAÀAÒEô .Ø˜Q°×0TÑ0Tô�Gð ð 
Ø
�&‰&ˆð Ø‡�ˆ{Ð0C€ÓDÐ Eð FØ€Ið ðñ ‘ð3ð> ˆLä˜Ÿ™Õ%ùò= .Oùò 6Ws   Å"IÆI

N©r®   r3   r  rÅ   ©r_   r`   ra   rU  r   rR  rk   r^   r]   rW  rW  [  s"   … à:Ó:Ø%7Ó7à òR&ó !ñR&r^   rW  c                  ó   — e Zd Zedd„«       Zy)ÚComputeFunctionc                ó  — t        j                  |d|j                  ¬«      }|j                  j	                  «       }d}|j                  «       D �]3  }t        j                  |j                  «      }t        |j                  «       |j                  «       «      }dj                  |D �cg c]  }|j                  ‘Œ c}«      }	|j                  rd}
nd}
t        j                  |j                  v rL|d|j                  › d|j!                  «       › d	|j                  j"                  j%                  «       › d
|	› d�	z  }|sŒð|d|
› d|j!                  d¬«      › d	|j                  j"                  j%                  «       › d
|	› d�	z  }�Œ6 |S c c}w )NFr'  rq   r  zc10::SymIntÚint64_tr`  ú
inline ú {
    return at::_ops::ú::call(z);
}zZ
namespace symint {
  template <typename T, typename = std::enable_if_t<std::is_same_v<T, z>>>
  T)Úsuppress_symint_suffixz	);
  }
}
)r   r*  Úmanual_cpp_bindingrz   r,  Ú
signaturesr   rc  r   rÃ   r÷   r  r+  r=   ÚfunctionÚvariantsÚdeclr¦   rd  )rY   r®   Ú	sig_groupr,  Úresultr  Ú
target_sigr  r–   Ú	exprs_strÚ	intlike_ts              r]   rR  zComputeFunction.__call__º  s  € ä%×:Ñ:Ø�e¨a×.BÑ.Bô
ˆ	ð —V‘V×&Ñ&Ó(ˆ
àˆØ×'Ñ'Ó)ó  	ˆCä,×8Ñ8¸¿¹Ó@ˆJÜ˜cŸm™m›o¨z×/CÑ/CÓ/EÓFˆEØŸ	™	°5Ö"9¨a 1§6£6Ò"9Ó:ˆIà�zŠzØ)‘	à%�	ä×Ñ 1§:¡:Ñ-Øð 
Ø
�&‰&ˆð Ø�‰‹
€|ð Ø—f‘f—k‘k×2Ñ2Ó4Ð5°W¸Y¸Kð Hðñ �ò Øð GàGPÀkð RØ‡8�8 4€8Ó(Ð)ð *Ø—f‘f—k‘k×2Ñ2Ó4Ð5°W¸Y¸Kð Hð	ñ ’ð3 	ðB ˆùò; #:s   Â)F
NrS  ©r_   r`   ra   r   rR  rk   r^   r]   rr  rr  ¸  s   „ à ò(ó !ñ(r^   rr  c                  ó4   — e Zd ZU ded<   ded<   edd„«       Zy)ÚComputeTensorMethodrX  rY  rZ  r[  c                ó°  — t         j                  |j                  vry |j                  j	                  «       rJ ‚|j                  j
                  j                  €J ‚t        j                  |d|j                  ¬«      }| j                  t        j                  u r/d}|j                  «       D ]  }||j                  «       › d�z  }Œ |S | j                  t        j                  urt!        | j                  «       d}|j                  «       D ]Â  }t#        j$                  |j                  «      }t'        |j                  «       |j                  «       d¬«      }dj)                  |D �cg c]  }|j*                  ‘Œ c}«      }|d|j                  › d|j-                  d	¬
«      › d|j                  j.                  j1                  «       › d|› d�	z  }ŒÄ |S c c}w )NTr'  rq   z const;
)r(  r  r`  ru  zTensor::)Úprefixz const {
    return at::_ops::rw  ú);
}
)r=   r(  r|  rz   Ú	is_out_fnrÃ   Úself_argr   r*  ry  rY  rJ   re  rz  r}  rh  r   r   rc  r   r÷   r  rg  r¦   rd  )	rY   r®   r~  r  r  r€  r  r–   r�  s	            r]   rR  zComputeTensorMethod.__call__í  s¡  € ä�>‰> §¡Ñ+Øà—6‘6×#Ñ#Ô%Ð%Ð%Ø�v‰v×Ñ×(Ñ(Ð4Ð4Ð4ä%×:Ñ:Ø�d¨Q×-AÑ-Aô
ˆ	ð �;‰;œ&×,Ñ,Ñ,ØˆFØ ×+Ñ+Ó-ò 3�Ø˜SŸX™X›Z˜L¨	Ð2Ñ2‘ð3àˆMà�;‰;œf×/Ñ/Ñ/Ü˜Ÿ™Ô%àˆà×'Ñ'Ó)ò 
	ˆCÜ,×8Ñ8¸¿¹Ó@ˆJÜ˜cŸm™m›o¨z×/CÑ/CÓ/EÈdÔSˆEØŸ	™	°5Ö"9¨a 1§6£6Ò"9Ó:ˆIàð 
Ø
�&‰&ˆð Ø�‰˜
ˆÓ#Ð$ð %Ø—f‘f—k‘k×2Ñ2Ó4Ð5°W¸Y¸Kð Hðñ ‰Fð
	ð ˆùò #:s   Å'G
NrS  rp  rk   r^   r]   r…  r…  è  s    … à:Ó:Ø%7Ó7à ò"ó !ñ"r^   r…  c                  ó   — e Zd Zedd„«       Zy)ÚComputeRedispatchFunctionc                ó  — t        j                  |d|j                  ¬«      }d}|j                  «       D ]Ä  }t	        j
                  |j                  «      }t        |j                  «       |j                  «       «      }dj                  dg|D �cg c]  }|j                  ‘Œ c}z   «      }|d|j                  › d|j                  d¬	«      › d
|j                  j                  j                  «       › d|› d�	z  }ŒÆ |S c c}w )NFr'  rq   r  ra  r`  ru  T)r^  rv  z::redispatch(rˆ  )r   r*  ry  rz  r   rc  rz   r   rÃ   r÷   r  r}  r¦   rd  )	rY   r®   r~  r  r  r€  r  r  r�  s	            r]   rR  z"ComputeRedispatchFunction.__call__  sý   € ô &×:Ñ:Ø�e¨a×.BÑ.Bô
ˆ	ð ˆØ×'Ñ'Ó)ò 
	ˆCÜ,×8Ñ8¸¿¹Ó@ˆJÜ˜cŸm™m›o¨z×/CÑ/CÓ/EÓFˆEØŸ	™	Ð#3Ð"4ÈÖ7NÀ1¸¿»Ò7NÑ"NÓOˆIàð 
Ø
�&‰&ˆð Ø�‰ TˆÓ*Ð+ð ,Ø—f‘f—k‘k×2Ñ2Ó4Ð5°]À9À+ð Nðñ ‰Fð
	ð ˆùò 8Os   ÂC>NrS  rƒ  rk   r^   r]   rŒ  rŒ    s   „ à òó !ñr^   rŒ  c                óŒ   — d| j                   j                  j                  › d| j                   j                  j                  › d�S )Nz{"aten::z", "z"},)rz   r¦   rf  ©r®   s    r]   Úcompute_aten_opr�  5  s5   € à�q—v‘v—{‘{×'Ñ'Ð(¨¨Q¯V©V¯[©[×-FÑ-FÐ,GÀtÐLÐLr^   c                ób  — | j                   sy t        | j                  «      5  t        j                  | «      }t        j
                  | «      }dj                  d„ |D «       «      }| j                  j                  }|€d}d}| j                   r| j                  j                  nd }|�rJg |j                  j                  «       ¢|j                  ‘}|D ��	cg c]  }|D ]  }	|	‘Œ Œ }
}}	|
D �	cg c]  }	|	j                  j                  «       ‘Œ }}	dj                  d„ |D «       «      }d|› d�}|
D �	cg c]#  }	t        j                  |	|	j                  ¬«      ‘Œ% }}	d	j                  d
„ |D «       «      }g }t        |
«      D �]*  \  }}	dj                  |d | dgz   ||dz   d  z   «      }d|› d�}||   j                  d¬«      }|› d|	j                  › d|› d�}d|	j                  › d�}d||   › d|› d�}g }|j!                  |› d�«       t        |
«      D ]V  \  }}	||k(  r |j!                  d|	j                  › d�«       Œ+|j!                  d|	j                  › d|	j                  › d�«       ŒX |j!                  d«       dj                  |«      }|j!                  d|› d |› d!|› d"�«       �Œ- dj                  |«      }dj                  dgt#        |«      z  «      }d#|› d$�}d%}d&|› d'|› d|› d(�}nd)}d)}d*|› d+|› d,|› d-|› d-|› d.|› d/�cd d d «       S c c}	}w c c}	w c c}	w # 1 sw Y   y xY w)0Nr  c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrj   )r}  r  s     r]   rp   z4compute_meta_function_declaration.<locals>.<genexpr>A  s   è ø€ Ò4¨!˜QŸV™VŸXÑ4ùs   ‚zat::impl::MetaBaseÚvoidc              3  ó(   K  — | ]
  }d |› d�–— Œ y­w)zbool z = falseNrk   )rl   Úparams     r]   rp   z4compute_meta_function_declaration.<locals>.<genexpr>S  s   è ø€ ò 8Ø,1�%˜�w˜hÔ'ñ8ùs   ‚z
template <ú>)ÚbindsrM  c              3  ó^   K  — | ]%  }|j                  d ¬«      › d|j                  › �–— Œ' y­w)T©Ú	strip_refú N)Úcpp_typer¦   )rl   Úelems     r]   rp   z4compute_meta_function_declaration.<locals>.<genexpr>^  s3   è ø€ ò 3àð —=‘=¨4�=Ó0Ð1°°4·9±9°+Ô>ñ3ùs   ‚+-ÚtruerS   zprecompute_out<Tr™  z set_r  z value)rÕ   z already set"zstatic_assert(z == false, r  z ret;zret.z	 = value;z	 = this->r3  zreturn ret;rÙ   z
                    z {
                        z
                        z'
                    }
                z'using meta_return_ty = precompute_out <z>;Úmeta_return_tyz
                zG
                struct TORCH_API precompute_out {
                    z;
            };rq   zstruct TORCH_API structured_z
 : public rb  r5  z meta(z);
};
)rÀ   r   ÚoutÚmetar¦   Úmeta_argumentsr÷   Ústructured_inheritsÚprecomputedrÜ   Úvaluesr¤   ÚupperÚargument_typeÚ	enumeraterœ  rŒ   rÊ   )Úgr¦   ÚargsÚargs_strÚparent_classÚmeta_returnr¤  Úprecomputed_valuesÚreplace_listr�  Úprecomputed_elementsÚprecomputed_template_parametersÚprecomputed_template_params_strÚprecompute_template_declÚ#precomputed_elements_with_cpp_typesÚprecomputed_elements_declÚsetter_methodsÚiÚreturn_ty_templatesÚ	return_tyÚelem_cpp_tyr.  Ú
assert_msgÚassert_stmtÚconstruction_stmtsÚjÚconstruction_blockÚsetter_methods_declÚmeta_return_template_paramsÚmeta_return_typedefÚprecomputed_decls                                  r]   Ú!compute_meta_function_declarationrÄ  ;  s(  € Ø�<Š<ØÜ	  §¡Ó	'ñ vÜ�y‰y˜‹|ˆÜ×(Ñ(¨Ó+ˆØ—9‘9Ñ4¨tÔ4Ó4ˆØ—u‘u×0Ñ0ˆØÐØ/ˆLØˆØ+,¯<ª<�a—e‘e×'Ò'¸Tˆâð "R ;×#6Ñ#6×#=Ñ#=Ó#?Ð!QÀÇÁÐ!QÐà);÷$Ø%Èò$Ø@D’ð$Øð$Ð ñ $ð /Cö/Ø&*�—	‘	—‘Õ!ð/Ð+ð /ð /3¯i©iñ 8Ø5Tô8ó /Ð+ð *4Ð4SÐ3TÐTUÐ'VÐ$ð
 1ö3àô ×(Ñ(¨°T·Y±YÖ?ð3Ð/ð 3ð
 ).¯
©
ñ 3à?ô3ó )Ð%ð  ˆNÜ$Ð%9Ó:ó 2‘��4ð '+§i¡iØ3°B°QÐ7Ø�hñà5°a¸!±e°gÐ>ñ?ó'Ð#ð
 .Ð.AÐ-BÀ!ÐD�	ØAÀ!ÑD×MÑMØ"ð Nó �ð  )˜k¨¨t¯y©y¨k¸¸;¸-ÀwÐO�	ð  ! §¡ ¨=Ð9�
Ø .Ð/NÈqÑ/QÐ.RÐR]Ð^hÐ]iÐikÐl�ð &(Ð"Ø"×)Ñ)¨Y¨K°uÐ*=Ô>ä(Ð)=Ó>ò ‘G�A�tØ˜A’vØ*×1Ñ1°D¸¿¹¸À9Ð2MÕNà*×1Ñ1Ø" 4§9¡9 +¨Y°t·y±y°kÀÐCõð	ð #×)Ñ)¨-Ô8Ø%)§Y¡YÐ/AÓ%BÐ"à×%Ñ%ðØ�Kð  Ø$˜ð &Ø+Ð,ð -ðöðW2ðf #'§)¡)¨NÓ";Ðð +/¯)©)Ø�œ3Ð>Ó?Ñ?ó+Ð'ð
 %LÐLgÐKhÐhjÐ"kÐØ*ˆKð$Ø)Ð*ð +à(Ð)ð *Ø.Ð/ð 0ð	 Ñð #%ÐØ!ÐðØ!˜F *¨\¨Nð ;ØÐð ØÐð Ø€M�˜�zð "ð	÷avñ vùó$ùò/ùò3÷7vð vús7   £B3L%ÃLÃ&L%Ã-!LÄ$L%Ä2(L ÅF1L%ÌL%Ì%L.c                óþ   — t        | j                  j                  j                  «      }|j                  d«      s|j	                  d«      ry| j                  j
                  j                  €y|j                  | «      S )NÚ_likeÚnew_F)rÅ   rz   r¦   ÚendswithÚ
startswithrÃ   r7  rN  )r®   rF  r¦   s      r]   Úneeds_backend_selectrÊ  ·  s^   € Üˆq�v‰v�{‰{×ÑÓ €DØ‡}�}�WÔ §¡°Ô!8ØØ‡v�v×Ñ×&Ñ&Ð.ØØ×/Ñ/°Ó2Ð2r^   c                  ó4   — e Zd ZU ded<   ded<   edd„«       Zy)ÚComputeBackendSelectz/Literal[Target.DEFINITION, Target.REGISTRATION]rY  rC   rF  c                óJ  — t        || j                  «      sy t        j                  |j                  «      }t        |j                  d¬«      }|j                  «       D �cg c]B  }t        |j                  t        «      r&|j                  j                  j                  «       r|‘ŒD }}t        j                  |j                  «      }|}|j                  «       }d}	| j                  t         j"                  u rÙ|rH|j                  j                  j%                  «       sJ ‚dj'                  d„ |D «       «      }
d|	› d|
› d�}n,|j                  j                  j%                  «       rJ ‚d	|	› d
�}d|j                  › d|j)                  |«      › d|› d|j                  j                  j+                  «       › ddj'                  d„ |D «       «      › d�S | j                  t         j,                  u rd|j                  j                  › d|› d�S t/        | j                  «       y c c}w )NT©r+  z.c10::computeDispatchKey(dtype, layout, device)r  c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrj   ©r¦   r  s     r]   rp   z0ComputeBackendSelect.__call__.<locals>.<genexpr>è  s   è ø€ Ò'K°1¨¯­Ñ'Kùr  z-DispatchKeySet _dk_set = c10::DispatchKeySet(z() | c10::detail::multi_dispatch_key_set(z³);
DispatchKeySet _dk_mask = c10::DispatchKeySet(DispatchKeySet::FULL_AFTER, DispatchKey::BackendSelect);
DispatchKeySet _dk = c10::impl::computeDispatchKeySet(_dk_set, _dk_mask);z)DispatchKeySet _dk = c10::DispatchKeySet(r  z	// aten::z
C10_ALWAYS_INLINE
z {
  z
  return at::_ops::z::redispatch(
      _dk, c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrj   r  r  s     r]   rp   z0ComputeBackendSelect.__call__.<locals>.<genexpr>ø  s   è ø€ Ò7 �a—f•fÑ7ùr  rˆ  zm.impl("aten::z", TORCH_FN(z));)rÊ  rF  Únativer¦   rz   r   rÃ   r‡   r  r%   r  r6  r   rc  r  rY  rJ   rh  Úhas_tensor_argr÷   rg  rd  ÚREGISTRATIONr   )rY   r®   r¦   Ú
native_sigr  r:  Údispatcher_sigr  Údispatcher_exprsro   r;  Ú
compute_dks               r]   rR  zComputeBackendSelect.__call__Ë  sý  € ä# A t§}¡}Ô5Øä�{‰{˜1Ÿ6™6Ó"ˆä$ Q§V¡V°DÔ9ˆ
ð  ×)Ñ)Ó+ö
àÜ˜!Ÿ*™*¤hÔ/°A·J±J·O±O×4RÑ4RÔ4Tò ð
Ðð 
ô -×8Ñ8¸¿¹Ó@ˆð ˆØ)×/Ñ/Ó1ÐØGˆà�;‰;œ&×+Ñ+Ñ+ñ
 "Ø—v‘v×'Ñ'×6Ñ6Ô8Ð8Ð8Ø"Ÿi™iÑ'KÐ8JÔ'KÓK�ð".Ø.:¨^Ð;cÐdoÐcpð qJðM‘
ð
 Ÿ6™6×+Ñ+×:Ñ:Ô<Ð<Ð<à?À¸~ÈRÐPð ð
Ø
�&‰&ˆð à‡�ˆ$ƒÐ ð Ø€,ð Ø—F‘F—K‘K×0Ñ0Ó2Ð3ð 4Ø�I‰IÑ7Ð&6Ô7Ó7Ð8ð 9ðð ð �[‰[œF×/Ñ/Ñ/Ø% a§f¡f§k¡k ]°,¸t¸fÀCÐJÐJä˜Ÿ™Õ%ùòU
s   Á AH NrS  rp  rk   r^   r]   rÌ  rÌ  Ã  s"   … à;Ó;ð Óà ò2&ó !ñ2&r^   rÌ  c                ó�   — d„ t         _        dd„}t        j                  t        |«       t	        j
                  | dt         d¬«      S )Nc                 ó   — y)NTrk   )rY   Údatas     r]   r   zformat_yaml.<locals>.<lambda>
  s   � r^   c                ó@   — | j                  |j                  «       «      S rj   )Úrepresent_dictrt   )ÚdumperrÛ  s     r]   Údict_representerz%format_yaml.<locals>.dict_representer  s   € Ø×$Ñ$ T§Z¡Z£\Ó2Ð2r^   Fg    eÍÍA)Údefault_flow_styleÚDumperÚwidth)rÞ  r
   rÛ  r
   r  r
   )rK   Úignore_aliasesÚadd_representerr   r¬   Údump)rÛ  rß  s     r]   Úformat_yamlræ    s9   € á 7„JÔó3ô ×Ñœ{Ð,<Ô=ô �9‰9�T¨e¼JÈcÔRÐRr^   c                óŽ   — | dk(  ry| dk(  ry	 t        | «      S # t        $ r" 	 t        | «      cY S # t        $ r | cY cY S w xY ww xY w)Nrž  TÚfalseF)rŠ   Ú
ValueErrorÚfloatrÝ   s    r]   Úpythonify_defaultrë    sU   € ØˆF‚{ØØ	
ˆgŠØðÜ�1‹vˆøÜò ð	Ü˜“8ŠOøÜò 	ØŒHð	úðús'   Ž
 ™	A£
0­A°A »A¿A Á Ac                ó¸   — t        | t        «      rt        | j                  «      S t	        | «      dk(  ryt        j                  | ddd¬«      j                  «       S )NÚTensorz
at::TensorFÚ__placeholder__)Úmutabler—  r+  )r‡   r7   Údynamic_typer�  rÅ   r   Úargumenttype_typerœ  )Úts    r]   rð  rð  3  sP   € Ü�!”\Ô"Ü˜AŸF™FÓ#Ð#ô ˆ1ƒv�ÒØä× Ñ Ø	�5Ð 1¸%ôç�hƒjðr^   c                ó˜   — dg}t         j                  | v r|j                  d«       t         j                  | v r|j                  d«       |S )Nr<   rí  Ú	namespace)r=   r(  rŒ   r{  )r|  Ú	method_ofs     r]   Úcompute_method_of_yamlrö  @  sG   € ð �€IÜ‡~�~˜Ñ!Ø×Ñ˜Ô"Ü×Ñ˜8Ñ#Ø×Ñ˜Ô%ØÐr^   c                ó  — i }t        j                  | «      }g }t        t        | j                  j
                  |«      «      D ]Ä  \  }\  }}t        |j                  «      |t        j                  |d¬«      j                  «       dœ}|j                  rc|j                  |d<   | j                  j                  «       r:|j                  || j                  j                  j                  |   j                  <   |j                  |«       ŒÆ ||fS )NFrÎ  )rð  r¦   r  Ú
field_name)r   Úreturn_namesr¨  Úziprz   Úreturnsrð  r  Úreturn_typerœ  r¦   r‰  rÃ   r   rŒ   )r®   Úname_to_field_nameÚnamesrû  r·  Úrr¦   Úrets           r]   Úcompute_returns_yamlr  K  så   € ðT *,Ðô ×Ñ˜QÓ€EØ€GÜ!¤# a§f¡f§n¡n°eÓ"<Ó=ò ‰ˆ‰9ˆAˆtä(¨¯©Ó0Øä—O‘O A¨eÔ4×=Ñ=Ó?ñ	
ˆð �6Š6à !§¡ˆC�ÑØ�v‰v×ÑÔ!ØCDÇ6Á6Ð" 1§6¡6×#3Ñ#3×#7Ñ#7¸Ñ#:×#?Ñ#?Ñ@à�‰�sÕðð  Ð&Ð&Ð&r^   c               óT  — t        | j                  t        «      r:d dd| j                  | j                  ddœ}| j
                  �| j
                  |d<   |S t        | j                  t        «      rt        ‚t        | j                  t        «      rt        | j                  ||||¬«      S y )Nzat::TensorOptionsFT)Ú
annotationrð  Úis_nullabler¦   r  Ú
kwarg_onlyr  ©Úschema_orderÚkwarg_only_setÚout_arg_setrý  )
r‡   r  r;   r¦   r  r  r9   rÆ   r%   Úcompute_argument_yaml)Úcpp_ar  r  r	  rý  rÐ   s         r]   Úcompute_cpp_argument_yamlr  Ž  s™   € ô �%—.‘.Ô"8Ô9àØ/Ø Ø—J‘JØ—J‘JØñ"
ˆð �=‰=Ð$Ø"Ÿ]™]ˆC�	‰NØˆ
Ü	�E—N‘N¤LÔ	1ÜÐÜ	�E—N‘N¤HÔ	-Ü$Ø�N‰NØ%Ø)Ø#Ø1ô
ð 	
ð 
.r^   c          	     óÆ  — | j                   rt        | j                   «      nd t        | j                  «      | j                  j	                  «       | j
                  t        j                  | dd¬«      j                  «       dœ}| j                  �8t        t        j                  | j                  | j                  d¬«      «      |d<   | j
                  |v rd|d<   | j
                  |v r*d|d	<   d|d
<   | j
                  |v r|| j
                     |d<   | j                  j                  «       }|�3|j                  �'t        |j                  «      dk7  r|j                  |d<   |S )Nrî  F)r—  r+  )r  rð  r  r¦   r  rÎ  r  Tr  rø   Úallocaterø  ÚboolÚsize)r  rÅ   rð  r  r  r¦   r   r§  rœ  r  rë  Údefault_exprÚis_list_liker  r�  )r  r  r  r	  rý  rÐ   Úls          r]   r
  r
  ®  s+  € ð ,-¯<ª<”c˜!Ÿ,™,Ô'¸TÜ$ Q§V¡VÓ,Ø—v‘v×)Ñ)Ó+Ø—‘ä×!Ñ! !Ð+<ÀUÔK×TÑTÓVñ€Cð 	‡y�yÐÜ*Ü×Ñ˜QŸY™Y¨¯©°uÔ=ó
ˆˆI‰ð 	‡v�v�ÑØ ˆˆLÑØ‡v�v�ÑØˆˆH‰ØˆˆJ‰à�6‰6Ð'Ñ'Ø 2°1·6±6Ñ :ˆC�Ñð 	
�‰×ÑÓ€AØ€}˜Ÿ™Ð+´°A·F±F³¸vÒ0EØ—f‘fˆˆF‰Ø€Jr^   c                ój  — t        | «      \  }}| j                  j                  j                  D �ch c]  }|j                  ’Œ }}| j                  j                  j
                  D �ch c]  }|j                  ’Œ }}t        j                  | dd¬«      }|j                  j                  «       }|D �cg c]  }t        |d|||¬«      ‘Œ }	}t        | j                  j                  «       «      }
|
D �cg c]  }t        |d|||¬«      ‘Œ }}|
D ��cg c]6  }t        j                  |dt        «       ddd¬«      D ]  }|j                   ‘Œ Œ8 }}}t        j"                  | j                  j$                  d¬«      j'                  «       }|› ddj)                  |«      › d	�}t+        d
„ |D «       «      xr t,        j.                  | j0                  v}t3        dt        j                  | j                  «      fdt5        | j                  j                  j                  «      fdt5        | j                  j                  j6                  «      fd| j8                  fd| j:                  �| j:                  ndfdd| j                  › �fd|	fd|fd|fdt=        | j0                  «      fdd| j>                  €dn| j>                  fd|fd| j                  j                  j                  j@                  fd|fd| jB                  fd| jD                  fddd | jF                  fg«      S c c}w c c}w c c}w c c}w c c}}w )!NFr'  r  T)r(  Úcpp_no_default_argsÚfaithfulr+  Úhas_tensor_optionsrÎ  z (r  r2  c              3  óP   K  — | ]  }t        |j                  t        «      –— Œ  y ­wrj   )r‡   r  r;   r  s     r]   rp   z+compute_declaration_yaml.<locals>.<genexpr>
  s   è ø€ ÒM¸qŒJ�q—z‘zÔ#9×:ÑMùs   ‚$&r¦   Úoperator_namerf  rô   Úcategory_overriderq   Úschema_stringúaten::rÃ   Úschema_order_cpp_signatureÚschema_order_argumentsrõ  )ÚmoderÒ  Úpython_modulerû  rÇ   Úis_factory_methodÚabstractr„   )Úwith_gilF)Ú
deprecatedFÚhas_math_kernel)$r  rz   rÃ   Úflat_kwarg_onlyr¦   r   r   r*  r.  r  rˆ   r  r
  r   r  r¡   r  Úreturns_typerû  rœ  r÷   Úanyr=   r(  r|  r   rÅ   rf  rô   r  rö  r   rÇ   Úis_abstractr„   rì   )r®   rû  rý  r  r  r	  r~  Úcpp_argsr  rÃ   Úschema_order_jit_argumentsr  rÿ  Úcpp_schema_order_typesÚcpp_returnsr  r!  s                    r]   Úcompute_declaration_yamlr.  Ò  s2  € ä"6°qÓ"9Ñ€GÐð '(§f¡f×&6Ñ&6×&FÑ&FÖG �a—f“fÐG€NÐGØ#$§6¡6×#3Ñ#3×#7Ñ#7Ö8˜a�1—6“6Ð8€KÐ8ä!×6Ñ6Ø	�%¨%ô€Ið ×"Ñ"×,Ñ,Ó.€Hð ö	ð ô 	"ØØØ)Ø#Ø1ö	
ð	€Ið 	ô "& a§f¡f×&CÑ&CÓ&EÓ!FÐð ,ö	ð ô 	ØØØ)Ø#Ø1ö	
ð	Ðð 	ð ,÷ð Ü—‘ØØÜ #£ØØØ$ô
ò	ð ð 	
�‹ðàðÐñ ô ×"Ñ" 1§6¡6§>¡>¸%Ô@×IÑIÓK€KØ$/ =°°4·9±9Ð=SÓ3TÐ2UÐUVÐ!WÐô 	ÑMÀHÔMÓMò 	-Ü�N‰N !§*¡*Ð,ð ô
 à”S—X‘X˜aŸf™fÓ%Ð&Øœc !§&¡&§+¡+×"2Ñ"2Ó3Ð4Øœc !§&¡&§+¡+×";Ñ";Ó<Ð=Ø)¨1×+GÑ+GÐHà#Ø'(×':Ñ':Ð'F�×#Ò#ÈBðð   q§v¡v hÐ/Ð0Ø˜)Ð$Ø)Ð+EÐFØ%Ð'=Ð>ØÔ0°·±Ó<Ð=ØØ A§O¡OÐ$;™bÀÇÁÐQØ˜Ð Ø˜Ÿ™Ÿ™×(Ñ(×0Ñ0Ð1Ø Ð"3Ð4Ø˜Ÿ™Ð'Ø˜QŸ^™^Ð,ØØ!Ø × HÑ HÐIð/	
óð ùòm HùÚ8ùò	ùò	ùós   ±LÁ(L Â3L%Ã3L*Ä;L/c                óî   — | j                   xs | j                  d uxrX | j                  j                  «       t        j
                  k(  xs+ | j                  j                  «       t        j                  k(  S rj   )rÀ   r¿   rz   Úkindr8   Ú
functionalrÇ   r�  s    r]   Ú"has_autogenerated_composite_kernelr2  ,  sU   € Ø�L‰LÒ=˜A×1Ñ1¸Ð=ò Ø	�‰�‰‹œ×.Ñ.Ñ.ÒU°!·&±&·+±+³-Ä:×CUÑCUÑ2Uðr^   c           
     ó(  — t        j                  | j                  «      }t        j                  | j                  j                  «      j                  «       }t        j                  | j                  «      }dj                  d„ |D «       «      }d| j                  › �t        |j                  «       D ��ch c]  \  }}|j                  | «      sŒ|’Œ c}}t        j                  hk7  xrV |j                  «       D ��ch c]  \  }}|j                  | «      sŒ|’Œ c}}t        j                  t        j                  hk7  «      t        | j                  xs t        | «      «      dœ}|› d|› d|› dt!        j"                  |«      › d�S c c}}w c c}}w )	Nr  c              3  óX   K  — | ]"  }|j                  «       j                  «       –— Œ$ y ­wrj   )Ú
no_defaultr}  r  s     r]   rp   z4compute_registration_declarations.<locals>.<genexpr>9  s   è ø€ Ò=°1˜Ÿ™›×,Ñ,×.Ñ=ùs   ‚(*r  )ÚschemaÚdispatchr  r›  r  z); // rÙ   )Ú
dispatcherr¦   rz   r'  rû  rœ  rÃ   r÷   rÅ   rt   ré   r+   rá   râ   Úhas_composite_kernelr2  ÚjsonÚdumps)	r®   re   r¦   r'  rª  r«  r™   rš   Úcomment_datas	            r]   Ú!compute_registration_declarationsr=  2  sP  € ô �?‰?˜1Ÿ6™6Ó"€DÜ×*Ñ*¨1¯6©6¯>©>Ó:×CÑCÓE€LÜ×Ñ §¡Ó'€DØ�y‰yÑ=¸Ô=Ó=€Hà˜1Ÿ6™6˜(Ð#äØ*×0Ñ0Ó2×F‘4�1�a°a·l±lÀ1µoŠQÓFÜ×5Ñ5Ð6ñ7ò à.×4Ñ4Ó6×J‘t�q˜!¸!¿,¹,Àq½/’ÓJä×5Ñ5Ü×AÑAðñó
ô �q×-Ñ-ÒVÔ1SÐTUÓ1VÓWñ$€Lð ˆ~˜Q˜t˜f A h Z¨v´d·j±jÀÓ6NÐ5Oð Pð ð ùó GùãJs   Â4FÃFÃ=FÄFc                óÊ   — | �	|�J d«       ‚d }| �t        | «      }|�t        j                  |dd«      }|S |�t        j                  |«      }|S t        j                  «       }|S )NzhBoth provided_op_registration_allowlist and op_selection_yaml_path can NOT be provided at the same time.TF)r¡   rC   Ú&from_legacy_op_registration_allow_listÚfrom_yaml_pathÚget_nop_selector)Ú"provided_op_registration_allowlistÚop_selection_yaml_pathÚop_registration_allowlistrF  s       r]   Úget_custom_build_selectorrE  S  s™   € ð
 	+Ð6Ø"Ð.ðð	ó	ð ð 26ÐØ)Ð5Ü$'Ð(JÓ$KÐ!à Ð,Ü#×JÑJØ%ØØó
ˆð €Oð 
 Ð	+Ü#×2Ñ2Ð3IÓJˆð €Oô $×4Ñ4Ó6ˆà€Or^   c                ó¦  — 	 	 	 	 dd„}t        t        «      }| D ]“  }|j                  j                  «       }|j                  }|t
        j                  k(  r,|j                  j                  «       }|||   vsJ ‚|||   |<   Œh|||   vsJ |› d||   j                  «       › �«       ‚|||   |<   Œ• t        t        ||j                  «       «      «      S )Nc                ód  — g }t         j                  | v r|| j                  t         j                  «      }| j                  t         j                  d «      }| j                  t        j
                  d «      }|j                  t        |||¬«      «       |j                  | j                  «       «       |S )N)ÚviewÚ	view_copyÚview_inplace)
r>   Úaliasingr£   Úaliasing_inplacer8   r1  rŒ   r5   Úextendr¥  )Údr}   rH  rJ  rI  s        r]   Úmaybe_create_view_groupzEget_grouped_by_view_native_functions.<locals>.maybe_create_view_groupu  s�   € ð BDˆÜ×"Ñ" aÑ'Ø—5‘5œ×0Ñ0Ó1ˆDØŸ5™5¤×!@Ñ!@À$ÓGˆLØŸ™œj×3Ñ3°TÓ:ˆIà�L‰LÜ(ØØ'Ø!-ôôð 	�‰�Q—X‘X“ZÔ Øˆr^   z already in )rN  z1dict[ViewSchemaKind | SchemaKind, NativeFunction]r  z/list[NativeFunction | NativeFunctionsViewGroup])r   r‰   rz   Úview_signatureÚview_schema_kindr>   Únon_aliasingr0  r9  rˆ   rD   r¥  )rd   rO  Úgrouped_by_viewsr®   r6  Ú	view_kindr0  s          r]   Ú$get_grouped_by_view_native_functionsrU  r  s  € ðØ<ðà	8óô. 	”DÓð ð ò 4ˆØ—‘×&Ñ&Ó(ˆØ$%×$6Ñ$6ˆ	ð
 œ×3Ñ3Ò3Ø—6‘6—;‘;“=ˆDØÐ/°Ñ7Ñ7Ð7Ð7Ø-.Ð˜VÑ$ TÒ*àÐ$4°VÑ$<Ñ<ð Ø�+˜\Ð*:¸6Ñ*B×*GÑ*GÓ*IÐ)JÐKóÐ<ð 34Ð˜VÑ$ YÒ/ð4ô" ”	Ð1Ð3C×3JÑ3JÓ3LÓMÓNÐNr^   c           	     ó€   — 	 	 	 	 dd„}t        | «      }t        t        |t        |j                  «       «      «      «      S )Nc                ó¬   — t        j                  | «      }|€;t        d„ | j                  «       D «       «      rJ ‚t	        | j                  «       «      S |gS )Nc              3  ó8   K  — | ]  }d |j                   v –— Œ y­w)Ú	generatedN)rŸ   ©rl   r®   s     r]   rp   zJget_grouped_native_functions.<locals>.flatten_pre_group.<locals>.<genexpr>«  s   è ø€ ÒE°Q˜;¨!¯&©&Ô0ÑEùs   ‚)r4   Ú	from_dictr(  r¥  rˆ   )rN  rÿ  s     r]   Úflatten_pre_groupz7get_grouped_native_functions.<locals>.flatten_pre_group¤  sM   € ô !×*Ñ*¨1Ó-ˆØˆ9ô ÑE¸!¿(¹(»*ÔEÔEÐEÐEÜ˜Ÿ™›
Ó#Ð#à�3ˆJr^   )rN  z dict[SchemaKind, NativeFunction]r  ú/Sequence[NativeFunction | NativeFunctionsGroup])rB   rˆ   rD   r¥  )rd   r\  Úpre_grouped_native_functionss      r]   Úget_grouped_native_functionsr_  ¡  sL   € ð
Ø+ð
à	8ó
ô $>Ð>NÓ#OÐ ÜÜÐ#¤TÐ*F×*MÑ*MÓ*OÓ%PÓQóð r^   )Únative_function_decl_genc                ó†  — t        t        «      }| D ]¬  }t        «       }t        «       }|j                  «       D ]ƒ  \  }}|j	                  |«      }	|	r/|	j
                  }
|j                  |«       |j                  |
«       nt        }
t        |«      dk  sJ d|› d|› �«       ‚||
   j                   |||«      «       Œ… Œ® |S )NrS   z6Codegen only supports one namespace per operator, got z from )
r   rˆ   r¡   rt   r   r!  r¤   r)   rÊ   rM  )Úgrouped_native_functionsre   r`  Úns_grouped_kernelsr®   Únative_function_namespacesÚdispatch_keysro   Úbackend_idxr"  rô  s              r]   Úget_ns_grouped_kernelsrg  ·  sá   € ô 0;¼4Ó/@ÐØ%ò ˆÜ%(£UÐ"Ü›ˆØ)8×)>Ñ)>Ó)@ò 	Ñ%ˆL˜+Ø*×5Ñ5°aÓ8ÐÙØ,×:Ñ:�	Ø×!Ñ! ,Ô/Ø*×.Ñ.¨yÕ9ä4�	ÜÐ1Ó2°aÒ7ð ØHÐIcÐHdÐdjÐkxÐjyÐzóÐ7ð ˜yÑ)×0Ñ0Ù(¨¨KÓ8õñ	ðð" Ðr^   c           
     ó0  — g }d}| j                  «       D ]~  \  }}t        |dd¬«      }t        t        j                  |«      «      }|j                  d|j                  › d|j                  |«      › d|j                  › d�j                  |«      «       Œ€ |S )NrÙ   rq   é   ©Únamespace_strÚentity_nameÚ	max_levelú	
        )
rt   rI   rˆ   r   ÚfromkeysrM  Úprologuer÷   ÚepilogueÚsplit)rc  ÚdeclarationsÚnewlinerô  ÚkernelsÚ	ns_helperÚordered_kernelss          r]   Ú8get_native_function_declarations_from_ns_grouped_kernelsrx  Ô  s¶   € ð !€LØ€GØ0×6Ñ6Ó8ò 
Ñˆ	�7Ü#Ø#ØØô
ˆ	ô œ{×3Ñ3°GÓ<Ó=ˆØ×ÑðØ
×ÑÐ ð Ø‡�ˆoÓÐ ð  Ø
×ÑÐ ð 	ð÷ ‰E�'‹Nõ	
ð
ð  Ðr^   c                ó6   — t        | ||¬«      }t        |¬«      S )a¾  
    Generate kernel declarations, in `NativeFunction(s).h`.
    :param grouped_native_functions: a sequence of `NativeFunction` or `NativeFunctionGroup`.
    :param backend_indices: kernel collections grouped by dispatch key.
    :param native_function_decl_gen: callable to generate kernel declaration for each `NativeFunction`.
    :return: a list of string, from the string with all declarations, grouped by namespaces, split by newline.
    ©rb  re   r`  )rc  )rg  rx  )rb  re   r`  rc  s       r]   Ú get_native_function_declarationsr{  î  s+   € ô  0Ø!9Ø'Ø!9ôÐô
 DØ-ôð r^   c                ó>  — |j                  | «      }|rwd|j                  v siJ dt        | t        «      r| j                  j
                  n| j                  j                  j
                  › d|j                  › d|j                  › d�«       ‚|r|j                  S t        S )Nr  zThe kernel for function z with dispatch key z has a namespace z% and it's not ending with '::native'.)	r   r!  r‡   r3   rz   r¦   r1  ro   r)   )r®   rf  r"  s      r]   Úget_kernel_namespacer}    s¦   € ð #×-Ñ-¨aÓ0ÐÙ :Ð1A×1OÑ1OÑ#Oð Ø
"´*¸QÄÔ2O 1§6¡6§;¢;ÐUV×UaÑUa×UfÑUf×UkÑUkÐ"lð mØ(×5Ñ5Ð6Ø
Ð,×:Ñ:Ð;Ð;`ð	bóÐOñ +;Ð×&Ñ&ðÜ@Xðr^   c        	        ó   ‡‡‡‡‡‡‡— g }	t        t        «      Št        t        «      Št        t        «      }
d}t        j                  |t
        j                  |||d ‰¬«      }t        j                  |t
        j                  |||d ‰¬«      }t        j                  |t
        j                  |||d ‰¬«      }|D ]»  }t        ||¬«      j                  dd«      Š‰‰   j                   ||«      «       ‰‰   j                   ||«      «       t        |t        «      r|j                  n|j                  j                  }||
‰   vrt        t        «      |
‰<   |
‰   |   j                   ||«      «       Œ½ ‰D ]’  Št!        ‰‰   «      dk(  rŒt#        ‰¬«      ŠdŠ|
‰   D ]/  }|
‰   |   sŒ‰d|› d	‰› d
|j%                  |
‰   |   «      › d�z  ŠŒ1 |	j                  | j'                  dˆˆˆˆˆˆˆfd„«      j)                  |«      «       Œ” |	S )NrÙ   ©Úrocmr+  Úclass_method_nameÚskip_dispatcher_op_registration©r®   rf  r  rq   r   )rk  z
TORCH_LIBRARY_IMPL(r  z, m) {
    z
}zRegisterDispatchDefinitions.inic                 óp   •— ‰j                   ‰j                  ‰ ‰   ‰rdn‰d‰j                  «       ‰‰   dœS )Nrq   )Úns_prologueÚns_epilogueÚdispatch_anonymous_definitionsÚ"static_init_dispatch_registrationsÚdeferred_dispatch_registrationsÚdispatch_namespaceÚdispatch_namespaced_definitions)rp  rq  rö   )Úanonymous_definitionsro   Úkernel_namespaceÚns_definitionsrv  Úregistration_bodyr‚  s   €€€€€€€r]   r   z1get_native_function_definitions.<locals>.<lambda>g  sL   ø€ Ø#,×#5Ñ#5Ø#,×#5Ñ#5Ø6KØ(ñ7ñ 7ñ ;=à*Ø79Ø*6×*<Ñ*<Ó*>Ø7EÐFVÑ7Wñ€ r^   )r   rˆ   r‰   ÚdestÚRegisterDispatchKeyrJ   ÚNAMESPACED_DEFINITIONÚANONYMOUS_DEFINITIONrÔ  r}  rÜ   rM  r‡   r3   rô  r1  rÊ   rI   r÷   Úsubstitute_with_templaterr  )rw   rb  ro   rf  rF  r€  r+  r‚  Úgen_dispatch_helpersÚdefinitionsÚregistrationsrt  Úns_genÚanonymous_genÚreg_genr®   rô  rŒ  r�  rŽ  rv  r�  s     `    `         @@@@@r]   Úget_native_function_definitionsr›    s`  þ€ ð  €KÜ+6´tÓ+<€NÜ2=¼dÓ2CÐÜ5@ÄÓ5F€MØ€GÜ×%Ñ%ØÜ×$Ñ$ØØØØØ(Gô€Fô ×,Ñ,ØÜ×#Ñ#ØØØØØ(Gô€Mô ×&Ñ&ØÜ×ÑØØØØØ(Gô€Gð &ò 
ˆÜ/°!ÀÔM×UÑUØ˜ó
Ðð 	Ð'Ñ(×/Ñ/Ù�1‹Iô	
ð 	Ð.Ñ/×6Ñ6Ù˜!Óô	
ô & a¬Ô8ˆA�KŠK¸a¿l¹l×>TÑ>Tð 	ð ˜MÐ*:Ñ;Ñ;Ü.9¼$Ó.?ˆMÐ*Ñ+ØÐ&Ñ'¨	Ñ2×9Ñ9Ù�A‹Jõ	
ð!
ð( +ò 
ÐÜˆ~Ð.Ñ/Ó0°AÒ5ØÜ#Ð2BÔCˆ	ØÐØ&Ð'7Ñ8ò 	ˆIØ Ð!1Ñ2°9Ò=ØØð &Ø�;˜b  ð /Ø‡\�\�-Ð 0Ñ1°)Ñ<Ó=Ð>ð ?ð"ñ Ñð	ð 	×ÑØ×'Ñ'Ø1÷ñ ó÷ ‰e�G‹nõ!	
ð
ð> Ðr^   c           
     óX  — g }t        t        «      }d}t        j                  |t        j
                  ||d d|¬«      }	| D ]G  }
t        |
|¬«      j                  d|j                  «       «      }||   j                   |	|
«      «       ŒI |j                  «       D ]�  \  }}t        |«      dk(  rŒt        |dd¬	«      }t        t        j                  |«      «      }|j                  d|j                  › d|j!                  |«      › d|j"                  › d
�j%                  |«      «       Œ� |S )NrÙ   F)r€  r�  r‚  r+  rƒ  rÒ  r   rq   é   rj  rn  )r   rˆ   r�  r‘  rJ   ÚNAMESPACED_DECLARATIONr}  rÜ   rö   rM  rt   rÊ   rI   r   ro  rp  r÷   rq  rr  )rb  ro   rf  rF  r€  r+  rs  rc  rt  rz   r®   rô  ru  rv  rw  s                  r]   Úget_namespaced_declarationrŸ  |  sM  € ð !€LÜ/:¼4Ó/@ÐØ€GÜ×#Ñ#ØÜ×%Ñ%ØØØØ(-Øô€Dð &ò 
ˆÜ(¨1¸+ÔF×NÑNØ�l×(Ñ(Ó*ó
ˆ	ð 	˜9Ñ%×,Ñ,Ù�‹Gõ	
ð
ð 1×6Ñ6Ó8ò 
Ñˆ	�7Üˆw‹<˜1ÒØÜ#Ø#°¸qô
ˆ	ô œ{×3Ñ3°GÓ<Ó=ˆØ×ÑðØ
×ÑÐ ð Ø‡�ˆoÓÐ ð  Ø
×ÑÐ ð 	ð÷ ‰E�'‹Nõ	
ð
ð Ðr^   c           
     óV  — t        t        «      }| D ]   }||j                     j                  |«       Œ" d}g }d }|j	                  «       D ]Y  \  }}t        t        t        |«      |«      «      }	|dk(  r|	}Œ,|}d}
|t        v rdnd}|d|› d|› d|
j                  |	«      › d	�z  }Œ[ ||fS )
Nrq   ÚatenrÛ   ÚTORCH_LIBRARY_FRAGMENTÚTORCH_LIBRARYrÙ   r  z	, m) {
  z
};)	r   rˆ   rô  rŒ   rt   rH   rE  r,   r÷   )rd   Úschema_selectorÚns_native_functionsÚnative_functionÚschema_registrationsÚaten_schema_registrationsÚcustom_namespacerô  r}   Úschema_registrations_bodyÚtabÚtorch_library_macros               r]   Ú(get_native_function_schema_registrationsr­  ¬  s  € ô
 <GÄtÓ;LÐØ+ò OˆØ˜O×5Ñ5Ñ6×=Ñ=¸oÕNðOàÐØ "ÐØÐØ/×5Ñ5Ó7ò Ñˆ	�5Ü$(Ü”^ OÓ4°eÓ<ó%
Ð!ð
 ˜ÒØ(AÑ%à(ÐØˆCð
 Ô 3Ñ3ñ )à$ð  ð
 !ð )ØÐ �QÐ'Ð(ð )Ø‡8�8Ð%Ó&Ð'ð (ð%ñ Ñ ð%ð, &Ð';Ð<Ð<r^   c           
     óR  ‡ ‡‡‡‡‡‡
‡‡‡‡‡— |j                  dˆfd„«       ‰ D �cg c]!  }t        j                  |j                  v sŒ |‘Œ# c}Š‰ D �cg c]	  }|‰vsŒ|‘Œ c}Š|j                  dˆˆfd„«       |j                  dˆˆfd„«       |j                  dˆ ˆfd„«       t	        ‰‰¬	«      Š|j                  d
ˆfd„«       |	D ]Q  Št        ‰||«      }‰|v r=d‰› d�Š|j                  ‰› d�dˆˆfd„«       |j                  ‰› d�dˆˆˆˆ
ˆfd„«       ~ŒS y c c}w c c}w )NzNativeMetaFunctions.hc                 ó<   •— g t        t        t        ‰ «      «      dœS )N)ÚNativeMetaFunctions_includesÚ NativeMetaFunctions_declarations©rˆ   rH   rÄ  )Ústructured_native_functionss   €r]   r   z(gen_aggregated_headers.<locals>.<lambda>â  s!   ø€ Ø,.Ü04ÜÔ:Ð<WÓXó1ñ
€ r^   úMethodOperators.hc            	     óf   •— g t        t        t        t        j                  ‰¬«      ‰ «      «      dœS )N©r[  ©ÚMethodOperators_includesÚMethodOperators_declarations©rˆ   rH   rW  rJ   re  )Úmethod_native_functionsÚstatic_dispatch_idxs   €€r]   r   z(gen_aggregated_headers.<locals>.<lambda>ñ  s6   ø€ Ø(*Ü,0ÜÜ$Ü×*Ñ*Ø8Kôð ,óó-ñ
€ r^   zOperators.hc            	     óh   •— dgt        t        t        t        j                  ‰¬«      ‰ «      «      dœS )Nz!#include <ATen/MethodOperators.h>r¶  )ÚOperators_includesÚOperators_declarationsrº  )Únon_method_native_functionsr¼  s   €€r]   r   z(gen_aggregated_headers.<locals>.<lambda>   s9   ø€ Ø#FÐ"GÜ&*ÜÜ$Ü×*Ñ*Ø8Kôð 0óó'ñ
€ r^   úFunctions.hc                 óZ   •— t        ‰«      dgt        t        t        «       ‰ «      «      dœS )Nz#include <ATen/Operators.h>)rý   ÚFunctions_includesÚFunctions_declarations)rý   rˆ   rH   rr  ©rd   r¼  s   €€r]   r   z(gen_aggregated_headers.<locals>.<lambda>  s7   ø€ Ü-JØ#ó.ð $AÐ"AÜ&*ÜÜ#Ó%Ø$óó'ñ
€ r^   )rb  re   zNativeFunctions.hc                 ó   •— dg‰ dœS )Nz%#include <ATen/NativeMetaFunctions.h>)ÚNativeFunctions_includesÚNativeFunctions_declarationsrk   )rs  s   €r]   r   z(gen_aggregated_headers.<locals>.<lambda>"  s   ø€ Ø)PÐ(QØ,8ñ
€ r^   rû   úFunctions_inl.h>úDispatchKeyFunctions.hc                 ó    •— t        ‰ «      ‰dœS ©N)ro   Úinline_headers©rÅ   ©ro   Úinl_headerss   €€r]   r   z(gen_aggregated_headers.<locals>.<lambda>0  s   ø€ Ü$'¨Ó$5Ø&1ñ€ r^   úFunctions_inl.húDispatchKeyFunctions_inl.hc            
     óP   •— g ‰j                  «       t        ‰‰‰ ‰   ‰‰d¬«      dœS )NT)rb  ro   rf  rF  r€  r+  )Ú!DispatchKeyFunctions_inl_includesrŠ  Ú dispatch_namespaced_declarations)rö   rŸ  )re   ro   rb  r€  rF  s   €€€€€r]   r   z(gen_aggregated_headers.<locals>.<lambda>8  s8   ø€ Ø9;Ø*6×*<Ñ*<Ó*>Ü8RØ1IØ%1Ø$3°LÑ$AØ!)Ø!Ø#ô9ñ€ r^   )Úwriter=   r(  r|  r{  rx   Úwrite_with_template)rd   rb  r³  r¼  rF  re   Úcpu_fmru   Úfunctions_keysre  r€  Úfnrw   rs  ro   rÐ  r»  rÀ  s   ``````    `  @@@@@r]   Úgen_aggregated_headersrÛ  Ð  sS  ÿû€ ð  ‡L�LØó	
ôð &öØ¬¯©¸2¿;¹;Ò)FŠòÐð &ö#Ø¨Ð3JÒ)JŠò#Ðð ‡L�LØô	
ôð ‡L�LØô	
ôð ‡L�LØô	
ôô 4Ø!9Ø'ô€Lð ‡L�LØó	
ôð &ò ˆÜ+¨L¸*ÀfÓMˆØ˜>Ñ)Ø+¨L¨>Ð9IÐJˆKà×"Ñ"Ø�. Ð,Ø(ôôð ×"Ñ"Ø�. Ð0Ø,÷ôñ" ñ=ùòùò#s   ¦!DÁDÁ	D$ÁD$c                ób  ‡‡‡‡‡‡‡‡‡‡‡‡‡— t        t        «      Š| D ]   }‰|j                     j                  |«       Œ" t        t        «      }|D ]"  }|j                  Š|‰   j                  |«       Œ$ ‰j	                  «       D ]Ø  \  ŠŠ|j                  ‰› d�dˆˆfd„«       |j                  ‰› d�dˆˆˆfd„«       |j                  ‰g «      }|D �cg c]   }t        |t        «      r|j                  r|‘Œ" c}Št        ‰«      dkD  Š‰r|j                  ‰› d�d	ˆfd
„«       t        ||t        j                  ¬«      Š|j                  ‰› d�dˆˆˆfd„«       ŒÚ dD ]  \  ŠŠ|j                  ‰› d�ˆˆˆfd„«       Œ! |	D �]	  Š‰|vrŒ	‰j                  «       Šg Š‰j	                  «       D ]”  \  ŠŠ|j                  ‰g «      }t        t!        t        j"                  |‰   t$        j&                  ||
dd d¬«      |«      «      Št        ‰«      dk(  rŒg‰j                  ‰«       |j                  ‰› d‰› d�dˆˆfd„«       Œ– t)        ‰||«      }d‰› d�Š|j                  ‰› d�dˆˆfd„«       |j                  ‰› d�dˆˆfd„«       ~�Œ |j                  d ˆfd!„«       y c c}w )"Nz_ops.hz
Operator.hc            	     ód   •— dt        t        t        t        j                  ‰¬«      ‰ «      «      iS )Nrs  r¶  rº  )Ú	functionsr¼  s   €€r]   r   z*gen_per_operator_headers.<locals>.<lambda>h  s5   ø€ Ø¤ÜÜ(Ü"×.Ñ.Ø<Oôð "óó!ð
€ r^   z.hz
Function.hc                 óz   •— t        t        ˆfd„‰ «      «      d‰› d�t        t        t        «       ‰ «      «      dœS )Nc                ó   •— t        | ‰¬«      S )N)rî   )rù   ©rÚ  r¼  s    €r]   r   z<gen_per_operator_headers.<locals>.<lambda>.<locals>.<lambda>{  s   ø€ Ô#=ØÐ.Aô$€ r^   rñ   ú_ops.h>)Ústatic_dispatch_ops_headersÚoperator_includesÚfunction_definitions)rˆ   rH   rr  )rÞ  r¦   r¼  s   €€€r]   r   z*gen_per_operator_headers.<locals>.<lambda>x  sK   ø€ Ü/3Üóð "ó	ó0ð (;¸4¸&ÀÐ%HÜ(,ÜÜ'Ó)Ø!óó)ñ€ r^   r   z_meta.hzNativeMetaFunction.hc                 ó:   •— dt        t        t        ‰ «      «      iS )NÚmeta_function_declarationsr²  )Ústructured_functionss   €r]   r   z*gen_per_operator_headers.<locals>.<lambda>—  s"   ø€ Ø0´$Ü Ü=Ð?Sóó3ð€ r^   rz  z	_native.hzNativeFunction.hc                 ó$   •— ‰r	d‰› d�‰ dœS g ‰ dœS )Nrñ   z_meta.h>)Úextra_includesÚnative_function_declarationsrk   )rs  Úis_structuredr¦   s   €€€r]   r   z*gen_per_operator_headers.<locals>.<lambda>§  s)   ø€ á<IÐ)¨$¨¨xÐ8à0<ñ	€ àOQà0<ñ	€ r^   ))Ú	Functionsrq   )Ú	OperatorsÚ_ops)ÚNativeMetaFunctionsÚ_meta)ÚNativeFunctionsÚ_nativec                 ó|   •— ‰› d�t        ‰j                  «       «      D � cg c]
  } d| › ‰› d�‘Œ c} ‰› d�g iS c c} w )NÚ	_includesrñ   ú.h>Ú_declarations)rO  r9  )r¦   ÚcategoryÚfunctions_by_root_nameÚsuffixs    €€€r]   r   z*gen_per_operator_headers.<locals>.<lambda>·  sY   ø€ Ø�*˜IÐ&ä &Ð'=×'BÑ'BÓ'DÓ Eö)àð *¨$¨°¨x°sÒ;ò)ð �*˜MÐ*¨Bð€ ùò)s   ¡9TFr  rò   z_dispatch.hzDispatchKeyFunction.hc                 ó   •— ‰‰ dœS )N)rŠ  rÕ  rk   )rs  rŠ  s   €€r]   r   z*gen_per_operator_headers.<locals>.<lambda>ß  s   ø€ Ø*<Ø8Dñ€ r^   rû   rÉ  rÁ  rÊ  c                 ó    •— t        ‰ «      ‰dœS rÌ  rÎ  rÏ  s   €€r]   r   z*gen_per_operator_headers.<locals>.<lambda>ë  s   ø€ Ü # LÓ 1Ø"-ñ€ r^   rÑ  rÒ  c            	     óV   •— ‰t        ‰«      D � cg c]  } d| › d‰› d�‘Œ c} g dœS c c} w )Nrñ   rò   ró   )rŠ  rÔ  rÕ  )rO  )r¦   Údispatch_namesrŠ  s    €€r]   r   z*gen_per_operator_headers.<locals>.<lambda>ó  sE   ø€ Ø&8ô !' ~Ó 6ö6àð *¨$¨¨qÐ1CÐ0DÀLÒQò6ð 57ñ€ ùò6s   �&r´  c                 óJ   •— t        d„ ‰ j                  «       D «       «      g dœS )Nc              3  óR   K  — | ]  \  }}t        d „ |D «       «      rd|› d�–— Œ! y­w)c              3  óT   K  — | ]   }t         j                  |j                  v –— Œ" y ­wrj   )r=   r(  r|  )rl   rÚ  s     r]   rp   zGgen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>.<genexpr>  s   è ø€ ÒI¸”w—~‘~¨¯©Ô4ÑIùs   ‚&(rñ   râ  N)r(  )rl   r¦   rÞ  s      r]   rp   z=gen_per_operator_headers.<locals>.<lambda>.<locals>.<genexpr>  s3   è ø€ ò /á#�D˜)ÜÑI¸yÔIÔIð & d V¨7Ô3ñ/ùs   ‚%'r·  )rO  rt   )rù  s   €r]   r   z*gen_per_operator_headers.<locals>.<lambda>   s-   ø€ Ü(.ñ /à'=×'CÑ'CÓ'Eô/ó )ð
 -/ñ
€ r^   )r   rˆ   rõ   rŒ   rt   r×  rr   r‡   r4   rÀ   rÊ   r{  r�  Ú#compute_native_function_declarationrÖ  rö   rD   r‘  rJ   rž  rx   )rd   rb  r¼  rF  re   rØ  ru   Úops_fmrÙ  re  r€  rÚ  Úgrouped_functions_by_root_nameÚgroupÚgrouped_functionsrw   rø  rs  ro   rþ  rŠ  rÞ  rù  rÐ  rì  r¦   rè  rú  s     `             @@@@@@@@@@@@r]   Úgen_per_operator_headersr  I  s+  ÿü€ ô  ?JÌ$Ó>OÐØò 8ˆØ˜rŸ|™|Ñ,×3Ñ3°BÕ7ð8ô
 	”DÓð #ð *ò ;ˆØ�‰ˆØ& tÑ,×3Ñ3°EÕ:ð;ð 2×7Ñ7Ó9ò I
‰ˆˆiØ×"Ñ"Øˆf�FˆOØô
ô	
ð  	×"Ñ"Øˆf�BˆKØõô	
ð, ;×>Ñ>¸tÀRÓHÐð (ö 
àÜ˜"Ô2Ô3¸¿ºò ò 
Ðô
 Ð0Ó1°AÑ5ˆáØ×&Ñ&Ø�&˜Ð Ø&óô
ô 8Ø%6Ø+Ü%)×%MÑ%Mô
ˆð
 	×"Ñ"Øˆf�IÐØõõ		
ðAI
ðVò 
Ñˆ�&ð 	�‰Øˆj˜ˆOõõ		
ð
ð" &ó <ˆØ˜~Ñ-Øà)×/Ñ/Ó1ÐØˆà5×;Ñ;Ó=ò 	‰OˆD�)Ø >× BÑ BÀ4ÈÓ LÐÜÜÜ×,Ñ,Ø'¨Ñ5Ü×5Ñ5Ø Ø!Ø#Ø*.Ø8=ôð &óóˆLô �<Ó  AÒ%Øà×!Ñ! $Ô'Ø×&Ñ&Ø�&˜Ð,Ð-¨[Ð9Ø'ôõð+	ô< ,¨L¸*ÀfÓMˆØ'¨ ~Ð5EÐFˆà
×ÑØˆn˜KÐ(Ø$ôô	
ð 	×ÑØˆn˜OÐ,Ø(ôô	
ò ðy<ð| ‡L�LØó	
õ
ùòe 
s   Ã%J,c                óv  ‡ ‡‡‡— |rt        ‰ |‰|‰||	|
|||¬«       nt        ‰ ||‰|‰||	|||¬«       |j                  dˆ ˆfd„«       |j                  dˆ fd„«       |j                  dˆˆ fd„«       |j                  d	ˆ fd
„«       dˆ fd„}|j                  d|«       dˆfd„}|j                  d|«       y )N)rd   rb  r¼  rF  re   rØ  ru   r  re  rÙ  r€  )rd   rb  r³  r¼  rF  re   rØ  ru   re  rÙ  r€  zTensorBody.hc            	     ó¾   •— t        t        t        t        j                  ‰¬«      ‰ «      «      t        t        t        t        j
                  ‰¬«      ‰ «      «      dœS )N)rY  r[  )Útensor_method_declarationsÚtensor_method_definitions)rˆ   rH   r…  rJ   re  rh  rÅ  s   €€r]   r   zgen_headers.<locals>.<lambda><  s^   ø€ Ü*.ÜÜ'Ü%×1Ñ1Ø8Kôð %óó+ô *.ÜÜ'Ü%×0Ñ0Ø8Kôð %óó*ñ
€ r^   zRedispatchFunctions.hc                 óB   •— dt        t        t        «       ‰ «      «      iS )NÚfunction_redispatch_definitions)rˆ   rH   rŒ  ©rd   s   €r]   r   zgen_headers.<locals>.<lambda>T  s#   ø€ Ø-¬tÜÔ2Ó4Ð6FÓGó0ð
€ r^   zRegistrationDeclarations.hc                 óF   •— d‰D � cg c]  } t        | ‰«      ‘Œ c} iS c c} w )NÚregistration_declarations)r=  )r®   re   rd   s    €€r]   r   zgen_headers.<locals>.<lambda>]  s/   ø€ Ø'à)ö*àô 2°!°_ÕEò*ð
€ ùò*s   ‡zVmapGeneratedPlumbing.hc                 ó   •— t        ‰ «      S rj   r#   r  s   €r]   r   zgen_headers.<locals>.<lambda>f  s   ø€ Ô+@ÐAQÓ+R€ r^   c            	     óP  •— t        «       } t        «       }‰D ]£  }|j                  t        |j                  j                  j                  «      «       |j                  |j                  j                  j                  j
                  «       | j                  d„ |j                  j                  «       D «       «       Œ¥ |h d£z  }dj                  t        |«      D �cg c]  }d|› d�‘Œ
 c}«      dj                  t        | «      D �cg c]  }d|› d�‘Œ
 c}«      dœS c c}w c c}w )Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrj   rÐ  )rl   rÐ   s     r]   rp   zAgen_headers.<locals>.gen_aten_interned_strings.<locals>.<genexpr>r  s   è ø€ ÒP c˜Ÿ�ÑPùr  >   ÚorÚandÚnotÚxorÚbitorÚcomplÚor_eqÚand_eqÚbitandÚnot_eqÚxor_eqz \
z_(aten, r2  z_(attr, )Úaten_symbolsÚattr_symbols)
r¡   r¤   rÅ   rz   r¦   rÈ   Úupdater  r÷   rO  )Úattrsrþ  rz   r¦   rd   s       €r]   Úgen_aten_interned_stringsz.gen_headers.<locals>.gen_aten_interned_stringsi  s÷   ø€ Ü›%ˆÜ“ˆØ$ò 	QˆDØ�I‰I”c˜$Ÿ)™)Ÿ.™.×-Ñ-Ó.Ô/ð �I‰I�d—i‘i—n‘n×)Ñ)×.Ñ.Ô/à�L‰LÑP¨T¯Y©Y×-MÑ-MÓ-OÔPÕPð	Qð 	ò 
ñ 	
ˆð $ŸL™LÜ06°u³Ö>¨�8˜D˜6 Ò#Ò>óð $ŸL™LÜ06°u³Ö>¨�8˜D˜6 Ò#Ò>óñ	
ð 	
ùâ>ùò ?s   ÃDÄD#
zaten_interned_strings.hc                 ó<   •— ddj                  t        ‰ «      «      iS )NÚenum_of_valid_tagsz,
)r÷   rO  )r�   s   €r]   Úgen_tags_enumz"gen_headers.<locals>.gen_tags_enum�  s   ø€ Ø$ u§z¡z´&¸Ó2DÓ'EÐGÐGr^   z
enum_tag.h)r  údict[str, str])r  rÛ  rÖ  )rd   r�   rb  r³  r¼  rF  re   Úcore_fmrØ  ru   r  re  rÙ  r€  Úper_operator_headersr#  r&  s   ``  ` `          r]   Úgen_headersr*    sà   û€ ñ$ Ü Ø-Ø%=Ø 3ØØ+ØØ!ØØ'Ø)Øö	
ô 	Ø-Ø%=Ø(CØ 3ØØ+ØØ!Ø'Ø)Øõ	
ð ‡M�MØô	
ôð0 ‡L�LØó	
ôð ‡L�LØ$ô	
ôð ‡L�LØ!Ó#Rôõ"
ðH ‡M�MÐ+Ð-FÔGõHð ‡M�M�, Õ.r^   c                ó"  ‡ ‡‡‡‡‡‡‡‡‡‡"‡#‡$‡%‡&‡'‡(‡)‡*‡+‡,‡-— d}‰rd}|D �]$  Š%t        ‰%||
«      Š'|rd:ˆ#ˆ%ˆ&ˆˆfd„}nd:ˆ%ˆfd„}‰‰%   Š#t        t        «      }‰D ]H  }t        |t        «      r|j
                  n|j                  j
                  }||   j                  |«       ŒJ t        ‰%«      j                  «       Š&‰%t        j                  k7  Š)t        ‰%«      r|nddt        j                  ‰#|‰«       |«       ‰)rt        j                  ‰#«      ng dœ}	 	 	 	 d;ˆ#ˆ%ˆ'ˆ)ˆˆˆfd„}‰'j!                  d‰%› d	�d
‰d„ |‰%t        j"                  k(  rdnd|dh¬«       ‰D ]ã  Š(‰(j$                  j&                  rt)        ‰%«      sŒ%‰(j                  j*                  j,                  j,                  Š*‰%t        j"                  u r>‰'|
u sJ ‚‰'j/                  d‰*› d	�dˆˆ%ˆ(fd„«       |	j/                  d‰*› d	�dˆ(ˆ*fd„«       ŒŸ‰%t        j0                  u r%dŠ$‰rdŠ$‰'j/                  d‰*› d�dˆˆ$ˆ%ˆ(ˆ*fd„«       ŒÖt3        d‰%› d�«      ‚ ‹'�Œ' t5        ||‰ ‰‰|||¬«       d<ˆ ˆfd„}|
j7                  d |«       ‰}|rt9        j:                  «       }t=        ‰ |¬!«      \  Š"Š+|
j7                  d"ˆ"ˆ+ˆfd#„«       	 	 	 	 d=d$„}|
j?                  d%‰ |ˆfd&„d'tA        ‰«      id(h d)£¬*«       |
j7                  d+tB        «       |j7                  d,tB        «       |j7                  d-ˆ fd.„«       	 	 	 	 d>ˆˆfd/„}t        ‰«      t        ‰«      z   } tE        d0„ ‰«      D �!ci c]  }!|!j*                  j,                  |!“Œ c}!Š,tE        d1„ ‰«      D �!ci c]  }!|!j*                  j,                  |!“Œ c}!Š-| jG                  ˆ,ˆ-fd2„‰ D «       «       |
j?                  d3| ||dh d4£¬5«       |
j7                  d6ˆˆfd7„«       |
j7                  d8ˆˆˆfd9„«       y c c}!w c c}!w )?Nz‹#include <c10/cuda/CUDAGuard.h>
#include <ATen/cuda/ATenCUDAGeneral.h>
#include <ATen/cuda/CUDADevice.h>
#include <ATen/cuda/CUDAContext.h>zŸ#include <ATen/hip/impl/HIPGuardImplMasqueradingAsCUDA.h>
#include <ATen/hip/ATenHIPGeneral.h>
#include <ATen/hip/HIPDevice.h>
#include <ATen/hip/HIPContext.h>c                 ó*  •— g } ‰D ]ø  }d}‰j                  |«      rd}net        |t        «      r%t        ˆfd„|j	                  «       D «       «      rd}n0|j
                  r$‰t        j                  t        j                  fv rd}|sŒ�| j                  d|j                  › d�«       ‰t        j                  k(  r| j                  d|j                  › d�«       ‰‰v sŒ×| j                  d|j                  › d‰› d�«       Œú t        t        | «      «      S )	NFTc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrj   )ré   )rl   rÚ  rî   s     €r]   rp   z=gen_source_files.<locals>.operator_headers.<locals>.<genexpr>É  s#   øè ø€ ò EØ9;˜×0Ñ0°×4ñEùs   ƒrñ   ú
_native.h>rö  rò   ró   )ré   r‡   r4   r(  rÞ  rÀ   r+   ÚMetarä   rŒ   rõ   rO  r¡   )Úheadersr©  Úis_registeredrî   ro   rŠ  rÙ  rb  s      €€€€€r]   Úoperator_headersz*gen_source_files.<locals>.operator_headers½  s  ø€ Ø�Ø1ò "�AØ$)�MØ$×/Ñ/°Ô2Ø(,™ô $ AÔ';Ô<Äó EØ?@¿{¹{»}ôEô Bð )-™ð Ÿš¨,Ü#×(Ñ(Ü#×JÑJð;ñ +ð )-˜Ù(Ø à—N‘NÐ%8¸¿¹¸ÀZÐ#PÔQà$Ü&×MÑMòNð  Ÿ™Ð)<¸Q¿[¹[¸MÈÐ'MÔNØ# ~Ò5ØŸ™Ø1°!·+±+°¸aÐ@RÐ?SÐS_Ð`õðA"ôH œc '›lÓ+Ð+r^   c                 óˆ   •— dg} ‰t         j                  k(  r| j                  d«       ‰‰v r| j                  d‰›d�«       | S )Nz!#include <ATen/NativeFunctions.h>z#include <ATen/Functions.h>rû   rü   )r+   rä   rŒ   )r0  ro   rÙ  s    €€r]   r2  z*gen_source_files.<locals>.operator_headersç  sI   ø€ Ø>Ð?�Ø¤;×#UÑ#UÒUØ—N‘NÐ#@ÔAØ >Ñ1Ø—N‘N _°\Ð4DÀLÐ#QÔRØ�r^   rq   )Úextra_cuda_headersÚexternal_backend_headersÚdispatch_headersÚops_headersÚdispatch_helpersc                ó2   •— dt        ‰| g‰‰‰‰d‰‰¬«	      iS )NÚdispatch_definitionsT)	rw   rb  ro   rf  rF  r€  r+  r‚  r•  )r›  )Úgnfrî   ro   rw   r•  r€  rF  r‚  s    €€€€€€€r]   Ú"register_dispatch_key_env_callablez<gen_source_files.<locals>.register_dispatch_key_env_callable	  s7   ø€ ð 'Ô(GØØ.1¨UØ!-Ø -Ø%ØØØ4SØ)=ô
)ðð r^   ÚRegisterz.cppzRegisterDispatchKey.cppc                ó   — | j                   S rj   ©rõ   )Úxs    r]   r   z"gen_source_files.<locals>.<lambda>'	  s
   € ˜QŸ[™[€ r^   ri  rS   r:  )Úkey_fnÚenv_callableÚ
num_shardsÚbase_envÚsharded_keysÚ	UfuncCPU_zUfuncCPU.cppc                 óv   •— t        ‰«      t        j                  ‰‰ ‰   «      t        j                  ‰«      dœS )N)Úmeta_declarationÚnative_declarationÚnative_definitions)rÄ  r�  r  Úcompute_ufunc_cpu)re   ro   r©  s   €€€r]   r   z"gen_source_files.<locals>.<lambda>7	  s:   ø€ Ü,MÈaÓ,PÜ.2×.VÑ.VØ˜¨|Ñ<ó/ô /3×.DÑ.DÀQÓ.Gñ€ r^   ÚUfuncCPUKernel_zUfuncCPUKernel.cppc                 ó4   •— ‰t        j                  ‰ «      dœS )N)r¦   rJ  )r�  Úcompute_ufunc_cpu_kernel)r©  r¦   s   €€r]   r   z"gen_source_files.<locals>.<lambda>B	  s   ø€ Ø $Ü.2×.KÑ.KÈAÓ.Nñ€ r^   z%#include <ATen/native/cuda/Loops.cuh>z$#include <ATen/native/hip/Loops.cuh>Ú
UfuncCUDA_z.cuzUfuncCUDA.cuc                 óz   •— ‰‰t        ‰«      t        j                  ‰‰ ‰   «      t        j                  ‰«      dœS )N)r¦   Úcuda_headersrH  rI  rJ  )rÄ  r�  r  Úcompute_ufunc_cuda)re   rQ  ro   r©  r¦   s   €€€€€r]   r   z"gen_source_files.<locals>.<lambda>N	  s@   ø€ Ø $Ø(4Ü,MÈaÓ,PÜ.2×.VÑ.VØ˜¨|Ñ<ó/ô /3×.EÑ.EÀaÓ.Hñ€ r^   zunrecognized z
 for ufunc)Úaoti_fmÚaoti_backendsrd   re   r³  r4  Úupdate_aoti_c_shimÚextend_aoti_c_shimc            
     ó@  •— ‰D � cg c]  } t        | ‰«      sŒ| ‘Œ }} |D � cg c]  } d| j                  › d�‘Œ c} t        t        t	        t
        j                  ‰«      |«      «      t        t        t	        t
        j                  ‰«      |«      «      dœS c c} w c c} w )Nrñ   râ  )r7  Ú!backend_select_method_definitionsÚ%backend_select_function_registrations)rÊ  rõ   rˆ   rH   rÌ  rJ   rh  rÔ  )rÚ  Úrelevant_fnsrd   rF  s     €€r]   Úgen_backend_selectz,gen_source_files.<locals>.gen_backend_selecti	  s¨   ø€ à)ö
ØÔ-AÀ"ÀhÕ-OŠBð
ˆð 
ð
 GSöØ@BÐ% b§l¡l ^°7Ò;òô 26ÜÜ(¬×):Ñ):¸HÓEÀ|óó2ô
 6:ÜÜ(¬×)<Ñ)<¸hÓGÈóó6ñ
ð 	
ùò
ùòs   †B˜B¢BzRegisterBackendSelect.cpp)rd   r¤  zRegisterSchema.cppc                 ó"   •— ‰rg n‰ ‰rg dœS ‰dœS )N)r¨  r§  rk   )r¨  r§  r‚  s   €€€r]   r   z"gen_source_files.<locals>.<lambda>‹	  s)   ø€ á.ñ *,à*á.ð %'ñ	
€ ð &ñ
€ r^   c                ó   — | j                   S rj   r?  )rÚ  s    r]   Úkey_funcz"gen_source_files.<locals>.key_func•	  s   € ð �|‰|Ðr^   zOperators.cppc                ól   •— d| j                   › d�g t        t        j                  ‰¬«      | «      gdœS )Nrñ   rö  r¶  )r2  r–  )rõ   rW  rJ   rh  rá  s    €r]   r   z"gen_source_files.<locals>.<lambda>ž	  sE   ø€ Ø#6°r·|±|°nÀCÐ!HÐ IðÔ Ü×%Ñ%Ø4Gôð óðñ!
€ r^   rý   é   >   r–  r2  rý   )rA  rB  rD  rC  rE  zFunctions.cppzTensorMethods.cppzATenOpList.cppc                 ó:   •— dt        t        t        ‰ «      «      iS )NÚaten_ops)rˆ   rH   r�  r  s   €r]   r   z"gen_source_files.<locals>.<lambda>º	  s   ø€ ØœœX¤oÐ7GÓHÓIð
€ r^   c                óx   •— 	 	 	 	 dd„} || «      t        ‰| «      t        ‰| ‰t        j                     «      dœS )Nc                óP  — t        | t        «      ryd| j                  j                  › d�d| j                  j                  › d�g}| j                  �7|d| j                  j                  › d�d| j                  j                  › d�gz  }|S t        | t
        «      rîd| j                  j                  › d�d| j                  j                  › d�d| j                  j                  › d�d| j                  j                  › d�g}| j                  �7|d| j                  j                  › d�d| j                  j                  › d�gz  }| j                  �7|d| j                  j                  › d�d| j                  j                  › d�gz  }|S d| j                  › d�d| j                  › d�gS )Nrñ   r.  râ  )
r‡   r5   rH  rõ   rI  r4   r1  r   rÇ   rï  )r©  r0  s     r]   Úgen_op_headerszPgen_source_files.<locals>.functionalization_env_callable.<locals>.gen_op_headersÂ	  sÅ  € ô ˜!Ô5Ô6ð *¨!¯&©&×*:Ñ*:Ð);¸:ÐFØ)¨!¯&©&×*:Ñ*:Ð);¸7ÐCð�ð —;‘;Ð*ØØ-¨a¯k©k×.CÑ.CÐ-DÀJÐOØ-¨a¯k©k×.CÑ.CÐ-DÀGÐLð ñ �Gð �Ü˜AÔ3Ô4à)¨!¯,©,×*@Ñ*@Ð)AÀÐLØ)¨!¯,©,×*@Ñ*@Ð)AÀÐIØ)¨!¯%©%¯/©/Ð):¸*ÐEØ)¨!¯%©%¯/©/Ð):¸'ÐBð	�ð —9‘9Ð(ØØ-¨a¯i©i×.AÑ.AÐ-BÀ*ÐMØ-¨a¯i©i×.AÑ.AÐ-BÀ'ÐJð ñ �Gð —9‘9Ð(ØØ-¨a¯i©i×.AÑ.AÐ-BÀ*ÐMØ-¨a¯i©i×.AÑ.AÐ-BÀ'ÐJð ñ �Gð �ð *¨!¯+©+¨°jÐAØ)¨!¯+©+¨°gÐ>ðð r^   )r7  Úfunc_definitionsÚfunc_registrations)r©  ú@NativeFunction | NativeFunctionsGroup | NativeFunctionsViewGroupr  ú	list[str])r   r    r+   rá   )r©  re  re   rF  s     €€r]   Úfunctionalization_env_callablez8gen_source_files.<locals>.functionalization_env_callable¿	  sZ   ø€ ð%	ØOð%	àó%	ñP *¨!Ó,Ü @ØØó!ô #EØØØ¤× EÑ EÑFó#ñ
ð 	
r^   c                ó4   — t        | j                  «       «      S rj   ©rˆ   rÞ  ©r©  s    r]   r   z"gen_source_files.<locals>.<lambda>
  s   € ¤T¨!¯+©+«-Ó%8€ r^   c                ó4   — t        | j                  «       «      S rj   rl  rm  s    r]   r   z"gen_source_files.<locals>.<lambda>
  s   € ´D¸¿¹»Ó4G€ r^   c              3  ó‚   •K  — | ]6  }|j                   j                  ‰vr|j                   j                  ‰vr|–— Œ8 y ­wrj   )rz   r¦   )rl   r®   Ústructured_mapÚview_maps     €€r]   rp   z#gen_source_files.<locals>.<genexpr>
  s8   øè ø€ ò àØ�6‰6�;‰;˜nÑ,°·±·±ÀHÑ1Lô 	
ñùs   ƒ<?zRegisterFunctionalization.cpp>   r7  rf  rg  Úfunc_add_back_views_definitionsÚ!func_add_back_views_registrations)rA  rB  rC  rE  zFunctionalInverses.hc                 ó8   •— dt        t        ˆ fd„‰«      «      iS )NÚview_inverse_declarationsc                ó   •— t        ‰| «      S rj   )r!   )r©  rF  s    €r]   r   z4gen_source_files.<locals>.<lambda>.<locals>.<lambda>!
  s   ø€ ÔLØ  !ó€ r^   )rˆ   rH   )rF  Úview_groupss   €€r]   r   z"gen_source_files.<locals>.<lambda>
  s&   ø€ Ø'¬Üóð  ó	ó*ð	
€ r^   zCompositeViewCopyKernels.cppc            
     ó  •— ‰D � cg c]I  } dj                  d„ | j                  €| j                  gn| j                  | j                  gD «       «      ‘ŒK c} ‰D � cg c];  } dj                  d„ | j                  | j                  | j
                  fD «       «      ‘Œ= c} z   t        t        t        ‰t        j                     «      ‰«      «      t        t        t        ‰«      «      t        t        t        ‰«      «      dœS c c} w c c} w )NrÙ   c              3  óV   K  — | ]!  }d |j                   › d|j                   › d�–— Œ# y­w)rñ   ú_ops.h>
#include <ATen/ops/r.  Nr?  rZ  s     r]   rp   z5gen_source_files.<locals>.<lambda>.<locals>.<genexpr>>
  s:   è ø€ ò 	ð ð *¨!¯+©+¨ð 7*ð +,¯+©+¨°jô	Bñ	ùs   ‚')c              3  óv   K  — | ]1  }|�-d|j                   vrd|j                  › d|j                  › d�–— Œ3 y ­w)NrY  rñ   rz  r.  )rŸ   rõ   rZ  s     r]   rp   z5gen_source_files.<locals>.<lambda>.<locals>.<genexpr>K
  sH   è ø€ ò ð Ø�}¨¸A¿F¹FÑ)Bð	 *¨!¯+©+¨ð 7*à*+¯+©+¨°jôBñùs   ‚79)r7  Ú#CompositeViewCopyKernel_DefinitionsÚ(GeneratedCompositeFunctional_DefinitionsÚ!GeneratedCompositeOut_Definitions)r÷   rI  rH  rÇ   rï  r1  rˆ   rH   r"   r+   rä   r@   rA   )r©  re   r³  rw  s    €€€r]   r   z"gen_source_files.<locals>.<lambda><
  s  ø€ ð %öð ð —	‘	ñ 	ð %&§K¡KÐ$7˜Ÿ™™¸a¿f¹fÀaÇkÁkÐ=Rô	õ 	òð* 5ö	ð ð —	‘	ñ ð  Ÿi™i¨¯©°A·L±LÐAô	õ ò	ñô. 48ÜÜ.Ø'Ü'×NÑNñóð
  óó	4ô 9=ÜÜ3Ø/óó9ô 26ÜÜ,Ø/óó2ñQ.
€ ùòùò	s   †AC?ÁA D)r  ri  )r;  ú%NativeFunction | NativeFunctionsGroupr  údict[str, list[str]])r  r€  )rÚ  rh  r  rÅ   )r©  rh  r  r€  )$rx   r   rˆ   r‡   r3   rô  r1  rŒ   rÅ   rö   r+   râ   r.   r�  Úgen_registration_headersÚgen_registration_helpersÚwrite_sharded_with_templateÚCPUr   Úufunc_inner_loopr0   rz   r¦   r×  ÚCUDArÆ   r   rÖ  rC   rA  r­  Úwrite_shardedrý   r‰   rD   rM  ).rd   rb  r³  rw  rF  r¼  re   rS  r(  Ú
cpu_vec_fmrØ  ru   re  rÙ  r€  Úforce_schema_registrationr)  r‚  rU  rT  rV  r4  r2  Úns_grouped_native_functionsÚgrouped_native_functionrô  Úregister_dispatch_key_base_envr<  r[  r¤  r^  rj  Ú
all_groupsr®   r¨  rî   rQ  ro   rŠ  rw   r©  r•  r¦   r§  rp  rq  s.   ```````      ``  `                @@@@@@@@@@@@r]   Úgen_source_filesrŽ  •  s®  ÿÿý€ ð0&Ðñ
 ð$Ðð &ó bˆÜ+¨L¸*ÀfÓMˆÙ÷&,ò &,öTð (¨Ñ5ˆÜ&1´$Ó&7Ð#Ø'?ò 	SÐ#ô Ð5´~ÔFð (×1Ò1à,×7Ñ7×AÑAð ð
 (¨	Ñ2×9Ñ9Ð:QÕRð	Sô ! Ó.×4Ñ4Ó6Ðð
 œK×MÑMÑMð 	ô $ LÔ1ñ #5àØ(*Ü $× =Ñ =ØÐ3°Tó!ñ ,Ó-ñ (ô ×-Ñ-¨mÔ<àñ*
Ð&ð"	Ø6ð	à!÷	ó 	ð" 	×&Ñ&Ø�|�n DÐ)Ø%Ø$Ù(Ø;Ø(¬K¯O©OÒ;‘qÀØ3Ø0Ð1ð 	'ô 		
ð -ò +	OˆAØ—5‘5×)Ò)Ô1FÀ|Ô1TØØ—<‘<×$Ñ$×)Ñ)×.Ñ.ˆDØœ{Ÿ™Ñ.Ø˜V‘|Ð#�|Ø×&Ñ&Ø ˜v TÐ*Ø"õô
ð ×.Ñ.Ø% d V¨4Ð0Ø(ôõð ¤×!1Ñ!1Ñ1ØF�ÙØ#I�LØ×&Ñ&Ø    cÐ*Ø"÷õô % }°\°NÀ*Ð%MÓNÐNðW+	OòZ ðEbôH ØØ#Ø)Ø'Ø$?Ø-Ø-Ø-õ	ö
ð( ‡L�LÐ,Ð.@ÔAà€OÙ Ü*×;Ñ;Ó=ˆô
 	1Ø)¸?ô	ñØ!Øð ‡L�LØõ	
ô
ðØLðà	óð
 ×ÑØØØó
ð ,Ô-JØ#ó.ð
ð
 ò
ð' ô ð4 ‡L�L�¤$Ô'à‡M�MÐ%¤tÔ,à‡M�MØó	
ôð5
ØKð5
à	ö5
ôr 	Ð(Ó)¬DØó-ñ 	ð ô Ñ8Ð:UÓVö:àð 	
�‰�‰�Q‰ò:€Nô
 !*Ñ*GÈÓ Uö4Øˆ�‰�‰�Q‰ò4€Hð ×Ñô à!ôô ð ×ÑØ'ØØØ3Øò
ð ô ð ‡L�LØô		
ôð< ‡L�LØ&õ.	
õ1ùòu:ùò4s   ÍPÎPc                ó0   ‡— | j                  dˆfd„«       y )NzDeclarations.yamlc                 óR   •— t        ‰D � cg c]  } t        | «      ‘Œ c} «      S c c} w rj   )ræ  r.  )r®   rd   s    €r]   r   z'gen_declarations_yaml.<locals>.<lambda>s
  s!   ø€ ”ÐBRÖS¸QÔ5°aÕ8ÒSÓT€ ùÒSs   ‹$)rÖ  )rØ  rd   s    `r]   Úgen_declarations_yamlr‘  n
  s   ø€ ð ‡L�LØÛTõr^   c                 óP   — t        t        «      j                  j                  «       S )z
    If you're depending on torchgen out-of-tree, you can use the root to figure
    out the path to native_functions.yaml
    )r	   Ú__file__ÚparentÚresolverk   r^   r]   Úget_torchgen_rootr–  w
  s   € ô
 ”‹>× Ñ ×(Ñ(Ó*Ð*r^   c                 óÂ  — t        j                  d¬«      } | j                  dddd¬«       | j                  dd	d
¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddddd¬«       | j                  dddd¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddd ¬«       | j                  d!dd"¬«       | j                  d#d$d%d&¬'«       | j                  d(d)d*¬«       | j                  d+d,d%d-¬'«       | j                  d.d/d%d0¬'«       | j                  d1d2dd3¬«       | j                  d4d5dd6¬«       | j                  d7t        d%g d8¢g d8¢d9¬:«       | j                  d;dd<¬«       | j                  d=dd>¬«       | j	                  «       }t        |j                  |j                  «      }t        j                  j                  |j                  d?«      }t        j                  j                  |j                  d@«      }dAdBlm} t        j                  t        j                   t        j"                  t        j$                  t        j&                  t        j(                  t        j*                  t        j,                  h}t        j                  t        j                   h}t/        «       }|j0                  s|j2                  r?|j5                  t        j6                  «       |j5                  t        j6                  «       nQ|j5                  t        j6                  «       t        j6                  |v r ||j9                  t        j6                  «      = |j:                  s|j2                  r?|j5                  t        j<                  «       |j5                  t        j<                  «       nQ|j5                  t        j<                  «       t        j<                  |v r ||j9                  t        j<                  «      = |j>                  sQ|j5                  t        j,                  «       t        j,                  |v r ||j9                  t        j,                  «      = |j@                  r1|D �	cg c]&  }	tC        |	«      st        |	«      |j@                  v r|	‘Œ( }}	tE        |||«      }
tF        |   }|
jH                  |
jJ                  }}tM        |«      }|D �cg c]  }tO        |tP        «      sŒ|‘Œ }}tS        |«      }|D �cg c]  }tO        |tT        «      r|‘Œ }}|jV                  › dC�}tY        |«      j[                  dDdD¬E«       |jV                  › dF�}tY        |«      j[                  dDdD¬E«       |j\                  › }tY        |«      j[                  dDdD¬E«       t_        ||¬G«      }t_        |¬H«      }t_        |¬H«      }t_        |¬H«      }t_        ||¬G«      }t_        ||¬G«      }dI|i}|j:                  rt_        |¬H«      |dJ<   g }|j`                  rk|j`                  D �cg c]  }|t        jb                  |«         ‘Œ }}|j`                  D ]-  }t        jb                  |«      }||vsŒ|j5                  |«       Œ/ dK|jd                  v r„tg        dji dL|“dM|“dN|“dO|“dP|“dQ|“dR|“dS|“dT|“dU|“dV|“dW|“dX|“dY|“dZ|jh                  “d[|jj                  “d\|jl                  “d]|jn                  “d^|j2                  “d_|“d`|jp                  “Ž da|jd                  v r.ts        ||||||||||||||jh                  |jl                  ¬b«       dc|jd                  v rtu        ||¬d«       |jv                  r­tY        |jv                  «      jy                  «       } | jz                  }!| j|                  }"|def|dff|dgf|dhfg|j                  «       D �#�$cg c]  \  }#}$|$|#› di�f‘Œ c}$}#z   D ]7  \  }%}&|&|"z   }'| j€                  |&|!z   z  }(|%jƒ                  |'t        |(«      «       Œ9 y y c c}	w c c}w c c}w c c}w c c}$}#w )kNzGenerate ATen source files)Údescriptionz-sz--source-pathz!path to source directory for ATenzaten/src/ATen)Úhelpr  z-oz--output-dependenciesz:output a list of dependencies into the given file and exit)r™  z	--dry-runÚ
store_truez5run without writing any files (still updates outputs))Úactionr™  z--per-operator-headersz2generate separate headers per operator in ATen/opsz-dz--install-dirz--install_dirzoutput directoryzbuild/aten/src/ATenz--aoti-install-dirz--aoti_install_dirz%output directory for AOTInductor shimz(torch/csrc/inductor/aoti_torch/generatedz--rocmz=reinterpret CUDA as ROCm/HIP and adjust filepaths accordinglyz--mpsz'Generate MPS registration code when setz--xpuz'Generate XPU registration code when setz--mtiaz(Generate MTIA registration code when setz--op-registration-whitelistz--op_registration_whitelistÚ*z–filter op registrations by the whitelist (if set); each item is `namespace`::`operator name` without overload name; e.g.: aten::empty aten::conv2d ...)Únargsr™  z--op-selection-yaml-pathz--op_selection_yaml_pathaD  Provide a path to the operator selection (for custom build) YAML that contains the information about the set of selected operators and their categories (training, ...). Each operator is either a full operator name with overload or just a bare operator name. The operator names also contain the namespace prefix (e.g. aten::)z--backend-whitelistz--backend_whitelistzRfilter dispatch backend by the whitelist (if set), e.g.: CPU CUDA QuantizedCPU ...z--static-dispatch-backendz--static_dispatch_backendz?generate static dispatch code for the specific backend (if set)z!--skip-dispatcher-op-registrationz!--skip_dispatcher_op_registrationz0Avoid registering operators into the dispatcher.z--force-schema-registrationz--force_schema_registrationz}force it to generate schema-only registrations for all ops, includingthose that are not listed on --op-registration-whitelistz
--generate)r0  ÚsourcesÚdeclarations_yamlzGenerate only a subset of files)r  r�  Úchoicesr  r™  z--update-aoti-c-shimz­Update AOTInductor C shim after adding an entry to inductor_fallback_ops in torchgen/aoti/fallback_ops.py. WARNING: Do not use this unless you are sure what you are doing!!!z--extend-aoti-c-shima…  This Flag indicates the generation of c shims for out-of-tree ATen ops,which is an extension to the In-tree ATen op c shims. This flag needs to be combined with---source-path=<out-of-tree native_functions.yaml>--aoti-install-dir=<in-tree aoti_install_dir>/extend   default is torch/csrc/inductor/aoti_torch/generated/extendWARNING: Do not use this unless you are sure what you are doing!!!znative/native_functions.yamlznative/tags.yamlr   )re  z/coreT)ÚparentsÚexist_okz/ops)ÚoptionsÚinstall_dir)r£  ÚcudaÚxpurž  rd   rb  r³  rw  rF  r¼  re   rS  r(  rˆ  rØ  ru   re  rÙ  r€  r‰  r)  r‚  rU  rT  rV  r0  )rd   r�   rb  r³  r¼  rF  re   r(  rØ  ru   r  re  rÙ  r€  r)  rŸ  )rd   rØ  rq   Úcpu_vec_Úcore_Úops_rò   rk   )BÚargparseÚArgumentParserÚadd_argumentrÅ   Ú
parse_argsrE  Úop_registration_whitelistrC  Úosr’   r÷   Úsource_pathÚtorchgen.modelre  r+   r„  r†  rá   râ   rã   rä   r/  ÚMTIAr¡   ÚmpsrU  r¤   ÚMPSr…   r¦  ÚXPUÚmtiaÚbackend_whitelistr/   r³   rg   rd   re   r_  r‡   r4   rU  r5   r¤  r	   ÚmkdirÚaoti_install_dirrG   Ústatic_dispatch_backendÚparseÚgeneraterŽ  r€  r‰  r)  r‚  rV  r*  r‘  Úoutput_dependenciesr•  r¦   Ústemrt   r”  Úwrite_outputs))Úparserr£  rF  Únative_yaml_pathr²   re  rÙ  rT  r‘   r™   Úparsed_yamlr�   rd   re   rb  r©  r³  Ú!native_functions_with_view_groupsrw  Úcore_install_dirÚops_install_dirr¹  r(  rØ  rˆ  Úcuda_fmr  rS  ru   r¼  ÚkeyÚdp_keyÚdepfile_pathÚdepfile_nameÚdepfile_stemrn   Ú	device_fmrw   r‡  Úvarnamer’   s)                                            r]   ÚmainrÎ  
  s	  € Ü×$Ñ$Ð1MÔN€FØ
×ÑØØØ0Øð	 ô ð ×ÑØØØIð ô ð
 ×ÑØØØDð ô ð
 ×ÑØ ØØAð ô ð
 ×ÑØØØØØ%ð ô ð ×ÑØØØ4Ø:ð	 ô ð ×ÑØØØLð ô ð
 ×ÑØØØ6ð ô ð
 ×ÑØØØ6ð ô ð
 ×ÑØØØ7ð ô ð ×ÑØ%Ø%Øð-ð	 ô ð ×ÑØ"Ø"ðMð ô ð ×ÑØØØð*ð	 ô ð ×ÑØ#Ø#ØØNð	 ô ð ×ÑØ+Ø+ØØ?ð	 ô ð ×ÑØ%Ø%ØðCð	 ô ð ×ÑØÜØÚ;Ú;Ø.ð ô ð ×ÑØØðMð ô ð ×ÑØØðMð ô 	ð ×ÑÓ!€Gä(Ø×)Ñ)Ø×&Ñ&ó€Hô
 —w‘w—|‘| G×$7Ñ$7Ð9WÓXÐÜ—W‘W—\‘\ '×"5Ñ"5Ð7IÓJ€Nå,ô
 	�‰Ü×ÑÜ×-Ñ-Ü×9Ñ9Ü×-Ñ-Ü×:Ñ:Ü×ÑÜ×Ñð	€Nô 	�‰Ü×Ñð€Mô “%€Kà‡{‚{�g×0Ò0Ø×Ñœ;Ÿ?™?Ô+Ø×Ñœ+Ÿ/™/Õ*à�‰œŸ™Ô(ä�?‰?˜mÑ+Ø˜m×1Ñ1´+·/±/ÓBÐCà‡{‚{�g×0Ò0Ø×Ñœ;Ÿ?™?Ô+Ø×Ñœ+Ÿ/™/Õ*à�‰œŸ™Ô(ä�?‰?˜mÑ+Ø˜m×1Ñ1´+·/±/ÓBÐCà�<Š<Ø�‰œ×(Ñ(Ô)ä×Ñ˜}Ñ,Ø˜m×1Ñ1´+×2BÑ2BÓCÐDà× Ò ð #ö
àÜ& qÔ)¬S°«V°w×7PÑ7PÑ-Pò ð
ˆð 
ô $Ð$4°nÀkÓR€KÜ.¨~Ñ>€Jà×$Ñ$Ø×#Ñ#ð &Ðô
  <Ð<LÓMÐð ,ö#Ø¬z¸!Ô=QÕ/RŠð#Ðð #ô )MØó)Ð%ð
 3öàÜ�aÔ1Ô2ò 	
ð€Kð ð  "×-Ñ-Ð.¨eÐ4ÐÜÐ	Ó× Ñ ¨¸Ð Ô=Ø ×,Ñ,Ð-¨TÐ2€OÜˆÓ×Ñ¨°tÐÔ<à!×2Ñ2Ð3ÐÜÐ	Ó× Ñ ¨¸Ð Ô=ä¨Ð=MÔN€GÜ wÔ/€FÜ"¨7Ô3€JÜ¨Ô0€GÜ w¸OÔL€FÜ¨Ð=MÔN€GØ˜'Ð"€JØ‡{‚{Ü-°gÔ>ˆ
�5Ñà.0ÐØ×&Ò&ð ×6Ñ6ö
àð œK×-Ñ-¨cÓ2Ó3ð
Ðð 
ð ×2Ñ2ò 	+ˆCÜ ×&Ñ& sÓ+ˆFØ˜^Ò+Ø×"Ñ" 6Õ*ð	+ð
 �G×$Ñ$Ñ$Üò 	
Ù-ð	
á%=ð	
ñ )Dð	
ñ $ð		
ñ
 ð	
ñ !4ð	
ñ ,ð	
ñ ð	
ñ ð	
ñ "ð	
ñ ð	
ñ "ð	
ñ (ð	
ñ *ð	
ð —’ð	
ð  '.×&GÒ&Gð!	
ð" ")×!=Ò!=ð#	
ð$ -4×,SÒ,Sð%	
ð&  '×9Ò9ð'	
ñ( (ð)	
ð*  '×9Ò9ñ+	
ð0 �G×$Ñ$Ñ$ÜØ-Ø!Ø%=Ø(CØ 3ØØ+ØØØ!ØØ'Ø)Ø—‘Ø!(×!=Ñ!=õ	
ð$ ˜g×.Ñ.Ñ.ÜÐ/?ÈÕOà×"Ò"Ü˜G×7Ñ7Ó8×@Ñ@ÓBˆØ#×(Ñ(ˆØ#×(Ñ(ˆð �RˆLØ˜Ð$Ø�gÐØ�VÐð	
ð
 AK×@PÑ@PÓ@R×SÑ+<¨6°9ˆi˜F˜8 1˜Ò&ÓSñTò 	1‰JˆB�ð ˜|Ñ+ˆGØ×&Ñ&¨&°<Ñ*?Ñ@ˆDØ×Ñ˜W¤c¨$£iÕ0ñ	1ð #ùòc
ùò#ùòùòH
ùóD Ts$   Ò+aÓ<aÔaÔ'aÙaß4aÚ__main__)ro   r+   ru   údict[str, FileManager]rv   rF   r  rF   )Nú<stdin>F)r�   Úobjectr�   úset[str]r‘   úset[DispatchKey] | Noner’   rÅ   r“   r  r  rc   )rÑ  )r�   rÒ  r’   rÅ   r  rÓ  )r’   rÅ   r  rÓ  rj   )r’   rÅ   r²   rÅ   r‘   rÔ  r“   r  r°   zobject | Noner  rc   )r}   úSequence[NativeFunction]r  ÚNone)rÞ   rÅ   r  rÅ   )rå   rZ  r  zlist[DispatchKey])r®   r3   rî   r&   r  zDispatchKey | None)r®   r3   rî   rZ  r  rT  )rå   rZ  r  ri  )r  ú"CppSignature | DispatcherSignaturer  r   r  rÅ   )r  r×  r®   r3   rî   r&   r  rÅ   )r  r×  r®   r3   re   rZ  r  rÅ   ro  )r©  r4   r  rT  )r®   r3   rF  rC   r  r  )rÛ  rÒ  r  rÅ   )rÞ   rÅ   r  rÒ  )rò  r<   r  rÅ   )r|  zset[Variant]r  ri  )r®   r3   r  z+tuple[list[dict[str, str]], dict[str, str]])r  r   r  r  r  rÓ  r	  rÓ  rý  r'  r  rÒ  )r  r%   r  r  r  rÓ  r	  rÓ  rý  r'  r  rÒ  )r®   r3   r  rÒ  )r®   r3   r  r  )r®   r3   re   údict[DispatchKey, BackendIndex]r  rÅ   )rB  zlist[str] | NonerC  rT  r  rC   )rd   rÕ  r  z3Sequence[NativeFunction | NativeFunctionsViewGroup])rd   rÕ  r  r]  )rb  r]  re   rØ  r`  úJCallable[[NativeFunctionsGroup | NativeFunction, BackendIndex], list[str]]r  r€  )rc  r€  r  ri  )rb  r]  re   rØ  r`  rÙ  r  ri  )r®   r  rf  r&   r  rÅ   )rw   rF   rb  r]  ro   r+   rf  r&   rF  rC   r€  r  r+  r  r‚  r  r•  r  r  ri  )rb  r]  ro   r+   rf  r&   rF  rC   r€  r  r+  r  r  ri  )rd   rÕ  r¤  rC   r  ztuple[list[str], str])rd   rÕ  rb  r]  r³  úSequence[NativeFunctionsGroup]r¼  rZ  rF  rC   re   rØ  rØ  rF   ru   rÐ  rÙ  úset[DispatchKey]re  úSequence[DispatchKey]r€  r  r  rÖ  )rd   rÕ  rb  r]  r¼  rZ  rF  rC   re   rØ  rØ  rF   ru   rÐ  r  rF   rÙ  rÛ  re  rÜ  r€  r  r  rÖ  ) rd   rÕ  r�   rÓ  rb  r]  r³  rÚ  r¼  rZ  rF  rC   re   rØ  r(  rF   rØ  rF   ru   rÐ  r  rF   re  rÜ  rÙ  rÛ  r€  r  r)  r  r  rÖ  ),rd   rÕ  rb  r]  r³  rÚ  rw  z"Sequence[NativeFunctionsViewGroup]rF  rC   r¼  rZ  re   rØ  rS  rF   r(  rF   rˆ  rF   rØ  rF   ru   rÐ  re  rÜ  rÙ  rÛ  r€  r  r‰  r  r)  r  r‚  r  rU  r  rT  rÛ  rV  r  r  rÖ  )rØ  rF   rd   rÕ  r  rÖ  )r  r	   )r  rÖ  )ªÚ
__future__r   rª  Ú	functoolsr:  rÁ   r¯  Úcollectionsr   r   r   Údataclassesr   r   Úpathlibr	   Útypingr
   r   r   r   r   Útyping_extensionsr   r¬   Útorchgen.api.dispatcherÚapir8  Útorchgen.api.metar¡  Útorchgen.api.nativerÒ  Útorchgen.api.structuredrÀ   Útorchgen.destr�  Útorchgen.apir   Útorchgen.api.translater   Útorchgen.api.typesr   r   r   r   r   r   r   Útorchgen.contextr   r   r   r   Útorchgen.gen_aoti_c_shimr   r   Ú#torchgen.gen_functionalization_typer   r    r!   r"   Útorchgen.gen_vmap_plumbingr$   r±  r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   Ú#torchgen.native_function_generationr?   r@   rA   rB   Ú!torchgen.selective_build.selectorrC   Útorchgen.utilsrD   rE   rF   rG   rH   rI   rJ   Útorchgen.yaml_utilsrK   rL   Úcollections.abcrM   rN   rP   rc   rf   rU  rg   rx   r›   r§   Úcacher¯   r³   rŽ   rß   rç   rï   rù   rý   r  r%  r0  rB  rE  rW  rr  r…  rŒ  r�  rÄ  rÊ  rÌ  ræ  rë  rð  rö  r  r  r
  r.  r2  r=  rE  rU  r_  r  rg  rx  r{  r}  r›  rŸ  r­  rÛ  r  r*  rŽ  r‘  r–  rÎ  r_   rk   r^   r]   ú<module>r÷     s�	  ðÞ "ã Û Û Û Û 	ß <Ñ <ß (Ý ß AÕ AÝ *ã ç ,Ð ,ß  Ð  ß $Ð $ß ,Ð ,Ý Ý Ý ,÷÷ ñ ÷ó ÷÷ó õ =÷÷ ÷ ÷ ÷ ÷ ÷ ÷8ó õ ?÷÷ ñ ÷ 7ñ Ý(ñ ˆCƒL€ôB�ô ñ ˜Ð'9Ð;LÐ&MÓN€
ð :<Ð Ð!6Ó ;Ø57Ð Ð2Ó 7ðØðà&ðð ðð ó	ð, ,0ØØ %ð-#Øð-#àð-#ð )ð-#ð ð	-#ð
 ð-#ð ó-#ô`ð" ‡�ò/ó ð/ð ,0ð1ð
 !&Ø!%ñ1Ø
ð1àð1ð )ð1ð
 ð1ð ð1ð ó1ó@9óx
ó4	
ðØðØ&2ðàóð(ØðØ&8ðàóó ð ,Ø	+ð ,àð ,ð 	ó ,ðFRØ	+ðRàðRð  ðRð 	ó	Rð$KØ	+ðKàðKð (ðKð 	ó	Kð:FØ	+ðFàðFð (ðFð 	ó	FñX �$Ô÷`ð `ó ð`ñ0 �$Ô÷W&ð W&ó ðW&ñx �$Ô÷*ð *ó ð*ñ^ �$Ô÷'ð 'ó ð'ñZ �$Ô÷ð ó ðð< òMó ðMó
yóx3ñ �$Ô÷:&ð :&ó ð:&óHSó&ó0
óð?'Øð?'à0ó?'ðF
Øð
ð ð
ð ð	
ð
 ð
ð 'ð
ð ó
ð@!Øð!ð ð!ð ð	!ð
 ð!ð 'ð!ð ó!ðH òUó ðUórð "ðØðØ(Gðàòó "ðð@Ø(8ðà&ðð óð>,OØ.ð,Oà8ó,Oð^Ø.ðà4óð8 	×0Ò0ñàMðð 5ððð	ð óð:à,ðð óð@ 	×0Ò0ñàMðð 5ððð	ð óð4Ø
/ðØ>Jðàóð _àð_ð Nð_ð ð	_ð
 ð_ð ð_ð ð_ð ð_ð &*ð_ð ð_ð ó_ðH,àMð,ð ð,ð ð	,ð
 ð,ð ð,ð ð,ð ó,ð`!=à.ð!=ð &ð!=ð ó	!=ðHvà.ðvð Nðvð "@ð	vð
 ,ðvð ðvð 5ðvð ðvð 'ðvð %ðvð )ðvð ðvð 
óvðrà.ðð Nðð ,ð	ð
 ðð 5ðð ðð 'ðð ðð %ðð )ðð ðð 
óðDG/à.ðG/ð ðG/ð Nð	G/ð
 "@ðG/ð ,ðG/ð ðG/ð 5ðG/ð ðG/ð ðG/ð 'ðG/ð ðG/ð )ðG/ð %ðG/ð ðG/ð  ð!G/ð" 
ó#G/ðTVà.ðVð NðVð "@ð	Vð
 4ðVð ðVð ,ðVð 5ðVð ðVð ðVð ðVð ðVð 'ðVð )ðVð %ðVð  ð!Vð"  $ð#Vð$ ð%Vð& &*ð'Vð( ð)Vð* $ð+Vð, ð-Vð. 
ó/VðrØðØ+Cðà	óó+óx1ðv	 ˆzÒÙ…Fð r^   