§
    Ì²Åj¤  ã                  óÒ  — d dl mZ d dlZd dlZd dlmZ d dlmZ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mZmZmZmZmZmZmZmZmZmZmZ d dlm Z m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d d	l-m.Z.m/Z/m0Z0 erd d
l1m2Z2 d d„Z3d!d„Z4d"d„Z5d"d„Z6d"d„Z7d"d„Z8d"d„Z9 ed¬¦  «         G d„ d¦  «        ¦   «         Z: ed¬¦  «         G d„ de:¦  «        ¦   «         Z;dS )#é    )ÚannotationsN)Ú	dataclass)ÚLiteralÚTYPE_CHECKING)Ú	translate)Ú	BaseCTypeÚBindingÚConstRefCTypeÚCppSignatureÚCppSignatureGroupÚDispatcherSignatureÚExprÚkernel_signatureÚMutRefCTypeÚ
NamedCTypeÚNativeSignatureÚtensorT)Úmethod_with_native_functionÚnative_function_manager)
ÚArgumentÚBackendIndexÚDeviceCheckTypeÚDispatchKeyÚ"gets_generated_out_inplace_wrapperÚis_cuda_dispatch_keyÚNativeFunctionÚNativeFunctionsGroupÚ
SchemaKindÚTensorOptionsArguments)Úassert_neverÚmapMaybeÚTarget)ÚSelectiveBuilderÚbackend_indexr   Úper_operator_headersÚboolÚrocmÚreturnú	list[str]c                ó  — |rdg}ndg}| j         t          j        t          j        fv r|                     d¦  «         n¸| j         t          j        k    r.|r|                     d¦  «         n‹|                     d¦  «         nu| j         t          j        k    r|                     d¦  «         nJ| j         t          j        k    r|                     d¦  «         n|r|g d¢z  }n|                     d	¦  «         |                     d
¦  «         |S )Nz'#include <ATen/ops/as_strided_native.h>z!#include <ATen/NativeFunctions.h>z#include <ATen/EmptyTensor.h>z!#include <ATen/hip/EmptyTensor.h>z"#include <ATen/cuda/EmptyTensor.h>z!#include <ATen/mps/EmptyTensor.h>z!#include <ATen/xpu/EmptyTensor.h>)z#include <ATen/ops/empty.h>z##include <ATen/ops/empty_strided.h>z+#include <ATen/ops/_copy_from_and_resize.h>z #include <ATen/ops/_copy_from.h>z#include <ATen/Functions.h>z#include <c10/macros/Macros.h>)Údispatch_keyr   ÚCPUÚMetaÚappendÚCUDAÚMPSÚXPU)r$   r%   r'   Úheaderss       úTC:\Projects\Historical\venv\Lib\site-packages\torchgen/dest/register_dispatch_key.pyÚgen_registration_headersr4   .   s.  € ð
 ð 8Ø<Ð=ˆˆà6Ð7ˆàÔ!¥k¤oµ{Ô7GÐ%HÐHÐHØ�ŠÐ6Ñ7Ô7Ð7Ð7Ø	Ô	#¥{Ô'7Ò	7Ð	7Øð 	AØ�NŠNÐ>Ñ?Ô?Ð?Ð?à�NŠNÐ?Ñ@Ô@Ð@Ð@Ø	Ô	#¥{¤Ò	6Ð	6Ø�ŠÐ:Ñ;Ô;Ð;Ð;Ø	Ô	#¥{¤Ò	6Ð	6à�ŠÐ:Ñ;Ô;Ð;Ð;Ø	ð 6Øð 
ð 
ð 
ñ 	
ˆˆð 	�ŠÐ4Ñ5Ô5Ð5à‡N‚NÐ3Ñ4Ô4Ð4Ø€Nó    útuple[str | None, str | None]c                óf  — d }d }| j         t          j        t          j        t          j        t          j        t          j        fv r1t          | j         ¦  «                             ¦   «         }d|› �}d|› �}n9| j         t          j	        t          j
        t          j        t          j        fv rd}d}||fS )Nzat::detail::empty_zat::detail::empty_strided_z	at::emptyzat::empty_strided)r+   r   r-   r,   r/   r0   r1   ÚstrÚlowerÚ&CompositeExplicitAutogradNonFunctionalÚQuantizedCPUÚQuantizedCUDA)r$   Ú
empty_implÚempty_strided_implÚdispatchs       r3   Úgen_empty_impl_namesr@   R   sÀ   € ð €JØÐàÔ!ÝÔÝŒÝÔÝŒÝŒð&ð ð õ �}Ô1Ñ2Ô2×8Ò8Ñ:Ô:ˆØ4¨(Ð4Ð4ˆ
ØD¸(ÐDÐDÐÐØ	Ô	#ÝÔ:ÝÔ ÝÔ!ÝŒð	(ð 
ð 
ð !ˆ
Ø0ÐàÐ)Ð)Ð)r5   c           	     ó‚   — | j         t          j        k    rd}nd}t          | ¦  «        \  }}|€g S d|› d|› d|› d|› d�	gS )Nzoptions.device(at::kMeta)Úoptionsz�
Tensor create_out(IntArrayRef sizes, IntArrayRef strides, const TensorOptions &options) {
  if (strides.empty()) {
      return z(sizes, z);
  } else {
      return z(sizes, strides, z	);
  }
}
)r+   r   r-   r@   )r$   Úempty_optionsr=   r>   s       r3   Úgen_create_out_helperrD   n   sŽ   € ØÔ!¥[Ô%5Ò5Ð5Ø3ˆˆà!ˆå%9¸-Ñ%HÔ%HÑ"€JÐ"ØÐØˆ	ð	ð ð	ð 	ð #0ð	ð 	ð
 !ð	ð 	ð
 4Að	ð 	ð 	ð
ð 
r5   c                ó<   — t          | ¦  «        \  }}|€g nd|› d�gS )Nz²
std::optional<Tensor> maybe_create_proxy(const Tensor &out, IntArrayRef sizes, IntArrayRef strides, const TensorOptions &options) {
  if (out.strides() != strides) {
    return z8(sizes, strides, options);
  }
  return std::nullopt;
}
)r@   )r$   Ú_r>   s      r3   Úgen_maybe_create_proxy_helperrG   …   sG   € Ý0°Ñ?Ô?Ñ€AÐð Ð%ð 	ˆðð ðð ð ð	
ðr5   c                ó6   — | j         t          j        k    rg S dgS )Naã  
void resize_out(const Tensor &out, IntArrayRef sizes, IntArrayRef strides, const TensorOptions &options) {
  TORCH_CHECK(options.dtype() == out.dtype(),
      "Expected out tensor to have dtype ", options.dtype(), ", but got ", out.dtype(), " instead");
  TORCH_CHECK(options.device() == out.device(),
      "Expected out tensor to have device ", options.device(), ", but got ", out.device(), " instead");
  const bool resized = at::native::resize_output(out, sizes);
  // Only restride if a resize occurred; otherwise we ignore the (advisory)
  // strides from the meta function and directly use the output tensor's
  // preexisting strides
  if (resized) {
    if (!strides.empty()) {
      TORCH_INTERNAL_ASSERT(!options.memory_format_opt().has_value());
      // TODO: avoid the redispatch here
      out.as_strided_(sizes, strides);
    } else if (options.memory_format_opt().has_value()) {
      out.unsafeGetTensorImpl()->empty_tensor_restride(*options.memory_format_opt());
    }
  }
}
)r+   r   r:   ©r$   s    r3   Úgen_resize_out_helperrJ   —   s)   € ØÔ!¥[Ô%WÒWÐWð ˆ	ð	ðð r5   c                ó   — dgS )Na”  
void check_inplace(const Tensor &self, IntArrayRef sizes, const TensorOptions &options) {
  // These checks are needed on those operators that:
  //   1) don't use 'TensorIterator' (e.g. 'addmm' and 'baddbmm')
  //   2) have particular typing rules (e.g. 'cumsum' and 'cumprod')
  // For other operators (e.g. 'add'), 'TensorIterator' already checks
  // these things separately.
  TORCH_CHECK(options.dtype() == self.dtype(),
      "Bad in-place call: ",
      "input tensor dtype ", self.dtype(), " and output tensor dtype ", options.dtype(), " should match");
  TORCH_CHECK(options.device() == self.device(),
      "Bad in-place call: ",
      "input tensor device ", self.device(), " and output tensor device ", options.device(), " should match");
  TORCH_CHECK(sizes == self.sizes(),
      "Bad in-place call: ",
      "input tensor size ", self.sizes(), " and output tensor size ", sizes, " should match");
}
© rI   s    r3   Úgen_check_inplace_helperrM   µ   s   € ð	ðð r5   c                ó„   — dgt          | ¦  «        ¢t          | ¦  «        ¢t          | ¦  «        ¢t          | ¦  «        ¢d‘S )Nz?C10_DIAGNOSTIC_PUSH_AND_IGNORED_IF_DEFINED("-Wunused-function")zC10_DIAGNOSTIC_POP())rD   rJ   rM   rG   rI   s    r3   Úgen_registration_helpersrO   Ì   s_   € àIðå	˜}Ñ	-Ô	-ðõ 
˜}Ñ	-Ô	-ðõ 
" -Ñ	0Ô	0ð	õ
 
' }Ñ	5Ô	5ðð 	ðð r5   T)Úfrozenc                  óª   — e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
ed<   ded<   ed#d„¦   «         Zed$d„¦   «         Zd%d„Zd&d„Z	d'd „Z
	 d(d&d"„Zd!S ))ÚRegisterDispatchKeyr   r$   zvLiteral[Target.ANONYMOUS_DEFINITION, Target.NAMESPACED_DEFINITION, Target.NAMESPACED_DECLARATION, Target.REGISTRATION]Útargetr#   Úselectorr&   r'   Úsymintú
str | NoneÚclass_method_nameÚskip_dispatcher_op_registrationÚtyper   Úargsúlist[Argument]Úmethod_namer8   r(   c           	     ó¦   — | t           j        k    rdS d}|dz  }|D ]4}|j                             ¦   «         r|d|j        › d|› d|j        › d�z  }Œ5|S )Nú  // No device check
z4std::optional<Device> common_device = std::nullopt;
z9(void)common_device; // Suppress unused variable warning
z<
  c10::impl::check_and_update_common_device(common_device, z, "z", "z");)r   ÚNoCheckrY   Úis_tensor_likeÚname)rY   rZ   r\   Údevice_checkÚargs        r3   Úgen_device_checkz$RegisterDispatchKey.gen_device_check  s    € ð •?Ô*Ò*Ð*Ø+Ð+àNˆØÐTÑTˆØð 	jð 	jˆCàŒx×&Ò&Ñ(Ô(ð jØð !jØ<?¼Hð!jð !jØITð!jð !jØZ]ÔZbð!jð !jð !jñ j�øàÐr5   Úfú%NativeFunctionsGroup | NativeFunctionr)   c                óV  ‡ ‡— t          |t          ¦  «        rQ|Š‰j        r‰                      ‰¦  «        S t	          t          ˆˆ fd„‰                     ¦   «         ¦  «        ¦  «        S t          |t          ¦  «        r‰                      |¦  «        }|€g n|gS t          |¦  «         d S )Nc                ó0   •— ‰                      | ‰¦  «        S ©N©Úgen_unstructured©re   ÚgÚselfs    €€r3   ú<lambda>z.RegisterDispatchKey.__call__.<locals>.<lambda>&  s   ø€  t×'<Ò'<¸QÀÑ'BÔ'B€ r5   )
Ú
isinstancer   Ú
structuredÚgen_structuredÚlistr!   Ú	functionsr   rk   r    )rn   re   Úrrm   s   `  @r3   Ú__call__zRegisterDispatchKey.__call__  s¶   øø€ å�aÕ-Ñ.Ô.ð 	Ø&'ˆAð Œ|ð Ø×*Ò*¨1Ñ-Ô-Ð-åÝÐBÐBÐBÐBÐBÀAÇKÂKÁMÄMÑRÔRñô ð õ ˜�>Ñ*Ô*ð 	Ø×%Ò% aÑ(Ô(ˆAØ˜�2�2¨¨Ð+å˜‰OŒOˆOˆOˆOr5   r   ú%NativeSignature | DispatcherSignaturec                ó„   — t          j        |j        d| j        j        › d|j        j        j        › d�| j        ¬¦  «        S )NÚwrapper_rF   ©ÚprefixrU   )r   Úfrom_schemaÚfuncr$   r+   ra   Úoverload_namerU   )rn   re   s     r3   Úwrapper_kernel_sigz&RegisterDispatchKey.wrapper_kernel_sig.  sK   € õ #Ô.ØŒFØ\˜dÔ0Ô=Ð\Ð\ÀÄÄÔ@YÐ\Ð\Ð\Ø”;ð
ñ 
ô 
ð 	
r5   rm   úNativeFunctionsGroup | Nonec                óà  ‡‡— |€d S |j                              ¦   «         }|t          j        u rdŠn |t          j        u rdŠnt          d¦  «        ‚|                      |¦  «        }|                     ¦   «         }|› d�Št          j	        |¦  «        }t          |¦  «        dk    rod                     ˆˆfd„t          |¦  «        D ¦   «         ¦  «        }|                     ¦   «                              ¦   «         › dd	                     |¦  «        › d
�}n¤t          |¦  «        dk    r|d         }	‰› d‰› d	|	› d�}|	}n{t          |j         j        j        ¦  «        dk    sJ ‚d}|j         j        j        d         }
|
j                             ¦   «         rd‰› d‰› d‰› d|
j        › d�	}n‰› d‰› d	|
j        › d�}|                      |j        ¦  «        }|                     ¦   «         }|                     |¬¦  «        › d‰› d|                     ¦   «         › dd	                     d„ t)          |                     ¦   «         |                     ¦   «         ¦  «        D ¦   «         ¦  «        › d|› d|› d�S )Nzat::_copy_fromzat::_copy_from_and_resizez1gen_out_inplace_wrapper called on a functional opÚ_tmpé   z
  c           	   3  ó:   •K  — | ]\  }}‰› d |› d‰› d|› d�V — ŒdS )z
(std::get<z>(z), ú);NrL   )Ú.0ÚiÚret_nameÚcopy_opÚfunc_ress      €€r3   ú	<genexpr>z>RegisterDispatchKey.gen_out_inplace_wrapper.<locals>.<genexpr>K  s\   øè è € ð "ð "á�A�xð ÐDÐD aÐDÐD¨8ÐDÐD¸ÐDÐDÐDð"ð "ð "ð "ð "ð "r5   ú(ú, ú)r   r…   Ú z    for (int64_t i = 0; i < z.size(); ++i) {
        z[i], z[i]);
    }©ra   z
 {
  auto z = c              3  ó$   K  — | ]}|j         V — Œd S ri   ©Úexpr©r†   Úes     r3   r‹   z>RegisterDispatchKey.gen_out_inplace_wrapper.<locals>.<genexpr>e  s$   è è € Ð6~Ð6~À!°q´vÐ6~Ð6~Ð6~Ð6~Ð6~Ð6~r5   z);
  ú

  return ú;
}
)r}   Úkindr   ÚinplaceÚoutÚAssertionErrorr   ra   ÚcppÚreturn_namesÚlenÚjoinÚ	enumerateÚreturns_typeÚcpp_typeÚ	argumentsrY   Úis_list_likeÚ
functionalÚdefnr   )rn   re   rm   ÚkÚsigra   r�   ÚupdatesÚreturnsrˆ   Úout_argÚfunctional_sigÚwrapper_namer‰   rŠ   s                @@r3   Úgen_out_inplace_wrapperz+RegisterDispatchKey.gen_out_inplace_wrapper8  sø  øø€ ð ˆ9Ø�4ØŒF�KŠK‰MŒMˆØ•
Ô"Ð"Ð"Ø&ˆGˆGØ•*”.Ð Ð Ø1ˆGˆGå Ð!TÑUÔUÐUà×%Ò% aÑ(Ô(ˆØ�xŠx‰zŒzˆà�=�=�=ˆÝÔ'¨Ñ*Ô*ˆÝˆ|ÑÔ˜qÒ Ð Ø—k’kð "ð "ð "ð "ð "å#,¨\Ñ#:Ô#:ð"ñ "ô "ñ ô ˆGð ×)Ò)Ñ+Ô+×4Ò4Ñ6Ô6ÐSÐS¸¿ºÀ<Ñ9PÔ9PÐSÐSÐSˆGˆGÝ�ÑÔ !Ò#Ð#Ø# A”ˆHØ Ð;Ð; 8Ð;Ð;¨xÐ;Ð;Ð;ˆGØˆGˆGå�q”vÔ'Ô+Ñ,Ô,°Ò1Ð1Ð1Ð1ØˆGØ”fÔ&Ô*¨1Ô-ˆGØŒ|×(Ò(Ñ*Ô*ð Dð
Ø%ð
ð 
à	ð
ð 
àð
ð 
à")¤,ð
ð 
ð 
��ð
 %ÐCÐC xÐCÐC°7´<ÐCÐCÐC�à×0Ò0°´Ñ>Ô>ˆØ—x’x‘z”zˆð ‡‚ˆ|€ÑÔðð àðð à#×(Ò(Ñ*Ô*ðð à-1¯YªYÐ6~Ð6~ÅyÐQT×Q^ÒQ^ÑQ`ÔQ`Ðbp×bzÒbzÑb|Ôb|ÑG}ÔG}Ð6~Ñ6~Ô6~Ñ-~Ô-~ðð ð ðð ð ð	ð ð ð 	r5   r   c           
     óœ  ‡ ‡— ‰ j                              ‰¦  «        }‰ j         j        t          j        k    r*‰ j                              ‰j        ¦  «        r
J d¦   «         ‚n€‰ j         j        t          j        k    r*‰ j                              ‰j        ¦  «        r
J d¦   «         ‚n<|�|j        s3t          t          ˆˆ fd„‰                     ¦   «         ¦  «        ¦  «        S t          ‰ j         ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰ j        ‰¦  «        }t          t          |j        ‰                     ¦   «         ¦  «        ¦  «        S )NzqDo not explicitly specify Meta dispatch key on structured functions, they will be automatically generated for youz†Do not explicitly specify CompositeExplicitAutograd dispatch key on structured functions, they will be automatically generated for youc                ó0   •— ‰                      | ‰¦  «        S ri   rj   rl   s    €€r3   ro   z4RegisterDispatchKey.gen_structured.<locals>.<lambda>{  s   ø€ ¨4×+@Ò+@ÀÀAÑ+FÔ+F€ r5   )r$   Ú
get_kernelr+   r   r-   Ú
has_kernelrš   r:   rq   rs   r!   rt   ÚStructuredRegisterDispatchKeyrS   rT   r'   rU   rW   rX   Úgen_one)rn   rm   ÚmetadataÚstructured_gens   ``  r3   rr   z"RegisterDispatchKey.gen_structuredk  sW  øø€ ØÔ%×0Ò0°Ñ3Ô3ˆØÔÔ*­kÔ.>Ò>Ð>ØÔ)×4Ò4°Q´UÑ;Ô;ð ð ðJñô Ð;ð ð
 ÔÔ+ÝÔAòBð Bð Ô)×4Ò4°Q´UÑ;Ô;ð ð ðJñô Ð;ð ð Ð XÔ%8ÐÝ�Ð!FÐ!FÐ!FÐ!FÐ!FÈÏÊÉÌÑVÔVÑWÔWÐWÝ6ØÔØŒKØŒMØŒIØŒKØÔ"ØÔ0Øñ	
ô 	
ˆõ •H˜^Ô3°Q·[²[±]´]ÑCÔCÑDÔDÐDr5   Nc                óJ  ‡— t          |¦  «        5  d}d}| j                             |¦  «        s›| j        j        t          j        k    rL|j                             ¦   «         t          j	        u r'|j
        s t          |j        j        ¦  «        dk    rd}n5| j        j        s|�t          ||| j        ¦  «        rd}n	 d d d ¦  «         d S |j        r	 d d d ¦  «         d S | j        t"          j        u r(| j                             |¦  «        s	 d d d ¦  «         d S |                      |¦  «        Š‰                     ¦   «         }‰                     ¦   «                              ¦   «         }‰                     ¦   «         }d                     d„ |D ¦   «         ¦  «        }t7          j        |dd¬¦  «        }	| j        t"          j        u rId}
|	                     | j        ¬¦  «        D ]}|
d	|                      ¦   «         › d
�z  }
Œ|
cd d d ¦  «         S | j        t"          j!        u rBd+ˆfd„}d}
|	                     | j        ¬¦  «        D ]}|
 ||¦  «        z  }
Œ|
cd d d ¦  «         S | j        t"          j"        u �r©|rL|j        j        j#        €J ‚|j        j        j#        j$        j        }d|› d|› d|› d|› d|› d�cd d d ¦  «         S |r"|  %                    ||¦  «        cd d d ¦  «         S | j         &                    |¦  «        }|€	 d d d ¦  «         d S | j'        €|j(        › d|j)        › �}n|j(        › d| j'        › d|j)        › �}tU          || j        ¦  «        }d                     d„ tW          ‰                     ¦   «         |                     ¦   «         d¬¦  «        D ¦   «         ¦  «        }d}| j        j,        rat[          j.        |j        j        j/        |j        j        j0        ¦  «        }tb           2                    |j3        ti          |¦  «        |¦  «        }d}|j,        r×| j        j,        rËtk          d„ |j        j        j6        D ¦   «         ¦  «        }|r!d}to          | j        j        ¦  «        rd|› �}n€|j        j        j#        �|j        j        j#        j$        gng }t[          j.        ||j        j        j/        |j        j        j0        ¦  «        }tq          d„ |D ¦   «         d ¦  «        }|�d|› d �}d!|› d|› d|› d"|› d#|› d$|› d|› d%�cd d d ¦  «         S | j        t"          j        u rA|j        s| j9        r	 d d d ¦  «         d S d&|› d'�}d(|j        j        › d)|› d*�cd d d ¦  «         S tu          | j        ¦  «         	 d d d ¦  «         d S # 1 swxY w Y   d S ),NFrƒ   Tr�   c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S ri   )r¦   ©r†   Úas     r3   r‹   z7RegisterDispatchKey.gen_unstructured.<locals>.<genexpr>±  s*   è è € Ð 8Ð 8¨a §¢¡¤Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8r5   ©ÚmethodÚfallback_bindingr�   ©rU   ú
TORCH_API ú;
Úcpp_sigr   r(   r8   c                ó  •— d|                       ¦   «         › d‰                     ¦   «         › dd                     d„ t          |                      ¦   «         ‰                     ¦   «         ¦  «        D ¦   «         ¦  «        › d�S )Nú
ú
 {
return rŒ   r�   c              3  ó$   K  — | ]}|j         V — Œd S ri   r’   r”   s     r3   r‹   zNRegisterDispatchKey.gen_unstructured.<locals>.generate_defn.<locals>.<genexpr>Ã  ó$   è è € Ð_Ð_¨!˜qœvÐ_Ð_Ð_Ð_Ð_Ð_r5   ú);
}
©r¦   ra   rŸ   r   r£   ©rÁ   r¨   s    €r3   Úgenerate_defnz;RegisterDispatchKey.gen_unstructured.<locals>.generate_defnÀ  s‚   ø€ ðØ‡‚�„ðð à�Š‰
Œ
ðð à—Y’YÐ_Ð_­y¸×9JÒ9JÑ9LÔ9LÈcÏmÊmÉoÌoÑ/^Ô/^Ð_Ñ_Ô_Ñ_Ô_ðð ð ð r5   rÃ   ú rŒ   z") {
  TORCH_CHECK_NOT_IMPLEMENTED(z[.is_meta(),
    "Cannot inplace into non-meta tensor with meta tensor argument");
  return r—   z::c              3  ó$   K  — | ]}|j         V — Œd S ri   r’   r”   s     r3   r‹   z7RegisterDispatchKey.gen_unstructured.<locals>.<genexpr>è  s8   è è € ð +ð +àð ”Fð+ð +ð +ð +ð +ð +r5   ©r¼   r^   z// DeviceGuard omittedc              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S ri   )rp   r   r¹   s     r3   r‹   z7RegisterDispatchKey.gen_unstructured.<locals>.<genexpr>û  sA   è è € ð -ð -àõ # 1Õ&<Ñ=Ô=ð-ð -ð -ð -ð -ð -r5   z=
  const DeviceGuard device_guard(device_or_default(device));z7globalContext().lazyInitDevice(c10::DeviceType::CUDA);
c              3  óX   K  — | ]%}|j                              ¦   «         ¯|j        › V — Œ&d S ri   )rY   r`   ra   r¹   s     r3   r‹   z7RegisterDispatchKey.gen_unstructured.<locals>.<genexpr>  sN   è è € ð ð à$%Ø#$¤6×#8Ò#8Ñ#:Ô#:ðØ#$¤6 ðð ð ð ð ð r5   z1const OptionalDeviceGuard device_guard(device_of(ú));znamespace {

z) {
  z

  r–   z);
}

} // anonymous namespace
z	TORCH_FN(rŽ   úm.impl("z",
z);
©rÁ   r   r(   r8   );r   r$   r²   r+   r   r-   r}   r˜   r   r™   Úhas_composite_kernelrž   rª   Úuse_out_as_primaryr   Úmanual_kernel_registrationrS   r"   ÚREGISTRATIONrT   Úis_native_function_selectedr   ra   r¡   r¢   r£   rŸ   r   Úfrom_native_functionÚNAMESPACED_DECLARATIONÚ
signaturesrU   ÚdeclÚNAMESPACED_DEFINITIONÚANONYMOUS_DEFINITIONÚself_argÚargumentr®   r±   rW   Úcpp_namespaceÚkernelr   r   Údevice_guardÚ	itertoolsÚchainrš   Úflat_positionalrR   rd   rb   rs   ÚanyÚnon_outr   ÚnextrX   r    )rn   re   rm   Úinplace_metaÚgets_out_inplace_wrapperra   r¡   rZ   Úargs_strÚcpp_sig_groupÚresultrÁ   rÊ   Úself_arg_namerµ   Ú	impl_nameÚ
kernel_sigÚargs_exprs_strrb   Údevice_check_argsrâ   Úhas_tensor_optionsrÞ   Úcandidate_argsÚ	device_ofÚpayloadr¨   s                             @r3   rk   z$RegisterDispatchKey.gen_unstructuredˆ  sõ  ø€ õ % QÑ'Ô'ð l	*ð l	*Ø ˆLØ',Ð$ØÔ%×0Ò0°Ñ3Ô3ð  àÔ&Ô3µ{Ô7GÒGÐGØœŸš™œ­Ô);Ð;Ð;ð Ô.ð <õ ˜œœÑ'Ô'¨1Ò,Ð,à#'�L�LàÔ*Ô=ð à˜Ý:¸1¸aÀÔASÑTÔTð &ð 04Ð,Ð,àð/l	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ð l	*ð0 Ô+ð Øð3l	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ð l	*ð8 ”�vÔ2Ð2Ð2Øœ×AÒAÀ!ÑDÔDð 3ð ð?l	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ð l	*ðB ×)Ò)¨!Ñ,Ô,ˆCà—8’8‘:”:ˆDØ×+Ò+Ñ-Ô-×6Ò6Ñ8Ô8ˆLØ—=’=‘?”?ˆDØ—y’yÐ 8Ð 8°4Ð 8Ñ 8Ô 8Ñ8Ô8ˆHõ .ÔBØ˜%°%ðñ ô ˆMð
 Œ{�fÔ;Ð;Ð;Ø�Ø,×7Ò7¸t¼{Ð7ÑKÔKð ?ð ?�GØÐ>¨7¯<ª<©>¬>Ð>Ð>Ð>Ñ>�F�FØðel	*ð l	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ðf ”¥Ô <Ð<Ð<ðð ð ð ð ð ð �Ø,×7Ò7¸t¼{Ð7ÑKÔKð 5ð 5�GØ˜m˜m¨GÑ4Ô4Ñ4�F�FØðl	*ð l	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ðB ”¥Ô ;Ð;Ñ;àð 
Øœ6Ô+Ô4Ð@Ð@Ð@Ø$%¤FÔ$4Ô$=Ô$FÔ$K�MðØðð Øðð Øðð à,ðð ð ð	ð ð ðOl	*ð l	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ð` ,ð >Ø×7Ò7¸¸1Ñ=Ô=ðcl	*ð l	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ðf  Ô-×8Ò8¸Ñ;Ô;�ØÐ#Øðkl	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ð l	*ðl Ô)Ð1Ø#+Ô#9Ð NÐ N¸X¼_Ð NÐ N�I�Ià#+Ô#9Ð hÐ h¸TÔ=SÐ hÐ hÐW_ÔWfÐ hÐ h�Iå-¨a°Ô1CÑDÔD�
à!%§¢ð +ð +å&ØŸš™œ¨×)=Ò)=Ñ)?Ô)?Èðñ ô ð+ñ +ô +ñ "ô "�ð  8�àÔ%Ô2ð Ý(1¬ØœÔ(Ô,¨a¬fÔ.>Ô.Nñ)ô )Ð%õ $7×#GÒ#GØœ­Ð->Ñ(?Ô(?Àñ$ô $�Lð  8�Ø”>ð 'n dÔ&8Ô&Eð 'nÝ),ð -ð -à!"¤Ô!1Ô!9ð-ñ -ô -ñ *ô *Ð&ð *ð "nð(@˜õ 0°Ô0BÔ0OÑPÔPð uØ+tÐfrÐ+tÐ+t˜Løð  !œvÔ/Ô8ÐDð œVÔ-Ô6Ô?Ð@Ð@à!#ð !õ
 *3¬Ø$ØœFÔ,Ô0ØœFÔ,Ô<ñ*ô *˜õ %)ðð à)7ðñ ô ð
 !ñ%ô %˜	ð %Ð0Ø+mÐ_hÐ+mÐ+mÐ+m˜Lðð ðð ð ðð ð  ðð ð ð	ð ð ðð ð ðð ð %ðð ð ðql	*ð l	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ðJ ”¥Ô 3Ð3Ð3ØÔ/ð E°4Ô3Wð EØðOl	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ð l	*ðR 2¨$Ð1Ð1Ð1�GØD a¤f¤kÐDÐD°wÐDÐDÐDðUl	*ð l	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*õX ˜Tœ[Ñ)Ô)Ð)Ð)ðYl	*ð l	*ð l	*ñ l	*ô l	*ð l	*ð l	*ð l	*ð l	*ð l	*ð l	*ð l	*øøøð l	*ð l	*ð l	*ð l	*ð l	*ð l	*sX   ‘B-VÃVÃ .VÄC(VÈAVÉ%AVËVË+VÌH VÔ""VÕVÕ6VÖVÖV)rY   r   rZ   r[   r\   r8   r(   r8   )re   rf   r(   r)   )re   r   r(   rw   )re   r   rm   r€   r(   rV   )rm   r   r(   r)   ri   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Ústaticmethodrd   r   rv   r   r®   rr   rk   rL   r5   r3   rR   rR   é   s  € € € € € € àÐÐÑðð ð ñ ð ÐÐÑð €J€J�Jð
 €L€L�Lð "Ð!Ð!Ñ!ð *Ð)Ð)Ñ)àðð ð ñ „\ðð !ðð ð ñ !Ô ðð"
ð 
ð 
ð 
ð1ð 1ð 1ð 1ðfEð Eð Eð Eð< CGðo*ð o*ð o*ð o*ð o*ð o*ð o*r5   rR   c                  óR   — e Zd ZU ded<   dd
„Zdd„Zdd„Zdd„Zedd„¦   «         Z	dS )r³   r   rm   r§   r   Úparent_classr8   Úgenerate_superr&   r(   c                ój   ‡ ‡‡— |r|› d�ŠndŠdˆˆ ˆfd„}d	 |d
d¬¦  «        › d	 |dd¬¦  «        › d	�S )NzE::set_output_raw_strided(output_idx, sizes, strides, options, names);r�   ra   r8   Úmaybe_create_proxyr&   r(   c           	     ó�   •— d| › dt          j        ‰                     ‰|¦  «        d¦  «        › dt          j        ‰d¦  «        › d�S )Nz
void set_output_z|(
    int64_t output_idx, IntArrayRef sizes, IntArrayRef strides,
    TensorOptions options, DimnameList names
) override {
ú    zÏ
    if (!names.empty()) {
      namedinference::propagate_names(outputs_[output_idx], names);
    }
    // super must happen after, so that downstream can use maybe_get_output
    // to retrieve the output
ú
}
)ÚtextwrapÚindentÚgen_class_set_output_body)ra   r   r§   rn   Úset_output_supers     €€€r3   Úgen_set_output_functionz]StructuredRegisterDispatchKey.gen_class_set_output_functions.<locals>.gen_set_output_functionM  sg   ø€ ðØðð õ
 
„�×/Ò/°Ð3EÑFÔFÈÑOÔOðð õ 
„Ð! 6Ñ*Ô*ðð ð ð r5   rÃ   ÚstridedT)r   Úraw_stridedF)ra   r8   r   r&   r(   r8   rL   )rn   r§   rý   rþ   r  r  s   ``   @r3   Úgen_class_set_output_functionsz<StructuredRegisterDispatchKey.gen_class_set_output_functionsE  s˜   øøø€ ð ð 	"Ø".ÐuÐuÐuÐÐà!Ðð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ØÐ˜°tÐ<Ñ<Ô<ðð àÐ˜¸5ÐAÑAÔAðð ð ð 	r5   r   c                ó8  — | j         j        t          j        t          j        t          j        t          j        fv rd}|dz   }ndx}}|rd}nd}|t          j        u rW| j         j        t          j	        t          j
        t          j        t          j        t          j        t          j        fv sJ ‚|› d�S |t          j        u r|› d|› �S |t          j        u r|› d|› �S |t          j        u s|t          j        u rt          |› d�¦  «        ‚t!          |¦  «         d S )	Na  
auto current_device = guard_.current_device();
if (C10_UNLIKELY(current_device.has_value())) {
  TORCH_INTERNAL_ASSERT(*current_device == options.device(),
    "structured kernels don't support multi-device outputs");
} else {
  guard_.reset_device(options.device());
}
rÃ   r�   z¶
auto maybe_proxy = maybe_create_proxy(out, sizes, strides, options);
if (C10_UNLIKELY(maybe_proxy.has_value())) {
    proxy_outputs_[output_idx] = std::move(maybe_proxy).value();
}
z<
outputs_[output_idx] = create_out(sizes, strides, options);zS
const auto& out = outputs_[output_idx].get();
check_inplace(out, sizes, options);
zY
const auto& out = outputs_[output_idx].get();
resize_out(out, sizes, strides, options);
ú1 structured operators are currently not supported)r$   r+   r   r/   r0   r1   r:   r   r¥   r-   r,   r™   rš   ÚmutableÚscratchr›   r    )rn   r§   r   Úmaybe_set_guardÚmaybe_set_guard_lineÚcreate_proxys         r3   r  z7StructuredRegisterDispatchKey.gen_class_set_output_bodyb  s  € ØÔÔ*ÝÔÝŒOÝŒOÝÔ>ð	/
ð 
ð 
ðˆOð $3°TÑ#9Ð Ð à57Ð7Ð  ?àð 	ðˆLˆLð ˆLà•
Ô%Ð%Ð%ØÔ%Ô2ÝÔ Ý”ÝÔ Ý”Ý”ÝÔBð7ð ð ð ð ð -ð ?ð ?ð ?ð ?à•*Ô$Ð$Ð$Ø,ð ð ð ðð ð ð •*”.Ð Ð Ø,ð ð ð ðð ð ð •*Ô$Ð$Ð$¨­ZÔ-?Ð(?Ð(?Ý ØÐGÐGÐGñô ð õ ˜‰OŒOˆOˆOˆOr5   Ú
class_namerª   Úintc                ó¨  — |t           j        u rdS |t           j        u r|› d�S |t           j        u rcd                     d„ t          |¦  «        D ¦   «         ¦  «        }d                     d„ t          |¦  «        D ¦   «         ¦  «        }|› d|› d|› d�S |t           j        u s|t           j        u rt          |› d	�¦  «        ‚t          |¦  «         d S )
Nr�   z,(Tensor& self) : outputs_{std::ref(self)} {}r�   c              3  ó    K  — | ]	}d |› �V — Œ
dS )zTensor& outNrL   ©r†   r‡   s     r3   r‹   z?StructuredRegisterDispatchKey.gen_class_ctor.<locals>.<genexpr>¥  s+   è è € Ð KÐ K°qÐ!2¨qÐ!2Ð!2Ð KÐ KÐ KÐ KÐ KÐ Kr5   c              3  ó"   K  — | ]
}d |› d�V — ŒdS )zstd::ref(outrŽ   NrL   r  s     r3   r‹   z?StructuredRegisterDispatchKey.gen_class_ctor.<locals>.<genexpr>¦  s.   è è € Ð MÐ M¸Ð!4°Ð!4Ð!4Ð!4Ð MÐ MÐ MÐ MÐ MÐ Mr5   rŒ   z) : outputs_{ z } {}r  )
r   r¥   r™   rš   rŸ   Úranger  r  r›   r    )rn   r§   r  rª   Úout_argsÚout_refss         r3   Úgen_class_ctorz,StructuredRegisterDispatchKey.gen_class_ctorž  sô   € Ø•
Ô%Ð%Ð%Ø�2Ø•*Ô$Ð$Ð$à ÐRÐRÐRÐRØ•*”.Ð Ð Ø—y’yÐ KÐ K½EÀ'¹N¼NÐ KÑ KÔ KÑKÔKˆHØ—y’yÐ MÐ M½eÀG¹n¼nÐ MÑ MÔ MÑMÔMˆHØ ÐNÐN 8ÐNÐN¸HÐNÐNÐNÐNØ•*Ô$Ð$Ð$¨­ZÔ-?Ð(?Ð(?Ý ØÐGÐGÐGñô ð õ ˜‰OŒOˆOˆOˆOr5   re   r   c               óâ  — |t           j        u rd}d}d}nr|t           j        u r"d}d}dt          |j        j        ¦  «        › d�}nB|t           j        u r"d}d}dt          |j        j        ¦  «        › d�}nt          d|› �¦  «        ‚| j        j	        t          j        k    r| j        rd	}	n\d
}	nY| j        j	        t          j        k    rd}	n<| j        j	        t          j        k    rd}	n| j        j	        t          j        k    rd}	nd}	d}
|                      ||t          |j        j        ¦  «        ¦  «        }d|› d|› d�t#          j        ||
¦  «        › t#          j        |                      |||¦  «        |
¦  «        › dd|› d�dd|› dt          |j        j        ¦  «        › d�t#          j        ||
¦  «        › t#          j        |	|
¦  «        › df
}d                     d„ |D ¦   «         ¦  «        S )NÚTensorzoutputs_[output_idx]r�   zstd::reference_wrapper<Tensor>zaproxy_outputs_[output_idx].has_value() ? *proxy_outputs_[output_idx] : outputs_[output_idx].get()z$std::array<::std::optional<Tensor>, z> proxy_outputs_;zUnsupported SchemaKind z4c10::hip::OptionalHIPGuardMasqueradingAsCUDA guard_;z$c10::cuda::OptionalCUDAGuard guard_;z c10::OptionalDeviceGuard guard_;r  zstruct z final : public z {zA    const Tensor& maybe_get_output(int64_t output_idx) override {z      return rÀ   z    }z    std::array<r�   z> outputs_;z};rÃ   c              3  ó   K  — | ]}|¯|V — Œ	d S ri   rL   )r†   Úlines     r3   r‹   z:StructuredRegisterDispatchKey.gen_class.<locals>.<genexpr>è  s'   è è € Ð8Ð8 $°4Ð8˜Ð8Ð8Ð8Ð8Ð8Ð8r5   )r   r¥   r™   rž   r}   rª   rš   ÚRuntimeErrorr$   r+   r   r/   r'   r:   r0   r1   r  r  r  r  rŸ   )rn   re   r§   r  rý   rþ   Úoutput_typeÚoutput_valueÚproxy_fieldÚguard_fieldr  Úclass_ctor_strÚliness                r3   Ú	gen_classz'StructuredRegisterDispatchKey.gen_class¯  s,  € ð •
Ô%Ð%Ð%Ø"ˆKØ1ˆLØˆKˆKØ•*Ô$Ð$Ð$Ø:ˆKØ~ˆLØgÅÀQÄVÄ^ÑATÔATÐgÐgÐgˆKˆKØ•*”.Ð Ð Ø:ˆKØ~ˆLØgÅÀQÄVÄ^ÑATÔATÐgÐgÐgˆKˆKåÐ<¸Ð<Ð<Ñ=Ô=Ð=àÔÔ*­kÔ.>Ò>Ð>ØŒyð EØT��àD��àÔÔ+ÝÔAòBð Bð =ˆKˆKØÔÔ,µ´Ò?Ð?à<ˆKˆKØÔÔ,µ´Ò?Ð?Ø<ˆKˆKàˆKàˆØ×,Ò,¨Q°
½CÀÄÄÑ<OÔ<OÑPÔPˆàC�jÐCÐC°,ÐCÐCÐCÝŒ˜~¨vÑ6Ô6Ð8ÝŒ˜t×BÒBÀ1ÀlÐTbÑcÔcÐekÑlÔlÐnØOØ-˜LÐ-Ð-Ð-ØàM˜kÐMÐM­S°´´Ñ-@Ô-@ÐMÐMÐMÝŒ˜{¨FÑ3Ô3Ð5ÝŒ˜{¨FÑ3Ô3Ð5Øð
ˆð �yŠyÐ8Ð8¨%Ð8Ñ8Ô8Ñ8Ô8Ð8r5   rV   c                ó‚  ‡— |j         rJ ‚| j        t          j        u r| j                             |¦  «        sd S | j        j        t          j	        k    r'|j
                             ¦   «         t          j        u rd S t          j        |dd¬¦  «        }| j                             |¦  «        }t#          |j
        d| j        j        › d�|d uo|                     ¦   «         ¬¦  «        Š| j        t          j        u r=d}|                     | j        ¬¦  «        D ]}|d|                     ¦   «         › d	�z  }Œ|S | j        t          j        u r6d@ˆfd„}d}|                     | j        ¬¦  «        D ]}| ||¦  «        z  }Œ|S | j        t          j        u �r_|j
                             ¦   «         }g }t3          ‰                     ¦   «         ¦  «        }	| j        j        t          j        u rAdt9          j        | j        ¦  «        › d|j        › �}
dt9          j        | j        ¦  «        › �}nŸ| j        j        t          j	        u rAdt9          j        | j        ¦  «        › d|j        › �}
dt9          j        | j        ¦  «        › �}nF| j                             | j        ¦  «        }|€J ‚d|j        › d|j        › �}
|j         › d|j        › �}| j        j!        r†tE          j#        |j
        j        j        |j
        j        j$        ¦  «        }| %                    tL           '                    |j(        t3          |¦  «        ‰                     ¦   «         ¦  «        ¦  «         |t          j)        u r| %                    |
› d�¦  «         n~|t          j*        u r| %                    |
› d�¦  «         nW|t          j        u rId +                    d„ |j
        j        j        D ¦   «         ¦  «        }| %                    |
› d|› d�¦  «         d +                    d„ tY          |	t[          j.        | j        ¦  «        d¬¦  «        D ¦   «         ¦  «        }| j        j        j/        r“| %                    d|› d�¦  «         g | j        j        j/        j0         1                    ¦   «         ¢| j        j        j/        j2        ‘}|D ]!}|	 3                    d„ |D ¦   «         ¦  «         Œ"| %                    d¦  «         n| %                    d|› d�¦  «         t[          j4        | j        ¦  «        }tk          |¦  «        D ]¬\  }}tm          to          tp          ¦  «        ¦  «        |j9        j:        k    sJ ‚|t          j        u rd |› d!�}nd"|› d#�}|	 %                    tw          |ty          |j9        j        t{          to          tp          ¦  «        ¦  «        ¦  «        ¬$¦  «        ¦  «         Œ­| j        j        t          j	        k    r¬t          j        | j        j        d|j>        ¬¦  «        }| ?                    ¦   «         }|                     ¦   «         }d +                    d%„ tY          |	|                     ¦   «         d¬¦  «        D ¦   «         ¦  «        }| %                    d&|› d'|› d�¦  «         ny| j        j        t          j        k    r_d +                    d(„ tY          |	t[          j@        | j        ¦  «        d¬¦  «        D ¦   «         ¦  «        }| %                    d)|› d�¦  «         |t          j        u s|t          j*        u rHtƒ          t…          |j
        jC        ¦  «        ¦  «        D ]!}| %                    d*|› d+|› d,|› d-�¦  «         Œ"|t          j)        u rjt…          |j
        jC        ¦  «        d.k    rd/}n×d +                    d0„ tƒ          t…          |j
        jC        ¦  «        ¦  «        D ¦   «         ¦  «        }d1|› d!�}n�|t          j*        u rd2}n||t          j        u rnt…          |j
        jC        ¦  «        d.k    r|j
        j        j        d3         j        }n4d +                    d4„ |j
        j        j        D ¦   «         ¦  «        }d5|› d!�}| %                    d6|› d7�¦  «         d8 +                    |¦  «        }|  D                    |||
|| j        j        jE        d u¬9¦  «        › d:‰ F                    ¦   «         › d;|› d<�S | j        t          j        u r%d=|j
        j        › d>‰                     ¦   «         › d?�S t�          | j        ¦  «         d S )ANFr»   ry   rF   rz   r�   r¾   r¿   rÀ   rÁ   r   r(   r8   c                ó  •— d|                       ¦   «         › d‰                     ¦   «         › dd                     d„ t          |                      ¦   «         ‰                     ¦   «         ¦  «        D ¦   «         ¦  «        › d�S )NrÃ   rÄ   rŒ   r�   c              3  ó$   K  — | ]}|j         V — Œd S ri   r’   r”   s     r3   r‹   zOStructuredRegisterDispatchKey.gen_one.<locals>.generate_defn.<locals>.<genexpr>%  rÆ   r5   rÇ   rÈ   rÉ   s    €r3   rÊ   z<StructuredRegisterDispatchKey.gen_one.<locals>.generate_defn"  s‚   ø€ ðØ‡‚�„ðð à�Š‰
Œ
ðð à—Y’YÐ_Ð_­y¸×9JÒ9JÑ9LÔ9LÈcÏmÊmÉoÌoÑ/^Ô/^Ð_Ñ_Ô_Ñ_Ô_ðð ð ð r5   Ústructured_Ú_meta_zat::meta::structured_Ú_default_backend_z::structured_z op;z
 op(self);r�   c              3  ó$   K  — | ]}|j         V — Œd S ri   r�   r¹   s     r3   r‹   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>X  s$   è è € Ð(NÐ(N°A¨¬Ð(NÐ(NÐ(NÐ(NÐ(NÐ(Nr5   z op(r…   c              3  ó$   K  — | ]}|j         V — Œd S ri   r’   r”   s     r3   r‹   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>]  s8   è è € ð #ð #àð ”ð#ð #ð #ð #ð #ð #r5   rÍ   zauto precompute = op.meta(c              3  óz   K  — | ]6}t          d |j        › �t          j        ||j        ¬¦  «        ¬¦  «        V — Œ7dS )zprecompute.)Úbinds©r“   rY   N)r   ra   rq   Úargument_type)r†   rc   s     r3   r‹   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>r  si   è è € ð #ð #ð
  õ	 Ø!9¨s¬xÐ!9Ð!9Ý!+Ô!9¸#ÀSÄXÐ!NÑ!NÔ!Nðñ ô ð#ð #ð #ð #ð #ð #r5   z(void)precompute;zop.meta(zop.maybe_get_output(rŽ   zop.outputs_[ú]r3  c              3  ó$   K  — | ]}|j         V — Œd S ri   r’   r”   s     r3   r‹   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>£  s8   è è € ð &ð &àð ”Fð&ð &ð &ð &ð &ð &r5   zat::rŒ   c              3  ó$   K  — | ]}|j         V — Œd S ri   r’   r”   s     r3   r‹   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>³  s8   è è € ð 'ð 'àð ”Fð'ð 'ð 'ð 'ð 'ð 'r5   zop.impl(zif (op.proxy_outputs_[z].has_value()) op.outputs_[z!].get().copy_(*op.proxy_outputs_[z]);rƒ   zstd::move(op.outputs_[0])c              3  ó"   K  — | ]
}d |› d�V — ŒdS )zstd::move(op.outputs_[z])NrL   r  s     r3   r‹   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>É  sA   è è € ð &ð &àð 7°Ð6Ð6Ð6ð&ð &ð &ð &ð &ð &r5   zstd::make_tuple(rn   r   c              3  ó$   K  — | ]}|j         V — Œd S ri   r�   r¹   s     r3   r‹   z8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>Ô  s$   è è € Ð$JÐ$J° Q¤VÐ$JÐ$JÐ$JÐ$JÐ$JÐ$Jr5   zstd::forward_as_tuple(zreturn ú;rÃ   )r  rý   rþ   z

z {
r  rÑ   z", TORCH_FN(rÐ   rÒ   )HrÕ   rS   r"   rÖ   rT   r×   r$   r+   r   r:   r}   r˜   r   rš   r   rØ   r±   r   Úsupports_symintrÙ   rÚ   rU   rÛ   rÜ   rÝ   rs   r£   r-   Úmetara   rm   rá   rà   râ   rã   rä   rå   r.   rR   rd   rb   r¥   r™   rŸ   r   rq   Úmeta_argumentsÚprecomputedÚreplaceÚvaluesÚaddÚextendÚout_argumentsr    r
   r   r   ÚnctyperY   r   r   r   Úmanual_cpp_bindingÚmost_faithful_signatureÚimpl_argumentsr  rž   rª   r(  Ústructured_inheritsr¦   r    ) rn   re   rì   Úkernrí   rÁ   rÊ   r§   Úsig_bodyÚcontextr  rý   rµ   rò   Úout_args_strÚ
meta_exprsÚprecomputed_valuesÚprecomputed_elemsr  r‡   r«   r“   Úout_sig_groupÚout_sigÚapi_nameÚ	out_exprsÚ
impl_exprsÚret_exprÚmovedÚrefsÚsig_body_strr¨   s                                   @r3   r´   z%StructuredRegisterDispatchKey.gen_oneê  s!
  ø€ àÔ/Ð/Ð/Ð/ð ŒK�6Ô.Ð.Ð.Ø”M×=Ò=¸aÑ@Ô@ð /ð �4ð ÔÔ+ÝÔAòBð Bà”—’‘”¥¤Ð/Ð/ð �4õ *Ô>Ø�e¨eð
ñ 
ô 
ˆð
 Ô!×,Ò,¨QÑ/Ô/ˆÝØŒFØ@˜dÔ0Ô=Ð@Ð@Ð@Ø˜tÐ#Ð>¨×(<Ò(<Ñ(>Ô(>ð
ñ 
ô 
ˆð Œ;�&Ô7Ð7Ð7ØˆFØ(×3Ò3¸4¼;Ð3ÑGÔGð ;ð ;�ØÐ: w§|¢|¡~¤~Ð:Ð:Ð:Ñ:��ØˆMàŒ[�FÔ8Ð8Ð8ðð ð ð ð ð ð ˆFØ(×3Ò3¸4¼;Ð3ÑGÔGð 1ð 1�Ø˜-˜-¨Ñ0Ô0Ñ0��ØˆMàŒ[�FÔ7Ð7Ñ7Ø”—’‘”ˆAð ˆHõ -1°·²±´Ñ,AÔ,AˆGð Ô!Ô.µ+Ô2BÐBÐBØL­4¬9°T´VÑ+<Ô+<ÐLÐLÀAÄFÐLÐL�
ØJµt´yÀÄÑ7HÔ7HÐJÐJ��àÔ"Ô/ÝÔEðFð Fð X­4¬9°T´VÑ+<Ô+<ÐWÐWÈqÌvÐWÐW�
ØJµt´yÀÄÑ7HÔ7HÐJÐJ��àÔ-×8Ò8¸¼Ñ@Ô@�ØÐ+Ð+Ð+ØE¨8¬?ÐEÐE¸Q¼VÐEÐE�
Ø"*Ô"8ÐXÐXÀxÄÐXÐX�àÔ!Ô.ð Ý$-¤OØ”FÔ$Ô(¨!¬&Ô*:Ô*Jñ%ô %Ð!ð —’Ý'×8Ò8Øœ­Ð->Ñ(?Ô(?ÀÇÂÁÄñô ñô ð ð •JÔ)Ð)Ð)Ø—’ :Ð 3Ð 3Ð 3Ñ4Ô4Ð4Ð4Ø•jÔ(Ð(Ð(Ø—’ :Ð 9Ð 9Ð 9Ñ:Ô:Ð:Ð:Ø•j”nÐ$Ð$Ø#ŸyšyÐ(NÐ(N¸¼Ô9IÔ9MÐ(NÑ(NÔ(NÑNÔN�Ø—’ :Ð CÐ C°<Ð CÐ CÐ CÑDÔDÐDð Ÿšð #ð #å"Ø�ZÔ6°t´vÑ>Ô>Àuðñ ô ð#ñ #ô #ñ ô ˆJð ŒvŒzÔ%ð ;ð —’Ð K¸ZÐ KÐ KÐ KÑLÔLÐLð
&Ø”V”ZÔ+Ô3×:Ò:Ñ<Ô<ð&à”F”JÔ*Ô.ð&Ð"ð *<ð ð Ð%Ø—N’Nð #ð #ð
 $5ð#ñ #ô #ñ ô ð ð ð —’Ð 3Ñ4Ô4Ð4Ð4à—’Ð 9¨:Ð 9Ð 9Ð 9Ñ:Ô:Ð:õ "Ô/°´Ñ7Ô7ˆHÝ'¨Ñ1Ô1ð ð ‘
��7Ý$¥Y­wÑ%7Ô%7Ñ8Ô8¸G¼NÔ<OÒOÐOÐOÐOà�
œÐ&Ð&Ø6°!Ð6Ð6Ð6�D�Dà.¨!Ð.Ð.Ð.�Dà—’ÝØ!õ (Ø#œNÔ/µ½YÅwÑ=OÔ=OÑ1PÔ1Pñô ðñ ô ñ
ô 
ð 
ð 
ð Ô"Ô/ÝÔEòFð Fõ !2Ô FØ”F”J u¸qÔ?Sð!ñ !ô !�ð (×?Ò?ÑAÔA�Ø"Ÿ<š<™>œ>�Ø ŸIšIð &ð &å& w°×0AÒ0AÑ0CÔ0CÈEÐRÑRÔRð&ñ &ô &ñ ô �	ð —’Ð ? xÐ ?Ð ?°)Ð ?Ð ?Ð ?Ñ@Ô@Ð@Ð@ØÔ#Ô0µKÔ4DÒDÐDØ!ŸYšYð 'ð 'å&Ø¥Ô!:¸4¼6Ñ!BÔ!BÈ5ðñ ô ð'ñ 'ô 'ñ ô �
ð —’Ð 9¨:Ð 9Ð 9Ð 9Ñ:Ô:Ð:ð •J”NÐ"Ð" a­:Ô+=Ð&=Ð&=Ý�s 1¤6¤>Ñ2Ô2Ñ3Ô3ð ð �AØ—O’OØy°ÐyÐyÈqÐyÐyÐstÐyÐyÐyñô ð ð ð •JÔ)Ð)Ð)Ý�q”v”~Ñ&Ô&¨!Ò+Ð+Ø:�H�Hà ŸIšIð &ð &å!&¥s¨1¬6¬>Ñ':Ô':Ñ!;Ô!;ð&ñ &ô &ñ ô �Eð  ;°%Ð:Ð:Ð:�H�HØ•jÔ(Ð(Ð(Ø!��Ø•j”nÐ$Ð$Ý�q”v”~Ñ&Ô&¨!Ò+Ð+Ø œvÔ/Ô3°AÔ6Ô;�H�HàŸ9š9Ð$JÐ$J°Q´VÔ5EÔ5IÐ$JÑ$JÔ$JÑJÔJ�DØ?¸Ð?Ð?Ð?�HØ�OŠOÐ1 hÐ1Ð1Ð1Ñ2Ô2Ð2àŸ9š9 XÑ.Ô.ˆLð
 ‡‚Ø €1ØØØŒvŒzÔ-°TÐ9ð	 ñ ô ðð ð ‡‚�„ðð ð ðð ð ð ð Œ[�FÔ/Ð/Ð/ØF˜aœfœkÐFÐF°s·x²x±z´zÐFÐFÐFÐFå˜œÑ%Ô%Ð%à�4r5   N)r§   r   rý   r8   rþ   r&   r(   r8   )r§   r   r   r&   r(   r8   )r§   r   r  r8   rª   r  r(   r8   )re   r   r§   r   r  r8   rý   r8   rþ   r&   r(   r8   )re   r   r(   rV   )
r÷   rø   rù   rú   r  r  r  r(  r   r´   rL   r5   r3   r³   r³   A  s›   € € € € € € àÐÐÑðð ð ð ð:8ð 8ð 8ð 8ðxð ð ð ð"99ð 99ð 99ð 99ðv !ðCð Cð Cñ !Ô ðCð Cð Cr5   r³   )r$   r   r%   r&   r'   r&   r(   r)   )r$   r   r(   r6   )r$   r   r(   r)   )<Ú
__future__r   rã   r  Údataclassesr   Útypingr   r   Útorchgen.api.cppÚapirœ   Útorchgen.api.metar<  Útorchgen.api.structuredrq   Útorchgen.api.translater   Útorchgen.api.typesr   r	   r
   r   r   r   r   r   r   r   r   r   Útorchgen.contextr   r   Útorchgen.modelr   r   r   r   r   r   r   r   r   r   Útorchgen.utilsr    r!   r"   Ú!torchgen.selective_build.selectorr#   r4   r@   rD   rG   rJ   rM   rO   rR   r³   rL   r5   r3   ú<module>rf     sF  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð RÐ QÐ QÐ QÐ QÐ QÐ QÐ Qðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð :Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9ð ð CØBÐBÐBÐBÐBÐBð!ð !ð !ð !ðH*ð *ð *ð *ð8ð ð ð ð.ð ð ð ð$ð ð ð ð<ð ð ð ð.ð ð ð ð: €�$ÐÑÔðM*ð M*ð M*ð M*ð M*ñ M*ô M*ñ ÔðM*ðn
 €�$ÐÑÔðlð lð lð lð lÐ$7ñ lô lñ Ôðlð lð lr5   