
    JThE                    H   S SK Jr  S SKJr  S SK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  S SKJr  S SKJrJrJrJrJrJrJr  S S	KJ r   \(       a  S S
K!J"r"  S SKJ#r#  \" SS9 " S S5      5       r$\" SS9 " S S5      5       r%S!S jr&    S"S jr'\" SS9 " S S5      5       r(\(" S S\RR                  S9\(" SS\RT                  S9/r+          S#S jr,\S$S j5       r-\" SS9 " S S5      5       r.\S$S j5       r/          S%S jr0\S$S  j5       r1g)&    )annotations)	dataclass)TYPE_CHECKINGN)	translate)		BaseCTypeBindingCTypeExpr
NamedCTypeopmath_tscalar_tStructuredImplSignatureVectorizedCType)with_native_function)ArgumentBaseTyBaseTypeDispatchKeyNativeFunctionsGroup
ScalarTypeUfuncKey)
OrderedSet)Sequence)UfunctorBindingsT)frozenc                  p    \ rS rSr% S\S'   S\S'   S\S'   SS jrSS	 jrSS
 jrSS jrSS jr	SS jr
Srg)UfunctorSignatureC   r   gz
int | Nonescalar_tensor_idxstrnamec                ^    [         R                  " U R                  U R                  [        S9$ )N)r    r   )ufuncufunctor_argumentsr   r    r   selfs    K/var/www/auris/envauris/lib/python3.13/site-packages/torchgen/dest/ufunc.py	argumentsUfunctorSignature.argumentsI   s&    ''FFd&<&<x
 	
    c                    U R                  5       R                   Vs/ s H   oR                  UR                   S35      PM"     sn$ s  snf )N_)r)   ctorrenamer"   )r'   bs     r(   fieldsUfunctorSignature.fieldsN   s:    040@0E0EF0E1AFF81&0EFFFs   'Ac                     [        [        5      $ N)r   r   r&   s    r(   returns_typeUfunctorSignature.returns_typeR   s     ""r+   c                N    SR                  S U R                  5        5       5      $ )N
c              3  X   #    U  H   oR                    S UR                   S3v   M"     g7f) ;N)typer"   ).0fs     r(   	<genexpr>0UfunctorSignature.decl_fields.<locals>.<genexpr>X   s#     F1FF81QVVHA.   (*)joinr1   r&   s    r(   decl_fieldsUfunctorSignature.decl_fieldsW   s    yyFFFFr+   c                    SR                  S U R                  5       R                   5       5      nSR                  S U R                  5       R                   5       5      nU R                   SU SU S3$ )N, c              3  @   #    U  H  oR                  5       v   M     g 7fr4   declr=   as     r(   r?   5UfunctorSignature.inline_defn_ctor.<locals>.<genexpr>[   s     E/D!VVXX/D   c              3  X   #    U  H   oR                    S UR                    S3v   M"     g7f)z_()Nr"   rJ   s     r(   r?   rL   ^   s%     S=Rxr!&&3=RrA   (z) : z {})rB   r)   r.   r"   )r'   args_strinit_strs      r(   inline_defn_ctor"UfunctorSignature.inline_defn_ctorZ   sc    99Et~~/?/D/DEE 99ST^^=M=R=RSS))AhZtH:U;;r+   c                    SR                  S U R                  5       R                   5       5      nU R                  5       R	                  5        SU S3$ )NrF   c              3  @   #    U  H  oR                  5       v   M     g 7fr4   rH   rJ   s     r(   r?   /UfunctorSignature.decl_apply.<locals>.<genexpr>b   s     F/E!VVXX/ErM   z operator()(z) const)rB   r)   applyr5   cpp_type)r'   rR   s     r(   
decl_applyUfunctorSignature.decl_applya   sI    99Ft~~/?/E/EFF##%..01hZwOOr+    N)returnr   r^   zlist[Binding])r^   r	   r^   r!   )__name__
__module____qualname____firstlineno____annotations__r)   r1   r5   rC   rT   r[   __static_attributes__r]   r+   r(   r   r   C   s4    !!
I

G#
G<Pr+   r   c                  H    \ rS rSr% S\S'   S\S'   S\S'   SS jrSS	 jrS
rg)UfuncSignaturef   r   r   r!   r"   r	   	compute_tc                T    [         R                  " U R                  U R                  S9$ )N)rj   )r$   ufunc_argumentsr   rj   r&   s    r(   r)   UfuncSignature.argumentsl   s    $$TVVt~~FFr+   c           
         U R                    SSR                  S [        XR                  5       5       5       5       S3$ )NrQ   rF   c              3  8   #    U  H  oR                   v   M     g 7fr4   exprrJ   s     r(   r?   &UfuncSignature.call.<locals>.<genexpr>p   s     'Y8X18X   rO   r"   rB   r   r)   r'   ctxs     r(   callUfuncSignature.callo   s6    ))Adii'Y	#~~GW8X'YYZZ[\\r+   r]   Nr_   )rv   zSequence[Binding | Expr]r^   r!   )ra   rb   rc   rd   re   r)   rw   rf   r]   r+   r(   rh   rh   f   s    
IG]r+   rh   c                    [        S U R                  R                  R                  R                   5       5      nUS:H  $ )Nc              3  f   #    U  H'  oR                   R                  5       (       d  M#  S v   M)     g7f)   N)r<   is_tensor_likerJ   s     r(   r?   <eligible_for_binary_scalar_specialization.<locals>.<genexpr>   s#      ;avv?T?T?V;s   "1	1   )sum
functionalfuncr)   flat_non_out)r   num_tensorss     r(   )eligible_for_binary_scalar_specializationr      s<     <<$$..;; K !r+   c                $   0 n/ nU R                   R                  n[        R                  S[        R                  S[        R
                  S 0n[        U 5      (       a0  [        R                  [        R                  [        R
                  /nOH[        R
                  /n[        R                  [        R                  4 H  nXc;  a  M
   SU S35       e   U GH  nXc;   aD  [        XU   X6   R                  S9nX6   R                   H  nXqR                  U0 5      U'   M     MM  S n	[        5       n
[        R                  [        R                  4 HF  nX;  a  M
  U	c  X;   R                  n	OXU   R                  :X  d   S5       eXU   R                  -  n
MH     U	c   eU SU	 3n[        XU   US9nU
 H  nXqR                  U0 5      U'   M     [        U SU	 3[        [         5      S	9nUR#                  5       UR%                  5       R&                  -   nUR)                  S
UR                   SUR+                  5        SUR-                  5        SUR/                  5        SUR1                  U5       S35        GM     USR3                  U5      4$ )Nr{   r   zcannot use z on non-binary function)r    r"   z0ScalarOnly and Generic must have same ufunc namer-   ufunc::r"   rj   z%
template <typename scalar_t>
struct z3 {
  using opmath_t = at::opmath_type<scalar_t>;
  z
  z
  __device__ z {
    return z	;
  }
};
r8   )outufunc_inner_loopr   CUDAFunctorOnSelfCUDAFunctorOnOtherCUDAFunctorr   r   r"   supported_dtypes
setdefaultr   
ScalarOnlyGenericrh   r   r   r1   r)   rY   appendrC   rT   r[   rw   rB   )r   ufunctor_sigs	ufunctorsloopsscalar_tensor_idx_lookupkeyskufunctor_sigdtype
ufunc_namer   lkr"   	ufunc_sig	apply_ctxs                  r(   compute_ufunc_cuda_functorsr      s    JLMIEE""E""A##Qd 
 133&&''  
 $$%,,h.I.IJA>K[3J#KK> K :,a%@ux}}L 229E((3A6 3 
3=<&&(8(89B!"Y^^
 "2Y^^3 F3 b	 : :: : %%%Aj\"(!!<4
 &E5A$$UB/2 & #gj\*i6I
	 !'')L,B,B,D,J,JJ	    "# $%%'( )NN9%& '
	
Y t $))I...r+   c                  4    \ rS rSr% S\S'   S\S'   S\S'   Srg	)
 BinaryScalarSpecializationConfig   int
scalar_idxr!   ctor_tensorr   	ufunc_keyr]   N)ra   rb   rc   rd   re   rf   r]   r+   r(   r   r      s    Or+   r   r'   )r   r   r   r{   otherc                   SnUS-  n[          H  nUR                  U;  a  M  X%R                     nUR                  S-   n[        U5      nUR	                  [        SU S3[        UR                  [        [        5      5      S95        SR                  S [        XR                  5       R                  5       5       5      n	US	U S
UR                   SU	 SU S3	-  nM     U[        R                      nSR                  S [        X6R                  5       R                  5       5       5      n	USUR                   SU	 S3-  nU$ )Nz+using opmath_t = at::opmath_type<scalar_t>;zif (false) {}
r{   ziter.scalar_value<opmath_t>(rO   )rq   r<   rF   c              3  8   #    U  H  oR                   v   M     g 7fr4   rp   rJ   s     r(   r?   0compute_ufunc_cuda_dtype_body.<locals>.<genexpr>
  s      ,
IqFFIrs   zelse if (iter.is_cpu_scalar(z)) {
  z<scalar_t> ufunctor(z);
  iter.remove_operand(z");
  gpu_kernel(iter, ufunctor);
}c              3  8   #    U  H  oR                   v   M     g 7fr4   rp   rJ   s     r(   r?   r     s      (L1Lrs   z
else {
  gpu_kernel(iter, z<scalar_t>(z
));
}
    )!BinaryScalarSpecializationConfigsr   r   listr   r
   r   r   r   r   rB   r   r)   r.   r"   r   r   )
r   r   inner_loops
parent_ctxbodyconfigr   r   rv   ufunctor_ctor_exprs_strs
             r(   compute_ufunc_cuda_dtype_bodyr      s~    9DD3;."#3#34&&*
 %)$4

3J<qA 2 2Ih4GH	
 #')) ,
%c+A+A+C+H+HI,
 #
 	 'L ))*A)B C!l # 	) 46 x334L"ii (!*.D.D.F.K.KL(  	  %%&k2I1J K D
 Kr+   c                p   [        U 5      u  p[        U [        R                  " U [        R
                  5      5      n/ nUR                  5        H5  u  pVUR                  SU S[        XXcR                  5       5       S35        M7     SR                  U5      n[        U 5      nSU SUR                  5        SUR                  5        SUR                  5        SUR                   SU S	UR                   S
UR                   SUR!                  5        SUR#                  UR                  5       5       S3$ )N"
AT_DISPATCH_CASE(at::ScalarType::,
  [&]() {
    
  }
)
r8   z

;
. {
  AT_DISPATCH_SWITCH(iter.common_dtype(), "",
    z
  );
}
REGISTER_DISPATCH(, &z)

 {
  ;
}
)r   r   r$   kernel_namer   CUDAitemsr   r   r)   rB   StubSignature	type_defndispatch_declkernel_defnr"   defndirect_call)	r   r   r   sigdtype_casesr   inner_ufunc_sigsdtype_cases_strstub_sigs	            r(   compute_ufunc_cudar   #  sZ     ;1=M "!U%6%6q+:J:J%K
LCK#0#6#6#8""' )"1-=}}OP Q	
 $9 ii,OQH
 	  	  	  ,,/HH: 6  ==/X%9%9$: ; () * r+   c                      \ rS rSr% S\S'   \SS j5       r\SS j5       r\SS j5       rSS jr	SS jr
SS	 jrSS
 jrSS jrSS jrSS jrSS jrSrg)r   iT  r   r   c                    [        U R                  R                  R                  R                  R                  5       S3$ )N_stubr!   r   r   r   r"   r&   s    r(   r"   StubSignature.nameX  s1    dff'',,116678>>r+   c                    [        U R                  R                  R                  R                  R                  5       S3$ )N_kernelr   r&   s    r(   r   StubSignature.kernel_name\  s1    dff'',,116678@@r+   c                    [        U R                  R                  R                  R                  R                  5       S3$ )N_fnr   r&   s    r(   	type_nameStubSignature.type_name`  s1    dff'',,116678<<r+   c                B    [         R                  " U R                  5      $ r4   )r$   stub_argumentsr   r&   s    r(   r)   StubSignature.argumentsd  s    ##DFF++r+   c                Z    U R                  5       nSSR                  S U 5       5       S3$ )Nzvoid(*)(TensorIteratorBase&, rF   c              3  8   #    U  H  oR                   v   M     g 7fr4   )r<   rJ   s     r(   r?   %StubSignature.type.<locals>.<genexpr>i  s     8RArs   rO   )r)   rB   )r'   cpp_argss     r(   r<   StubSignature.typeg  s.    >>#.tyy8R8R/R.SSTUUr+   c                <    SU R                    SU R                   S3$ )NzDECLARE_DISPATCH(rF   rO   )r   r"   r&   s    r(   r   StubSignature.dispatch_declk  s     "4>>"2"TYYKqAAr+   c                "    SU R                    S3$ )NzDEFINE_DISPATCH(rO   rP   r&   s    r(   dispatch_defnStubSignature.dispatch_defnn  s    !$))A..r+   c                p    SU R                    SSR                  S U R                  5        5       5       S3$ )Nzvoid z(TensorIteratorBase& iter, rF   c              3  @   #    U  H  oR                  5       v   M     g 7fr4   )r   rJ   s     r(   r?   ,StubSignature.kernel_defn.<locals>.<genexpr>r  s     Mq`p[\ffhh`prM   rO   )r   rB   r)   r&   s    r(   r   StubSignature.kernel_defnq  s:    t''((CDIIMq`d`n`n`pMqDqCrrsttr+   c                B    SU R                    SU R                  5        3$ )Nzusing  = )r   r<   r&   s    r(   r   StubSignature.type_defnt  s     's499;-88r+   c           
         U R                    SSR                  S [        XR                  5       5       5       5       S3$ )Nz(device_type(), *this, rF   c              3  8   #    U  H  oR                   v   M     g 7fr4   rp   rJ   s     r(   r?   %StubSignature.call.<locals>.<genexpr>y  s     =oNnffNnrs   rO   rt   ru   s     r(   rw   StubSignature.callx  s:    ))3DII=oiX[]k]k]mNn=o4o3ppqrrr+   c           
         U R                    SSR                  S [        XR                  5       5       5       5       S3$ )Nz(*this, rF   c              3  8   #    U  H  oR                   v   M     g 7fr4   rp   rJ   s     r(   r?   ,StubSignature.direct_call.<locals>.<genexpr>}  s     5gFfffFfrs   rO   )r   rB   r   r)   ru   s     r(   r   StubSignature.direct_call|  s<    ""#8DII5giPSUcUcUeFf5g,g+hhijjr+   r]   Nr`   r_   )rv   Sequence[Binding]r^   r!   )ra   rb   rc   rd   re   propertyr"   r   r   r)   r<   r   r   r   r   rw   r   rf   r]   r+   r(   r   r   T  sq    ? ? A A = =,VB/u9skr+   r   c                D   [        U 5      n[        U [        R                  " U [        R
                  5      5      nSUR                  5        SUR                  5        SUR                  5        SUR                  5        SUR                  UR                  5       5       S3$ )Nr8   r   z;

r   r   )r   r   r$   r   r   CPUr   r   r   r   rw   r)   )r   r   r   s      r(   compute_ufunc_cpur     s    QH
!!U%6%6q+//%J
KC	  	  	   ==!" # r+   c                l  ^ [         R                  U;   d   U SUR                  5        35       eUR                  5       [         R                  [         R                  1::  d   eU[         R                     nS n[         R                  U;   a  U[         R                     n/ n/ mU H  n[	        UR
                  [        5      (       a3  UR
                  R                  [        [        R                  5      :w  a  MU  UR                  SUR                   SUR                   S35        TR                  [        SUR                   3[        UR                  R                  [!        ["        5      5      5      5        M     Ub  U H  n[	        UR
                  [        5      (       a3  UR
                  R                  [        [        R                  5      :w  a  MU  UR                  SUR                   SUR                   S35        TR                  [        S	UR                   3[        UR                  R                  [%        [!        ["        5      5      5      5      5        M     / n/ n	U R&                  R(                  R*                  R,                   H  n
U
R                  R/                  5       (       d  M$  U
R                  [        [        R0                  5      :X  d   eUR                  [3        U
R                  [        U
R                  [!        ["        5      5      U
S
95        Uc  M  U	R                  [3        U
R                  [        U
R                  [%        [!        ["        5      5      5      U
S
95        M     SU4S jjnSR5                  U5      nUbh  SU SSR5                  S U 5       5       SUR7                  U" U5      5       SSR5                  S U	 5       5       SUR7                  U" U	5      5       S3$ SU SSR5                  S U 5       5       SUR7                  U" U5      5       S3$ )NrF   zauto _s_r   z.to<scalar_t>();_s_zauto _v_z$ = at::vec::Vectorized<scalar_t>(_s_z);_v_)r"   nctypeargumentc                P   > / nUR                  T5        UR                  U 5        U$ r4   )extend)r0   rrv   s     r(   with_ctx.compute_ufunc_cpu_dtype_body.<locals>.with_ctx  s#    "$		r+   r8   z
cpu_kernel_vec(iter,
  [=](c              3  @   #    U  H  oR                  5       v   M     g 7fr4   rH   r=   r0   s     r(   r?   /compute_ufunc_cpu_dtype_body.<locals>.<genexpr>       3?a?rM   z) { return z; },
  [=](c              3  @   #    U  H  oR                  5       v   M     g 7fr4   rH   r  s     r(   r?   r    s     0<a<rM   z; }
);
z
cpu_kernel(iter,
  [=](c              3  @   #    U  H  oR                  5       v   M     g 7fr4   rH   r  s     r(   r?   r    r  rM   )r0   r   r^   zlist[Expr | Binding])r   	CPUScalarr   	CPUVector
isinstancer   r   r<   r   r   Scalarr   r"   r
   r   r   r   r   r   r   r   r)   r   r|   Tensorr   rB   rw   )r   r   r   r   scalar_loopvec_loopr   r0   scalar_bindingsvec_bindingsrK   r  body_strrv   s                @r(   compute_ufunc_cpu_dtype_bodyr    s    ,Nr+:J:J:L9M.NN,("4"4h6H6H!IIIIh001KH[(x112 D
Cajj(++

8MMD
 1
 hqvvhc!&&1ABC

4#affX
188==)HBU(VWX  A!**h//AJJOOxH 5 KK166("FqvvhbQ JJ!&&Nqxx}}oi>Q.RS " OL\\((55vv$$&&vv&--0000VV!!&&)H*=>	
 %affoi>Q.RS 6( yyH	
 yy3?334LAQAQRZ[jRkAl@m nyy0<001hmmHUaLb>c=d e	 		
 yy3?334LAQAQRZ[jRkAl@m n 	r+   c                   [        U 5      nU R                  R                  n0 n[        R                  [        R
                  4 GH=  n/ nXB;   a  UR                  U5        [        R                  U;   a2  U[        R                  L a  UR                  [        R                  5        [        R                  U;   a  UR                  [        R                  5        U H  nX&   R                   H  nU[        R                  L a  [        [        5      nO2U[        R
                  L a  [        [        [        5      5      nO[        eUR                  U0 5      n	XI;  d  Mq  [        U SX&   R                    3US9X'   M     M     GM@     / n
UR#                  5        H5  u  pyU
R                  SU S[%        XXR'                  5       5       S35        M7     SR)                  U
5      nSUR+                  5        SUR                    S	U S
UR-                  5        SUR/                  5        SUR                    SUR0                   S3$ )Nr   r   r   r   r   r8   z
namespace {

r   r   z#
  );
}

} // anonymous namespace

r   z
REGISTER_DISPATCH(r   z)
)r   r   r   r   r	  r
  r   r   r   r   r   r   r   AssertionErrorr   rh   r"   r   r  r)   rB   r   r   r   r   )r   r   r   
ufunc_sigsr   lksr   r   rj   r   r   r   s               r(   compute_ufunc_cpu_kernelr    s!   QH EE""ECEJ  ("4"45:JJqM%'A1C1C,CJJx**+u$JJx''(B33*** )( 3I(,,, /	(0C DI((#-#8#8#C ,*8'%)..)9 :i+$' 4  64 K#-#3#3#5""' )!!,<>P>P>RST U	
 $6 ii,O 
  ,,4MM? ;  
  	  ==/X%9%9$: ; r+   )r   r   r^   bool)r   r   r^   z?tuple[dict[ScalarType, dict[UfuncKey, UfunctorSignature]], str])
r   r   r   r   r   z!dict[UfuncKey, UfunctorSignature]r   r   r^   r!   )r   r   r^   r!   )
r   r   r   r   r   zdict[UfuncKey, UfuncSignature]r   r   r^   r!   )2
__future__r   dataclassesr   typingr   torchgen.api.ufuncapir$   torchgen.api.translater   torchgen.api.typesr   r   r	   r
   r   r   r   r   r   torchgen.contextr   torchgen.modelr   r   r   r   r   r   r   torchgen.utilsr   collections.abcr   r   r   rh   r   r   r   r   r   r   r   r   r   r   r  r  r]   r+   r(   <module>r%     s   " !   " " ,
 
 
 2   & (3@ $P P PD $	] 	] 	]<P/P/DP/f $   %--
 %,,% !,,, 3, "	,
 	,^ & &` $(k (k (kV  ZZZ 0Z "	Z
 	Zz ; ;r+   