
    sh                        S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJrJrJrJr  S S	KJrJr  \(       a  S S
KJr  S SKJr  S SKJr  \" SS9 " S S5      5       r          SS jrg)    )annotations)defaultdict)	dataclass)TYPE_CHECKING)dest)DispatcherSignature)method_with_native_function)BaseTyBaseTypeDispatchKeyNativeFunctionVariant)	concatMapTarget)Sequence)ETKernelIndex)SelectiveBuilderT)frozenc                  (    \ rS rSr\SS j5       rSrg)ComputeNativeFunctionStub   c           	       ^ [         R                  TR                  ;  a  g [        R                  " TR
                  STR
                  R                  R                   S3SS9nUc   e[        TR
                  R                  5      S:X  a  SnGO[        TR
                  R                  5      S:X  a  TR
                  R                  R                  (       a.  TR
                  R                  R                  S   R                  nO4[        U4S jTR
                  R                  R                   5       S5      nU(       dZ  TR
                  R                  S   R                  [        [         R"                  5      :X  a  S	nGO[%        S
TR
                   35      eGO[        TR
                  R                  R                  5      [        TR
                  R                  5      :X  a  SnSnSUR'                  U/[        TR
                  R                  5      -  5       SUR'                  TR
                  R                  R                   Vs/ s H  ofR                  PM     sn5       S3nO[)        S TR
                  R                   5       5      (       d   STR
                  R                   35       eSnSnSUR'                  U/[        TR
                  R                  5      -  5       SUR'                  TR
                  R                   Vs/ s H  nS	PM     sn5       S3n[        TR
                  R                  5      S:  a  SU S3OSnSUR+                  5        SU S3$ s  snf s  snf )Nwrapper_CPU__F)prefixsymintr       c              3     >#    U  HD  nUR                   TR                  R                  S    R                   :X  d  M6  UR                  v   MF     g7f)r   N)typefuncreturnsname).0afs     v/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torchgen/executorch/api/custom_ops.py	<genexpr>5ComputeNativeFunctionStub.__call__.<locals>.<genexpr>,   s=      !>A66QVV^^A%6%;%;; !>s
   5AAzat::Tensor()zCan't handle this return type zat::Tensor &, z::std::tuple<z>(
                z
            )c              3  l   #    U  H*  oR                   [        [        R                  5      :H  v   M,     g 7f)N)r    r   r
   Tensor)r$   r%   s     r'   r(   r)   D   s      Q.Qvv&--!88.s   24z$Only support tensor returns but got z
at::Tensorzreturn ;
z {
    z
}
    )r   functionvariantsr   from_schemar!   r#   overload_namelenr"   	argumentsoutnextflat_non_outr    r   r
   r,   	Exceptionjoinalldefn)	selfr&   sigret_nametensor_typecommarr   ret_strs	    `       r'   __call__"ComputeNativeFunctionStub.__call__   s   1::-!--FF\!&&++*C*C)DAFu
 qvv~~!#H A%vv##66++//277!"!1!1!>!>
  66>>!$))Xfmm-DD-H#8A   !!%%&#affnn*==(KE([MCDW4W)X(Y ZQVV-=-=-A-AB-AVV-ABCD EH Q!&&..QQQ 6qvv~~6FGQ 'KE([MCDW4W)X(Y ZQVV^^D^^^DEF GH ,/qvv~~+>+BGH:Q' I  	 C Es   M'M, N)r&   r   returnz
str | None)__name__
__module____qualname____firstlineno__r	   rC   __static_attributes__rE       r'   r   r      s     5 !5rL   r   c                P   [         R                  nUR                  5       nSn[        [        5      nU  H   nXxR
                     R                  U5        M"     UR                  5        Ho  u  p[        U
5      S:X  a  M  SR                  [	        [        [        R                  " U[        R                  UUSSSS9U
5      5      5      nUSU	 SU S	U S
3-  nMq     SR                  [	        [        [        R                  " U[        R                  UUSSSS9U 5      5      5      nX4$ )aH  
Generate custom ops registration code for dest.RegisterDispatchKey.

:param native_functions: a sequence of `NativeFunction`
:param selector: for selective build.
:param kernel_index: kernels for all the ops.
:param rocm: bool for dest.RegisterDispatchKey.
:return: generated C++ code to register custom operators into PyTorch
r   r   r.   FN)rocmr   class_method_nameskip_dispatcher_op_registrationz
TORCH_LIBRARY_IMPL(r*   z, m) {
z
})r   CPU_to_backend_indexr   list	namespaceappenditemsr3   r9   r   r   RegisterDispatchKeyr   REGISTRATIONANONYMOUS_DEFINITION)native_functionsselectorkernel_indexrN   dispatch_keybackend_index"static_init_dispatch_registrationsns_grouped_native_functionsnative_functionrT   	functionsdispatch_registrations_bodyanonymous_definitions                r'   gen_custom_ops_registrationre   U   sN   ( ??L 224M)+&CNtCT+#$=$=>EEoV , !< A A C	y>Q&*ii,,%++ !$*.8= '
#  	+ 3;b /  / 	*' !D.  99((!// &*49 !	
   CCrL   N)
rZ   zSequence[NativeFunction]r[   r   r\   r   rN   boolrF   ztuple[str, str])
__future__r   collectionsr   dataclassesr   typingr   torchgenr   torchgen.api.typesr   torchgen.contextr	   torchgen.modelr
   r   r   r   r   torchgen.utilsr   r   collections.abcr   torchgen.executorch.modelr   !torchgen.selective_build.selectorr   r   re   rE   rL   r'   <module>rs      s    " # !    3 8 Q Q , (7B
 $7 7 7tBD.BD BD  	BD
 BD BDrL   