
    ΅im                       % S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKJr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J r J!r!  S S
K"J#r#J$r$  \(       a  S SK%J&r&  \RN                  S\RP                  S\RR                  S\RT                  S\RV                  S\RX                  S\RZ                  S\R\                  S\R^                  S\R`                  S\Rb                  S\Rd                  S0r3\RN                  S\RP                  S\RR                  S\RT                  S\RV                  S\RX                  S\RZ                  S\R\                  S\R^                  S\R`                  S\Rb                  S\Rd                  S0r4\RN                  S\RP                  S\RR                  S\RT                  S\RV                  S\RX                  S\RZ                  S\R\                  S\R^                  S\R`                  S \Rb                  S!\Rd                  S"0r5 S6       S7S# jjr6S8S$ jr7      S9S% jr8S:S& jr90 q:S'\;S('             S;S) jr<      S<S* jr= S=     S>S+ jjr>            S?S, jr?            S@S- jr@SAS. jrA                SBS/ jrB\" S0S19 " S2 S35      5       rC SC                 SDS4 jjrD                  SES5 jrEg)F    )annotationsN)	dataclass)TYPE_CHECKING)aten_shimified_opsinductor_fallback_ops)DispatcherSignature)CppSignatureCppSignatureGroup)method_with_native_function)ArgumentBackendIndexBaseTyBaseTypeDispatchKeyFunctionSchemais_cuda_dispatch_keyListTypeNativeFunctionNativeFunctionsGroupOperatorNameOptionalTypeTypeVariant)FileManagermapMaybe)SequenceAtenTensorHandleint32_tint64_tdoublezconst char*AtenGeneratorHandle
at::Tensorboolzc10::SymIntzc10::Scalarz::std::string_viewzc10::DeviceIndexzc10::Layoutzc10::MemoryFormatzc10::ScalarTypezat::Generatorresolve_tensor_dispatch_flags zstatic_cast<c10::DeviceIndex>zstatic_cast<c10::Layout>zstatic_cast<c10::MemoryFormat>zstatic_cast<c10::ScalarType>z&*generator_handle_to_generator_pointerc                   [        U [        5      (       a  U R                  [        ;   a  U R                  [        R
                  :X  a  U(       a  SU S3/nO4[        U R                     (       a  [        U R                      SU S3OU/n[        U R                     /U/[        U R                     /U4$ U R                  [        R                  :X  a  SS/XS-   /S/SU SU S	3/4$ [        S
[        U 5       35      e[        U [        5      (       GaE  [        U R                  U5      u  pEpgSn/ n	/ n
U GH  nXH   S-   XH'   UR                  S5      (       aL  U	R                  SU S35        U[!        S5      S nU
R                  SU SXX    SXXS-       S35        US-  nMo  US:X  a7  U	R                  S5        U
R                  SXX    SXXS-       S35        US-  nM  US:X  a3  U	R                  SU S35        U
R                  SXX    S35        US-  nM  U	R                  SU S35        U
R                  SU SXX    S35        US-  nGM     UUU	U
4$ [        U ["        5      (       Ga2  [        U R                  U5      u  pEpm[!        U5      S:X  d   S[        U 5      -   5       eSUS    S3US'   UR                  S5        US   nUR                  US-   5        US   n/ nUS:X  a2  U R$                  c   eUR                  S U R$                   SU S35        OfUS:X  a   U(       d  UR                  S!U SU S"35        O@US#:X  a  UR                  S$U S%U S&U SU S'3	5        OUR                  S U SU SU S"35        U Vs/ s H	  nSU S3PM     nnUUUU4$ [        S([        U 5       S)35      es  snf )*Nz!*tensor_handle_to_tensor_pointer()(r   _index_zc10::Devicez)c10::Device(static_cast<c10::DeviceType>(z!), static_cast<c10::DeviceIndex>(z	_index_))zTODO: add support for arg type r   *zc10::ArrayRef<z::std::optional<>zpointer_to_optional_list<z>(,       z::std::optional<c10::Device>zpointer_to_optional_device(r"   zresolve_tensor_dispatch_flags(zpointer_to_optional<z'ListType with unsupported element type zconst r   _len_r#   zpointer_to_list<z#resolve_tensor_list_dispatch_flags(z_len_)z::std::optional<at::Tensor>z
c10::List<z>(c10::ArrayRef<z%>(resolve_tensor_list_dispatch_flags(z_len_)))zArgument type z not supported!)
isinstancer   namebase_type_to_c_typer   Tensorbase_type_to_callsite_exprbase_type_to_aten_typeDeviceNotImplementedErrorreprr   convert_arg_type_and_nameelem
startswithappendlenr   size)typr2   is_writecallsite_exprc_typesnames
aten_typescallsite_exprsjnew_aten_typesnew_callsite_exprs	aten_type	base_type_atypets                   R/home/james-whalen/.local/lib/python3.13/site-packages/torchgen/gen_aoti_c_shim.pyr:   r:   S   sq   
 #x  88**xx6==(X $ETF!!L M 2#((; 2#((;<AdV1E! %SXX./'12	  XX&I&i'(?vEfgkflluv	  &(GS	{&STT	C	&	&5NHHd6
2
 #I c)GJ##$455%%(81&EF%c*:&;bA	"))/	{"UXJbSTuVWX Qm+%%&DE"))1%(2eEl^1M Ql*%%(81&EF")),J58*TU*VWQ%%(81&EF"))*9+RzC Q7 $< 	
 	
 
C	"	"(A#((D(Q%
7|q W"KdSVi"WW  gaj\+
y!QxTG^$1F? 88'''!!$4SXXJba"HIl"8!!5dV2dV6J 33!!UG#3E7:_`d_eeghlgmmuv !!$4UG2dV2dV6"RS5?@Zqc+Z
@	
 	
 tCykI
JJ As   N;c                Z    [        X5       VVs/ s H  u  p#US-   U-   PM     snn$ s  snnf )N )zip)typesrD   r@   r2   s       rO   zip_type_and_namerT      s,    .1%.?@.?C#I.?@@@s   'c                B   / n/ n/ nU  H  nUR                   U;   a  UR                  S5        M&  [        UR                  UR                   UR                  5      u  pgpUR                  U5        UR                  U5        UR                  U	5        M     [        X#5      U4$ )Nzstd::nullopt)r2   r=   r:   typerA   extendrT   )
flat_argumentsskipped_argsrS   	new_namesrF   arg	new_typesrD   rL   rI   s
             rO   gen_argumentsr]      s     EI "N88|#!!.12KHHchh3
/	! 	Y01  U.>>    c           
     b   / n/ n[        U R                  5       H  u  p4UR                  SU 35        [        UR                  [
        5      (       aO  UR                  R                  [        ;   a1  UR                  [        UR                  R                     S-   5        M  [        S[        UR                  5       35      e   SS jnSnU R                  R                  5       nS H  nX;   d  M
  Sn  O   / n	[        U R                  5       H  u  p4[        U5      S:X  a  S	OS
U S3n
[        UR                  [
        5      (       d   eU" UR                  U
5      nU(       a!  U	R                  SX#    SX#    SU S35        Mx  U	R                  SX#    SU S35        M     [        X5      U	4$ )Nretr*   z"TODO: add support for return type c                    U R                   [        R                  :X  a  SU S3$ U R                   [        R                  :X  a  U S3$ U R                   [        R                  :X  a  U S3$ U$ )Nznew_tensor_handle(std::move(z))z.expect_int()z.toDouble())r2   r   r4   SymIntScalar)r@   vals     rO   convert_return#gen_returns.<locals>.convert_return   s`    88v}}$1#b99XX&U-((XX&U+&&Jr^   F)_functional_sym_constrain_range#_scaled_dot_product_cudnn_attention0_scaled_dot_product_efficient_attention_backward'_scaled_dot_product_efficient_attention#_scaled_dot_product_flash_attention0_scaled_dot_product_fused_attention_overrideable#_thhn_fused_lstm_cell_backward_implconvolution_backwardgrid_sampler_2d_backwardgrid_sampler_3d_backwardlinear_backwardTr.   
tmp_resultz	std::get<z>(tmp_result)zif (z) { *z = z; };)r@   r   rd   strreturnrt   )	enumeratereturnsr=   r1   rV   r   r2   r3   r8   r9   unambiguous_namer>   rT   )schemarS   rD   idxr`   re   ret_pointer_can_be_nullrx   r2   rF   tmprvals               rO   gen_returnsr~      s   EEfnn-s3%[!chh))chhmm?R.RLL,SXX]];cAB%4T#((^4DE  . ${{335 #&*#" !#Nfnn-!%jAolYse=3Q#((H----chh,"!!DF5:,c$t"TU!!Aej\TF!"<= . U*N::r^   z+dict[tuple[str, str, str], tuple[str, str]]declaration_definition_cachec                  ^ U R                   R                  5       nXAU4[        ;   a  [        XAU4   $ S/ 0n[        UR	                  5       5       HN  u  pgUR                  S5      (       d   SU SU S35       e [        USS  5      nX;  d   U SU S35       eXuU'   MP     / n
/ n[        5       n[        UR	                  5       S	S
9 GH  u  pUS:X  a  UOU SU 3nU R                  5       (       a=  [        / U R                  R                  QU R                  R                  QU5      u  p/ nOj[        U R                  R                  U5      u  pU R                   R                   R                   (       a  / / 4O
[#        U 5      u  nnUR%                  U5        [&        R(                  " SU SU SSR+                  U5       S35      nU(       a  SOSnSmU(       a  SR+                  U4S jU 5       5      OSn[&        R(                  " SU SU U SSR+                  U5       S35      U-   [&        R(                  " S5      -   nUR-                  U5        U
R/                  SU S35        UR/                  U5        GM     SR+                  U
5      SR+                  U5      4[        XAU4'   [        XAU4   $ ! [         a  n	[        SU SU S35      U	eS n	A	ff = f)Nr.   vzVersion number for z is z, not starting with 'v'z, not a valid integer after 'v'z for z has already been definedT)reverse_vzAOTITorchError aoti_torch_rL   r(   r-   r'   zauto tmp_result = r%   z		
c              3  .   >#    U  H
  nTU-   v   M     g 7fN ).0rindents     rO   	<genexpr>1gen_declaration_and_definition.<locals>.<genexpr>^  s     :/Qfqj/s   z	
        zL {
            AOTI_TORCH_CONVERT_EXCEPTION_TO_ERROR_CODE({
                z(
                    z
                );
        z#
            });
        }
        zAOTI_TORCH_EXPORT rs   )r2   rx   r   sorteditemsr<   int
ValueErrorAssertionErrorset	is_out_fnr]   	argumentsoutflat_non_outflat_allinplacer~   rW   textwrapdedentjoinupdater=   )ry   devicebackend_callversion_info	base_nameindexed_version_infover_strnew_argsver_idedeclarationsdefinitionsrY   	func_nameargsrF   ret_assignmentsret_declarationsdeclarationrr   ret_assignments_str
definitionr   s                         @rO   gen_declaration_and_definitionr     s9    ,,.I 	<(,HH+Y,MNN 34R#L$6$6$89!!#&& 	
!)D	9PQ	
&	%F
 1 	
iuYK'@A	
1 (0V$ : !LK UL"#7#=#=#?N "(1IYKr&2J	 $1G&""&&G)9)9)F)FG$ D *,O#0  ))<$ D
 #KK,,44R+f:M .o KK()oo()Adiio=NaP
 .=)"
>MDII:/::SU 	 OO !		 \N +YY~./ 0		  "" oo   	 	H%0Q?@:&_ Od 			,		+G )\!BC (L(IJJE  	 %i[WI=\]	s   :J66
K KKc                   [         R                  " UR                  5      n [        R                  " USSS9nU R
                  (       a,  UR                  R                  5       (       a  UR                  nOUR                  nUc   eU$ )NF)methodfallback_binding)	r   from_schemafuncr
   from_native_functionsymint
has_symintsymint_signature	signature)sigfcpp_sigscpp_sigs       rO   *gen_static_dispatch_backend_call_signaturer   y  sq     
)
)!&&
1C 55	%%H zzaff''))++$$Nr^   c                   [         R                  " U R                  5      n[        X 5      nUc  UR                  (       aj  U R                  R                  5       (       aK  [        R                  U R                  ;   nU(       d'  UR                  5       nUR                  S5      nSU S3$ SUR                  5        3$ SUR                  R                  5        SUR                  5        3$ )N_symintzat::symint::z<c10::SymInt>zat::z::)r   r   r   r   r   r   r   functionvariantsr2   removesuffixdispatch_keylower)r   backend_indexr   r   has_function_variantr   s         rO    gen_static_dispatch_backend_callr     s     
)
)!&&
1C8@G::!&&++--#*#3#3qzz#A ' $LLN	%229=	%i[>>glln%&&m006689GLLN;KLLr^   c                H   S nUc  U$ X2   R                  U 5      (       dA  U R                  b:  U R                  U;   a*  X2   R                  XR                     5      (       a  X2   nU$ U(       a  U$ U[        R                     R                  U 5      (       a  U[        R                     nU$ U[        R                     R                  U 5      (       a  U[        R                     nU$ U[        R
                     R                  U 5      (       a  U[        R
                     nU$ r   )
has_kernelstructured_delegater   CompositeExplicitAutograd&CompositeExplicitAutogradNonFunctionalCompositeImplicitAutogradr   func_group_mappingr   backend_indicesextend_aoti_c_shimr   s         rO   get_backend_index_for_aotir     s*    M$//55  ,$$(::)44778
 
 (5( !   [BBCNNtTT+K,Q,QRM  >>

*T
 ,BBM  [BBCNNtTT+K,Q,QRMr^   c                    [        XX#U5      nUc  Uc  SU R                   S3$ g SU R                   SUR                  R                  5        S3$ )Nz#include <ATen/ops/z.h>rL   z_dispatch.h>)r   	root_namer   r   r   s         rO   get_header_for_aotir     sf     /,ASM ((8<<  0-2L2L2R2R2T1UUabbr^   c                L   U R                   R                  R                  (       aP  U R                   SU R                   R                  R                   SU R                   R                  R                   3$ U R                   SU R                   R                  R                   S3$ )N.z.default)r   r2   overload_name	namespace)r   s    rO   get_fallback_op_namer     s~     99>>'' >>
!DIINN//0$))..2N2N1OP q!4!4 5X>r^   c                    [        XX4U5      nUc  Ub  g U R                  nUc  SOUR                  5       n	[        U U5      n
 U(       a  [	        XX5      u  pU$ [	        XX5      u  pU$ ! [
         a     g f = f)Naten)r   r   r   r   r   r8   )r   r   r   r   r   headerr   r   ry   r   r   r   rL   r   s                 rO   
gen_c_shimr     s     /,ASM !9YYF#+V1C1C1EF3L
;NK :MA  s   A* A* *
A76A7T)frozenc                  n    \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S
\S'   \    SS j5       rSrg)ShimGeneratori  dict[str, dict[str, list[str]]]r   (dict[OperatorName, NativeFunctionsGroup]r   DispatchKey | Noner   dict[DispatchKey, BackendIndex]r   r#   r   r   c           	         U R                   [        U5         n[        UUU R                  U R                  U R
                  U R                  U R                  5      nU$ r   )r   r   r   r   r   r   r   r   )selfr   r   results       rO   __call__ShimGenerator.__call__  s\    
 112Ft2LM##  KK##
 r^   r   N)r   r   ru   
str | None)__name__
__module____qualname____firstlineno____annotations__r   r   __static_attributes__r   r^   rO   r   r     sI    ::@@$$44L  
 !r^   r   c                   SR                  [        [        [        UUUUUU5      U 5      5      5      nUc  SOUR	                  5       n	Uc  SOS[        U5       S3n
Uc  SOSnSnU(       a6  UU-   [        R                  " S	5      -   U-   [        R                  " S
5      -   $ UU-   [        R                  " SU(       a  SOS SU	 SU
 S35      -   U-   [        R                  " S5      -   U-   $ )Nr   r   z#include <ATen/Functions.h>z#include <ATen/zFunctions.h>z[

// This file corresponds to the aten_shimified_ops list in torchgen/aoti/fallback_ops.py
r%   z

// WARNING: THIS FILE IS AUTOGENERATED BY torchgen. DO NOT MODIFY BY HAND.
// See https://github.com/pytorch/pytorch/blob/7e86a7c0155295539996e0cf422883571126073e/torchgen/gen.py#L2424-L2436 for detailsz

            #pragma once

            #include <torch/csrc/inductor/aoti_torch/c/shim.h>

            #ifdef __cplusplus
            extern "C" {
            #endif

            z\

            #ifdef __cplusplus
            } // extern "C"
            #endif
            zA

            #include <torch/csrc/inductor/aoti_torch/generated/zextend/c_shim_z{.h>
            #include <torch/csrc/inductor/aoti_torch/utils.h>

            #ifndef AT_PER_OPERATOR_HEADERS
            z
            #include <ATen/CompositeExplicitAutogradFunctions.h>
            #include <ATen/CompositeExplicitAutogradNonFunctionalFunctions.h>
            #include <ATen/CompositeImplicitAutogradFunctions.h>
            #else
            zn
            #endif // AT_PER_OPERATOR_HEADERS

            using namespace torch::aot_inductor;

            )r   listr   r   r   rt   r   r   )native_functionsr   r   r   r   r   r   includesbodyr   include_device_functionsaten_warningwarnings                rO   gen_aoti_c_shimr   )  sj    99)& #& !
	
D $+V1C1C1EF  	&s<01>   m  CG
 oo 
 
  oo  	
0 oo #@M_	eg?hhopvow x && '   oo  * +	
r^   c                v  ^^^^^^^^^ 0 mU H9  nUR                  5        H"  n	U	R                  c  M  UTU	R                  '     M7     M;     U GH  mTc  [        O[        m0 n
U H  n	[	        U	5      nUT;   d  M  XU'   M     [        S [        U
R                  5       5       5       5      mTc  SOTR                  5       nSU S3n[        TTTTTSTSS9mU(       a  U R                  UU4S j5        O [        [        R                  R                  U R                  U5      5       nUR!                  5       nUT:w  aR  S	R                  ["        R$                  " UR'                  5       TR'                  5       S
SSS95      n[)        SU S35      e S S S 5        SUUUUU4S jjmTb  [/        T5      (       a  UOSmU R                  SU S3UUUUUUUU4S j5        GM     g ! , (       d  f       NX= f! [*         a9    [-        [        R                  R                  U R                  U5       S35         Nf = f)Nc              3  *   #    U  H	  u  pUv   M     g 7fr   r   )r   rL   values      rO   r   (gen_aoti_c_shim_files.<locals>.<genexpr>  s      *
";haE";s   r   r   z.hTr%   r   r   r   c                    > T $ r   r   )
new_headers   rO   <lambda>'gen_aoti_c_shim_files.<locals>.<lambda>  s    
r^   r   expectedactual)fromfiletofilelinetermaV  
The generated AOTInductor C shim header files have unexpectedly changed. This
indicates an AOTInductor fallback operator ABI backward compatibility breakage!!!
Only in a limited number of situations, this is allowed:

1. You added a fallback op to the inductor_fallback_ops list in torchgen/aoti/fallback_ops.py.
If that's the case, run `python torchgen/gen.py --update-aoti-c-shim` to add a new entry to
existing C shim header files.

2. You added a new default argument to an existing fallback op. This is clearly a BC breaking
change in the AOTInductor land. You need to annotate the new default argument in
torchgen/aoti/fallback_ops.py, and then run `python torchgen/gen.py --update-aoti-c-shim` to
update the C shim header files by creating different versions of the fallback op. See
https://github.com/pytorch/pytorch/pull/154848 as an example.

z
                    z
 not foundc            	        > / n T H&  n[        UTTTTS9nUc  M  U R                  U5        M(     SR                  [        [	        U 5      5      5      $ )N)r   r   )r   r=   r   r   r   )headersr   r   r   r   r   fallback_native_functionsstructured_func_group_dicts      rO   headers_for_aoti/gen_aoti_c_shim_files.<locals>.headers_for_aoti  sY    G1,. #'9 %NN6* 2 99VCL122r^   z.cppc                 :   > [        TTTTT STT" 5       S-   T-   S9$ )NFr   r  )r   )r   r   r   extra_headersr  fallback_ops_dictr  r  s   rO   r  r    s/    O)!*#5)+d2]B	r^   )ru   rt   )	functionsr   r   r   r   tupler   r   r   r   writeopenospathr   install_dirreaddifflibunified_diff
splitlinesRuntimeErrorFileNotFoundErrorprintr   )aoti_fmaoti_backendsr   r   structured_native_functionsextra_cuda_headersr   update_aoti_c_shim
func_groupr   	fallbacksop_namedevice_nameheader_file_nameold_file
old_headerdiffr   r  r  r  r  r  r  s      `  `          @@@@@@@rO   gen_aoti_c_shim_filesr/    sY    "$1
((*D''3GQ*4+C+CD + 2 & #/"6<Q 	 	$D*40G++%)'" % %* *
"():";*
 %
!
 !- 4f,:L:L:N %[M4$%&1	

 MM "
%GGLL!4!46FG!)J!Z/#yy#00 * 5 5 7 * 5 5 7)3'/)+  + 0  ,   0N	3 	3  ',@,N,N  	 	k]$'	 		
 &H B % ww||G$7$79IJK:Vs2   53G5(A)G$G5$
G2	.G52G55A H87H8)F)r@   r   r2   rt   rA   r#   ru   z1tuple[list[str], list[str], list[str], list[str]])rS   	list[str]rD   r0  ru   r0  )rX   zSequence[Argument]rY   zset[str]ru   tuple[list[str], list[str]])ry   r   ru   r1  )
ry   r   r   rt   r   rt   r   dict[str, list[str]]ru   ztuple[str, str])r   z"CppSignature | DispatcherSignaturer   r   ru   r	   r   )r   r   r   BackendIndex | Noneru   rt   )r   r   r   r   r   r   r   r   r   r#   ru   r3  )r   r   r   r   r   r   r   r   r   r#   ru   r   )r   r   ru   rt   )r   r   r   r2  r   r   r   r   r   r   r   r#   r   r#   ru   r   )r%   )r   Sequence[NativeFunction]r   r   r   r   r   r   r   r   r   r#   r   r#   r   rt   ru   rt   )r"  r   r#  zset[DispatchKey | None]r   r4  r   r   r$  zSequence[NativeFunctionsGroup]r%  rt   r   r#   r&  r#   ru   None)F
__future__r   r  r  r   dataclassesr   typingr   torchgen.aoti.fallback_opsr   r   torchgen.api.typesr   torchgen.api.types.signaturesr	   r
   torchgen.contextr   torchgen.modelr   r   r   r   r   r   r   r   r   r   r   r   r   r   torchgen.utilsr   r   collections.abcr   r4   r#   r   rb   rc   floatrt   DeviceIndexLayoutMemoryFormat
ScalarType	Generatorr3   r6   r5   r:   rT   r]   r~   r   r   r   r   r   r   r   r   r   r   r   r/  r   r^   rO   <module>rF     s   "  	  !   P 2 I 8     1 ( MM%
KK
JJ	
MM9
MM8
LL(
JJ
	
MM9

y
+   MM<
KK
JJ	
MM=
MM=
LL(
JJ$
*
MM=
,
(
o   MM2
KK
JJ
MM2
MM2
LL"
JJ
7
MM-
9
5
> ( tK	tK
tK tK 7	tKnA
?&?6>? ?,3;n MO I NWKWKWK WK '	WK
 WKt	+ $ *.MM&M 	M6'
'@' %' 5	'
 ' 'Tc
c@c %c 5	c
 c c$#
#&# A# %	#
 5# # # #L $  D Z
.Z
:Z
 AZ
 %	Z

 5Z
 Z
 Z
 Z
 	Z
z|
|
*|
 /|
 5	|

 "@|
 |
 |
 |
 
|
r^   