
    ȅi                     <   S SK r S SKJrJr  S SKJrJrJr  S SKrS SK	r	SSK
JrJr  \\\\\4         r " S S\5      r\\\	R"                  R$                  \\\	R&                  4   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)OptionalProtocolUnion   )OpsValueVc                   ,    \ rS rSr\S\4S j5       rSrg)ShapeVar   returnc                     g N )selfs    [/home/james-whalen/.local/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[        [
        [        4   S[        [
        [        4   S[        [
        [        4   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_shaper   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	c3h	%*38_	38_	 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   r0   r.   r,   r/   floattorchdtypetorch._inductor.loop_bodyr4   r5   r	   	TypeErrortype)r2   result_shapeargr   r4   r5   s         r   broadcast_shapes_for_argsr?   2   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   4   S\\
\\
S4   4   4
S j5       r\ S$S\S\S\S\\   SS	4
S jj5       r\  S%S\S\R                  S\\R                     S\S\
4
S jj5       r\S\R2                  S\R2                  S\
4S j5       r\S\R2                  S\R                  S\
4S j5       r\S\S\S\
4S j5       r\  S&S\S\\R2                  \4   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	)'ShapePropagationOpsHandlerN   z%
Propagate shape from args to output
valuer9   r   c                     SSK JnJn  U" U5      n[        [        R
                  U5      (       a3  US:w  a-  [        R
                  R                  5       n[        S/U-  5      $ g)Nr   )triton_compute_typeTritonKernelz
tl.float32r   r   )torch._inductor.codegen.tritonrE   rF   r,   r
   kerneltriton_tensor_ndimr0   )rC   r9   rE   rF   triton_typendims         r   constant#ShapePropagationOpsHandler.constantS   sP     	U)%0ahh--+2M88..0D!t$$r   nameindexNc                     g r   r   )rN   rO   rC   s      r   store_reduction*ShapePropagationOpsHandler.store_reduction`       r   	src_dtypereduction_type.c                     [         er   )NotImplementedError)r9   rT   rU   rC   s       r   	reduction$ShapePropagationOpsHandler.reductiond   s
     "!r   modec                     g r   r   )rN   rO   rC   rZ   s       r   store ShapePropagationOpsHandler.storem   s     r   use_compute_typesc                     U R                   $ r   )r   )rC   r9   rT   r^   s       r   to_dtype#ShapePropagationOpsHandler.to_dtypes   s     {{r   r   r   c                 \    SSK Jn  [        [        R                  U5      (       d   S5       eg)Nr   )rF   zdot supports Triton only)YBLOCKXBLOCK)rG   rF   r,   r
   rH   )r   r   rF   s      r   dotShapePropagationOpsHandler.dot|   s%    ?!((L11M3MM1#r   exprc                     g r   r   )rg   r9   s     r   
index_expr%ShapePropagationOpsHandler.index_expr   s     r   offsetc                     g)Nr   r   )rN   rk   s     r   	load_seed$ShapePropagationOpsHandler.load_seed   s    r   varsizecheckwrap_negc                     g r   r   )ro   rp   rq   rr   s       r   indirect_indexing,ShapePropagationOpsHandler.indirect_indexing   s     r   c                     S $ )Nc                      [        U 5      $ r   )r?   )r2   kwargss     r   <lambda>8ShapePropagationOpsHandler.__getattr__.<locals>.<lambda>   s
    '@'Fr   r   )r   rN   s     r   __getattr__&ShapePropagationOpsHandler.__getattr__   s    FFr   condmsgc                     g r   r   )r}   r~   s     r   device_assert_async.ShapePropagationOpsHandler.device_assert_async   rS   r   r   r   )NT)TT)"r   r   r   r   __doc__staticmethodr8   typesNumberr9   r   rL   r%   r/   ShapeArgrQ   r   r0   rX   r   r\   r   boolr`   sympyExprre   ri   rm   rt   r   r{   r   r   r   r   r   rA   rA   N   s    
** 
5;; 
> 
 
 c # h 4   "{{";;" " XuXs]334	"
 
~u^S%899	:" " FJ&.6>sm	 
  ,0"&	{{ EKK(  	
 
  $uzz $ejj $^ $ $  EKK N    S ^    	EJJO$  	
 
 G Gn1D(E G (    r   rA   )	functoolscollections.abcr   r   typingr   r   r   r   r8   virtualizedr	   r
   r/   r%   r   r   r   r   r9   r   	lru_cacher.   r?   rA   r   r   r   <module>r      s     . , ,   $ (5c?34+x +
 5;;--sHekkIJ TK^ K K> K K.HX$6 > 8L Lr   