ó
    Eñiæ|  ã                   óÌ  • 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Jr  S SK	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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'  SSK(J)r)J*r*  \" S5      r+\RX                  " \-5      r.\R^                  " S5      R`                  r1 " S S\ Rd                  5      r3\Rh                  " SS9 " S S\35      5       r5\Rh                  " SS9 " S S\35      5       r6\Rh                  " SS9 " S S\35      5       r7\Rh                  " SS9 " S S5      5       r8\Rh                   " S S5      5       r9 " S  S!\*Rt                  5      r; " S" S#\*Rx                  5      r=S$\>S%\?\'\\R€                  /\R‚                  4   4   4S& jrBS'\\R€                     S$\>S%\?\C\C\R‚                        \'4   4S( jrDS)S*.S'\\R€                     S$\>S%\?\C\\R€                        \'4   4S+ jjrES,S)S-S..S/\S0\
4   S'\\R€                     S1\FS$\>S2\\C\R€                        S%\94S3 jjrG SAS/\
S4\C\C\R€                        S5\'S1\FS%\;4
S6 jjrHS7S8S%\?\\C\R€                        \\C\R€                        4   4S9 jrIS%\>4S: jrJ " S; S<\!5      rK  SBS/\S0\
4   S=\\R€                     S>\\\R€                        S?\FS%\\R‚                     4
S@ jjrLg)Cé    N)ÚCallableÚIterableÚSequence)ÚAnyÚOptionalÚTypeVarÚUnion)ÚSelf)Úpatch)Úget_free_symbols)Úfree_symbolsÚfree_unbacked_symbols©Ú
OrderedSeté   )Úmake_symbolÚSymTé   )Úindex_prevent_reordering)ÚDefaultHandler)Úget_dtype_sizeÚreduction_num_outputsÚsympy_index_symbolÚ
sympy_subsÚ	VarRanges)ÚReductionTypeÚVÚTzindirect|tmpc                   óÎ  • \ rS rSr% \\S'   \R                  \S'   \R                   SS\
S\\R                     4S jj5       r\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\R                  S\
4S j5       rSS\S\4S jjrSrg)ÚDepé%   ÚnameÚindexÚunbacked_onlyÚreturnc                 ó   • g ©N© ©Úselfr$   s     ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_inductor/dependencies.pyÚget_free_symbol_usesÚDep.get_free_symbol_uses)   s   € ð 	ó    Úrenamesc                 ó   • g r'   r(   ©r*   r/   s     r+   ÚrenameÚ
Dep.rename/   ó   € àr.   c                 ó   • g r'   r(   ©r*   s    r+   Ú	get_numelÚDep.get_numel3   r4   r.   c                 ó   • g r'   r(   r6   s    r+   Únumbytes_hintÚDep.numbytes_hint7   r4   r.   c                 ó   • g r'   r(   r6   s    r+   Ú
numel_hintÚDep.numel_hint;   r4   r.   c                 ó   • g r'   r(   r6   s    r+   Úhas_unbacked_symbolsÚDep.has_unbacked_symbols?   r4   r.   c                 ó   • g r'   r(   r6   s    r+   Úis_contiguousÚDep.is_contiguousC   r4   r.   Úprefixc                 ó   • U $ r'   r(   )r*   rE   s     r+   Únormalize_with_stride_orderÚDep.normalize_with_stride_orderG   s   € Øˆr.   r(   N©F©Út)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚstrÚ__annotations__ÚsympyÚExprÚabcÚabstractmethodÚboolr   ÚSymbolr,   Údictr
   r2   r7   Úintr:   r=   r@   rC   rG   Ú__static_attributes__r(   r.   r+   r    r    %   s6  ‡ Ø
ƒIØ�:‰:Óà×Ñà$)ñØ!ðà	�E—L‘LÑ	!ôó ðð
 	×Ñð˜d 3¨ 8™nð °ó ó ðð 	×Ñð˜5Ÿ:™:ó ó ðð 	×Ñð˜só ó ðð 	×Ñð˜Có ó ðð 	×Ñð dó ó ðð 	×Ñð˜tó ó ðñ°#ð À÷ ð r.   r    T)Úfrozenc                   óV  • \ rS rSr% \\S'   \R                  \S'   \\R                  S4   \S'   \\R                  S4   \S'   Sr
\\   \S'    S"S	\S
\\R                     4S jjr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
\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)&Ú	MemoryDepéK   r"   r#   .Ú	var_namesÚsizeNÚmoder$   r%   c                 óŠ   • [        U R                  U5      [        U R                  U5      -  [        U R                  U5      -  $ r'   )r   r#   r`   r_   r)   s     r+   r,   ÚMemoryDep.get_free_symbol_usesU   s=   € ô ˜TŸZ™Z¨Ó7Ü˜tŸy™y¨-Ó8ñ9ä˜tŸ~™~¨}Ó=ñ>ð	
r.   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, z
MemoryDep(Ú))ra   r"   r#   Úranges)r*   Ú
maybe_modes     r+   Ú__repr__ÚMemoryDep.__repr__^   sM   € Øˆ
Ø�9‰9Ñ Ø˜dŸi™i˜[Ð)ˆJØ˜DŸI™I™=¨¨4¯:©:¨,°b¸¿¹¸ÀjÀ\ÐQRÐSÐSr.   c                 ó,   • [        U R                  5      $ r'   )Úlenr_   r6   s    r+   Únum_varsÚMemoryDep.num_varsd   s   € ä�4—>‘>Ó"Ð"r.   Úotherc                 ó0  • 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      [        [#        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>}   s    é € ÐPÒ)O A�A‰v×˜˜a™ÔÒ)Oùs   ‚zaunable to decide loop order. self_dep=%s v.s. other_dep=%s, self_strides=%s v.s. other_strides=%s)rm   rl   r#   r   ÚanyÚ	itertoolsÚchainr`   r   ÚgraphÚsizevarsÚstride_hintsr_   r   ÚlogÚdebugÚ	enumerateÚrange)r*   ro   Úself_stridesÚother_stridesÚirs   Ústride_to_indexÚorders           r+   Údecide_loop_order_to_matchÚ$MemoryDep.decide_loop_order_to_matchh   s   € ð �}‰} §¡Ó.Ð.Ð.ð �=‰=œC §
¡
× 7Ñ 7Ó8Ó8ØØ�>‰>œS §¡×!9Ñ!9Ó:Ó:Øô ÑP¬¯ª¸¿¹ÀEÇJÁJÔ)OÓP×PÑPØô —w‘w×'Ñ'×4Ñ4°T·Z±ZÀÇÁÓPˆÜŸ™×(Ñ(×5Ñ5°e·k±kÀ5Ç?Á?ÓSˆô Œz˜,Ó'Ó(¬C°Ó,=Ó=ÄÜ�}Ó%óB
ä�ÓóB ô �I‰IØsØØØØôð ô
 �lÓ#¤z°-Ó'@Ó@Øä,5°lÔ,CÔDÒ,C¡D A˜1š4Ñ,CˆÑDÙ-:Ó;ª]¨ Ô#©]ˆÐ;ä˜%Ó ¤J¬u°T·]±]Ó/CÓ$DÓDÐDÐDØˆùó	 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#   rX   Úfromkeysr_   r6   s    r+   Ú
get_offsetÚMemoryDep.get_offset¡   s$   € ô ˜$Ÿ*™*¤d§m¡m°D·N±NÀAÓ&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.
)r]   r"   Ú_RecordLoadStoreInnerÚ
_normalizer#   rg   ra   r6   s    r+   Ú	normalizeÚMemoryDep.normalize§   sC   € ô Ø�I‰Ið
ä"×-Ñ-¨d¯j©j¸$¿+¹+ÓFð
ð �I‰Iò
ð 	
r.   rE   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                  /X˜5      5      u  p«n[!        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   ry   rz   r{   r#   r_   Úsortedr   rl   Ú__getitem__Úsame_reorderr`   Ú_simplify_loopsr   Úvar_builderrX   Úzipr   rR   Úexpandr]   r"   ÚtupleÚkeysÚvalues)r*   rE   r‘   Ústridesr„   Ústride_reorderÚsizesr_   Únew_reordered_sizesÚnew_reordered_var_namesÚnew_simplified_sizesÚreindexÚ_pruneÚ
var_rangesÚadd_varÚxÚreplacementÚ	new_indexÚouts                      r+   rG   Ú%MemoryDep.normalize_with_stride_order³   sU  € õ 	'ä—'‘'×"Ñ"×/Ñ/°·
±
¸D¿N¹NÓKˆô ”uœS ›\Ó*°×0CÑ0CÈTÑRˆØŸ™¨Ó/ˆØ—	‘	ˆØ—N‘Nˆ	á,¨UÓ3ÐÙ"0°Ó";Ðä01·±×0@Ñ0@×0PÑ0PØ#ØÜ$Ø—‘�Ð5óó1
Ñ-Ð vô *¨&Ó1Ñˆ
ÜÜØ'ÙÑ-AÓBÒ-A¨˜ žÑ-AÑBÓCóó
ˆô œuŸ|š|¨D¯J©JÓ7¸ÓEˆ	äØ�I‰I�y¤%¨
¯©Ó(9Ó":¼EÀ*×BSÑBSÓBUÓ<Vó
ˆð ˆ
ùò Cs   ÄFc                 óT   • [        [        U R                  U R                  5      5      $ )z{c0: 128, c1: 512, ...})rX   rš   r_   r`   r6   s    r+   rg   Ú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#   r_   r`   ra   )r]   r"   r   ry   rz   Úsimplify_with_rangesr#   rg   r_   r`   ra   r6   s    r+   r±   ÚMemoryDep.simplify_with_rangesä   sM   € ÜØ—‘Ü—'‘'×"Ñ"×7Ñ7¸¿
¹
ÀDÇKÁKÓPØ—n‘nØ—‘Ø—‘ñ
ð 	
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   ry   r7   r"   r   r#   r   rR   ÚSÚOnerš   r_   r`   )r*   ÚnumelÚvarsÚvarr`   s        r+   r7   ÚMemoryDep.get_numelí   s�   € Ø×Ñ×ÑÜ—G‘G×%Ñ% d§i¡iÓ0ˆEð ˆô -7°t·z±z×7NÑ7NÓ,OˆDÜ—G‘G—K‘KˆEÜ  §¡°·±Ö;‘	�Ø•;Ø!™L’Eñ <ð ˆr.   r/   c                 ó¨   • U R                   U;   aA  [        XR                      U R                  U R                  U R                  U R
                  S9$ U $ )N)r_   r`   ra   )r"   r]   r#   r_   r`   ra   r1   s     r+   r2   ÚMemoryDep.renameø   sH   € Ø�9‰9˜ÓÜØŸ	™	Ñ"Ø—
‘
ØŸ.™.Ø—Y‘YØ—Y‘Yñð ð ˆr.   c                 óö   •  [         R                  R                  R                  U R	                  5       SS9[        [         R                  R                  U R                  5      5      -  $ ! [         a     gf = f©Nr   )Úfallback©	r   ry   rz   Úoptimization_hintr7   r   Ú	get_dtyper"   ÚNotImplementedErrorr6   s    r+   r:   ÚMemoryDep.numbytes_hint  ói   € ð	Ü—7‘7×#Ñ#×5Ñ5Ø—‘Ó ¨1ð 6ð äœqŸw™w×0Ñ0°·±Ó;Ó<ñ=ð =øô #ó 	Ùð	úó   ‚A(A+ Á+
A8Á7A8c                 ó�   •  [         R                  R                  R                  U R	                  5       SS9$ ! [
         a     gf = fr¾   ©r   ry   rz   rÁ   r7   rÃ   r6   s    r+   r=   ÚMemoryDep.numel_hint  óA   € ð	Ü—7‘7×#Ñ#×5Ñ5°d·n±nÓ6FÐQRÐ5ÐSÐSøÜ"ó 	Ùð	úó   ‚58 ¸
AÁAc                 óL   • [        [        U R                  5       5      5      S:„  $ ©Nr   ©rl   r   r7   r6   s    r+   r@   Ú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#   rR   ÚIntegerrW   r_   r6   s    r+   rC   ÚMemoryDep.is_contiguous  sA   € Ü�d—j‘j¤%§-¡-×0Ñ0ØÜ˜$Ÿ*™*¤e§l¡lÓ3×T¸¿
¹
ÀdÇnÁnÑ8TÐ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   Téÿÿÿÿr   r   F)
rl   r_   rÓ   r#   rR   ÚAddÚargsÚMulrY   rÔ   )r*   rÖ   ÚtermsÚlast_symÚterms        r+   Ústride1_for_last_dimÚMemoryDep.stride1_for_last_dim  sÎ   € ô ˆt�~‰~Ó !Ó#Øä#-¨d¯j©j¼%¿)¹)×#DÑ#D�—
‘
—’È4Ï:É:È,ˆà—>‘> "Ñ%ˆÛˆDØÓÙô
 ˜4¤§¡×+Ó+Ü˜Ÿ	™	“N aÕ'Ø—I‘I˜a‘L HÕ,Ü˜tŸy™y¨™|¬c´5·=±=Ð-A×BÓBØ—I‘I˜a‘L 1Õ$áñ ð -Ð,r.   c                 ó  • [        U R                  [        R                  5      (       a5  U R                  U R                  ;  =(       a    U R                  5       (       + $ [        U R                  [        [        R                  45      $ r'   )rÓ   r#   rR   rW   r_   r´   rY   rÔ   r6   s    r+   Ú	is_scalarÚMemoryDep.is_scalar6  sU   € Ü�d—j‘j¤%§,¡,×/Ñ/Ø—:‘: T§^¡^Ñ3×N¸D×<LÑ<LÓ<NÔ8NÐNÜ˜$Ÿ*™*¤s¬E¯M©MÐ&:Ó;Ð;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"   )rr   Úvs     r+   rt   Ú(MemoryDep.is_indirect.<locals>.<genexpr><  s   é € ÐHÒ0G¨1”;˜qŸv™v×&Ð&Ò0Gùs   ‚"$)rv   r#   r   r6   s    r+   r´   ÚMemoryDep.is_indirect;  s   € ÜÑH°·
±
×0GÒ0GÓHÓHÐHr.   r(   rI   )r%   r]   rJ   ©T)%rL   rM   rN   rO   rP   rQ   rR   rS   rœ   rW   ra   r   rV   r   r,   ri   ÚpropertyrY   rm   Úlistr…   r‰   rŽ   rG   rX   rg   r±   r7   r2   r:   r=   r@   rC   rß   râ   r´   rZ   r(   r.   r+   r]   r]   K   s›  ‡ ð ƒIà�:‰:ÓØ�U—\‘\ 3Ð&Ñ'Ó'Ø
�—
‘
˜C�Ñ
 Ó Ø€Dˆ(�3‰-Óð %*ñ
Ø!ð
à	�E—L‘LÑ	!õ
ðT˜#ô Tð ð#˜#ó #ó ð#ð7°ð 7ÀÈÈcÉÑ@Sô 7ðrH˜EŸJ™Jô Hô

ñ*°#ð *Àõ *ðX ð4˜˜UŸ\™\¨5¯:©:Ð5Ñ6ó 4ó ð4ô
ð	˜5Ÿ:™:ô 	ð	˜d 3¨ 8™nð 	°ô 	ð˜sô ð˜Cô ð@ dô @ðU˜tô Uñ
-À$ð -ÐRVõ -ð:<˜4ô <ð
I˜T÷ Ir.   r]   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S
\S\\	R"                     4S j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\4S jrSrg)ÚStarDepi?  r"   Nra   r%   c                 ó   • [        S5      e)NzStarDep does not have an index©rÃ   r6   s    r+   r#   ÚStarDep.indexF  ó   € ô "Ð"BÓCÐCr.   c                 óT   • [         R                  R                  U R                  5      $ r'   )r   ry   r7   r"   r6   s    r+   r7   ÚStarDep.get_numelK  s   € Ü�w‰w× Ñ  §¡Ó+Ð+r.   r/   c                 ój   • U R                   U;   a"  [        XR                      U R                  5      $ U $ r'   )r"   rí   ra   r1   s     r+   r2   ÚStarDep.renameN  s+   € Ø�9‰9˜ÓÜ˜7§9¡9Ñ-¨t¯y©yÓ9Ð9Øˆr.   r$   c                 ó   • [        5       $ r'   r   r)   s     r+   r,   ÚStarDep.get_free_symbol_usesS  ó   € ô ‹|Ðr.   c                 óö   •  [         R                  R                  R                  U R	                  5       SS9[        [         R                  R                  U R                  5      5      -  $ ! [         a     gf = fr¾   rÀ   r6   s    r+   r:   ÚStarDep.numbytes_hintX  rÅ   rÆ   c                 ó�   •  [         R                  R                  R                  U R	                  5       SS9$ ! [
         a     gf = fr¾   rÈ   r6   s    r+   r=   ÚStarDep.numel_hint`  rÊ   rË   c                 óL   • [        [        U R                  5       5      5      S:„  $ rÍ   rÎ   r6   s    r+   r@   ÚStarDep.has_unbacked_symbolsf  rÐ   r.   c                 ó   • g©NFr(   r6   s    r+   rC   ÚStarDep.is_contiguousi  ó   € Ør.   c                 ó   • gr   r(   r6   s    r+   râ   ÚStarDep.is_scalarl  r  r.   c                 ó   • gr   r(   r6   s    r+   r´   ÚStarDep.is_indirecto  r  r.   r(   rI   )rL   rM   rN   rO   rP   rQ   ra   r   rê   rR   rS   r#   r7   rX   r2   rV   r   rW   r,   rY   r:   r=   r@   rC   râ   r´   rZ   r(   r.   r+   rí   rí   ?  sÑ   ‡ ð ƒIØ€Dˆ(�3‰-Óð ðD�u—z‘zó Dó ðDð,˜5Ÿ:™:ô ,ð˜d 3¨ 8™nð °ô ð %*ñØ!ðà	�E—L‘LÑ	!õð
˜sô ð˜Cô ð@ dô @ð˜tô ð˜4ô ð˜T÷ r.   rí   c                   ó  • \ rS rSr% \\S'   \\S'   Sr\\S'    SS\S\\	R                     4S jjr\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rg)ÚWeakDepi{  r"   Úmutating_bufFÚis_faker$   r%   c                 ó   • [        5       $ r'   r   r)   s     r+   r,   ÚWeakDep.get_free_symbol_uses‰  rø   r.   c                 ó   • [        S5      e)NzWeakDep does not have an indexrï   r6   s    r+   r#   ÚWeakDep.indexŽ  rñ   r.   c                 ó6   • [         R                  R                  $ r'   )rR   rµ   r¶   r6   s    r+   r7   ÚWeakDep.get_numel“  s   € Ü�w‰w�{‰{Ðr.   r/   c                 ó€   • U R                   U;   a-  [        XR                      U R                  U R                  5      $ U $ r'   )r"   r  r	  r
  r1   s     r+   r2   ÚWeakDep.rename–  s3   € Ø�9‰9˜ÓÜ˜7§9¡9Ñ-¨t×/@Ñ/@À$Ç,Á,ÓOÐOØˆr.   c                 ó   • g©Nr   r(   r6   s    r+   r:   ÚWeakDep.numbytes_hint›  ó   € Ør.   c                 ó   • gr  r(   r6   s    r+   r=   ÚWeakDep.numel_hintž  r  r.   c                 ó   • gr   r(   r6   s    r+   r@   ÚWeakDep.has_unbacked_symbols¡  r  r.   c                 ó   • gr   r(   r6   s    r+   rC   ÚWeakDep.is_contiguous¤  r  r.   r(   NrI   )rL   rM   rN   rO   rP   rQ   r
  rV   r   rR   rW   r,   rê   rS   r#   r7   rX   r2   rY   r:   r=   r@   rC   rZ   r(   r.   r+   r  r  {  s»   ‡ ð ƒIàÓð €GˆTÓð %*ñØ!ðà	�E—L‘LÑ	!õð
 ðD�u—z‘zó Dó ðDð˜5Ÿ:™:ô ð˜d 3¨ 8™nð °ô ð
˜sô ð˜Cô ð dô ð˜t÷ r.   r  c                   ó„   • \ rS rSr% \R
                  \S'   \\R                  S4   \S'   \\R
                  S4   \S'   Sr	g)ÚIndexExprDepi¨  r#   .r_   r`   r(   N)
rL   rM   rN   rO   rR   rS   rQ   rœ   rW   rZ   r(   r.   r+   r  r  ¨  s3   ‡ à�:‰:ÓØ�U—\‘\ 3Ð&Ñ'Ó'Ø
�—
‘
˜C�Ñ
 Ö r.   r  c                   ól  • \ 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S\S	\\R8                     4S jjrSrg)Ú
ReadWritesi¯  Ú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'   ©r2   ©rr   Údepr/   s     €r+   rt   Ú$ReadWrites.rename.<locals>.<genexpr>¹  s   øé € ÐA²j¨s—z‘z '×*Ð*²jùó   ƒ c              3   óD   >#   • U  H  oR                  T5      v •  M     g 7fr'   r'  r(  s     €r+   rt   r*  º  s   øé € ÐB²k¨s—z‘z '×*Ð*²kùr+  )r   r   r!  r"  r#  r$  r§   r1   s    `r+   r2   ÚReadWrites.rename·  sK   ø€ ÜÜÔA°d·j²jÓAÓAÜÔB°d·k²kÓBÓBØ×ÑØ�O‰OØ�O‰Oó
ð 	
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×*Ñ*Ü˜c˜UÓ#ˆCÜÜ×Ò˜TŸZ™Z¨Ó-Ø�K‰KØ×ÑØ�O‰OØ�O‰Oó
ð 	
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*   ro   r!  r"  r#  s        r+   ÚmergeÚReadWrites.mergeÌ  sc   € Ü× Ò  §¡¨U¯[©[Ó9ˆÜ×!Ò! $§+¡+¨u¯|©|Ó<ˆÜ ×&Ò& t×'7Ñ'7¸×9JÑ9JÓ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   )r5  ÚrwÚ
all_writesÚ	all_readsÚall_index_exprss        r+   Ú
merge_listÚReadWrites.merge_listÒ  sƒ   € ä×%Ò%¹KÓ'HºK°b¯	¬	¹KÑ'HÐIˆ
Ü×$Ò$¹+Ó&Fº+°B§x¤x¹+Ñ&FÐGÈ*ÑTˆ	Ü$×*Ò*ÁkÓ,RÂkÀ¯^¬^Á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   € ÜØ�J‰J˜Ñ"Ø�K‰KØ×ÑØ�O‰OØ�O‰Oó
ð 	
r.   c                 óX   • [         R                  " U R                  U R                  5      $ r'   )rw   rx   r!  r"  r6   s    r+   Úreads_and_writesÚReadWrites.reads_and_writesâ  s   € Ü�Š˜tŸz™z¨4¯;©;Ó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   rB  rÓ   r]   r#   rY   rR   rÔ   Úaddr"   )r*   rD  Únamesr)  s       r+   Úbuffer_namesÚReadWrites.buffer_nameså  sh   € ô ",£ˆØ×(Ñ(Ö*ˆCÜ˜c¤9×-Ñ-ÙÞ'¬zØ—	‘	œC¤§¡Ð/÷0ó 0ð —	‘	˜#Ÿ(™(Ö#ñ +ð ˆr.   r$   c                 ón   • [        5       nU R                  5        H  nX#R                  U5      -  nM     U$ r'   )r   rB  r,   )r*   r$   Úresultr)  s       r+   r,   ÚReadWrites.get_free_symbol_usesó  s6   € ô ,6«<ˆà×(Ñ(Ö*ˆCØ×.Ñ.¨}Ó=Ñ=ŠFñ +àˆr.   r(   )ro   r   r%   r   ré   rI   )rL   rM   rN   rO   r   r    rQ   r  r$  r   rë   rR   rS   r§   r   rX   rP   r2   r	   r0  r3  Ústaticmethodr;  r?  r   rB  rV   rH  rW   r,   rZ   r(   r.   r+   r   r   ¯  s  ‡ à�c‰?ÓØ�s‰OÓØ˜LÑ)Ó)Ø-1€J�˜˜eŸj™jÑ)Ñ*Ó1Ø&*€J�˜Ñ#Ó*ð
˜d 3¨ 8™nð 
°ô 
ð

˜U 3¨
°3©Ð#7Ñ8ð 

¸\ô 

ô?ð ðB  \Ñ 2ð B°|ó Bó ðBð
 j°¡oð 
¸,ô 
ð8 (¨3¡-ô 8ñ°ð ÀÈCÁõ ð %*ñØ!ðà	�E—L‘LÑ	!÷ð 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S4S jrS\S\	SS4S jr S S\S\
R                  S\S\\   SS4
S jjrS\S\
R                  S\SS4S jrS\
R                  S\\R4                     S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+   rQ  Ú_RecordLoadStoreInner.__init__þ  s6   ø€ Ü‰ÑÔÜ'1£|ˆŒÜ.8«lˆŒÜ6@³lˆÔØ&0ÔØ'0Õr.   r#   r_   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Ó   rR   rS   r   Úpop)r#   r_   r¡   r   s       r+   Údrop_unused_symbolsÚ)_RecordLoadStoreInner.drop_unused_symbols  sZ   € ô ˜%¤§¡×,Ñ,àØ×)Ñ)ˆÞ˜I b™M°Ó=Ø�M‰MŒOØ�I‰IŒKö ˜I b™M°Ö=ˆ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   ry   rz   r˜   r   r™   Úcanonicalization_prefixrX   rš   r   rR   r›   r[  )Úclsr#   r§   Ú
index_varsr¡   Ú	new_sizesr¥   r¦   Únew_varsr¨   r©   rª   s               r+   r�   Ú _RecordLoadStoreInner._normalize  sï   € ð *�z—‘Ó(Ð)ˆ
Ü�j×'Ñ'Ó)Ó*ˆÜ%&§W¡W×%5Ñ%5×%EÑ%EØØÜ$ e W¨jÓ@ó&
Ñ"ˆ	˜Fô (Ô(?Ó(AÓBÑˆÜœ3˜z¨7É	Ó3RÊ	À1°G¸A¶JÉ	Ñ3RÓ+SÓTÓUˆÜœ5Ÿ<š<¨Ó.°Ó<ˆà%�X—]‘]“_Ð%ˆØ �i�Lˆ	Ø×Ñ °Ô;Ø”e˜H“o¤u¨YÓ'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  )rV  rU  rž   r   ry   rz   Úsimplifyrš   r�   r[  rœ   Úitemsr�   )r*   r#   r©   r¡   Úkræ   r_   r§   s           r+   ÚcanonicalizeÚ"_RecordLoadStoreInner.canonicalize2  s)  € ð ×%×%Ø;?×;KÑ;K×;RÑ;RÔ;TÓUÒ;T°a”Q—W‘W×%Ñ%×.Ñ.¨qÖ1Ñ;TˆEÐUÜ'*¨4×+;Ñ+;×+@Ñ+@Ó+BÀEÔ'JÔUÒ'J™t˜qÈaÐSTÉfŸÑ'JˆIÑUÙ %Ó0¢˜1¨a©—Q¡ˆEÐ0à×$Ñ$ U°uÔ=àœ% 	Ó*¬E°%«LÐ8Ð8ð ×(Ñ(×.Ñ.Ô0ô
â0‘�ð Œq�w‰w×Ñ×(Ñ(¨Ó+Ò+Ù0ð 	ñ 
ð �‰˜uÓ1Ð1ùò VùÛUùÚ0ùó

s#   ®3EÂ
EÂEÂ'	EÂ4EÄ6Er"   c                 ól   • U R                   R                  [        U/U R                  U5      Q76 5        g r'   )rR  rF  r]   rh  ©r*   r"   r#   s      r+   ÚloadÚ_RecordLoadStoreInner.loadE  s'   € Ø�‰�‰œ	 $ÐB¨×):Ñ):¸5Ó)AÒBÕCr.   c                 ó~   • [        U[        5      (       d   eU R                  U[        R                  " U5      5        g r'   )rÓ   rY   rl  rR   rÔ   rk  s      r+   Ú	load_seedÚ_RecordLoadStoreInner.load_seedH  s,   € Ü˜%¤×%Ñ%Ð%Ð%Ø�	‰	�$œŸš eÓ,Õ-r.   Úvaluera   c                 ór   • U R                   R                  [        U/U R                  U5      Q7SU065        g )Nra   )rS  rF  r]   rh  )r*   r"   r#   rq  ra   s        r+   ÚstoreÚ_RecordLoadStoreInner.storeL  s0   € ð 	�‰×Ñœ 4ÐN¨$×*;Ñ*;¸EÓ*BÒNÈÑNÕOr.   c                 ó0   • U R                  XSU S35        g )Nzstore_reduction(rf   )rs  )r*   r"   r#   rq  s       r+   Ústore_reductionÚ%_RecordLoadStoreInner.store_reductionQ  s   € Ø�
‰
�4Ð"2°5°'¸Ð ;Õ<r.   Údtypec                 ód   • U R                   R                  [        U R                  U5      6 5        g r'   )rT  rF  r  rh  )r*   r#   rx  s      r+   Ú
index_exprÚ _RecordLoadStoreInner.index_exprT  s&   € Ø×Ñ×Ñœl¨D×,=Ñ,=¸eÓ,DÐEÕFr.   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)rR  rF  rí   )r*   rž   r|  r}  r~  r  r€  r�  s           r+   Ú	bucketizeÚ_RecordLoadStoreInner.bucketizeW  sA   € ð 	�‰�‰œ 
¨1¡Ó.Ô/ØÑØ�K‰K�O‰OœG F¨1¡IÓ.Õ/ð r.   )rT  rR  rV  rU  rS  r'   ©NN) rL   rM   rN   rO   r   rV   rQ  rM  r	   rY   rR   rS   rë   r[  Úclassmethodrœ   rW   r�   rh  rP   rl  ro  r   rs  rv  Útorchrx  rz  r   rƒ  rZ   Ú__classcell__©rW  s   @r+   rŒ   rŒ   ý  su  ø† ð1 9ð 1¸ð 1À$÷ 1ð ðØ�S˜%Ÿ*™*�_Ñ%ðà˜Ÿ
™
Ñ#ðð �E—J‘JÑðð 
ó	ó ðð" ð8Ø—J‘Jð8Ø,5ð8à	ˆu�z‰z˜5 §¡¨sÐ!2Ñ3°U¸5¿:¹:Às¸?Ñ5KÐKÑ	Ló8ó ð8ð22Ø—Z‘Zð2à	ˆu�z‰z˜5 §¡¨sÐ!2Ñ3°U¸5¿:¹:Às¸?Ñ5KÐKÑ	Lô2ð&D˜ð D U§Z¡Zð D°Dô Dð.˜cð .¨#ð .°$ô .ð
 OSñPØðPØ %§
¡
ðPØ36ðPØ>FÀs¹mðPà	õPð
= Cð =°·
±
ð =À3ð =È4ô =ðG §
¡
ð G°8¸E¿K¹KÑ3Hð GÈTô Gð 48Ø&*ñ0àð0ð ˜#˜uŸz™z¨5¯:©:°u·z±zÐAÑBð0ð ð	0ð
 Ÿ™ð0ð ð0ð ˜˜s E§J¡J˜Ñ/Ñ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$ )ÚRecordLoadStoreig  r§   rŽ   r%   Nc                 ó2   >• [        XS9n[        TU ]	  US9  g )N©r§   rŽ   )Úparent_handler)rŒ   rP  rQ  )r*   r§   rŽ   rŽ  rW  s       €r+   rQ  ÚRecordLoadStore.__init__h  s"   ø€ Ü.Ø!ñ
ˆô 	‰Ñ¨ÐÒ7r.   r(   )	rL   rM   rN   rO   r   rV   rQ  rZ   rˆ  r‰  s   @r+   r‹  r‹  g  s"   ø† ð8 9ð 8¸ð 8À$÷ 8õ 8r.   r‹  rE   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)r‘  ræ   ÚcntrE   r§   s     €€€r+   r¨   Úvar_builder.<locals>.add_vart  s(   ø€ Ü & ¬$¨s«)¨Ð5Ó6ˆØˆ
�1‰Øˆr.   )rw   ÚcountrR   rS   rW   )rE   r¨   r”  r§   s   ` @@r+   r™   r™   p  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)rE   r—  r§   r¨   r`   rÚ   s         r+   Úindex_vars_no_squeezerš  |  s>   € ô & fÓ-Ñ€JÙKSÓ%TÊ8À4¤d¬3¨wÓ+=Ö&>É8€DÐ%TØÐÐùò &Us   ’5Úd)rE   c                 óâ   • SSK Jn  [        U 5      u  p4/ n/ nU HP  nUR                  U5      u  p‰UR	                  U5        UR	                  U	" [        [        XH5      5      5      5        MR     XS4$ )Nr   )ÚSqueezeView)r‘   r�  r™   ÚsqueezerÚappendrë   r™  )
rE   r—  r�  r§   r¨   rÚ   ra  r`   Únew_sizer¥   s
             r+   Úindex_vars_squeezer¡  „  so   € õ  ä% fÓ-Ñ€JØ')€DØ,.€IÛˆØ'×0Ñ0°Ó6ÑˆØ×Ñ˜Ô"Ø�‰‘GœD¤ WÓ!7Ó8Ó9Ö:ñ ð ÐÐr.   Fr(   )rŽ   rE   Ú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UU5      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)NrE   r   )ÚLoopBody)rŽ   )r¡  Ú	loop_bodyr¥  rÓ   Úextract_loop_body_with_argsr‹  r   Úset_ops_handlerrŽ  rw   rx   Úfrom_iterabler   r   rR  rS  rT  )r£  rŽ   rE   r¢  r—  rÚ   r§   r¥  Úinnerr7  r$  s              r+   Úextract_read_writesr«  “  sÜ   € ô *¨8ÐC¸FÑCÑ€Då#ä�"×ÑÜ+ØØ!ˆdÐ!�[Ð!ØØó	
‰ô ˜ZÑ=ˆÜ×Ò˜rÕ"ÙÐ#�Ð#�{Ó#÷ #à×!Ñ!ˆæØ‰
à;”y—‘×4Ñ4°TÓ:Ð;ˆ
ää�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  p¨U
[        X‰5      _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   )ÚMemoryUsageTyper�  )r¦  r­  rŒ   Úindexing_from_argsÚindirect_varsr~   r   r   ÚTMPrf  r   Úmemory_usageÚLOADrl  Úbuffer_nameÚ
index_nameÚ	LOAD_SEEDro  rY   ÚSTORErs  ra   ÚSTORE_REDUCTIONrv  Ú
INDEX_EXPRrz  Ú	BUCKETIZErƒ  )r£  rÚ   r§   rŽ   r­  rª  Úname_to_indexr‚   ræ   Úreplrg  Úentrys               r+   r§  r§  ½  s  € õ +ô "¨ZÑM€EØ×)Ñ)¨$Ó/€MØ	××ä8AÀ"×BRÑBRÔ8SÔTÒ8S±°�”;œtŸx™x¨Ó+Ò+Ñ8SˆÑTØ<I×<OÑ<OÔ<QÔRÒ<Q±D°A˜œJ qÓ/Ò/Ñ<QˆÑRØ—‘ ×!5Ñ!5Ô6ˆØ�
‰
�5×$Ñ$ m×4DÑ4DÑ&EÖFñ 7à—‘ ×!:Ñ!:Ô;ˆØ�‰˜×)Ñ)¬3¨}×=MÑ=MÑ/NÓ+OÖPñ <à—‘ ×!6Ñ!6Ô7ˆØ�‰Ø×ÑØ×*Ñ*Ñ+ØØ�J‰Jö		
ñ 8ð —‘ ×!@Ñ!@ÔAˆØ×ÑØ×ÑØ×*Ñ*Ñ+Øö	
ñ Bð —‘ ×!;Ñ!;Ô<ˆØ×Ñ˜×'7Ñ'7Ñ8¸$Ö?ñ =à—‘ ×!:Ñ!:Ô;ˆð 	�‰ØØ×Ñ  d¨DÐ1ØØØö	
ñ <ð €LùóA 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  [	        X²5      (       a  M›  [	        X±5      (       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   r…  N)r‘   r¿  rÀ  rÁ  rÓ   Úget_defining_opÚget_sizeÚget_reduction_sizerl   ÚdataÚ	get_readsr   r]   r"   rF  r   ry   Útry_get_bufferÚextend)r½  r¿  rÀ  rÁ  r`   Úreduction_sizer!  ÚseenÚ	new_readsÚreadÚbufferÚops               r+   Ú#extract_input_node_reduction_rangesrÏ  í  s  € ÷ 8Ñ7ô
 �*×,Ñ,Ó.°×?Ñ?à'�×$Ñ$Ó&Ð'ˆØ;˜:×8Ñ8Ó:Ð;ˆÜˆ~Ó Ó"ØÐ)Ð)àä�j—o‘o×*Ñ*¨E×2Ñ2àð
 × Ñ Ó"€EØ15€NØ'+€DØ
Ò
 ¤S¨£Z°!¤^Ü *£ˆØ!ˆ	ÜˆDÜ˜d¤I×.Ñ.ÙØ�y‰y˜DÓ ÙØ�H‰H�T—Y‘YÔÜ—W‘W×+Ñ+¨D¯I©IÓ6ˆFØ‰~ÙØ×'Ñ'Ó)ˆBØ‰zœZ¨×9Ñ9Ùä˜"×-Ñ-´#°b×6KÑ6KÓ6MÓ2NÐQRÓ2RØ!Ñ)Ø%? r×'<Ñ'<Ó'>Ð%?�NØ+˜RŸ[™[›]Ð+’DØ#Ð'A¨×)>Ñ)>Ó)@Ð'AÓAÀTð NØ—[‘[“]ðNó Fñ (òFð
 × Ñ  §¡£×0ñ- ð. ÓØÐ)Ð)ä˜yÓ)ˆEð; Ñ
 ¤S¨£Z°!¦^ð< Ð!Ð!r.   c                  ó   • g)NÚcr(   r(   r.   r+   r^  r^  0  s   € Ør.   c                   óÈ  • \ rS rSr% \\R                     \S'   S%S\SS4S j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)'ÚFreeSymbolsOpsHandleri5  Úsymbolsr$   r%   Nc                 ó^   • [        5       U l        U(       a  [        U l        g [        U l        g r'   )r   rÔ  r   r   Úget_symbolsr)   s     r+   rQ  ÚFreeSymbolsOpsHandler.__init__8  s   € Ü!“|ˆŒÞ4AÔ0ˆÕÄ|ˆÕr.   r"   rÚ   .Úkwargsc                 ó,  • [         R                  " X#R                  5       5       Hl  n[        U[        R
                  [        R                  R                  R                  45      (       d  MH  U =R                  U R                  U5      -  sl	        Mn     g r'   )rw   rx   rž   rÓ   rR   rS   ÚlogicÚboolalgÚBooleanrÔ  rÖ  )r*   r"   rÚ   rØ  Úas        r+   Ú_defaultÚFreeSymbolsOpsHandler._default<  sZ   € Ü—’ §}¡}£Ö7ˆAÜ˜!œeŸj™j¬%¯+©+×*=Ñ*=×*EÑ*EÐF×GÓGØ—’ × 0Ñ 0°Ó 3Ñ3—ò 8r.   Ú	index_varr`   ÚcheckÚwrap_negc                 ó  • [        U[        R                  [        R                  R                  R
                  45      (       a   eU =R                  U R                  U5      -  sl        [        S[        U5       S35      $ )NÚ(rf   )
rÓ   rR   rS   rÚ  rÛ  rÜ  rÔ  rÖ  r   rP   )r*   rà  r`   rá  râ  s        r+   Úindirect_indexingÚ'FreeSymbolsOpsHandler.indirect_indexingA  sb   € ô ˜i¬%¯*©*´e·k±k×6IÑ6I×6QÑ6QÐ)R×SÑSÐSÐSØ�Š˜×(Ñ(¨Ó.Ñ.�Ü! A¤c¨)£nÐ%5°QÐ"7Ó8Ð8r.   r©   )N.c                 ó   • g)Nr…  r(   )r*   r©   s     r+   ÚfrexpÚFreeSymbolsOpsHandler.frexpL  s   € Ør.   ÚdtypesÚ
combine_fnrž   c                 ó   • S[        U5      -  $ ©Nr'   ©rl   )r*   rê  rë  rž   s       r+   ÚscanÚFreeSymbolsOpsHandler.scanO  ó   € ð œ˜V›Ñ$Ð$r.   ÚstableÚ
descendingc                 ó   • S[        U5      -  $ rí  rî  )r*   rê  rž   rò  ró  s        r+   ÚsortÚFreeSymbolsOpsHandler.sortT  rñ  r.   rx  Ú	src_dtypeÚreduction_typerq  c                 ó2   • [        U5      nUS:”  a  SU-  $ S $ )Nr   r'   )r   )r*   rx  r÷  rø  rq  Ú
num_valuess         r+   Ú	reductionÚFreeSymbolsOpsHandler.reductionY  s$   € ô +¨>Ó:ˆ
Ø'1°A£~ˆw˜Ñ#Ð?¸4Ð?r.   ÚmaskÚbodyro   c                 ó@   • [        U5      (       d   S5       eU" 5         g )Nz$masked body must always be callable.)Úcallable)r*   rý  rþ  ro   s       r+   ÚmaskedÚFreeSymbolsOpsHandler.maskedc  s   € Ü˜�~‰~ÐEÐEÓEˆ~á�r.   )rÖ  rÔ  ré   )TT)rL   rM   rN   rO   r   rR   rW   rQ   rV   rQ  rP   rœ   r   rX   rÞ  r	   rY   rS   rå  rè  r   rï  rõ  r‡  rx  r   rû  r   r  rZ   r(   r.   r+   rÓ  rÓ  5  s®  ‡ Ø˜Ÿ™Ñ%Ó%ñT dð T°dõ Tð4˜Sð 4¨¨c°3¨h©ð 4ÀÀcÈ3ÀhÁð 4ÐTWô 4ð Øñ	9àð	9ð �C˜Ÿ™�OÑ$ð	9ð ð		9ð
 ð	9ð 
�‰õ	9ð�sð ˜u YÑ/ô ð%Øð%Ø'*ð%Ø4<¸S±Mð%à	ˆyÑ	ô%ð
%Øð%Ø#+¨C¡=ð%Ø:=ð%ØKNð%à	ˆyÑ	ô%ð
@à�{‰{ð@ð —;‘;ð@ð &ð	@ð
 �T˜5 Ñ+Ð+Ñ,ð@ð 
ˆt�U˜9Ñ%Ð%Ñ	&ô@ð˜3ð  h¨s°C¨xÑ&8ð Àð È÷ r.   rÓ  r#   Úrindexr$   c                 ó2  • SSK Jn  Ub  X/OU/n[        U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  rÚ   Úhandlers          r+   Úextract_free_symbolsr	  i  s}   € õ #à$Ñ0ˆE‰?°u°g€DÜ# MÓ2€Gô 	
×Ò˜'Õ"Ü�Š�^Ð%5°tÕ<á
ˆD‰	÷ 	=÷ 	#ð �?‰?Ð÷ 	=Õ<ú÷ 	#Ô"ð �?‰?Ðús#   ±A=Á
A,ÁA=Á,
A:	Á6A=Á=
BrI   rÒ   )MrT   Údataclassesrw   ÚloggingÚreÚcollections.abcr   r   r   Útypingr   r   r   r	   Útyping_extensionsr
   Úunittest.mockr   rR   r‡  Útorch._inductor.utilsr   Ú%torch.fx.experimental.symbolic_shapesr   r   Útorch.utils._ordered_setr   Úutils._sympy.symbolr   r   Úcodegen.commonr   Úops_handlerr   Úutilsr   r   r   r   r   Úvirtualizedr   r   r   Ú	getLoggerrL   r|   ÚcompileÚsearchr´   ÚABCr    Ú	dataclassr]   rí   r  r  r   ÚMockHandlerrŒ   ÚKernelFormatterHandlerr‹  rP   rœ   rS   rW   r™   rë   rš  r¡  rV   r«  r§  rÏ  r^  rÓ  r	  r(   r.   r+   Ú<module>r      s’  ðÛ 
Û Û Û Û 	ß 8Ñ 8ß 0Ó 0Ý "Ý ã ã Ý 2ß UÝ /ç 3Ý 4Ý '÷õ ÷ *ñ ˆCƒL€à×Ò˜Ó!€Ø�jŠj˜Ó)×0Ñ0€ô#ˆ#�'‰'ô #ðL ×Ò˜dÑ#ôpI�ó pIó $ðpIðf ×Ò˜dÑ#ô0ˆcó 0ó $ð0ðv ×Ò˜dÑ#ô)ˆcó )ó $ð)ðX ×Ò˜dÑ#÷!ð !ó $ð!ð ×Ñ÷Jð Jó ðJôZg0˜AŸM™Mô g0ôT8�a×.Ñ.ô 8ð	˜ð 	  i°¸5¿:¹:¸,ÈÏÉÐ:TÑ1UÐ&UÑ Vô 	ðØ˜Ÿ
™
Ñ#ðØ-0ðà
ˆ4��U—\‘\Ñ"Ñ# YÐ.Ñ/ôð 47òØ˜Ÿ
™
Ñ#ðØ-0ðà
ˆ4�˜Ÿ™Ñ$Ñ% yÐ0Ñ1õð$ ØØ.0ò'Ø��c�Ñð'à˜Ÿ
™
Ñ#ð'ð ð'ð ð	'ð
 ˜$˜uŸz™zÑ*Ñ+ð'ð õ'ð\ ñ	-Øð-à
ˆt�E—J‘JÑÑ
 ð-ð ð-ð ð	-ð
 õ-ð`@"Ø+ð@"à
ˆ8�D˜Ÿ™Ñ$Ñ% x°°U·Z±ZÑ0@Ñ'AÐAÑBô@"ðF ô ô
1˜Nô 1ðn .2Øñ	Ø��c�Ñðà�E—J‘JÑðð �X˜eŸj™jÑ)Ñ*ðð ð	ð
 �—‘Ñör.   