
    Χg@                    T   U d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d d	lmZ ej        d
ej        dej        dej         dej!        dej"        dej#        dej$        dej%        dej&        dej'        dej(        diZ)ej        dej        dej        dej         dej!        dej"        dej#        dej$        dej%        dej&        dej'        dej(        diZ*ej        dej        dej        dej         dej!        dej"        dej#        dej$        dej%        dej&        dej'        dej(        d iZ+dXd'Z,dYd+Z-dZd/Z.d[d2Z/i a0d3e1d4<   d\d8Z2d]d>Z3d^dAZ4d_dJZ5d`dLZ6dadMZ7dbdOZ8 edPQ           G dR dS                      Z9	 dcdddWZ:dS )e    )annotationsN)	dataclass)Sequence)DispatcherSignature)CppSignatureCppSignatureGroup)method_with_native_function)ArgumentBackendIndexBaseTyBaseTypeDispatchKeyFunctionSchemaListTypeNativeFunctionNativeFunctionsGroupOperatorNameOptionalTypeType)mapMaybeAtenTensorHandleint32_tint64_tdoublezconst char*AtenGeneratorHandlez
at::Tensorboolzc10::SymIntzc10::Scalarzc10::string_viewzc10::DeviceIndexzc10::Layoutzc10::MemoryFormatzc10::ScalarTypezat::Generatorz *tensor_handle_to_tensor_pointer 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_pointertypr   namestrreturn1tuple[list[str], list[str], list[str], list[str]]c                   t          | t                    r| j        t          v rTt          | j                 g|gt          | j                 gt
          | j                 rt
          | j                  d| dn|gfS | j        t          j        k    rddg||dz   gdgd| d| dgfS t          d	t          |                      t          | t                    r@t          | j        |          \  }}}}d
}g }g }|D ]}	||         dz   ||<   |	                    d          rd|                    d|	 d           |	t          d          d         }
|                    d|
 d||          d||dz             d           |dz  }|	dk    rF|                    d           |                    d||          d||dz             d           |dz  }|                    d|	 d           |                    d|	 d||          d           |dz  }||||fS t          | t                     r#t          | j        |          \  }}}}t          |          dk    sJ dt          |           z               d|d
          d|d
<   |                    d           |d
         }|                    |dz              |d
         }g }|dk    r+| j        J |                    d| j         d| d           nK|dk    r&|                    d| d | d!| d| d| d"           n|                    d| d| d| d#           d$ |D             }||||fS d S )%N()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   *c10::ArrayRef<z::std::optional<>zpointer_to_optional_list<z>(,       z::std::optional<c10::Device>zpointer_to_optional_device(zpointer_to_optional<z'ListType with unsupported element type zconst r   _len_r   zpointer_to_list<z::std::optional<at::Tensor>z
c10::List<z>(c10::ArrayRef<z>(pointer_to_list<z_len_)))z_len_)c                    g | ]}d | d	S )r(   r)    ).0ts     T/var/www/html/ai-engine/env/lib/python3.11/site-packages/torchgen/gen_aoti_c_shim.py
<listcomp>z-convert_arg_type_and_name.<locals>.<listcomp>   s$    @@@+q+++@@@    )
isinstancer   r   base_type_to_c_typebase_type_to_aten_typebase_type_to_callsite_exprr   DeviceNotImplementedErrorreprr   convert_arg_type_and_nameelem
startswithappendlenr   size)r   r   c_typesnames
aten_typescallsite_exprsjnew_aten_typesnew_callsite_exprs	aten_type	base_type_atypes                r3   r=   r=   J   s   #x   ^
8***$SX./'12 2#(;1#(;EEdEEEE		 	 X&&I&ti'(vvvgkvvv	  &&SS		&S&STTT	C	&	& F
5NHd6
 6
2
N # 	 	I c)GAJ##$455 %%&E&E&E&EFFF%c*:&;&;b&@A	"))V	VVU1XVVqQRsVVV   Qm++%%&DEEE"))K%(KKeAaCjKKK   Q%%&E&E&E&EFFF"))C9CCaCCC   Q 	
 	
 
C	"	"  
(A#(D(Q(Q%
A7||q   "KdSVii"W    ,gaj+++
y!!!QxTG^$$$1F?? 8'''!!"HSX"H"H"H"H"HIIII333!!lUllEllUllVZll^blll    !!"RU"R"Rd"R"Rd"R"R"RSSS@@Z@@@
	
 	
7 
  
r5   types	list[str]rD   c                6    d t          | |          D             S )Nc                $    g | ]\  }}|d z   |z   S ) r0   )r1   r   r   s      r3   r4   z%zip_type_and_name.<locals>.<listcomp>   s%    @@@dC#I@@@r5   )zip)rN   rD   s     r3   zip_type_and_namerT      s     @@c%.?.?@@@@r5   flat_argumentsSequence[Argument]tuple[list[str], list[str]]c                    g }g }g }| D ]`}t          |j        |j                  \  }}}}|                    |           |                    |           |                    |           at	          ||          |fS N)r=   typer   extendrT   )	rU   rN   	new_namesrF   arg	new_typesrD   rL   rI   s	            r3   gen_argumentsr_      s    EIN 2 22KHch3
 3
/	5!/ 	Y01111UI..>>r5   schemar   c           
     N   g }g }t          | j                  D ]\  }}|                    d|            t          |j        t
                    rA|j        j        t          v r.|                    t          |j        j                 dz              xt          dt          |j                             dd	}d
}| j        
                                }dD ]
}||v rd} ng }	t          | j                  D ]\  }}t          |          dk    rdnd| d}
t          |j        t
                    sJ  ||j        |
          }|r,|	                    d||          d||          d| d           {|	                    d||          d| d           t          ||          |	fS )Nretr'   z"TODO: add support for return type r   r   valr    r!   c                    | j         t          j        k    rd| dS | j         t          j        k    r| dS | j         t          j        k    r| dS |S )Nznew_tensor_handle(std::move(z));z.expect_int()z.toDouble())r   r   TensorSymIntScalar)r   rc   s     r3   convert_returnz#gen_returns.<locals>.convert_return   sc    8v}$$:#::::X&&((((X&&&&&&Jr5   F)#_scaled_dot_product_flash_attention'_scaled_dot_product_efficient_attention#_scaled_dot_product_cudnn_attentionconvolution_backwardTr,   
tmp_resultz	std::get<z>(tmp_result)zif (z) { *z = z; };)r   r   rc   r    r!   r    )	enumeratereturnsr@   r6   rZ   r   r   r7   r;   r<   unambiguous_namerA   rT   )r`   rN   rD   idxrb   rh   ret_pointer_can_be_nullrq   r   rF   tmprvals               r3   gen_returnsrv      s   EEfn--  S[3[[!!!ch)) 	chm?R.R.RLL,SX];cABBBB%ET#(^^EE      ${3355   ###&*#E $ !#Nfn-- > >S!%jjAooll3Qs3Q3Q3Q#(H-----~ch,," 	>!!"Ts"T"T5:"T"T$"T"T"TUUUU!!"<eCj"<"<T"<"<"<====UE**N::r5   z+dict[tuple[str, str, str], tuple[str, str]]declaration_definition_cachedevicebackend_calltuple[str, str]c                   | j                                         }|||ft          v rt          |||f         S |                                 r-t	          g | j        j        | j        j                  \  }}g }nXt	          | j        j                  \  }}| j         j         j	        rg g fnt          |           \  }}|                    |           d| d| dd                    |           d}|rdnd}	|rdd                    |          z   nd}
d| d	|	 | d
t          j        d                    |          d           dt          j        |
d           d
}||ft          |||f<   ||fS )NzAOTITorchError aoti_torch_rL   r$   r+   r%   zauto tmp_result = r   
z< {
    AOTI_TORCH_CONVERT_EXCEPTION_TO_ERROR_CODE({
        z(
z            z
        );z        z
    });
}
)r   rq   rw   	is_out_fnr_   	argumentsoutflat_non_outflat_allinplacerv   r[   jointextwrapindent)r`   rx   ry   	func_nameargsrF   ret_assignmentsret_declarationsdeclarationrm   ret_assignments_str
definitions               r3   gen_declaration_and_definitionr      s    ,,..I 	6<(,HHH+Y,MNN &  -Cf"CV%5%BC 
  
n &(,V-=-FGGn (0IRHHk&6I6I 	*/ 	$%%%VvVV	VVDIIdOOVVVK)8@%%bJ?NV$?!;!;;;TV  
 "  
>**N;;	 
 ?.
;;  J 	G )V\!BC 
""r5   sig"CppSignature | DispatcherSignaturefr   r   c                    t          j        |j                  } t          j        |dd          }| j        r!|j                                        r|j        }n|j        }|J |S )NF)methodfallback_binding)	r   from_schemafuncr   from_native_functionsymint
has_symintsymint_signature	signature)r   r   cpp_sigscpp_sigs       r3   *gen_static_dispatch_backend_call_signaturer   !  sx     
)!&
1
1C 5	%%  H z %af'')) %+$Nr5   backend_indexr   c                    t          j        | j                  }t          ||           }d|j                                         d|                                 S )Nzat::z::)r   r   r   r   dispatch_keylowerr   )r   r   r   r   s       r3    gen_static_dispatch_backend_callr   1  sR     
)!&
1
1C8a@@GH-,2244HHHHHr5   r   func_group_mapping(dict[OperatorName, NativeFunctionsGroup]r   r   backend_indicesdict[DispatchKey, BackendIndex]BackendIndex | Nonec                   d }||                              |           s6| j        8| j        |v r/||                              || j                           r	||         }n|t          j                                      |           r|t          j                 }no|t          j                                      |           r|t          j                 }n7|t          j                                      |           r|t          j                 }|S rY   )
has_kernelstructured_delegater   CompositeExplicitAutograd&CompositeExplicitAutogradNonFunctionalCompositeImplicitAutogradr   r   r   r   r   s        r3   get_backend_index_for_aotir   :  s    M|$//55 O ,$(:::L)44t78
 
 ;
 (5	>	?	J	J4	P	P O'(MN	K	L	W	W
 
 O (>
 
>	?	J	J4	P	P O'(MNr5   
str | Nonec                x    t          | |||          }|d n$d| j         d|j                                         dS )Nz#include <ATen/ops/rL   z_dispatch.h>)r   	root_namer   r   r   s        r3   get_header_for_aotir   Y  sX     / , M
   	d4>ddM4N4T4T4V4Vdddr5   c                    | j         j        j        r-| j         d| j         j        j         d| j         j        j         n| j         d| j         j        j         dS )N.z.default)r   r   overload_name	namespace)r   s    r3   get_fallback_op_namer   i  s`     9>'	?4>PPDIN/PP$).2NPPP>>!4>>>r5   headerc                   t          | |||          }|d S | j        }|                                }t          | |          }	 |rt	          |||          \  }	}
d|	 dS t	          |||          \  }
}|S # t
          $ r Y d S w xY w)NzAOTI_TORCH_EXPORT rn   )r   r   r   r   r   r;   )r   r   r   r   r   r   r`   rx   ry   r   rL   r   s               r3   
gen_c_shimr   q  s     / , M tYF!!F3 L
 	; NK 76666:66<XXMAz   tts   A5 A5 5
BBT)frozenc                  P    e Zd ZU ded<   ded<   ded<   ded<   edd            ZdS )ShimGeneratorr   r   r   r   r   r   r   r   r   r   r!   r   c                T    t          || j        | j        | j        | j                  }|S rY   )r   r   r   r   r   )selfr   results      r3   __call__zShimGenerator.__call__  s4    
 # K
 
 r5   N)r   r   r!   r   )__name__
__module____qualname____annotations__r	   r   r0   r5   r3   r   r     sb         @@@@4444LLL    !   r5   r   native_functionsSequence[NativeFunction]includesc                    d                     t          t          t          ||||          |                               }|                                }d}|r	d| d| dS d| d| dt          |           d| d| 
S )	Nr|   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 detailszl

#pragma once

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

#ifdef __cplusplus
extern "C" {
#endif

z,

#ifdef __cplusplus
} // extern "C"
#endif
z<

#include <torch/csrc/inductor/aoti_torch/generated/c_shim_zf.h>
#include <torch/csrc/inductor/aoti_torch/utils.h>

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

using namespace torch::aot_inductor;

)r   listr   r   r   r    )	r   r   r   r   r   r   bodyrx   warnings	            r3   gen_aoti_c_shimr     s     99&ov  !	 	
 	
	 	D !!FCG  %
     	&

 
 <B
 
 L!!
 
 

 
" #
 
 	
r5   )r   r   r   r    r!   r"   )rN   rO   rD   rO   r!   rO   )rU   rV   r!   rW   )r`   r   r!   rW   )r`   r   rx   r    ry   r    r!   rz   )r   r   r   r   r!   r   )r   r   r   r   r!   r    )
r   r   r   r   r   r   r   r   r!   r   )
r   r   r   r   r   r   r   r   r!   r   )r   r   r!   r    )r   r   r   r   r   r   r   r   r   r   r!   r   )r   )r   r   r   r   r   r   r   r   r   r   r   r    r!   r    );
__future__r   r   dataclassesr   typingr   torchgen.api.typesr   torchgen.api.types.signaturesr   r   torchgen.contextr	   torchgen.modelr
   r   r   r   r   r   r   r   r   r   r   r   torchgen.utilsr   re   r   intrf   rg   floatr    DeviceIndexLayoutMemoryFormat
ScalarType	Generatorr7   r8   r9   r=   rT   r_   rv   rw   r   r   r   r   r   r   r   r   r   r   r0   r5   r3   <module>r      s   " " " " " " "  ! ! ! ! ! !       2 2 2 2 2 2 I I I I I I I I 8 8 8 8 8 8                            $ # # # # # M%
K
J	
M9
M8
L(
J
	
M9

y
+   M<
K
J	
M=
M=
L(
J"
*
M=
,
(
o   M5
K
J
M2
M2
L"
J
7
M-
9
5
> "_
 _
 _
 _
DA A A A
? ? ? ?",; ,; ,; ,;` MO  N N N N)# )# )# )#X    I I I I   >          D $       6 =
 =
 =
 =
 =
 =
 =
r5   