
    S j                       S SK Jr  S SKrS SKrS SKJr  S SKJrJr  S SK	J
r
  S SKJs  Jr  S SKJs  Jr  S SKJs  Jr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJ r   S SK!J"r"J#r#  S S	K$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  S S
K/J0r0J1r1  \(       a  S SK2J3r3          SS jr4    SS jr5SS jr6SS jr7SS jr8SS jr9SS jr:\" SS9 " S S5      5       r;\" SS9 " S S\;5      5       r<g)    )annotationsN)	dataclass)LiteralTYPE_CHECKING)assert_never)	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)mapMaybeTarget)SelectiveBuilderc                   U(       a  S/nOS/nU R                   [        R                  [        R                  4;   a  UR	                  S5        OU R                   [        R
                  :X  a+  U(       a  UR	                  S5        OUR	                  S5        OU R                   [        R                  :X  a  UR	                  S5        OU R                   [        R                  :X  a  UR	                  S5        OPU R                   [        R                  :X  a  UR	                  S5        O U(       a  U/ S	Q-  nOUR	                  S
5        UR	                  S5        U$ )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/native/mtia/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MTIA)backend_indexper_operator_headersrocmheaderss       t/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torchgen/dest/register_dispatch_key.pygen_registration_headersr2   /   s   
 <=67!!koo{7G7G%HH67		#	#{'7'7	7NN>?NN?@		#	#{	6:;		#	#{	6:;		#	#{'7'7	7BC	 
 	
 	45NN34N    c                   S nS nU R                   [        R                  [        R                  [        R                  [        R
                  [        R                  [        R                  4;   a0  [        U R                   5      R                  5       nSU 3nSU 3nX4$ U R                   [        R                  [        R                  [        R                  [        R                  4;   a  SnSnX4$ )Nzat::detail::empty_zat::detail::empty_strided_z	at::emptyzat::empty_strided)r%   r   r'   r&   r)   r*   r+   r,   strlower&CompositeExplicitAutogradNonFunctionalQuantizedCPUQuantizedCUDA)r-   
empty_implempty_strided_impldispatchs       r1   gen_empty_impl_namesr=   U   s     J!!&  }11288:)(4
9(D )) 
	#	#::  !!	( 
 !
0))r3   c           	         U R                   [        R                  :X  a  SnOSn[        U 5      u  p#Uc  / $ SU SU SU SU S3	/$ )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       r1   gen_create_out_helperrA   r   sq    !![%5%553!%9-%H"J	 \- 1 !!2=/ B	
 
r3   c                4    [        U 5      u  pUc  / $ SU S3/$ )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      r1   gen_maybe_create_proxy_helperrD      sB    0?A % 	   	
r3   c                H    U R                   [        R                  :X  a  / $ 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   r7   r-   s    r1   gen_resize_out_helperrG      s,    !![%W%WW 		 r3   c                    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");
}
 rF   s    r1   gen_check_inplace_helperrJ      s    	 r3   c                d    S/[        U 5      Q[        U 5      Q[        U 5      Q[        U 5      QSP$ )Nz?C10_DIAGNOSTIC_PUSH_AND_IGNORED_IF_DEFINED("-Wunused-function")zC10_DIAGNOSTIC_POP())rA   rG   rJ   rD   rF   s    r1   gen_registration_helpersrL      sS    I	}	- 
}	- 
"-	0	
 
'}	5 	 r3   T)frozenc                      \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   \        SS j5       r\SS j5       r    SS jr	      SS jr
SS jr S     SS jjrSrg)RegisterDispatchKey   r   r-   zvLiteral[Target.ANONYMOUS_DEFINITION, Target.NAMESPACED_DEFINITION, Target.NAMESPACED_DECLARATION, Target.REGISTRATION]targetr#   selectorboolr/   symint
str | Noneclass_method_nameskip_dispatcher_op_registrationc           	         U [         R                  :X  a  gSnUS-  nU HG  nUR                  R                  5       (       d  M$  USUR                   SU SUR                   S3-  nMI     U$ )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   NoChecktypeis_tensor_likename)r[   argsmethod_namedevice_checkargs        r1   gen_device_check$RegisterDispatchKey.gen_device_check  s     ?***+NTTCxx&&(( %<<?HH:SUYZ]ZbZbYccf!j j 
 r3   c                <  ^ ^ [        U[        5      (       aL  UmTR                  (       a  T R                  T5      $ [	        [        UU 4S jTR                  5       5      5      $ [        U[        5      (       a  T R                  U5      nUc  / $ U/$ [        U5        g )Nc                (   > TR                  U T5      $ Ngen_unstructuredfgselfs    r1   <lambda>.RegisterDispatchKey.__call__.<locals>.<lambda>*  s    t'<'<Q'Br3   )

isinstancer   
structuredgen_structuredlistr!   	functionsr   rh   r   )rl   rj   rrk   s   `  @r1   __call__RegisterDispatchKey.__call__   s    a-..&'A ||**1--BAKKMR  >**%%a(A2++Or3   c                    [         R                  " UR                  SU R                  R                   SUR                  R
                  R                   S3U R                  S9$ )Nwrapper_rC   prefixrT   )r   from_schemafuncr-   r%   r]   overload_namerT   )rl   rj   s     r1   wrapper_kernel_sig&RegisterDispatchKey.wrapper_kernel_sig2  sT     #..FFd00==>a@Y@Y?ZZ[\;;
 	
r3   c                  ^^ Uc  g UR                   R                  5       nU[        R                  L a  SmO!U[        R                  L a  SmO[        S5      eU R                  U5      nUR                  5       nU S3m[        R                  " U5      n[        U5      S:  aY  SR                  UU4S j[        U5       5       5      nUR                  5       R                  5        SS	R                  U5       S
3nO[        U5      S:X  a  US   n	T ST S	U	 S3nU	nO[        UR                   R                  R                  5      S:w  a5  [        S[        UR                   R                  R                  5       35      eSnUR                   R                  R                  S   n
U
R                   R#                  5       (       a  ST ST ST SU
R                   S3	nOT ST S	U
R                   S3nU R                  UR$                  5      nUR                  5       nUR'                  US9 ST SUR                  5        SS	R                  S [)        UR                  5       UR                  5       5       5       5       SU SU S3$ )Nzat::_copy_fromzat::_copy_from_and_resizez1gen_out_inplace_wrapper called on a functional op_tmp   z
  c           	   3  D   >#    U  H  u  pT S U ST SU S3v   M     g7f)z
(std::get<z>(z), );NrI   ).0iret_namecopy_opfunc_ress      r1   	<genexpr>>RegisterDispatchKey.gen_out_inplace_wrapper.<locals>.<genexpr>O  s3      "#:KA ):aS8*CzD#:s    (, )r   r   z%Expected exactly 1 out argument, got  z    for (int64_t i = 0; i < z.size(); ++i) {
        z[i], z[i]);
    }r]   z
 {
  auto z = c              3  8   #    U  H  oR                   v   M     g 7frf   exprr   es     r1   r   r   l  s     6~G}!vvG}   z);
  

  return ;
}
)r|   kindr   inplaceoutAssertionErrorr~   r]   cppreturn_nameslenjoin	enumeratereturns_typecpp_type	argumentsr[   is_list_like
functionaldefnr   )rl   rj   rk   ksigr]   r   updatesreturnsr   out_argfunctional_sigwrapper_namer   r   s                @@r1   gen_out_inplace_wrapper+RegisterDispatchKey.gen_out_inplace_wrapper<  s    9FFKKM
"""&G*.. 1G !TUU%%a(xxzV4=''*|q kk "#,\#:" G ))+4467q<9P8QQRSG!##AH 	8*Bxj;GG166##''(A-$;C@P@P@T@T<U;VW  Gff&&**1-G||((**%J '			8*E',, 0

 %IQxj7<<.C00>xxz |  z^((*+1TYY6~yQTQ^Q^Q`bpbzbzb|G}6~-~, @
) 

 	 	r3   c           
     6  ^ ^ T R                   R                  T5      nT R                   R                  [        R                  :X  a6  T R                   R                  TR                  5      (       a  [        S5      eOT R                   R                  [        R                  :X  a6  T R                   R                  TR                  5      (       a  [        S5      eO<Ub  UR                  (       d(  [        [        UU 4S jTR                  5       5      5      $ [        T R                   T R                  T R                  T R                   T R"                  T R$                  T R&                  T5      n[        [        UR(                  TR                  5       5      5      $ )NzqDo not explicitly specify Meta dispatch key on structured functions, they will be automatically generated for youzDo not explicitly specify CompositeExplicitAutograd dispatch key on structured functions, they will be automatically generated for youc                (   > TR                  U T5      $ rf   rg   ri   s    r1   rm   4RegisterDispatchKey.gen_structured.<locals>.<lambda>  s    4+@+@A+Fr3   )r-   
get_kernelr%   r   r'   
has_kernelr   r   r7   rp   rr   r!   rs   StructuredRegisterDispatchKeyrQ   rR   r/   rT   rV   rW   gen_one)rl   rk   metadatastructured_gens   ``  r1   rq   "RegisterDispatchKey.gen_structuredr  sH   %%003**k.>.>>!!,,QUU33$N  4 ++AAB !!,,QUU33$Y  4
 X%8%8!FVWW6KKMMIIKK""00	
 H^33Q[[]CDDr3   Nc                  ^ [        U5         SnSnU R                  R                  U5      (       d  U R                  R                  [        R
                  :X  ab  UR                  R                  5       [        R                  L a7  UR                  (       d&  [        UR                  R                  5      S:X  a  SnOFU R                  R                  (       d!  Ub  [        XU R                  5      (       a  SnO
 S S S 5        g UR                  (       a
   S S S 5        g U R                   ["        R$                  L a*  U R&                  R)                  U5      (       d
   S S S 5        g U R+                  U5      mTR-                  5       nTR/                  5       R1                  5       nTR3                  5       nSR5                  S U 5       5      n[6        R8                  " USSS9n	U R                   ["        R:                  L aD  Sn
U	R=                  U R>                  S9 H  nU
S	URA                  5        S
3-  n
M     U
sS S S 5        $ U R                   ["        RB                  L a?  S(U4S jjnSn
U	R=                  U R>                  S9 H  nX" U5      -  n
M     U
sS S S 5        $ U R                   ["        RD                  L Gaz  U(       a{  UR                  R2                  RF                  c  [I        S5      eUR                  R2                  RF                  RJ                  R,                  nSU SU SU SU SU S3sS S S 5        $ U(       a  U RM                  X5      sS S S 5        $ U R                  RO                  U5      nUc
   S S S 5        g U RP                  c  URR                   SURT                   3nO(URR                   SU RP                   SURT                   3n[W        XR                  5      nSR5                  S [Y        TR3                  5       UR3                  5       SS9 5       5      nSnU R                  RZ                  (       a}  [\        R^                  " UR                  R2                  R`                  UR                  R2                  Rb                  5      n[d        Rg                  URh                  [k        U5      U5      nSnURZ                  (       Ga=  U R                  RZ                  (       Ga!  [m        S UR                  R2                  Rn                   5       5      nU(       a,  Sn[q        U R                  R                  5      (       a  SU 3nOUR                  R2                  RF                  b+  UR                  R2                  RF                  RJ                  /O/ n[\        R^                  " UUR                  R2                  R`                  UR                  R2                  Rb                  5      n[s        S U 5       S 5      nUb  SU S3nSU SU SU SU S U S!U SU S"3sS S S 5        $ U R                   ["        R$                  L aX  UR                  (       d  U Rt                  (       a
   S S S 5        g S#U S$3nS%UR                  R,                   S&U S'3sS S S 5        $ [w        U R                   5         S S S 5        g ! , (       d  f       g = f))NFr   Tr   c              3  @   #    U  H  oR                  5       v   M     g 7frf   )r   r   as     r1   r   7RegisterDispatchKey.gen_unstructured.<locals>.<genexpr>  s      84a4s   methodfallback_bindingr   rT   
TORCH_API ;
c                   > SU R                  5        STR                  5        SSR                  S [        U R	                  5       TR	                  5       5       5       5       S3$ )N

 {
return r   r   c              3  8   #    U  H  oR                   v   M     g 7frf   r   r   s     r1   r   NRegisterDispatchKey.gen_unstructured.<locals>.generate_defn.<locals>.<genexpr>       _/^!vv/^r   );
}
r   r]   r   r   r   cpp_sigr   s    r1   generate_defn;RegisterDispatchKey.gen_unstructured.<locals>.generate_defn  s`       
|1TYY_y9J9J9Lcmmo/^__` a r3   z1Expected self_arg to be non-None for inplace_metar    r   z") {
  TORCH_CHECK_NOT_IMPLEMENTED(z[.is_meta(),
    "Cannot inplace into non-meta tensor with meta tensor argument");
  return r   z::c              3  :   #    U  H  nUR                   v   M     g 7frf   r   r   s     r1   r   r     s      + FF   r   rY   z// DeviceGuard omittedc              3  B   #    U  H  n[        U[        5      v   M     g 7frf   )ro   r    r   s     r1   r   r     s"      -!9A #1&<==!9s   z=
  const DeviceGuard device_guard(device_or_default(device));z7globalContext().lazyInitDevice(c10::DeviceType::CUDA);
c              3  ~   #    U  H3  nUR                   R                  5       (       d  M$  UR                   v   M5     g 7frf   )r[   r\   r]   r   s     r1   r   r   %  s1      )7A#$66#8#8#: !,166()7s   #==z1const OptionalDeviceGuard device_guard(device_of());znamespace {

z) {
  z

  r   z);
}

} // anonymous namespace
z	TORCH_FN(r   m.impl("z",
z);
r   r   returnr5   )<r   r-   r   r%   r   r'   r|   r   r   r   has_composite_kernelr   r   use_out_as_primaryr   manual_kernel_registrationrQ   r"   REGISTRATIONrR   is_native_function_selectedr~   r]   r   r   r   r   r   from_native_functionNAMESPACED_DECLARATION
signaturesrT   declNAMESPACED_DEFINITIONANONYMOUS_DEFINITIONself_argr   argumentr   r   rV   cpp_namespacekernelr   r   device_guard	itertoolschainr   flat_positionalrO   rb   r`   rr   anynon_outr   nextrW   r   )rl   rj   rk   inplace_metagets_out_inplace_wrapperr]   r   r^   args_strcpp_sig_groupresultr   r   self_arg_namer   	impl_name
kernel_sigargs_exprs_strr`   device_check_argsr   has_tensor_optionsr   candidate_args	device_ofpayloadr   s                             @r1   rh   $RegisterDispatchKey.gen_unstructured  s    %Q' L',$%%0033&&33{7G7GG););; .. '1,#'L**==:1ASASTT 04,/ ('0 ++3 ('8 v222AA!DD? ('B ))!,C88:D++-668L==?Dyy 84 88H .BB%%M
 {{f;;;,77t{{7KG
7<<>*:#>>F  Le ('f  < << ,77t{{7KGmG44F  L ('B  ; ;;vv''008,O  %&FF$4$4$=$=$F$F$K$KM avQxj !,o .

 	U ('f ,77=i ('l  --88;#q ('r ))1#+#9#9":"X__<M NI#+#9#9":"T=S=S<TTVW_WfWfVg hI-a1C1CD
!% +&)=)=)?+ "  8%%22(1((,,aff.>.>.N.N)% $7#G#G->(?$L  8>>>d&8&8&E&E&E), -!"!1!1!9!9- *& *(@ 00B0B0O0OPP-efres+tL  !vv//88D VV--66??@!# !
 *3$FF,,00FF,,<<* %))7
 !%	 %0-^_h^iil+mL avQxj !. . 

An% &w ('P  3 33//43W3WU ('X !*$q1G%affkk]$witD[ ('^ T[[)_ (''sS   C,[
[
>[
$C[
A[
B[
>[
[
J%[
6A [
?"[
+[


[rI   )r[   r   r^   zlist[Argument]r_   r5   r   r5   )rj   z%NativeFunctionsGroup | NativeFunctionr   	list[str])rj   r   r   z%NativeSignature | DispatcherSignature)rj   r   rk   zNativeFunctionsGroup | Noner   rU   )rk   r   r   r  rf   )__name__
__module____qualname____firstlineno____annotations__staticmethodrb   r   ru   r~   r   rq   rh   __static_attributes__rI   r3   r1   rO   rO      s       J
 L "! &*)%3BE	  ! !"

	.
44$?4	4lE@ CGr*r*$?r*	r* r*r3   rO   c                      \ rS rSr% S\S'           SS jrSS jrSS jr            SS jr\	SS j5       r
S	rg
)r   iM  r   rk   c                `   ^ ^^ U(       a  U S3mOSmS
UU U4S jjnSU" SSS9 SU" SS	S9 S3$ )NzE::set_output_raw_strided(output_idx, sizes, strides, options, names);r   c           	        > SU  S[         R                  " TR                  TU5      S5       S[         R                  " TS5       S3$ )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)r]   maybe_create_proxyr   rl   set_output_supers     r1   gen_set_output_function]StructuredRegisterDispatchKey.gen_class_set_output_functions.<locals>.gen_set_output_functionY  s\      
//3EFO P Q 
!6* + , r3   r   stridedT)r  raw_stridedF)r]   r5   r  rS   r   r5   rI   )rl   r   parent_classgenerate_superr  r  s   ``   @r1   gen_class_set_output_functions<StructuredRegisterDispatchKey.gen_class_set_output_functionsQ  sZ     "./tu!	 	 t< = >5A B C 	r3   c                @   U R                   R                  [        R                  [        R                  [        R
                  [        R                  4;   a  SnUS-   nOS=pCU(       a  SnOSnU[        R                  L a  U R                   R                  [        R                  [        R                  [        R                  [        R                  [        R
                  [        R                  [        R                  4;  a#  [        SU R                   R                   S35      eU S3$ U[        R                  L a  U SU 3$ U[        R                  L a  U S	U 3$ U[        R                  L d  U[        R                   L a  [        U S
35      e[#        U5        g )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Unexpected dispatch key z for functional schemaz<
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)   r*   r+   r7   r   r   r'   r&   r,   r   r   r   mutablescratchr   )rl   r   r  maybe_set_guardmaybe_set_guard_linecreate_proxys         r1   r  7StructuredRegisterDispatchKey.gen_class_set_output_bodyn  s   **OOOO>>	/
 
O $3T#9 577 L L
%%%!!..      BB7  %.t/A/A/N/N.O P, ,  -- .< ? ?*$$$,- .   *.. ,- .   *$$$Z-?-?(? #FG  Or3   c                   U[         R                  L a  gU[         R                  L a  U S3$ U[         R                  L aM  SR	                  S [        U5       5       5      nSR	                  S [        U5       5       5      nU SU SU S3$ U[         R                  L d  U[         R                  L a  [        U S	35      e[        U5        g )
Nr   z,(Tensor& self) : outputs_{std::ref(self)} {}r   c              3  ,   #    U  H
  nS U 3v   M     g7f)zTensor& outNrI   r   r   s     r1   r   ?StructuredRegisterDispatchKey.gen_class_ctor.<locals>.<genexpr>  s      KNq;qc!2Ns   c              3  .   #    U  H  nS U S3v   M     g7f)zstd::ref(outr   NrI   r%  s     r1   r   r&    s      Mn<s!!4n   r   z) : outputs_{ z } {}r  )
r   r   r   r   r   ranger  r  r   r   )rl   r   
class_namer   out_argsout_refss         r1   gen_class_ctor,StructuredRegisterDispatchKey.gen_class_ctor  s    
%%%*$$$ \!QRR*.. yy KE'N KKHyy MeGn MMH \8*OH:XNN*$$$Z-?-?(? #FG  Or3   c                  U[         R                  L a  SnSnSnOU[         R                  L a(  SnSnS[        UR                  R
                  5       S3nOIU[         R                  L a(  SnSnS[        UR                  R
                  5       S3nO[        SU 35      eU R                  R                  [        R                  :X  a  S	n	OU R                  R                  [        R                  :X  a  S
n	OU R                  R                  [        R                  :X  a  S
n	OXU R                  R                  [        R                  :X  a  S
n	O-U R                  R                  [        R                  :X  a  S
n	OSn	Sn
U R!                  X#[        UR                  R
                  5      5      nSU SU S3["        R$                  " X5       ["        R$                  " U R'                  X$U5      U
5       SSU S3SSU S[        UR                  R
                  5       S3["        R$                  " X5       ["        R$                  " X5       S4
nSR)                  S U 5       5      $ )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 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  6   #    U  H  o(       d  M  Uv   M     g 7frf   rI   )r   lines     r1   r   :StructuredRegisterDispatchKey.gen_class.<locals>.<genexpr>  s     8%$4%s   
	)r   r   r   r   r|   r   r   RuntimeErrorr-   r%   r   r)   r7   r*   r+   r,   r-  r  r  r  r   )rl   rj   r   r*  r  r  output_typeoutput_valueproxy_fieldguard_fieldr  class_ctor_strliness                r1   	gen_class'StructuredRegisterDispatchKey.gen_class  s    
%%%"K1LK*$$$:K~L@QVV^^AT@UUfgK*.. :K~L@QVV^^AT@UUfgK!8<==**k.>.>>@K++AAB =K,,?<K,,?<K,,0@0@@<KK,,QC<OPj\!1,sC~67tBB1TbceklmOL>-k]"S-@,AM{34{34
 yy8%888r3   c                  ^ UR                   (       a#  [        SUR                  R                   S35      eU R                  [
        R                  L a!  U R                  R                  U5      (       d  g U R                  R                  [        R                  :X  a,  UR                  R                  5       [        R                  L a  g [         R"                  " USSS9nU R                  R%                  U5      n['        UR                  SU R                  R                   S3US L=(       a    UR)                  5       S9mU R                  [
        R*                  L a;  SnUR-                  U R.                  S	9 H  nUS
UR1                  5        S3-  nM     U$ U R                  [
        R2                  L a6  S@U4S jjnSnUR-                  U R.                  S	9 H  nXF" U5      -  nM     U$ U R                  [
        R4                  L Ga  UR                  R                  5       n/ n[7        TR9                  5       5      n	U R                  R                  [        R:                  L aU  S[<        R                  " U R>                  5       SUR                   3n
S[<        R                  " U R>                  5       3nGOU R                  R                  [        R                  L aT  S[<        R                  " U R>                  5       SUR                   3n
S[<        R                  " U R>                  5       3nOU R                  R%                  U R>                  5      nUc6  [        SU R>                  R@                  R                  R                   35      eSURB                   SUR                   3n
URD                   SURB                   3nU R                  RF                  (       a  [H        RJ                  " UR                  R8                  R                  UR                  R8                  RL                  5      nURO                  [P        RS                  URT                  [7        U5      TR                  5       5      5        U[        R@                  L a  URO                  U
 S35        OU[        RV                  L a  URO                  U
 S35        O`U[        R                  L aM  SRY                  S UR                  R8                  R                   5       5      nURO                  U
 SU S35        SRY                  S [[        U	[\        R^                  " U R>                  5      SS9 5       5      nU R>                  R                  R`                  (       a  URO                  SU S35        / U R>                  R                  R`                  Rb                  Re                  5       QU R>                  R                  R`                  Rf                  PnU H  nU	Ri                  S U 5       5        M     URO                  S5        OURO                  SU S35        [\        Rj                  " U R>                  5      n[m        U5       H  u  nn[o        [q        [r        5      5      URt                  Rv                  :w  a"  [        SURt                  Rv                   35      eU[        R                  L a  S U S!3nOS"U S#3nU	RO                  [y        U[{        URt                  R                  [}        [q        [r        5      5      5      S$95        M     U R                  R                  [        R                  :X  a  [         R"                  " U R>                  R                  SUR~                  S9nUR                  5       nUR                  5       nSRY                  S% [[        U	UR9                  5       SS9 5       5      nURO                  S&U S'U S35        O|U R                  R                  [        R:                  :w  aT  SRY                  S( [[        U	[\        R                  " U R>                  5      SS9 5       5      nURO                  S)U S35        U[        R                  L d  U[        RV                  L aJ  [        [        UR                  R                  5      5       H  nURO                  S*U S+U S,U S-35        M      U[        R@                  L ak  [        UR                  R                  5      S.:X  a  S/nOSRY                  S0 [        [        UR                  R                  5      5       5       5      nS1U S!3nOU[        RV                  L a  S2nOU[        R                  L a  [        UR                  R                  5      S.:X  a.  UR                  R8                  R                  S3   R                  nO<SRY                  S4 UR                  R8                  R                   5       5      nS5U S!3nURO                  S6W S735        S8RY                  U5      nU R                  UUU
UU R>                  R                  R                  S LS99 S:TR                  5        S;U S<3$ U R                  [
        R                  L a+  S=UR                  R                   S>TR                  5        S?3$ [        U R                  5        g )ANz	Function z$ has manual_kernel_registration=TrueFr   rx   rC   ry   r   r   r   r   c                   > SU R                  5        STR                  5        SSR                  S [        U R	                  5       TR	                  5       5       5       5       S3$ )Nr   r   r   r   c              3  8   #    U  H  oR                   v   M     g 7frf   r   r   s     r1   r   OStructuredRegisterDispatchKey.gen_one.<locals>.generate_defn.<locals>.<genexpr>8  r   r   r   r   r   s    r1   r   <StructuredRegisterDispatchKey.gen_one.<locals>.generate_defn5  s`      
|1TYY_y9J9J9Lcmmo/^__` a r3   structured__meta_zat::meta::structured__default_backend_zNo kernel metadata found for z::structured_z op;z
 op(self);r   c              3  8   #    U  H  oR                   v   M     g 7frf   r   r   s     r1   r   8StructuredRegisterDispatchKey.gen_one.<locals>.<genexpr>n  s     (N9MA9Mr   z op(r   c              3  :   #    U  H  nUR                   v   M     g 7frf   r   r   s     r1   r   rF  s  s      #A r   r   zauto precompute = op.meta(c           	   3     #    U  H8  n[        S UR                   3[        R                  " XR                  S9S9v   M:     g7f)zprecompute.)bindsr   r[   N)r   r]   rp   argument_type)r   ra   s     r1   r   rF    s@      #
 $5C	 #.sxxj!9!+!9!9#XX!N $5s   A Az(void)precompute;zop.meta(zCExpected out_arg type to be ConstRefCType(BaseCType(tensorT)), got zop.maybe_get_output(r   zop.outputs_[]rJ  c              3  :   #    U  H  nUR                   v   M     g 7frf   r   r   s     r1   r   rF    s      &R FFRr   zat::r   c              3  :   #    U  H  nUR                   v   M     g 7frf   r   r   s     r1   r   rF    s      ' FFr   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  .   #    U  H  nS U S3v   M     g7f)zstd::move(op.outputs_[z])NrI   r%  s     r1   r   rF    s       &!;A 126!;r(  zstd::make_tuple(rl   r   c              3  8   #    U  H  oR                   v   M     g 7frf   r   r   s     r1   r   rF    s     $J5IVV5Ir   zstd::forward_as_tuple(zreturn ;r   )r*  r  r  z

z {
r  r   z", TORCH_FN(r   r   )Ir   r   r|   r]   rQ   r"   r   rR   r   r-   r%   r   r7   r   r   r   r   r   r   r   supports_symintr   r   rT   r   r   r   rr   r   r'   metark   r   r   r   r   r   r   r   r(   rO   rb   r`   r   r   r   rp   meta_argumentsprecomputedreplacevaluesaddextendout_argumentsr   r   r	   r   nctyper[   r   r   r   manual_cpp_bindingmost_faithful_signatureimpl_argumentsr)  r   r   r;  structured_inheritsr   r   ) rl   rj   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                                   @r1   r   %StructuredRegisterDispatchKey.gen_one  s	   '' AFFKK=(LM 
 KK6...MM==a@@ ++AAB/  *>>ee

 !!,,Q/FFd00==>a@t#>(<(<(>
 ;;&777F(334;;3GJw||~&6c:: HM[[F888 F(334;;3G-00 HM[[F777A H -1,AG !!..+2B2BB*499TVV+<*=VAFF8L
!6tyy7H6IJ""//EEF  +499TVV+<*==NqvvhW
!6tyy7H6IJ--88@#(78I8I8N8N8S8S7TU   +8??*;1QVVHE
"*"8"8!9xFWX!!..$-OOFF$$((!&&*:*:*J*J%! '88->(? J))):,d 34j(((:,j 9:jnn$#yy(N9I9I9M9M(NN:,d<. CD  #"Z66tvv>u# J vvzz%% "<ZL KL
&VVZZ++33::<&FFJJ**..&" *<%NN #
 $5#  *<  34(:,b 9: "//7H'1
7 7!348K8KK(&~~2235 
 
&1!A6D)!A.D! (#NN//Yw=O1P
 26 ""//EEF !2 F FFFJJuq?S?S! (??A"<<> II &&w0A0A0CER& 	 $xj)B ?@##00K4D4DD!YY '&!:!:466!B5' 
 (:,b 9: JNN"a:+=+=&=s166>>23AOO03NqcQrstruuxy 4 J)))qvv~~&!+:H II &!&s166>>':!;& E "2%:Hj(((!jnn$qvv~~&!+ vv//33A6;;H99$JQVV5E5E5I5I$JJD!7vQ?HOOghZq1299X.L )!-#'66::#A#A#M       [[F///affkk],sxxzl#FF%r3   rI   N)r   r   r  r5   r  rS   r   r5   )r   r   r  rS   r   r5   )r   r   r*  r5   r   intr   r5   )rj   r   r   r   r*  r5   r  r5   r  rS   r   r5   )rj   r   r   rU   )r  r  r  r  r  r  r  r-  r;  r   r   r  rI   r3   r1   r   r   M  s    +.@D	:=B"8989 89
 89 89 89 
89t !P !Pr3   r   )r-   r   r.   rS   r/   rS   r   r  )r-   r   r   ztuple[str | None, str | None])r-   r   r   r  )=
__future__r   r   r  dataclassesr   typingr   r   typing_extensionsr   torchgen.api.cppapir   torchgen.api.metarS  torchgen.api.structuredrp   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"   !torchgen.selective_build.selectorr#   r2   r=   rA   rD   rG   rJ   rL   rO   r   rI   r3   r1   <module>r     s    "   ! ) *       , , ,    R   , B### # 	#L**"*:.$<.: $U* U* U*~
 $}$7 } }r3   