
    [Thls                        S SK r S SKrS SKrS SKrS SKrS SKJrJr  S SKJ	r	J
r
JrJrJr  S SKJr  S SKJr  S SKrS SKrS SKJr  S SKJr  SS	KJr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$J%r%  S
SK&J'r'J(r(  \" S5      r)\RT                  " \+5      r,\RZ                  " S5      R\                  r/ " S S\ R`                  5      r1\Rd                  " SS9 " S S\15      5       r3\Rd                  " SS9 " S S\15      5       r4\Rd                  " SS9 " S S\15      5       r5\Rd                  " SS9 " S S5      5       r6\Rd                   " S S5      5       r7 " S S \(Rp                  5      r9 " S! S"\(Rt                  5      r;S#\<S$\=\%\
\R|                  /\R~                  4   4   4S% jr@S&\\R|                     S#\<S$\=\A\A\R~                        \%4   4S' jrBS(S).S&\\R|                     S#\<S$\=\A\A\R|                        \%4   4S* jjrCS+S(S,S-.S.\
S/\	4   S&\\R|                     S0\DS#\<S1\\A\R|                        S$\74S2 jjrE S?S.\	S3\A\A\R|                        S4\%S0\DS$\94
S5 jjrFS6S7S$\=\\A\R|                        \\A\R|                        4   4S8 jrGS$\<4S9 jrH " S: S;\5      rI S@S.\
S/\	4   S<\\R|                     S=\\\R|                        S$\\R~                     4S> jjrJg)A    N)IterableSequence)AnyCallableOptionalTypeVarUnion)Self)patch)free_unbacked_symbols)
OrderedSet   )make_symbolSymT   )index_prevent_reordering)DefaultHandler)get_dtype_sizereduction_num_outputssympy_index_symbol	sympy_str
sympy_subs	VarRanges)ReductionTypeVTzindirect|tmpc                   R   \ rS rSr% \\S'   \R                  \S'   \R                  S\
\\4   S\4S j5       r\R                  S\R                  4S j5       r\R                  S\4S j5       r\R                  S\4S	 j5       r\R                  S\4S
 j5       rSS\S\4S jjrSrg)Dep%   nameindexrenamesreturnc                     g N selfr"   s     T/var/www/auris/envauris/lib/python3.13/site-packages/torch/_inductor/dependencies.pyrename
Dep.rename)           c                     g r%   r&   r(   s    r)   	get_numelDep.get_numel-   r,   r-   c                     g r%   r&   r/   s    r)   numbytes_hintDep.numbytes_hint1   r,   r-   c                     g r%   r&   r/   s    r)   has_unbacked_symbolsDep.has_unbacked_symbols5   r,   r-   c                     g r%   r&   r/   s    r)   is_contiguousDep.is_contiguous9   r,   r-   prefixc                     U $ r%   r&   )r(   r;   s     r)   normalize_with_stride_orderDep.normalize_with_stride_order=   s    r-   r&   Nt)__name__
__module____qualname____firstlineno__str__annotations__sympyExprabcabstractmethoddictr
   r*   r0   intr3   boolr6   r9   r=   __static_attributes__r&   r-   r)   r   r   %   s    
I::d38n    	5::   	s   	d   	t  #   r-   r   T)frozenc                      \ rS rSr% \\S'   \R                  \S'   \\R                  S4   \S'   \\R                  S4   \S'   Sr
\\   \S'   S	\4S
 jr\S	\4S j5       rSS S	\\\      4S jrS	\R                  4S jrSS jrS S\S	S 4S jjr\S	\\R                  \R                  4   4S j5       rSS jrS	\R                  4S jrS\\\4   S	S 4S jrS	\4S jrS	\4S jrS	\4S jrS!S\S	\4S jjrS	\4S jrS	\4S jr Sr!g)"	MemoryDepA   r    r!   .	var_namessizeNmoder#   c                     SnU R                   b  SU R                    3nSU R                  < SU R                   SU R                   U S3$ )N , z
MemoryDep())rU   r    r!   ranges)r(   
maybe_modes     r)   __repr__MemoryDep.__repr__I   sM    
99 dii[)JDII=4::,bj\QRSSr-   c                 ,    [        U R                  5      $ r%   )lenrS   r/   s    r)   num_varsMemoryDep.num_varsO   s    4>>""r-   otherc                 2   U R                   UR                   :X  d   eU R                   [        U R                  R                  5      :w  a  gUR                   [        UR                  R                  5      :w  a  g[	        S [
        R                  " U R                  UR                  5       5       5      (       a  g[        R                  R                  R                  U R                  U R                  5      n[        R                  R                  R                  UR                  UR                  5      n[        [        U5      5      [        U5      :w  d!  [        [        U5      5      [        U5      :w  a  [        R                  SU UUU5        g[        U5      [        U5      :w  a  g[!        U5       VVs0 s H  u  pEXT_M	     nnnU Vs/ s H  oVU   PM	     nn[        U5      [        [#        SU R                   5      5      :X  d   eU$ s  snnf s  snf )z4
Can return None if not able to decide loop orders.
Nc              3   B   #    U  H  oS :H  =(       d    US:H  v   M     g7f)r   r   Nr&   ).0ss     r)   	<genexpr>7MemoryDep.decide_loop_order_to_match.<locals>.<genexpr>h   s      P)OAAva)Os   zaunable to decide loop order. self_dep=%s v.s. other_dep=%s, self_strides=%s v.s. other_strides=%sr   )r`   r_   r!   free_symbolsany	itertoolschainrT   r   graphsizevarsstride_hintsrS   r   logdebug	enumeraterange)r(   rb   self_stridesother_stridesirf   stride_to_indexorders           r)   decide_loop_order_to_match$MemoryDep.decide_loop_order_to_matchS   s    }}... ==C

 7 788>>S!9!9:: PEJJ)OPPP ww''44TZZP((55ekk5??S z,'(C,==}%B
B  IIs 
 l#z-'@@,5l,CD,CDA14,CD-:;]#];% JuQ/F$GGGG	 E;s   9HHc                 j    [        U R                  [        R                  U R                  S5      5      $ )z6
Return the offset by setting every variable to be 0.
r   )r   r!   rK   fromkeysrS   r/   s    r)   
get_offsetMemoryDep.get_offset   s$     $**dmmDNNA&FGGr-   c                     [        U R                  /[        R                  U R                  U R
                  5      QU R                  P76 $ )z
Normalize by merging loops. The different to normalize_with_stride_order is,
this method does not reorder loops while normalize_with_stride_order reorder
loops based on stride order.
)rQ   r    _RecordLoadStoreInner
_normalizer!   rZ   rU   r/   s    r)   	normalizeMemoryDep.normalize   sC     II
"--djj$++F
 II
 	
r-   r;   c                 :   SSK Jn  [        R                  R                  R                  U R                  U R                  5      n[        [        [        U5      5      UR                  SS9nUR                  U5      nU R                  nU R                  nU" U5      nU" U5      n	[        R                  R                  R                  U	U[        U R                  /X5      5      u  pn[!        U5      u  p[#        [%        U	U" U
 Vs/ s H
  o" U5      PM     sn5      5      5      n['        [(        R*                  " U R                  5      U5      n[-        U R.                  U[1        UR3                  5       5      [1        UR5                  5       5      5      nU$ s  snf )z
Used to decide if two MemoryDep does not equal due to different loop orders.
More specifically, when dep1 and dep2 are not equal, we can normalize
both and check if they are equal after that. If yes, then the mismatch is
caused by different loop orders.
r   )irT)keyreverse)torch._inductorr   r   rm   rn   ro   r!   rS   sortedrs   r_   __getitem__same_reorderrT   _simplify_loopsr   var_builderrK   zipr   rG   expandrQ   r    tuplekeysvalues)r(   r;   r   stridesrx   stride_reordersizesrS   new_reordered_sizesnew_reordered_var_namesnew_simplified_sizesreindex_prune
var_rangesadd_varxreplacement	new_indexouts                      r)   r=   %MemoryDep.normalize_with_stride_order   sU    	'''""//

DNNK uS\*0C0CTR/		NN	,U3"0";010@0@0P0P#$51
-v *&1
'-AB-A-ABC
 u||DJJ7E	IIy%
(9":E*BSBSBU<V
 
 Cs   Fc                 T    [        [        U R                  U R                  5      5      $ )z{c0: 128, c1: 512, ...})rK   r   rS   rT   r/   s    r)   rZ   MemoryDep.ranges   s     C		233r-   c                     [        U R                  [        R                  R                  R                  U R                  U R                  5      U R                  U R                  U R                  S9$ )N)r    r!   rS   rT   rU   )rQ   r    r   rm   rn   simplify_with_rangesr!   rZ   rS   rT   rU   r/   s    r)   r   MemoryDep.simplify_with_ranges   sM    ''""77

DKKPnn
 	
r-   c                 `   U R                  5       (       a+  [        R                  R                  U R                  5      nU$ [        U R                  R                  5      n[        R                  R                  n[        U R                  U R                  5       H  u  p4X2;   d  M  X-  nM     U$ r%   )is_indirectr   rm   r0   r    r   r!   ri   rG   SOner   rS   rT   )r(   numelvarsvarrT   s        r)   r0   MemoryDep.get_numel   s    GG%%dii0E  -7tzz7N7N,ODGGKKE ;	;!LE < r-   r"   c                     U R                   U;   aA  [        XR                      U R                  U R                  U R                  U R
                  S9$ U $ )N)rS   rT   rU   )r    rQ   r!   rS   rT   rU   r'   s     r)   r*   MemoryDep.rename   sH    99		"

..YYYY  r-   c                      [         R                  R                  R                  U R	                  5       5      [        [         R                  R                  U R                  5      5      -  $ ! [         a     gf = fNr   	r   rm   rn   	size_hintr0   r   	get_dtyper    NotImplementedErrorr/   s    r)   r3   MemoryDep.numbytes_hint   b    	77##--dnn.>?.!!$)),C   # 		   A)A, ,
A98A9c                 L    [        [        U R                  5       5      5      S:  $ r   r_   r   r0   r/   s    r)   r6   MemoryDep.has_unbacked_symbols       ()9:;a??r-   c                     [        U R                  [        R                  5      (       a  g[        U R                  [        R                  5      =(       a    U R                  U R
                  ;   $ )NT)
isinstancer!   rG   IntegerSymbolrS   r/   s    r)   r9   MemoryDep.is_contiguous   sA    djj%--00$**ell3T

dnn8TTr-   result_for_complex_expressionc                 D   [        U R                  5      S:X  a  g[        U R                  [        R
                  5      (       a  U R                  R                  OU R                  /nU R                  S   nU H  nXC:X  a    g[        U[        R                  5      (       d  M+  [        UR                  5      S:X  d  MF  UR                  S   U:X  d  M[  [        UR                  S   [        [        R                  45      (       d  M  UR                  S   S:  d  M    g   U$ )z1
Whether the stride for the last dimension is 1.
r   Tr   r   F)
r_   rS   r   r!   rG   AddargsMulrL   r   )r(   r   termslast_symterms        r)   stride1_for_last_dimMemoryDep.stride1_for_last_dim   s     t~~!##-djj%))#D#D

4::,>>"%D
 4++		Na'IIaLH,tyy|c5==-ABBIIaL1$  -,r-   c                    [        U R                  [        R                  5      (       a5  U R                  U R                  ;  =(       a    U R                  5       (       + $ [        U R                  [        [        R                  45      $ r%   )r   r!   rG   r   rS   r   rL   r   r/   s    r)   	is_scalarMemoryDep.is_scalar  sU    djj%,,//::T^^3ND<L<L<N8NN$**sEMM&:;;r-   c                 N    [        S U R                  R                   5       5      $ )Nc              3   L   #    U  H  n[        UR                  5      v   M     g 7fr%   )r   r    )re   vs     r)   rg   (MemoryDep.is_indirect.<locals>.<genexpr>!  s     H0G1;qvv&&0Gs   "$)rj   r!   ri   r/   s    r)   r   MemoryDep.is_indirect   s    H

0G0GHHHr-   r&   )r#   rQ   r?   T)"rA   rB   rC   rD   rE   rF   rG   rH   r   r   rU   r   r\   propertyrL   r`   listry   r}   r   r=   rK   rZ   r   r0   r*   r3   rM   r6   r9   r   r   r   rN   r&   r-   r)   rQ   rQ   A   sj   
I::U\\3&''


C
  D(3-T# T ## # #7 7c@S 7rHEJJ H

*# * *X 4U\\5::56 4 4
	5:: 		d38n 	 	s @d @Ut U
-$ -RV -:<4 <
IT Ir-   rQ   c                       \ rS rSr% \\S'   Sr\\   \S'   \S\	R                  4S j5       rS\	R                  4S jrS\\\4   SS 4S	 jrS\4S
 jrS\4S jrS\4S jrS\4S jrS\4S jrSrg)StarDepi$  r    NrU   r#   c                     [        S5      e)NzStarDep does not have an indexr   r/   s    r)   r!   StarDep.index*      !"BCCr-   c                 T    [         R                  R                  U R                  5      $ r%   )r   rm   r0   r    r/   s    r)   r0   StarDep.get_numel.  s    ww  ++r-   r"   c                 j    U R                   U;   a"  [        XR                      U R                  5      $ U $ r%   )r    r   rU   r'   s     r)   r*   StarDep.rename1  s+    99799-tyy99r-   c                      [         R                  R                  R                  U R	                  5       5      [        [         R                  R                  U R                  5      5      -  $ ! [         a     gf = fr   r   r/   s    r)   r3   StarDep.numbytes_hint6  r   r   c                 L    [        [        U R                  5       5      5      S:  $ r   r   r/   s    r)   r6   StarDep.has_unbacked_symbols>  r   r-   c                     gNFr&   r/   s    r)   r9   StarDep.is_contiguousA      r-   c                     gr   r&   r/   s    r)   r   StarDep.is_scalarD  r   r-   c                     gr   r&   r/   s    r)   r   StarDep.is_indirectG  r   r-   r&   )rA   rB   rC   rD   rE   rF   rU   r   r   rG   rH   r!   r0   rK   r*   rL   r3   rM   r6   r9   r   r   rN   r&   r-   r)   r   r   $  s    
ID(3- Duzz D D,5:: ,d38n  
s @d @t 4 T r-   r   c                       \ rS rSr% \\S'   \\S'   \S\R                  4S j5       r	S\R                  4S jr
S\\\4   SS 4S jrS\4S	 jrS\4S
 jrS\4S jrSrg)WeakDepiS  r    mutating_bufr#   c                     [        S5      e)NzWeakDep does not have an indexr   r/   s    r)   r!   WeakDep.indexZ  r   r-   c                 6    [         R                  R                  $ r%   )rG   r   r   r/   s    r)   r0   WeakDep.get_numel^  s    ww{{r-   r"   c                 j    U R                   U;   a"  [        XR                      U R                  5      $ U $ r%   )r    r   r   r'   s     r)   r*   WeakDep.renamea  s-    99799-t/@/@AAr-   c                     gNr   r&   r/   s    r)   r3   WeakDep.numbytes_hintf  s    r-   c                     gr   r&   r/   s    r)   r6   WeakDep.has_unbacked_symbolsi  r   r-   c                     gr   r&   r/   s    r)   r9   WeakDep.is_contiguousl  r   r-   r&   N)rA   rB   rC   rD   rE   rF   r   rG   rH   r!   r0   rK   r*   rL   r3   rM   r6   r9   rN   r&   r-   r)   r   r   S  s~     IDuzz D D5:: d38n  
s d t r-   r   c                       \ rS rSr% \R
                  \S'   \\R                  S4   \S'   \\R
                  S4   \S'   Sr	g)IndexExprDepip  r!   .rS   rT   r&   N)
rA   rB   rC   rD   rG   rH   rF   r   r   rN   r&   r-   r)   r   r   p  s3    ::U\\3&''


C
  r-   r   c                   :   \ rS rSr% \\   \S'   \\   \S'   \\   \S'   Sr\	\
\R                        \S'   Sr\	\   \S'   S\\\4   S	S 4S
 jrS\\\\   4   S	S 4S jrSS jr\S\
S    S	S 4S j5       rS\\   S	S 4S jrS	\\   4S jrSS\S	\\   4S jjrSrg)
ReadWritesiw  readswritesindex_exprsN
range_varsr   r"   r#   c                    ^ [        [        U4S jU R                   5       5      [        U4S jU R                   5       5      U R                  U R
                  U R                  5      $ )Nc              3   D   >#    U  H  oR                  T5      v   M     g 7fr%   r*   re   depr"   s     r)   rg   $ReadWrites.rename.<locals>.<genexpr>  s     Ajszz'**j    c              3   D   >#    U  H  oR                  T5      v   M     g 7fr%   r	  r
  s     r)   rg   r    s     Bkszz'**kr  )r  r   r  r  r  r  r   r'   s    `r)   r*   ReadWrites.rename  sK    AdjjAABdkkBBOOOO
 	
r-   r  c                 4   [        U[        [        [        45      (       d   e[        U[        5      (       d  [        U/5      n[	        [        R
                  " U R                  U5      U R                  U R                  U R                  U R                  5      $ r%   )r   r   r   r   r  unionr  r  r  r  r   )r(   r  s     r)   	with_readReadWrites.with_read  st    #*=>>>>#z**cU#CTZZ-KKOOOO
 	
r-   c                     [         R                  " U R                  UR                  5      n[         R                  " U R                  UR                  5      n[         R                  " U R                  UR                  5      n[        X#-
  X45      $ r%   )r   r  r  r  r  r  )r(   rb   r  r  r  s        r)   mergeReadWrites.merge  sc      U[[9!!$++u||< &&t'7'79J9JK%.&>>r-   read_writesc                 L   [         R                  " U  Vs/ s H  oR                  PM     sn6 n[         R                  " U  Vs/ s H  oR                  PM     sn6 U-
  n[         R                  " U  Vs/ s H  oR                  PM     sn6 n[        X2U5      $ s  snf s  snf s  snf r%   )r   r  r  r  r  r  )r  rw
all_writes	all_readsall_index_exprss        r)   
merge_listReadWrites.merge_list  s    %%K'HKb		K'HI
$$+&F+Bxx+&FG*T	$**k,Rk^^k,RS)AA (I&F,Rs   BB2B!	rem_readsc                     [        U R                  U-
  U R                  U R                  U R                  U R
                  5      $ r%   )r  r  r  r  r  r   )r(   r  s     r)   remove_readsReadWrites.remove_reads  s9    JJ"KKOOOO
 	
r-   c                 X    [         R                  " U R                  U R                  5      $ r%   )rk   rl   r  r  r/   s    r)   reads_and_writesReadWrites.reads_and_writes  s    tzz4;;77r-   ignore_integer_indexc                    [        5       nU R                  5        Hm  n[        U[        5      (       d  M  U(       a1  [        UR                  [
        [        R                  45      (       a  MR  UR                  UR                  5        Mo     U$ )z&
Integer index is used for load_seed.
)
r   r$  r   rQ   r!   rL   rG   r   addr    )r(   r&  namesr  s       r)   buffer_namesReadWrites.buffer_names  sh     ",((*Cc9--'z		C/0 0 		#((# + r-   r&   )rb   r  r#   r  r   )rA   rB   rC   rD   r   r   rF   r   r  r   r   rG   rH   r   r   rK   rE   r*   r	   r  r  staticmethodr  r!  r   r$  rM   r*  rN   r&   r-   r)   r  r  w  s    c?sOL))-1Jejj)*1&*J#*
d38n 
 


U3
3#78 

\ 

? B\ 2 B| B B
jo 
, 
8(3- 8 C  r-   r  c                   j  ^  \ rS rSrS\S\SS4U 4S jjr\S\\	\
R                  4   S\\
R                     S	\\
R                     SS4S
 j5       r\S\
R                  S\S\\
R                  \\
R                   S4   \\
R                  S4   4   4S j5       rS\
R                  S\\
R                  \\
R                   S4   \\
R                  S4   4   4S jrS\S\
R                  S\4S jrS\S\	S\4S jr S S\S\
R                  S\S\\   S\4
S jjrS\S\
R                  S\S\4S jrS\
R                  S\\R4                     S\4S jr  S!S\S\\\
R                  \
R                  \
R                  4   S\S\R4                  S\S\\\\
R                  4      S\\   SS4S jjrSrU =r$ )"r   i  r   r   r#   Nc                    > [         TU ]  5         [        5       U l        [        5       U l        [        5       U l        Xl        X l        g r%   )super__init__r   _reads_writes_index_exprs_var_ranges_should_normalize)r(   r   r   	__class__s      r)   r0  _RecordLoadStoreInner.__init__  s6    '1|.8l6@l&0'0r-   r!   rS   r   c                     [        U [        R                  5      (       d  gU R                  nU(       a>  US   U;  a4  UR	                  5         UR	                  5         U(       a  US   U;  a  M2  gggg)zb
Reduction has last (reduced) dim in its sizes, but
downstream users won't.  Normalize this away.
Nr   )r   rG   rH   ri   pop)r!   rS   r   ri   s       r)   drop_unused_symbols)_RecordLoadStoreInner.drop_unused_symbols  sZ     %,,))IbM=MMOIIK IbM=i=ir-   .c                    / UR                  5       Qn[        UR                  5       5      n[        R                  R
                  R                  UU[        U/X45      5      u  pVn[        [        5       5      u  p[        [        X6" U V
s/ s H
  o" U
5      PM     sn
5      5      5      n[        [        R                  " U5      U5      n/ UR                  5       Qn/ UQnU R                  XU5        U[        U5      [        U5      4$ s  sn
f r%   )r   r   r   r   rm   rn   r   r   r   canonicalization_prefixrK   r   r   rG   r   r:  )clsr!   r   
index_varsr   	new_sizesr   r   new_varsr   r   r   s               r)   r    _RecordLoadStoreInner._normalize  s     *z()
j'')*%&WW%5%5%E%E$eWj@&
"	F ((?(AB3z7	3R	1GAJ	3R+STU5<<.<%X]]_% iL	;eHouY'777 4Ss   
D	c                    U R                   (       d  U R                  R                  5        Vs/ s H,  n[        R                  R
                  R                  U5      PM.     nn[        U R                  R                  5       U5       VVs/ s H  u  pEUS:w  d  M  UPM     nnnU Vs/ s H  oUS:w  d  M
  UPM     nnU R                  XU5        U[        U5      [        U5      4$ U R                  R                  5        VVs0 s H/  u  pEU[        R                  R
                  R                  U5      _M1     nnnU R                  X5      $ s  snf s  snnf s  snf s  snnf r   )r5  r4  r   r   rm   rn   simplifyr   r   r:  r   itemsr   )r(   r!   r   r   kr   rS   r   s           r)   canonicalize"_RecordLoadStoreInner.canonicalize  s)    %%;?;K;K;R;R;TU;TaQWW%%..q1;TEU'*4+;+;+@+@+BE'JU'JtqaSTf'JIU %01aQE0$$Uu=%	*E%L88 ((..0
0 qww((++0 	 
 u11 VU0

s#   3E
EE'	E4E6Er    c                     U R                   R                  [        U/U R                  U5      Q76 5        SU S[	        U5       S3$ )Nzload(rX   rY   )r1  r(  rQ   rG  r   r(   r    r!   s      r)   load_RecordLoadStoreInner.load  sB    	$B):):5)ABCtfBy/022r-   c                 |    [        U[        5      (       d   eU R                  U[        R                  " U5      5      $ r%   )r   rL   rK  rG   r   rJ  s      r)   	load_seed_RecordLoadStoreInner.load_seed  s/    %%%%%yyu}}U344r-   valuerU   c           	          U R                   R                  [        U/U R                  U5      Q7SU065        SU S[	        U5       SU SU S3	$ )NrU   zstore(rX   rY   )r2  r(  rQ   rG  r   )r(   r    r!   rP  rU   s        r)   store_RecordLoadStoreInner.store  sW     	4N$*;*;E*BNNOvR	% 01E7"TF!DDr-   c                 .    U R                  XSU S35      $ )Nzstore_reduction(rY   )rR  )r(   r    r!   rP  s       r)   store_reduction%_RecordLoadStoreInner.store_reduction  s    zz$)9%'BCCr-   dtypec                     U R                   R                  [        U R                  U5      6 5        S[	        U5       SU S3$ )Nzindex_expr(rX   rY   )r3  r(  r   rG  r   )r(   r!   rW  s      r)   
index_expr _RecordLoadStoreInner.index_expr  sA    lD,=,=e,DEFYu-.bq99r-   r   
boundariesboundary_indicesindexing_dtyperightsortersorter_indicesc                     U R                   R                  [        US   5      5        Ub(  U R                   R                  [        US   5      5        gg)z?Records the names of the buffers that bucketize will read from.r   N)r1  r(  r   )r(   r   r[  r\  r]  r^  r_  r`  s           r)   	bucketize_RecordLoadStoreInner.bucketize  sA     	
1./KKOOGF1I./ r-   )r3  r1  r5  r4  r2  r%   NN) rA   rB   rC   rD   r   rM   r0  r,  r	   rL   rG   rH   r   r:  classmethodr   r   r   rG  rE   rK  rN  r   rR  rU  torchrW  rY  r   rb  rN   __classcell__r6  s   @r)   r   r     sr   19 1 1$ 1 S%**_%

# EJJ 
	 " 8JJ8,58	uzz5s!23U5::s?5KK	L8 822ZZ2	uzz5s!23U5::s?5KK	L2&3 3UZZ 3C 35c 5# 5# 5
 OSEE %

E36E>FsmE	EDC D

 D3 D3 D:

 :8EKK3H :S : 48&*00 #uzz5::uzzAB0 	0
 0 0 sEJJ/00 !0 
0 0r-   r   c                   8   ^  \ rS rSrS\S\SS4U 4S jjrSrU =r$ )RecordLoadStorei)  r   r   r#   Nc                 2   > [        XS9n[        TU ]	  US9  g )Nr   r   )parent_handler)r   r/  r0  )r(   r   r   rm  r6  s       r)   r0  RecordLoadStore.__init__*  s"    .!
 	7r-   r&   )	rA   rB   rC   rD   r   rM   r0  rN   rg  rh  s   @r)   rj  rj  )  s"    89 8 8$ 8 8r-   rj  r;   r#   c                    ^ ^^ [         R                  " 5       m0 mS[        R                  S[        R                  4UU U4S jjnTU4$ )Nlengthr#   c                 B   > [        T [        T5       35      nU TU'   U$ r%   )r   next)rp  r   cntr;   r   s     r)   r   var_builder.<locals>.add_var6  s(    &$s)56
1r-   )rk   countrG   rH   r   )r;   r   rs  r   s   ` @@r)   r   r   2  sA    
//
CJ

 u||  
 wr-   argsizesc           	      t    [        U 5      u  p#U Vs/ s H  n[        [        X45      5      PM     nnXR4$ s  snf r%   )r   r   map)r;   rv  r   r   rT   r   s         r)   index_vars_no_squeezery  >  s>     &f-JKS%T84d3w+=&>8D%T &Us   5d)r;   c                     SSK Jn  [        U 5      u  p4/ n/ nU HP  nUR                  U5      u  pUR	                  U5        UR	                  U	" [        [        XH5      5      5      5        MR     XS4$ )Nr   )SqueezeView)r   r|  r   squeezerappendr   rx  )
r;   rv  r|  r   r   r   r@  rT   new_sizer   s
             r)   index_vars_squeezer  F  so      %f-J#%D(*I'006"GDW!789:  r-   Fr&   )r   r;   hidden_argsfn.r   r  c                   [        USU06u  pVSSKJn  [        X5      (       a  [	        U / UQUQXa5      nO>[        XaS9n	[        R                  " U	5         U " / UQUQ76   S S S 5        U	R                  nU(       a  / n
O!/ [        R                  R                  U5      Qn
[        [        UR                  5      [        UR                  5      UR                   U
U5      $ ! , (       d  f       N= f)Nr;   r   )LoopBody)r   )r  	loop_bodyr  r   extract_loop_body_with_argsrj  r   set_ops_handlerrm  rk   rl   from_iterabler  r   r1  r2  r3  )r  r   r;   r  rv  r   r   r  innerr  r  s              r)   extract_read_writesr  U  s     *8CFCD#"+%$%%z

 Z=r"##{# #!!
;y44T:;
5<< 5==!  #"s   C
C,r   r   c           	         SSK Jn  [        X#S9nU R                  U5      nU R                  (       ap  [        U R                  5       VVs0 s H   u  pxU[        [        R                  U5      _M"     n	nnUR                  5        V
Vs0 s H  u  pU
[        X5      _M     nn
nU R                  UR                      H+  nUR                  UR                  XkR                     5        M-     U R                  UR                       H4  nUR#                  UR                  [%        XkR                     5      5        M6     U R                  UR&                      H7  nUR)                  UR                  XkR                     S UR*                  5        M9     U R                  UR,                      H,  nUR/                  UR                  XkR                     S 5        M.     U R                  UR0                      H!  nUR3                  XkR                     S 5        M#     U R                  UR4                      H&  nUR7                  S UR                  S S S 4S S S 5        M(     U$ s  snnf s  snn
f )Nr   )MemoryUsageTyperl  )r  r  r   indexing_from_argsindirect_varsrr   r   r   TMPrE  r   memory_usageLOADrK  buffer_name
index_name	LOAD_SEEDrN  rL   STORErR  rU   STORE_REDUCTIONrU  
INDEX_EXPRrY  	BUCKETIZErb  )r  r   r   r   r  r  name_to_indexrv   r   replrF  entrys               r)   r  r  y  s    + "ZME))$/M	8A"BRBR8ST8S;txx++8ST<I<O<O<QR<QDAJq//<QR!5!56

5$$m4D4D&EF 7!:!:;))3}=M=M/N+OP <!6!67**+JJ		
 8 !@!@A**+	
 B !;!;<'7'78$? =!:!:; 	dD1	
 < LA URs   
'II!
input_nodeztorch._inductor.ir.IRNodec                 \   SSK JnJnJn  [	        U R                  5       U5      (       a7  / U R                  5       Qn/ U R                  5       Qn[        U5      S:  a  XE4$ g[	        U R                  R                  U5      (       d  gU R                  5       nSnSnUGc  [        U5      S:  Ga|  [        5       n/ nU GHA  n	[	        U	[        5      (       d  M  U	R                  U;   a  M-  UR                  U	R                  5        [        R                   R#                  U	R                  5      n
U
c  Mv  U
R                  5       nUb  [	        X5      (       a  M  [	        X5      (       aw  [        UR                  5       5      S:  aZ  Uc&  / UR                  5       Qn/ UR                  5       QnM  U/ UR                  5       Q:w  d  U/ UR                  5       Q:w  a    gGM"  UR%                  UR                  5       5        GMD     Xh:X  a  XE4$ [        U5      nUc  [        U5      S:  a  GM|  XE4$ )aD  
Returns the size and reduction size of all inputs, if the sizes and reduction_sizes (if exist) are all the same.
It's possible that a node has multiple inputs, some are Reduction nodes and others are Pointwise nodes.
In this case, reduction_sizes of the Reduction nodes need to be the same.
Otherwise returns (None, None).
r   )ComputedBufferExternKernelLoopsr   rd  N)r   r  r  r  r   get_defining_opget_sizeget_reduction_sizer_   data	get_readsr   rQ   r    r(  r   rm   try_get_bufferextend)r  r  r  r  rT   reduction_sizer  seen	new_readsreadbufferops               r)   #extract_input_node_reduction_rangesr    s    87
 *,,.??'$$&';:88:;~"))joo**E22
   "E15N'+D

 SZ!^ *!	DdI..yyD HHTYYWW++DII6F~'')BzZ99"--#b6K6K6M2NQR2R!)%?r'<'<'>%?N+R[[]+D#'A)>)>)@'AAT N[[]N F (F
   0- . ))y)E; 
 SZ!^< !!r-   c                      g)Ncr&   r&   r-   r)   r=  r=    s    r-   c                      \ rS rSr% \\R                     \S'   S$S jrS\	S\
\S4   S	\\	\4   S\4S
 jr  S%S\S\\\R                   4   S\S\S\R                  4
S jjrS\S\
S   4S jrS\S\S\\   S\
S   4S jrS\S\\   S\S\S\
S   4
S jrS\R0                  S\R0                  S\S\S\
S   4   S\S\
S   4   4
S jrS\S \S\4   S!\SS4S" jrS#rg)&FreeUnbackedSymbolsOpsHandleri  symbolsr#   Nc                 "    [        5       U l        g r%   )r   r  r/   s    r)   r0  &FreeUnbackedSymbolsOpsHandler.__init__  s    !|r-   r    r   .kwargsc                     [         R                  " X#R                  5       5       Hf  n[        U[        R
                  [        R                  R                  R                  45      (       d  MH  U =R                  [        U5      -  sl	        Mh     g r%   )rk   rl   r   r   rG   rH   logicboolalgBooleanr  r   )r(   r    r   r  as        r)   _default&FreeUnbackedSymbolsOpsHandler._default  sU    }}7A!ejj%++*=*=*E*EFGG 5a 88 8r-   	index_varrT   checkwrap_negc                     [        U[        R                  [        R                  R                  R
                  45      (       a   eU =R                  [        U5      -  sl        [        S[        U5       S35      $ )N(rY   )
r   rG   rH   r  r  r  r  r   r   rE   )r(   r  rT   r  r  s        r)   indirect_indexing/FreeUnbackedSymbolsOpsHandler.indirect_indexing  s]     i%**ekk6I6I6Q6Q)RSSSS-d33!Ac)n%5Q"788r-   r   )N.c                     g)Nrd  r&   )r(   r   s     r)   frexp#FreeUnbackedSymbolsOpsHandler.frexp  s    r-   dtypes
combine_fnr   c                     S[        U5      -  $ Nr%   r_   )r(   r  r  r   s       r)   scan"FreeUnbackedSymbolsOpsHandler.scan
       V$$r-   stable
descendingc                     S[        U5      -  $ r  r  )r(   r  r   r  r  s        r)   sort"FreeUnbackedSymbolsOpsHandler.sort  r  r-   rW  	src_dtypereduction_typerP  c                 2    [        U5      nUS:  a  SU-  $ S $ )Nr   r%   )r   )r(   rW  r  r  rP  
num_valuess         r)   	reduction'FreeUnbackedSymbolsOpsHandler.reduction  s$     +>:
'1A~w#?4?r-   maskbodyrb   c                 @    [        U5      (       d   S5       eU" 5         g )Nz$masked body must always be callable.)callable)r(   r  r  rb   s       r)   masked$FreeUnbackedSymbolsOpsHandler.masked  s    ~~EEE~r-   )r  )r#   N)TT)rA   rB   rC   rD   r   rG   r   rF   r0  rE   r   r   rK   r  r	   rL   rH   rM   r  r  r   r  r  rf  rW  r   r  r   r  rN   r&   r-   r)   r  r    s   %%$9S 9c3h 9c3h 9TW 9 	9	9 CO$	9 		9
 	9 
	9s uY/ %%'*%4<SM%	y	%
%%#+C=%:=%KN%	y	%
@{{@ ;;@ &	@
 T5++,@ 
tU9%%	&@3 hsCx&8   r-   r  r!   rindexc                 0   SSK Jn  Ub  X/OU/n[        5       n[        R                  " U5         [
        R                  " USS5         U " U6   S S S 5        S S S 5        UR                  $ ! , (       d  f       N"= f! , (       d  f       UR                  $ = f)Nr   )FlexibleLayoutallow_indexingT)r   r  r  r   r  r   objectr  )r  r!   r  r  r   handlers         r)   extract_free_unbacked_symbolsr  $  s{    
 #$0E?ugD+-G 	
'"^%5t<
D	 	= 	# ?? 	=< 	#" ??s#   A<	A+A<+
A9	5A<<
B)Fr%   )KrI   dataclassesrk   loggingrecollections.abcr   r   typingr   r   r   r   r	   typing_extensionsr
   unittest.mockr   rG   rf  %torch.fx.experimental.symbolic_shapesr   torch.utils._ordered_setr   utils._sympy.symbolr   r   codegen.commonr   ops_handlerr   utilsr   r   r   r   r   r   virtualizedr   r   r   	getLoggerrA   rp   compilesearchr   ABCr   	dataclassrQ   r   r   r   r  MockHandlerr   KernelFormatterHandlerrj  rE   r   rH   r   r   r   ry  r  rM   r  r  r  r=  r  r  r&   r-   r)   <module>r     s}   
    	 . : : "    G / 3 4 '  * CL!jj)00#'' 8 d#_I _I $_ID d##c # $#\ d#c  $8 d#! ! $! A A AHj0AMM j0Z8a.. 8	 	i5::,:T1U&U V 	

#-0
4U\\"#Y./ 47

#-0
4UZZ !9,-$ .0!c!

#! ! 	!
 $uzz*+! !P 	--
tEJJ
 - - 	-
 -`@"+@"
8D$%xUZZ0@'AAB@"F 
0N 0l .2cEJJ Xejj)* 	r-   