
    OgC                    V   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rd d
lmZ ej>                  dej@                  dejB                  dejD                  dejF                  dejH                  dejJ                  dejL                  dejN                  dejP                  dejR                  dejT                  diZ+ej>                  dej@                  dejB                  dejD                  dejF                  dejH                  dejJ                  dejL                  dejN                  dejP                  dejR                  dejT                  diZ,ej>                  dej@                  dejB                  dejD                  dejF                  dejH                  dejJ                  dejL                  dejN                  dejP                  dejR                  d ejT                  d!iZ-	 	 	 	 	 	 d4d"Z.d5d#Z/d6d$Z0d7d%Z1i a2d&e3d'<   	 	 	 	 	 	 	 	 d8d(Z4	 	 	 	 	 	 d9d)Z5	 	 	 	 	 	 d:d*Z6	 	 	 	 	 	 	 	 	 	 	 	 d;d+Z7	 	 	 	 	 	 	 	 	 	 	 	 d<d,Z8d=d-Z9	 	 	 	 	 	 	 	 	 	 	 	 	 	 d>d.Z: ed/0       G d1 d2             Z;	 d?	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d@d3Z<y)A    )annotationsN)	dataclass)TYPE_CHECKING)DispatcherSignature)CppSignatureCppSignatureGroup)method_with_native_function)ArgumentBackendIndexBaseTyBaseTypeDispatchKeyFunctionSchemaListTypeNativeFunctionNativeFunctionsGroupOperatorNameOptionalTypeType)mapMaybe)Sequence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_pointerc                   t        | t              r| j                  t        v rZt        | j                     g|gt        | j                     gt
        | j                     rt
        | j                      d| dgfS |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   ||<   |	j                  d      rM|j                  d|	 d       |	t        d      d }
|j                  d|
 d||    d||dz       d       |dz  }l|	dk(  r8|j                  d       |j                  d||    d||dz       d       |dz  }|j                  d|	 d       |j                  d|	 d||    d       |dz  } ||||fS t        | t               r
t        | j                  |      \  }}}}t        |      dk(  sJ dt        |       z          d|d
    d|d
<   |j                  d       |d
   }|j                  |dz          |d
   }g }|dk(  r1| j"                  J |j                  d| j"                   d| d       nB|dk(  r"|j                  d| d | d!| d| d| d"       n|j                  d| d| d| d#       |D cg c]  }d| d
 }}||||fS y c c}w )$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   *z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_))
isinstancer   name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)typr+   c_typesnames
aten_typescallsite_exprsjnew_aten_typesnew_callsite_exprs	aten_type	base_type_atypets                 _/var/www/html/suriana-translation/venv/lib/python3.12/site-packages/torchgen/gen_aoti_c_shim.pyr2   r2   N   s    #x 88**$SXX./'12 2#((; 2#((;<AdV1E		 	 		 	 XX&I&ti'(?vEfgkflluv	  &(GS	{&STT	C	&5NHHd6
2
N # 	I c)GAJ##$45%%(81&EF%c*:&;bA	"))/	{"U1XJbqSTuVWX Qm+%%&DE"))1%(2eAEl^1M Q%%(81&EF"))*9+RazC Q/	4 	
 	
 
C	"(A#((D(Q%
A7|q W"KdSVi"WW  gaj\+
y!QxTG^$1F? 88'''!!$4SXXJba"HI33!!UG#3E7:LUGSUVZU[[]^b]cckl !!$4UG2dV2dV6"RS5?@qc+@
@	
 	
7 
#4 As   'K=c                X    t        | |      D cg c]  \  }}|dz   |z    c}}S c c}}w )N )zip)typesr:   r8   r+   s       rE   zip_type_and_namerJ      s*    .1%.?@dC#I@@@s   &c                    g }g }g }| D ]Z  }t        |j                  |j                        \  }}}}|j                  |       |j                  |       |j                  |       \ t	        ||      |fS N)r2   typer+   extendrJ   )	flat_argumentsrI   	new_namesr<   arg	new_typesr:   rB   r?   s	            rE   gen_argumentsrS      s    EIN 22KHHchh3
/	5!/ 	Y012 UI.>>    c           
     8   g }g }t        | j                        D ]  \  }}|j                  d|        t        |j                  t
              rL|j                  j                  t        v r0|j                  t        |j                  j                     dz          t        dt        |j                                dd}d}| j                  j                         }dD ]
  }||v sd} n g }	t        | j                        D ]  \  }}t        |      dk(  rd	nd
| d}
t        |j                  t
              sJ  ||j                  |
      }|r"|	j                  d||    d||    d| d       o|	j                  d||    d| d        t        ||      |	fS )Nretr#   z"TODO: add support for return type 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)r8   vals     rE   convert_returnz#gen_returns.<locals>.convert_return   s`    88v}}$1#c::XX&U-((XX&U+&&JrT   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; };)r8   r   r[   strreturnrc   )	enumeratereturnsr5   r*   rM   r   r+   r,   r0   r1   unambiguous_namer6   rJ   )schemarI   r:   idxrV   r\   ret_pointer_can_be_nullrg   r+   r<   tmprvals               rE   gen_returnsrm      s   EEfnn- Ss3%[!chh)chhmm?R.RLL,SXX]];cAB%4T#((^4DE  ${{335  ##&*# !#Nfnn- >S!%jAolYse=3Q#((H---chh,"!!DsF5:,c$t"TU!!AeCj\TF!"<=> UE*N::rT   z+dict[tuple[str, str, str], tuple[str, str]]declaration_definition_cachec                   | j                   j                         }|||ft        v rt        |||f   S | j                         r=t	        g | j
                  j                  | j
                  j                        \  }}g }net	        | j
                  j                        \  }}| j                   j                   j                  rg g fn
t        |       \  }}|j                  |       d| d| ddj                  |       d}|rdnd}	|rddj                  |      z   nd}
d| d	|	 | d
t        j                  dj                  |      d       dt        j                  |
d       d
}||ft        |||f<   ||fS )NzAOTITorchError aoti_torch_rB   r    r&   r!   zauto tmp_result = r   
z< {
    AOTI_TORCH_CONVERT_EXCEPTION_TO_ERROR_CODE({
        z(
z            z
        );z        z
    });
}
)r+   rg   rn   	is_out_fnrS   	argumentsoutflat_non_outflat_allinplacerm   rN   jointextwrapindent)rh   devicebackend_call	func_nameargsr<   ret_assignmentsret_declarationsdeclarationra   ret_assignments_str
definitions               rE   gen_declaration_and_definitionr      s    ,,.I 	6<(,HH+Y,MNN  -Cf""CV%5%5%B%BC 
n &(,V-=-=-F-FGn ((00RHk&6I 	*/ 	$%.vha	{!DIIdOCTTUVK)8%bJ?N$?!;;TV 		\N #	>*N; < =??.
;
< =J 	G )V\!BC 
""rT   c                    t        j                  |j                        } t        j                  |dd      }| j
                  r'|j                  j                         r|j                  }n|j                  }|J |S )NF)methodfallback_binding)	r   from_schemafuncr   from_native_functionsymint
has_symintsymint_signature	signature)sigfcpp_sigscpp_sigs       rE   *gen_static_dispatch_backend_call_signaturer   (  sn     
)
)!&&
1C 55	%%H zzaff'')++$$NrT   c                    t        j                  | j                        }t        ||       }d|j                  j                          d|j                          S )Nzat::z::)r   r   r   r   dispatch_keylowerr+   )r   backend_indexr   r   s       rE    gen_static_dispatch_backend_callr   8  sN     
)
)!&&
1C8a@G-,,2245R7GHHrT   c                   d }||   j                  |       s;| j                  6| j                  |v r(||   j                  || j                           r||   }|S |r|S |t        j                     j                  |       r|t        j                     }|S |t        j                     j                  |       r|t        j                     }|S |t        j
                     j                  |       r|t        j
                     }|S rL   )
has_kernelstructured_delegater   CompositeExplicitAutograd&CompositeExplicitAutogradNonFunctionalCompositeImplicitAutogradr   func_group_mappingr   backend_indicesextend_aoti_c_shimr   s         rE   get_backend_index_for_aotir   A  s    M|$//5  ,$$(::L)44t778
 (5( !   [BBCNNtT+K,Q,QRM  >>

*T
 ,BBM  [BBCNNtT+K,Q,QRMrT   c                ~    t        | ||||      }|d S d| j                   d|j                  j                          dS )Nz#include <ATen/ops/rB   z_dispatch.h>)r   	root_namer   r   r   s         rE   get_header_for_aotir   g  s\     / ,ASM
   	 #4>>"2!M4N4N4T4T4V3WWcdrT   c                B   | j                   j                  j                  rP| j                   d| j                   j                  j                   d| j                   j                  j                   S | j                   d| j                   j                  j                   dS )N.z.default)r   r+   overload_name	namespace)r   s    rE   get_fallback_op_namer   x  s~     99>>'' >>
!DIINN//0$))..2N2N1OP q!4!4 5X>rT   c                    t        | ||||      }|y | j                  }|j                         }t        | |      }		 |rt	        |||	      \  }
}d|
 dS t	        |||	      \  }}|S # t
        $ r Y y w xY w)NzAOTI_TORCH_EXPORT rb   )r   r   r   r   r   r0   )r   r   r   r   headerr   r   rh   rz   r{   r   rB   r   s                rE   
gen_c_shimr     s     / ,ASM YYF!F3L
;NK (}A66:66<XMAz s   A& A& &	A21A2T)frozenc                  Z    e Zd ZU ded<   ded<   ded<   ded<   ded	<   e	 	 	 	 dd
       Zy)ShimGenerator(dict[OperatorName, NativeFunctionsGroup]r   r   r   dict[DispatchKey, BackendIndex]r   r   r   r   c                    t        || j                  | j                  | j                  | j                  | j
                        }|S rL   )r   r   r   r   r   r   )selfr   results      rE   __call__zShimGenerator.__call__  sC    
 ##  KK##
 rT   N)r   r   rd   
str | None)__name__
__module____qualname____annotations__r	   r    rT   rE   r   r     sC    @@44L  
 !rT   r   c                    dj                  t        t        t        |||||      |                   }|j	                         }d}	|r	d|	 d| dS d|	 d|rdnd d| d	t        |       d
| d| S )Nrp   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
z5

#include <torch/csrc/inductor/aoti_torch/generated/zextend/r   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;

)rw   listr   r   r   rc   )
native_functionsr   r   r   r   r   includesbodyrz   warnings
             rE   gen_aoti_c_shimr     s     99& #& !		
D !FCG 	 

   	&	 
4ASIY[3\\cdjck l L!" #
 

 
 #
 	
rT   )r8   r   r+   rc   rd   z1tuple[list[str], list[str], list[str], list[str]])rI   	list[str]r:   r   rd   r   )rO   zSequence[Argument]rd   tuple[list[str], list[str]])rh   r   rd   r   )rh   r   rz   rc   r{   rc   rd   ztuple[str, str])r   z"CppSignature | DispatcherSignaturer   r   rd   r   )r   r   r   r   rd   rc   )r   r   r   r   r   r   r   r   r   r   rd   zBackendIndex | None)r   r   r   r   r   r   r   r   r   r   rd   r   )r   r   rd   rc   )r   r   r   r   r   r   r   r   r   r   r   r   rd   r   )r   )r   zSequence[NativeFunction]r   r   r   r   r   r   r   r   r   r   r   rc   rd   rc   )=
__future__r   rx   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   collections.abcr   rX   r   intrY   rZ   floatrc   DeviceIndexLayoutMemoryFormat
ScalarType	Generatorr,   r-   r.   r2   rJ   rS   rm   rn   r   r   r   r   r   r   r   r   r   r   r   rT   rE   <module>r      s   "  !   2 I 8    $ ( MM%
KK
JJ	
MM9
MM8
LL(
JJ
	
MM9

y
+   MM<
KK
JJ	
MM=
MM=
LL(
JJ"
*
MM=
,
(
o   MM5
KK
JJ
MM2
MM2
LL"
JJ
7
MM-
9
5
> "b
	b

b
 7b
JA
?",;` MO I N)#)#$')#7:)#)#X	+  III 	I#
#@# # 5	#
 # #L
@  5	
  " 
 @    5	 
      F $  < A
.A
@A
 A
 5	A

 A
 A
 A
 	A
rT   