
    3j                     8   S SK r S SKJrJr  S SKJr  S SKrS SKrSSKJ	r	J
r
  \\\-     S-  r " S S\5      r\\R                  R                   -  \-  \	-  \R"                  -  r\ R&                  " S5      S\S	\S
\4S j5       rS\\   S
\4S jr " S S5      rg)    N)CallableSequence)Protocol   )OpsValueVc                   ,    \ rS rSr\S\4S j5       rSrg)ShapeVar   returnc                     g N )selfs    [/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_inductor/shape_propagation.pyshapeShapeVar.shape   s    '*    r   N)__name__
__module____qualname____firstlineno__propertyBlockShapeTyper   __static_attributes__r   r   r   r
   r
      s    *~* *r   r
   abr   c           	         ^ [        U [        5      (       d   e[        U[        5      (       d   e[        U 5      [        U5      :  a*  [        U / S/[        U 5      [        U5      -
  -  QUQ75      $ [        U 5      [        U5      :  a,  Xp[        U / S/[        U 5      [        U5      -
  -  QUQ75      $ S[        [
        -  S[        [
        -  S[        [
        -  4S jm[        U4S j[        X5       5       5      $ )Nr   d1d2r   c                 ~    [        U 5      S:X  a  U$ [        U5      S:X  a  U $ [        U 5      [        U5      :X  d   eU $ )N1)str)r   r    s     r   _get_broadcasted_dim3get_broadcasted_shape.<locals>._get_broadcasted_dim%   s=    2w#~	RC	r7c"g%%%Ir   c              3   8   >#    U  H  u  pT" X5      v   M     g 7fr   r   ).0r   r    r$   s      r   	<genexpr>(get_broadcasted_shape.<locals>.<genexpr>-   s     J	fb)"11	s   )
isinstancer   lenget_broadcasted_shapeintr#   tuplezip)r   r   r$   s     @r   r,   r,      s    a""""a""""
1vA$Q(F1#Q#a&*A(FA(FGG	Q#a&1$Q(F1#Q#a&*A(FA(FGG	S3Y 	C#I 	#) 	 JA	JJJr   argsc                    S nU  H  n[        US5      (       a8  UR                  nUc    g Uc  [        U5      nM5  [        U[        U5      5      nML  [	        U[
        [        45      (       a	  Uc  SnMn  Mp  [	        U[        R                  5      (       a  M  SSK	J
nJn  [	        X%U[        45      (       a    g [        S[        U5       35      e   U$ )Nr   r   r   )LoopBodyLoopBodyBlockzUnknown type: )hasattrr   r.   r,   r*   r-   floattorchdtypetorch._inductor.loop_bodyr2   r3   r   	TypeErrortype)r0   result_shapeargr   r2   r3   s         r   broadcast_shapes_for_argsr=   0   s    #'L3  IIE}%$U|4\5<Pc5\**#! $U[[))I#xBCCnT#YK899) , r   c                      \ rS rSrSr\S\R                  R                  S\R                  S\
4S j5       r\S\S\S\SS	4S
 j5       r\S\R                  S\R                  S\S\\\S4   -  S\
\\
S4   -  4
S j5       r\S$S\S\S\S\S	-  SS	4
S jj5       r\  S%S\S\R                  S\R                  S	-  S\S\
4
S jj5       r\S\R.                  S\R.                  S\
4S j5       r\S\R.                  S\R                  S\
4S j5       r\S\S\S\
4S j5       r\  S&S\S\R.                  \-  S\S\SS	4
S jj5       rS\S\S\
4   4S jr\S \S!\SS	4S" j5       rS#rg	)'ShapePropagationOpsHandlerL   z%
Propagate shape from args to output
valuer7   r   c                     SSK Jn  [        [        R                  U5      (       a-  [        R                  R                  5       n[        S/U-  5      $ g)Nr   TritonKernelr   r   )torch._inductor.codegen.tritonrD   r*   r   kerneltriton_tensor_ndimr.   )rA   r7   rD   ndims       r   constant#ShapePropagationOpsHandler.constantQ   s?     	@ahh--88..0D!t$$r   nameindexNc                     g r   r   )rK   rL   rA   s      r   store_reduction*ShapePropagationOpsHandler.store_reduction\       r   	src_dtypereduction_type.c                     [         er   )NotImplementedError)r7   rQ   rR   rA   s       r   	reduction$ShapePropagationOpsHandler.reduction`   s
     "!r   modec                     g r   r   )rK   rL   rA   rW   s       r   store ShapePropagationOpsHandler.storei   rP   r   use_compute_typesc                     U R                   $ r   )r   )rA   r7   rQ   r[   s       r   to_dtype#ShapePropagationOpsHandler.to_dtypem   s     {{r   r   r   c                 \    SSK Jn  [        [        R                  U5      (       d   S5       eg)Nr   rC   zdot supports Triton only)YBLOCKXBLOCK)rE   rD   r*   r   rF   )r   r   rD   s      r   dotShapePropagationOpsHandler.dotv   s%    ?!((L11M3MM1#r   exprc                     g r   r   )rd   r7   s     r   
index_expr%ShapePropagationOpsHandler.index_expr}   s     r   offsetc                     g)Nr   r   )rK   rh   s     r   	load_seed$ShapePropagationOpsHandler.load_seed   s    r   varsizecheckwrap_negc                     g r   r   )rl   rm   rn   ro   s       r   indirect_indexing,ShapePropagationOpsHandler.indirect_indexing   s     r   c                     S $ )Nc                      [        U 5      $ r   )r=   )r0   kwargss     r   <lambda>8ShapePropagationOpsHandler.__getattr__.<locals>.<lambda>   s
    '@'Fr   r   )r   rK   s     r   __getattr__&ShapePropagationOpsHandler.__getattr__   s    FFr   condmsgc                     g r   r   )rz   r{   s     r   device_assert_async.ShapePropagationOpsHandler.device_assert_async   rP   r   r   r   )NT)TT) r   r   r   r   __doc__staticmethodr6   typesNumberr7   r   rI   r#   r-   ShapeArgrN   r.   rU   rY   r
   boolr]   sympyExprrb   rf   rj   rq   r   rx   r}   r   r   r   r   r?   r?   L   s    ** 5;; >   c # h 4   "{{";;" " %#..	"
 
% 34	4" " C  H C$J RV    )-"&	{{ ;;%  	
 
  $uzz $ejj $^ $ $  EKK N    S ^    	jj3  	
 
 G Gn1D(E G (    r   r?   )	functoolscollections.abcr   r   typingr   r   r6   virtualizedr   r   r-   r#   r   r
   r   r   r7   r   	lru_cacher,   r=   r?   r   r   r   <module>r      s     .    $ #)$t++x +
 ekk(((3.9EKKG TK^ K K> K K*HX$6 > 8H Hr   