Ë
    L²j.~  ã                   óÚ  — d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZ d dl	m
Z
mZ d dlmZ d dlmZ d dlZd dlZd dlmZ d dlmZmZ d dlmZ d	d
lmZmZ ddlmZ ddlmZ ddl m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'm(Z(  ed«      Z) ejT                  e+«      Z, ejZ                  d«      j\                  Z/ G d„ de j`                  «      Z1 ejd                  d¬«       G d„ de1«      «       Z3 ejd                  d¬«       G d„ de1«      «       Z4 ejd                  d¬«       G d„ de1«      «       Z5 ejd                  d¬«       G d„ d«      «       Z6ejd                   G d„ d«      «       Z7 G d „ d!e(jp                  «      Z9 G d"„ d#e(jt                  «      Z;d$e<d%e=e%eej|                  gej~                  f   f   fd&„Z@d'eej|                     d$e<d%e=eAeAej~                        e%f   fd(„ZBd)d*œd'eej|                     d$e<d%e=eAeej|                        e%f   fd+„ZCd,d)d-d.œd/ed0e
f   d'eej|                     d1eDd$e<d2eeAej|                        d%e7fd3„ZE	 dCd/e
d4eAeAej|                        d5e%d1eDd%e9f
d6„ZFd7d8d%e=eAej|                     dz  eAej|                     dz  f   fd9„ZGd%e<fd:„ZH G d;„ d<e«      ZI	 	 dDd/ed0e
f   d=eej|                     d>eej|                     dz  d?eDd%eej~                     f
d@„ZJ G dA„ dBe«      ZKy)Eé    N)ÚCallableÚIterableÚSequence)ÚAnyÚTypeVar)Ú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                   ó²  — e Zd ZU eed<   ej                  ed<   ej                  	 dde	de
ej                     fd„«       Zej                  deeef   defd„«       Zej                  dej                  fd„«       Zej                  defd	„«       Zej                  defd
„«       Zej                  de	fd„«       Zej                  de	fd„«       Zddedefd„Zy)ÚDepÚnameÚindexÚunbacked_onlyÚreturnc                  ó   — y ©N© ©Úselfr!   s     ú[/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_inductor/dependencies.pyÚget_free_symbol_useszDep.get_free_symbol_uses)   s   € ð 	ó    Úrenamesc                  ó   — y r$   r%   ©r'   r+   s     r(   Úrenamez
Dep.rename/   ó   € àr*   c                  ó   — y r$   r%   ©r'   s    r(   Ú	get_numelzDep.get_numel3   r/   r*   c                  ó   — y r$   r%   r1   s    r(   Únumbytes_hintzDep.numbytes_hint7   r/   r*   c                  ó   — y r$   r%   r1   s    r(   Ú
numel_hintzDep.numel_hint;   r/   r*   c                  ó   — y r$   r%   r1   s    r(   Úhas_unbacked_symbolszDep.has_unbacked_symbols?   r/   r*   c                  ó   — y r$   r%   r1   s    r(   Úis_contiguouszDep.is_contiguousC   r/   r*   Úprefixc                 ó   — | S r$   r%   )r'   r;   s     r(   Únormalize_with_stride_orderzDep.normalize_with_stride_orderG   s   € Øˆr*   N©F©Út)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚsympyÚExprÚabcÚabstractmethodÚboolr   ÚSymbolr)   Údictr   r.   r2   Úintr4   r6   r8   r:   r=   r%   r*   r(   r   r   %   s1  … Ø
ƒIØ�:‰:Óà×Ñà$)ñØ!ðà	�E—L‘LÑ	!òó ðð
 	×Ñð˜d 3¨ 8™nð °ò ó ðð 	×Ñð˜5Ÿ:™:ò ó ðð 	×Ñð˜sò ó ðð 	×Ñð˜Cò ó ðð 	×Ñð dò ó ðð 	×Ñð˜tò ó ðñ°#ð Àô r*   r   T)Úfrozenc                   ó$  — e Zd ZU eed<   ej                  ed<   eej                  df   ed<   eej                  df   ed<   dZ	edz  ed<   	 d de
d	eej                     fd
„Zd	efd„Zed	efd„«       Zdd d	ee   dz  fd„Zd	ej                  fd„Zd!d„Zd"ded	d fd„Zed	eej                  ej                  f   fd„«       Zd!d„Zd	ej                  fd„Zdeeef   d	d fd„Zd	efd„Zd	efd„Zd	e
fd„Zd	e
fd„Zd#de
d	e
fd„Zd	e
fd„Z d	e
fd„Z!y)$Ú	MemoryDepr   r    .Ú	var_namesÚsizeNÚmoder!   r"   c                 óŠ   — t        | j                  |«      t        | j                  |«      z  t        | j                  |«      z  S r$   )r
   r    rR   rQ   r&   s     r(   r)   zMemoryDep.get_free_symbol_usesU   s=   € ô ˜TŸZ™Z¨Ó7Ü˜tŸy™y¨-Ó8ñ9ä˜tŸ~™~¨}Ó=ñ>ð	
r*   c                 ó”   — d}| j                   �d| j                   › �}d| j                  ›d| j                  › d| j                  › |› d�S )NÚ z, z
MemoryDep(ú))rS   r   r    Úranges)r'   Ú
maybe_modes     r(   Ú__repr__zMemoryDep.__repr__^   sM   € Øˆ
Ø�9‰9Ð Ø˜dŸi™i˜[Ð)ˆJØ˜DŸI™I˜=¨¨4¯:©:¨,°b¸¿¹¸ÀjÀ\ÐQRÐSÐSr*   c                 ó,   — t        | j                  «      S r$   )ÚlenrQ   r1   s    r(   Únum_varszMemoryDep.num_varsd   s   € ä�4—>‘>Ó"Ð"r*   Úotherc                 ó  — | j                   |j                   k(  sJ ‚| j                   t        | j                  j                  «      k7  ry|j                   t        |j                  j                  «      k7  ryt	        d„ t        j                  | j                  |j                  «      D «       «      ryt        j                  j                  j                  | j                  | j                  «      }t        j                  j                  j                  |j                  |j                  «      }t        t        |«      «      t        |«      k7  s t        t        |«      «      t        |«      k7  rt        j                  d| |||«       yt        |«      t        |«      k7  ryt!        |«      D ��ci c]  \  }}||“Œ
 }}}|D �cg c]  }||   ‘Œ	 }}t        |«      t        t#        | j                   «      «      k(  sJ ‚|S c c}}w c c}w )zD
        Can return None if not able to decide loop orders.
        Nc              3   ó4   K  — | ]  }|d k(  xs |dk(  –— Œ y­w)r   r   Nr%   )Ú.0Úss     r(   ú	<genexpr>z7MemoryDep.decide_loop_order_to_match.<locals>.<genexpr>}   s    è ø€ ÒP Aˆq�A‰vÒ˜˜a™ÓÑPùs   ‚zaunable to decide loop order. self_dep=%s v.s. other_dep=%s, self_strides=%s v.s. other_strides=%s)r]   r\   r    r   ÚanyÚ	itertoolsÚchainrR   r   ÚgraphÚsizevarsÚstride_hintsrQ   r   ÚlogÚdebugÚ	enumerateÚrange)r'   r^   Úself_stridesÚother_stridesÚirb   Ústride_to_indexÚorders           r(   Údecide_loop_order_to_matchz$MemoryDep.decide_loop_order_to_matchh   sŸ  € ð �}‰} §¡Ò.Ð.Ð.ð �=‰=œC §
¡
× 7Ñ 7Ó8Ò8ØØ�>‰>œS §¡×!9Ñ!9Ó:Ò:Øô ÑP¬¯©¸¿¹ÀEÇJÁJÓ)OÔ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¡D A q˜1˜a™4ÐDˆÑDØ-:Ö;¨� Ó#Ð;ˆÐ;ä˜%Ó ¤J¬u°T·]±]Ó/CÓ$DÒDÐDÐDØˆùó	 EùÚ;s   Æ-G=ÇHc                 ój   — t        | j                  t        j                  | j                  d«      «      S )zF
        Return the offset by setting every variable to be 0.
        r   )r   r    rL   ÚfromkeysrQ   r1   s    r(   Ú
get_offsetzMemoryDep.get_offset¡   s$   € ô ˜$Ÿ*™*¤d§m¡m°D·N±NÀAÓ&FÓGÐGr*   c                 ó–   — t        | j                  gt        j                  | j                  | j
                  «      ¢| j                  ‘­Ž S )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.
        )rP   r   Ú_RecordLoadStoreInnerÚ
_normalizer    rX   rS   r1   s    r(   Ú	normalizezMemoryDep.normalize§   sC   € ô Ø�I‰Ið
ä"×-Ñ-¨d¯j©j¸$¿+¹+ÓFð
ð �I‰Iò
ð 	
r*   r;   c                 ó@  — ddl m} t        j                  j                  j                  | j                  | j                  «      }t        t        t        |«      «      |j                  d¬«      }|j                  |«      }| j                  }| j                  } ||«      } ||«      }	t        j                  j                  j                  |	|t        | j                  g|	|«      «      \  }
}}t!        |«      \  }}t#        t%        |	 ||
D �cg c]
  } ||«      ‘Œ c}«      «      «      }t'        t)        j*                  | j                  «      |«      }t-        | j.                  |t1        |j3                  «       «      t1        |j5                  «       «      «      }|S c c}w )a'  
        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   rg   rh   ri   r    rQ   Úsortedrm   r\   Ú__getitem__Úsame_reorderrR   Ú_simplify_loopsr   Úvar_builderrL   Úzipr   rF   ÚexpandrP   r   ÚtupleÚkeysÚvalues)r'   r;   r|   Ústridesrr   Ústride_reorderÚsizesrQ   Únew_reordered_sizesÚnew_reordered_var_namesÚnew_simplified_sizesÚreindexÚ_pruneÚ
var_rangesÚadd_varÚxÚreplacementÚ	new_indexÚouts                      r(   r=   z%MemoryDep.normalize_with_stride_order³   sV  € õ 	'ä—'‘'×"Ñ"×/Ñ/°·
±
¸D¿N¹NÓKˆô ”uœS ›\Ó*°×0CÑ0CÈTÔRˆØŸ™¨Ó/ˆØ—	‘	ˆØ—N‘Nˆ	á,¨UÓ3ÐÙ"0°Ó";Ðä01·±×0@Ñ0@×0PÑ0PØ#ØÜ$Ø—‘�Ð5Ð7Jóó1
Ñ-Ð˜g vô *¨&Ó1Ñˆ
�GÜÜØ'ÙÐ-AÖB¨™ �ÒBÓCóó
ˆô œuŸ|™|¨D¯J©JÓ7¸ÓEˆ	äØ�I‰I�y¤%¨
¯©Ó(9Ó":¼EÀ*×BSÑBSÓBUÓ<Vó
ˆð ˆ
ùò Cs   ÄFc                 óT   — t        t        | j                  | j                  «      «      S )z{c0: 128, c1: 512, ...})rL   r…   rQ   rR   r1   s    r(   rX   zMemoryDep.rangesß   s   € ô ”C˜Ÿ™¨¯	©	Ó2Ó3Ð3r*   c                 óê   — t        | j                  t        j                  j                  j                  | j                  | j                  «      | j                  | j                  | j                  ¬«      S )N)r   r    rQ   rR   rS   )rP   r   r   rg   rh   Úsimplify_with_rangesr    rX   rQ   rR   rS   r1   s    r(   rš   zMemoryDep.simplify_with_rangesä   sM   € ÜØ—‘Ü—'‘'×"Ñ"×7Ñ7¸¿
¹
ÀDÇKÁKÓPØ—n‘nØ—‘Ø—‘ô
ð 	
r*   c                 óR  — | j                  «       r+t        j                  j                  | j                  «      }|S t        | j                  j                  «      }t        j                  j                  }t        | j                  | j                  «      D ]  \  }}||v sŒ||z  }Œ |S r$   )Úis_indirectr   rg   r2   r   r   r    r   rF   ÚSÚOner…   rQ   rR   )r'   ÚnumelÚvarsÚvarrR   s        r(   r2   zMemoryDep.get_numelí   s‰   € Ø×ÑÔÜ—G‘G×%Ñ% d§i¡iÓ0ˆEð ˆô -7°t·z±z×7NÑ7NÓ,OˆDÜ—G‘G—K‘KˆEÜ  §¡°·±Ó;ò )‘	��TØ˜$’;Ø! D™L‘Eð)ð ˆr*   r+   c                 ó¬   — | j                   |v rEt        || j                      | j                  | j                  | j                  | j
                  ¬«      S | S )N)rQ   rR   rS   )r   rP   r    rQ   rR   rS   r-   s     r(   r.   zMemoryDep.renameø   sJ   € Ø�9‰9˜ÑÜØ˜Ÿ	™	Ñ"Ø—
‘
ØŸ.™.Ø—Y‘YØ—Y‘Yôð ð ˆr*   c                 óú   — 	 t         j                  j                  j                  | j	                  «       d¬«      t        t         j                  j                  | j                  «      «      z  S # t        $ r Y yw xY w©Nr   )Úfallback©	r   rg   rh   Úoptimization_hintr2   r   Ú	get_dtyper   ÚNotImplementedErrorr1   s    r(   r4   zMemoryDep.numbytes_hint  ói   € ð	Ü—7‘7×#Ñ#×5Ñ5Ø—‘Ó ¨1ð 6ó äœqŸw™w×0Ñ0°·±Ó;Ó<ñ=ð =øô #ò 	Ùð	úó   ‚A+A. Á.	A:Á9A:c                 ó”   — 	 t         j                  j                  j                  | j	                  «       d¬«      S # t
        $ r Y yw xY wr¤   ©r   rg   rh   r§   r2   r©   r1   s    r(   r6   zMemoryDep.numel_hint  óA   € ð	Ü—7‘7×#Ñ#×5Ñ5°d·n±nÓ6FÐQRÐ5ÓSÐSøÜ"ò 	Ùð	úó   ‚8; »	AÁAc                 óL   — t        t        | j                  «       «      «      dkD  S ©Nr   ©r\   r   r2   r1   s    r(   r8   zMemoryDep.has_unbacked_symbols  ó   € ÜÔ(¨¯©Ó)9Ó:Ó;¸aÑ?Ð?r*   c                 óÈ   — t        | j                  t        j                  «      ryt        | j                  t        j                  «      xr | j                  | j
                  v S ©NT)Ú
isinstancer    rF   ÚIntegerrK   rQ   r1   s    r(   r:   zMemoryDep.is_contiguous  s>   € Ü�d—j‘j¤%§-¡-Ô0ØÜ˜$Ÿ*™*¤e§l¡lÓ3ÒT¸¿
¹
ÀdÇnÁnÐ8TÐTr*   Úresult_for_complex_expressionc                 ó  — t        | j                  «      dk(  ryt        | j                  t        j
                  «      r| j                  j                  n| j                  g}| j                  d   }|D ]’  }||k(  r yt        |t        j                  «      sŒ%t        |j                  «      dk(  sŒ>|j                  d   |k(  sŒQt        |j                  d   t        t        j                  f«      sŒ|j                  d   dkD  sŒ’ y |S )zA
        Whether the stride for the last dimension is 1.
        r   Téÿÿÿÿr   r   F)
r\   rQ   r¶   r    rF   ÚAddÚargsÚMulrM   r·   )r'   r¸   ÚtermsÚlast_symÚterms        r(   Ústride1_for_last_dimzMemoryDep.stride1_for_last_dim  sÌ   € ô ˆt�~‰~Ó !Ò#Øä#-¨d¯j©j¼%¿)¹)Ô#D�—
‘
—’È4Ï:É:È,ˆà—>‘> "Ñ%ˆØò 	ˆDØ�xÒÙô
 ˜4¤§¡Õ+Ü˜Ÿ	™	“N aÓ'Ø—I‘I˜a‘L HÓ,Ü˜tŸy™y¨™|¬c´5·=±=Ð-AÕBØ—I‘I˜a‘L 1Ó$áð	ð -Ð,r*   c                 óô   — t        | j                  t        j                  «      r+| j                  | j                  vxr | j                  «        S t        | j                  t        t        j                  f«      S r$   )r¶   r    rF   rK   rQ   rœ   rM   r·   r1   s    r(   Ú	is_scalarzMemoryDep.is_scalar6  sR   € Ü�d—j‘j¤%§,¡,Ô/Ø—:‘: T§^¡^Ð3ÒN¸D×<LÑ<LÓ<NÐ8NÐNÜ˜$Ÿ*™*¤s¬E¯M©MÐ&:Ó;Ð;r*   c                 óN   — t        d„ | j                  j                  D «       «      S )Nc              3   óF   K  — | ]  }t        |j                  «      –— Œ y ­wr$   )rœ   r   )ra   Úvs     r(   rc   z(MemoryDep.is_indirect.<locals>.<genexpr><  s   è ø€ ÒH¨1”;˜qŸv™v×&ÑHùs   ‚!)rd   r    r   r1   s    r(   rœ   zMemoryDep.is_indirect;  s   € ÜÑH°·
±
×0GÑ0GÔHÓHÐHr*   r>   )r"   rP   r?   ©T)"rA   rB   rC   rD   rE   rF   rG   r‡   rK   rS   rJ   r   r)   rZ   ÚpropertyrM   r]   Úlistrs   rv   rz   r=   rL   rX   rš   r2   r.   r4   r6   r8   r:   rÁ   rÃ   rœ   r%   r*   r(   rP   rP   K   s›  … ð ƒIà�:‰:ÓØ�U—\‘\ 3Ð&Ñ'Ó'Ø
�—
‘
˜C�Ñ
 Ó Ø€Dˆ#�‰*Óð %*ñ
Ø!ð
à	�E—L‘LÑ	!ó
ðT˜#ó Tð ð#˜#ò #ó ð#ð7°ð 7ÀÀSÁ	ÈDÑ@Pó 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*   rP   c                   ó  — e Zd ZU eed<   dZedz  ed<   edej                  fd„«       Z	dej                  fd„Z
deeef   dd fd„Z	 dd	edeej                     fd
„Zdefd„Zdefd„Zdefd„Zdefd„Zdefd„Zdefd„Zy)ÚStarDepr   NrS   r"   c                 ó   — t        d«      ‚)NzStarDep does not have an index©r©   r1   s    r(   r    zStarDep.indexF  ó   € ô "Ð"BÓCÐCr*   c                 óT   — t         j                  j                  | j                  «      S r$   )r   rg   r2   r   r1   s    r(   r2   zStarDep.get_numelK  s   € Ü�w‰w× Ñ  §¡Ó+Ð+r*   r+   c                 óh   — | j                   |v r#t        || j                      | j                  «      S | S r$   )r   rË   rS   r-   s     r(   r.   zStarDep.renameN  s-   € Ø�9‰9˜ÑÜ˜7 4§9¡9Ñ-¨t¯y©yÓ9Ð9Øˆr*   r!   c                 ó   — t        «       S r$   r   r&   s     r(   r)   zStarDep.get_free_symbol_usesS  ó   € ô ‹|Ðr*   c                 óú   — 	 t         j                  j                  j                  | j	                  «       d¬«      t        t         j                  j                  | j                  «      «      z  S # t        $ r Y yw xY wr¤   r¦   r1   s    r(   r4   zStarDep.numbytes_hintX  rª   r«   c                 ó”   — 	 t         j                  j                  j                  | j	                  «       d¬«      S # t
        $ r Y yw xY wr¤   r­   r1   s    r(   r6   zStarDep.numel_hint`  r®   r¯   c                 óL   — t        t        | j                  «       «      «      dkD  S r±   r²   r1   s    r(   r8   zStarDep.has_unbacked_symbolsf  r³   r*   c                  ó   — y©NFr%   r1   s    r(   r:   zStarDep.is_contiguousi  ó   € Ør*   c                  ó   — yr×   r%   r1   s    r(   rÃ   zStarDep.is_scalarl  rØ   r*   c                  ó   — yr×   r%   r1   s    r(   rœ   zStarDep.is_indirecto  rØ   r*   r>   )rA   rB   rC   rD   rE   rS   rÈ   rF   rG   r    r2   rL   r.   rJ   r   rK   r)   rM   r4   r6   r8   r:   rÃ   rœ   r%   r*   r(   rË   rË   ?  sÑ   … ð ƒIØ€Dˆ#�‰*Óð ðD�u—z‘zò Dó ðDð,˜5Ÿ:™:ó ,ð˜d 3¨ 8™nð °ó ð %*ñØ!ðà	�E—L‘LÑ	!óð
˜só ð˜Có ð@ dó @ð˜tó ð˜4ó ð˜Tô r*   rË   c                   óò   — e Zd ZU eed<   eed<   dZeed<   	 ddedeej                     fd„Z
edej                  fd„«       Zdej                  fd	„Zd
eeef   dd fd„Zdefd„Zdefd„Zdefd„Zdefd„Zy)ÚWeakDepr   Úmutating_bufFÚis_faker!   r"   c                 ó   — t        «       S r$   r   r&   s     r(   r)   zWeakDep.get_free_symbol_uses‰  rÒ   r*   c                 ó   — t        d«      ‚)NzWeakDep does not have an indexrÍ   r1   s    r(   r    zWeakDep.indexŽ  rÎ   r*   c                 ó6   — t         j                  j                  S r$   )rF   r�   rž   r1   s    r(   r2   zWeakDep.get_numel“  s   € Ü�w‰w�{‰{Ðr*   r+   c                 ó~   — | j                   |v r.t        || j                      | j                  | j                  «      S | S r$   )r   rÜ   rÝ   rÞ   r-   s     r(   r.   zWeakDep.rename–  s5   € Ø�9‰9˜ÑÜ˜7 4§9¡9Ñ-¨t×/@Ñ/@À$Ç,Á,ÓOÐOØˆr*   c                  ó   — y©Nr   r%   r1   s    r(   r4   zWeakDep.numbytes_hint›  ó   € Ør*   c                  ó   — yrä   r%   r1   s    r(   r6   zWeakDep.numel_hintž  rå   r*   c                  ó   — yr×   r%   r1   s    r(   r8   zWeakDep.has_unbacked_symbols¡  rØ   r*   c                  ó   — yr×   r%   r1   s    r(   r:   zWeakDep.is_contiguous¤  rØ   r*   Nr>   )rA   rB   rC   rD   rE   rÞ   rJ   r   rF   rK   r)   rÈ   rG   r    r2   rL   r.   rM   r4   r6   r8   r:   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                   ó|   — e Zd ZU ej                  ed<   eej                  df   ed<   eej                  df   ed<   y)ÚIndexExprDepr    .rQ   rR   N)rA   rB   rC   rF   rG   rE   r‡   rK   r%   r*   r(   rê   rê   ¨  s3   … à�:‰:ÓØ�U—\‘\ 3Ð&Ñ'Ó'Ø
�—
‘
˜C�Ñ
 Ô r*   rê   c                   óL  — e Zd ZU ee   ed<   ee   ed<   ee   ed<   dZee	j                     dz  ed<   dZedz  ed<   deeef   dd fd	„Zd
eee   z  dd fd„Zdd„Zeded    dd fd„«       Zdee   dd fd„Zdee   fd„Zddedee   fd„Z	 ddedee	j2                     fd„Zy)Ú
ReadWritesÚreadsÚwritesÚindex_exprsNÚ
range_varsr’   r+   r"   c                 óÎ   ‡— t        t        ˆfd„| j                  D «       «      t        ˆfd„| j                  D «       «      | j                  | j
                  | j                  «      S )Nc              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr$   ©r.   ©ra   Údepr+   s     €r(   rc   z$ReadWrites.rename.<locals>.<genexpr>¹  s   øè ø€ ÒA¨s�s—z‘z '×*ÑAùó   ƒc              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr$   ró   rô   s     €r(   rc   z$ReadWrites.rename.<locals>.<genexpr>º  s   øè ø€ ÒB¨s�s—z‘z '×*ÑBùrö   )rì   r   rí   rî   rï   rð   r’   r-   s    `r(   r.   zReadWrites.rename·  sK   ø€ ÜÜÓA°d·j±jÔAÓAÜÓB°d·k±kÔBÓBØ×ÑØ�O‰OØ�O‰Oó
ð 	
r*   rõ   c                 ó  — t        |t        t        t        f«      sJ ‚t        |t        «      st        |g«      }t	        t        j
                  | j                  |«      | j                  | j                  | j                  | j                  «      S r$   )r¶   rÜ   rË   r   rì   Úunionrí   rî   rï   rð   r’   )r'   rõ   s     r(   Ú	with_readzReadWrites.with_readÀ  sn   € Ü˜#¤¬´*Ð=Ô>Ð>Ð>Ü˜#œzÔ*Ü˜c˜UÓ#ˆCÜÜ×Ñ˜TŸZ™Z¨Ó-Ø�K‰KØ×ÑØ�O‰OØ�O‰Oó
ð 	
r*   c                 ó  — t        j                  | j                  |j                  «      }t        j                  | j                  |j                  «      }t        j                  | j                  |j                  «      }t        ||z
  ||«      S r$   )r   rù   rí   rî   rï   rì   )r'   r^   rí   rî   rï   s        r(   ÚmergezReadWrites.mergeÌ  sg   € Ü× Ñ  §¡¨U¯[©[Ó9ˆÜ×!Ñ! $§+¡+¨u¯|©|Ó<ˆÜ ×&Ñ& t×'7Ñ'7¸×9JÑ9JÓKˆÜ˜% &™.¨&°+Ó>Ð>r*   Úread_writesc                 ó<  — t        j                  | D �cg c]  }|j                  ‘Œ c}Ž }t        j                  | D �cg c]  }|j                  ‘Œ c}Ž |z
  }t        j                  | D �cg c]  }|j                  ‘Œ c}Ž }t        |||«      S c c}w c c}w c c}w r$   )r   rù   rî   rí   rï   rì   )rý   ÚrwÚ
all_writesÚ	all_readsÚall_index_exprss        r(   Ú
merge_listzReadWrites.merge_listÒ  s   € ä×%Ñ%¸KÖ'H°b¨¯	«	Ò'HÐIˆ
Ü×$Ñ$¸+Ö&F°B r§x£xÒ&FÐGÈ*ÑTˆ	Ü$×*Ñ*ÀkÖ,RÀ¨R¯^«^Ò,RÐSˆÜ˜) Z°ÓAÐAùò (IùÚ&FùÚ,Rs   ”B¾BÁ+BÚ	rem_readsc                 óŠ   — t        | j                  |z
  | j                  | j                  | j                  | j
                  «      S r$   )rì   rí   rî   rï   rð   r’   )r'   r  s     r(   Úremove_readszReadWrites.remove_readsÙ  s9   € ÜØ�J‰J˜Ñ"Ø�K‰KØ×ÑØ�O‰OØ�O‰Oó
ð 	
r*   c                 óV   — t        j                  | j                  | j                  «      S r$   )re   rf   rí   rî   r1   s    r(   Úreads_and_writeszReadWrites.reads_and_writesâ  s   € Ü�‰˜tŸz™z¨4¯;©;Ó7Ð7r*   Úignore_integer_indexc                 óö   — t        «       }| j                  «       D ][  }t        |t        «      sŒ|r+t        |j                  t
        t        j                  f«      rŒA|j                  |j                  «       Œ] |S )z6
        Integer index is used for load_seed.
        )
r   r  r¶   rP   r    rM   rF   r·   Úaddr   )r'   r	  Únamesrõ   s       r(   Úbuffer_nameszReadWrites.buffer_nameså  se   € ô ",£ˆØ×(Ñ(Ó*ò 	$ˆCÜ˜c¤9Ô-ØÙ'¬zØ—	‘	œC¤§¡Ð/õ0ð —	‘	˜#Ÿ(™(Õ#ð	$ð ˆr*   r!   c                 ól   — t        «       }| j                  «       D ]  }||j                  |«      z  }Œ |S r$   )r   r  r)   )r'   r!   Úresultrõ   s       r(   r)   zReadWrites.get_free_symbol_usesó  s=   € ô ,6«<ˆà×(Ñ(Ó*ò 	>ˆCØ�c×.Ñ.¨}Ó=Ñ=‰Fð	>àˆr*   )r^   rì   r"   rì   rÇ   r>   )rA   rB   rC   r   r   rE   rê   rð   rÉ   rF   rG   r’   r   rL   rD   r.   rú   rü   Ústaticmethodr  r  r   r  rJ   r  rK   r)   r%   r*   r(   rì   rì   ¯  s  … à�c‰?ÓØ�s‰OÓØ˜LÑ)Ó)Ø*.€J��U—Z‘ZÑ  4Ñ'Ó.Ø#'€J�	˜DÑ Ó'ð
˜d 3¨ 8™nð 
°ó 
ð

˜S :¨c¡?Ñ2ð 

°|ó 

ó?ð ðB  \Ñ 2ð B°|ò Bó ðBð
 j°¡oð 
¸,ó 
ð8 (¨3¡-ó 8ñ°ð ÀÈCÁó ð %*ñØ!ðà	�E—L‘LÑ	!ôr*   rì   c                   óD  ‡ — e Zd Zdededdfˆ fd„Zedeej                  z  de
ej                     de
ej                     ddfd	„«       Zedej                  dedeej                  eej                  d
f   eej                  d
f   f   fd„«       Zdej                  deej                  eej                  d
f   eej                  d
f   f   fd„Zdedej                  ddfd„Zdededdfd„Z	 ddedej                  dededz  ddf
d„Zdedej                  deddfd„Zdej                  dej.                  dz  ddfd„Z	 	 ddedeeej                  ej                  ej                  f   dedej.                  dedeeej                  f   dz  dedz  ddfd„Zˆ xZS ) rx   r’   rz   r"   Nc                 ó˜   •— t         ‰| �  «        t        «       | _        t        «       | _        t        «       | _        || _        || _        y r$   )ÚsuperÚ__init__r   Ú_readsÚ_writesÚ_index_exprsÚ_var_rangesÚ_should_normalize)r'   r’   rz   Ú	__class__s      €r(   r  z_RecordLoadStoreInner.__init__þ  s:   ø€ Ü‰ÑÔÜ'1£|ˆŒÜ.8«lˆŒÜ6@³lˆÔØ&0ˆÔØ'0ˆÕr*   r    rQ   rŒ   c                 ó¾   — t        | t        j                  «      sy| j                  }|r4|d   |vr,|j	                  «        |j	                  «        |r	|d   |vrŒ*yyyy)zz
        Reduction has last (reduced) dim in its sizes, but
        downstream users won't.  Normalize this away.
        Nrº   )r¶   rF   rG   r   Úpop)r    rQ   rŒ   r   s       r(   Údrop_unused_symbolsz)_RecordLoadStoreInner.drop_unused_symbols  sW   € ô ˜%¤§¡Ô,àØ×)Ñ)ˆÙ˜I b™M°Ñ=Ø�M‰MŒOØ�I‰IŒKñ ˜I b™M°Ó=ˆiÐ=ˆir*   .c                 ó   — g |j                  «       ¢}t        |j                  «       «      }t        j                  j
                  j                  ||t        |g||«      «      \  }}}t        t        «       «      \  }}	t        t        | ||D �
cg c]
  }
 |	|
«      ‘Œ c}
«      «      «      }t        t        j                  |«      |«      }g |j                  «       ¢}g |¢}| j                  |||«       |t        |«      t        |«      fS c c}
w r$   )rˆ   r‡   r‰   r   rg   rh   rƒ   r   r„   Úcanonicalization_prefixrL   r…   r   rF   r†   r  )Úclsr    r’   Ú
index_varsrŒ   Ú	new_sizesr�   r‘   Únew_varsr“   r”   r•   s               r(   ry   z _RecordLoadStoreInner._normalize  só   € ð *�z—‘Ó(Ð)ˆ
Ü�j×'Ñ'Ó)Ó*ˆÜ%&§W¡W×%5Ñ%5×%EÑ%EØØÜ$ e W¨j¸%Ó@ó&
Ñ"ˆ	�7˜Fô (Ô(?Ó(AÓBÑˆ�'Üœ3˜z©7È	Ö3RÀ1±G¸AµJÒ3RÓ+SÓTÓUˆÜœ5Ÿ<™<¨Ó.°Ó<ˆà%�X—]‘]“_Ð%ˆØ �i�Lˆ	Ø×Ñ  x°Ô;Ø”e˜H“o¤u¨YÓ'7Ð7Ð7ùò 4Ss   ÂDc                 ó¤  — | j                   sÉ| j                  j                  «       D �cg c]+  }t        j                  j
                  j                  |«      ‘Œ- }}t        | j                  j                  «       |«      D ��cg c]  \  }}|dk7  sŒ|‘Œ }}}|D �cg c]
  }|dk7  sŒ	|‘Œ }}| j                  |||«       |t        |«      t        |«      fS | j                  j                  «       D ��ci c]/  \  }}|t        j                  j
                  j                  |«      “Œ1 }}}| j                  ||«      S c c}w c c}}w c c}w c c}}w rä   )r  r  r‰   r   rg   rh   Úsimplifyr…   rˆ   r  r‡   Úitemsry   )r'   r    r”   rŒ   ÚkrÆ   rQ   r’   s           r(   Úcanonicalizez"_RecordLoadStoreInner.canonicalize2  s)  € ð ×%Ò%Ø;?×;KÑ;K×;RÑ;RÓ;TÖU°a”Q—W‘W×%Ñ%×.Ñ.¨qÕ1ÐUˆEÐUÜ'*¨4×+;Ñ+;×+@Ñ+@Ó+BÀEÓ'J×U™t˜q !ÈaÐSTËfšÐUˆIÑUØ %Ö0˜1¨¨a«’QÐ0ˆEÐ0à×$Ñ$ U¨I°uÔ=àœ% 	Ó*¬E°%«LÐ8Ð8ð ×(Ñ(×.Ñ.Ó0÷
á��1ð Œq�w‰w×Ñ×(Ñ(¨Ó+Ñ+ð
ˆ
ñ 
ð �‰˜u jÓ1Ð1ùò VùÛUùÚ0ùó

s#   ©0D<ÂEÂEÂ
EÂ&EÃ34Er   c                 ól   — | j                   j                  t        |g| j                  |«      ¢­Ž «       y r$   )r  r  rP   r(  ©r'   r   r    s      r(   Úloadz_RecordLoadStoreInner.loadE  s'   € Ø�‰�‰œ	 $ÐB¨×):Ñ):¸5Ó)AÒBÕCr*   c                 ór   — t        |t        «      sJ ‚| j                  |t        j                  |«      «       y r$   )r¶   rM   r+  rF   r·   r*  s      r(   Ú	load_seedz_RecordLoadStoreInner.load_seedH  s)   € Ü˜%¤Ô%Ð%Ð%Ø�	‰	�$œŸ™ eÓ,Õ-r*   ÚvaluerS   c                 ór   — | j                   j                  t        |g| j                  |«      ¢­d|iŽ«       y )NrS   )r  r  rP   r(  )r'   r   r    r.  rS   s        r(   Ústorez_RecordLoadStoreInner.storeL  s0   € ð 	�‰×Ñœ 4ÐN¨$×*;Ñ*;¸EÓ*BÒNÈÑNÕOr*   c                 ó2   — | j                  ||d|› d�«       y )Nzstore_reduction(rW   )r0  )r'   r   r    r.  s       r(   Ústore_reductionz%_RecordLoadStoreInner.store_reductionQ  s   € Ø�
‰
�4˜Ð"2°5°'¸Ð ;Õ<r*   Údtypec                 ód   — | j                   j                  t        | j                  |«      Ž «       y r$   )r  r  rê   r(  )r'   r    r3  s      r(   Ú
index_exprz _RecordLoadStoreInner.index_exprT  s&   € Ø×Ñ×Ñœl¨D×,=Ñ,=¸eÓ,DÐEÕFr*   r‰   Ú
boundariesÚboundary_indicesÚindexing_dtypeÚrightÚsorterÚsorter_indicesc                 ó¦   — | j                   j                  t        |d   «      «       |�(| j                   j                  t        |d   «      «       yy)z?Records the names of the buffers that bucketize will read from.r   N)r  r  rË   )r'   r‰   r6  r7  r8  r9  r:  r;  s           r(   Ú	bucketizez_RecordLoadStoreInner.bucketizeW  sA   € ð 	�‰�‰œ 
¨1¡Ó.Ô/ØÐØ�K‰K�O‰OœG F¨1¡IÓ.Õ/ð r*   r$   ©NN)rA   rB   rC   r   rJ   r  r  rM   rF   rG   rÉ   r  Úclassmethodr‡   rK   ry   r(  rD   r+  r-  r0  r2  Útorchr3  r5  r   r=  Ú__classcell__©r  s   @r(   rx   rx   ý  sl  ø„ ð1 9ð 1¸ð 1À$õ 1ð ðØ�U—Z‘ZÑðà˜Ÿ
™
Ñ#ðð �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ð .¨#ð .°$ó .ð
 LPñPØðPØ %§
¡
ðPØ36ðPØ>AÀD¹jðPà	óPð
= Cð =°·
±
ð =À3ð =È4ó =ðG §
¡
ð G°5·;±;ÀÑ3Eð GÈ$ó Gð 15Ø#'ñ0àð0ð ˜#˜uŸz™z¨5¯:©:°u·z±zÐAÑBð0ð ð	0ð
 Ÿ™ð0ð ð0ð �c˜5Ÿ:™:�oÑ&¨Ñ-ð0ð ˜D™ð0ð 
÷0r*   rx   c                   ó,   ‡ — e Zd Zdededdfˆ fd„Zˆ xZS )ÚRecordLoadStorer’   rz   r"   Nc                 ó@   •— t        ||¬«      }t        ‰| �	  |¬«       y )N©r’   rz   )Úparent_handler)rx   r  r  )r'   r’   rz   rG  r  s       €r(   r  zRecordLoadStore.__init__h  s$   ø€ Ü.Ø!¨Yô
ˆô 	‰Ñ¨ÐÕ7r*   )rA   rB   rC   r   rJ   r  rA  rB  s   @r(   rD  rD  g  s"   ø„ ð8 9ð 8¸ð 8À$÷ 8ñ 8r*   rD  r;   r"   c                 óŒ   ‡ ‡‡— t        j                  «       Ši Šdt        j                  dt        j                  fˆˆ ˆfd„}‰|fS )NÚlengthr"   c                 óB   •— t        ‰› t        ‰«      › �«      }| ‰|<   |S r$   )r   Únext)rI  rÆ   Úcntr;   r’   s     €€€r(   r“   zvar_builder.<locals>.add_vart  s(   ø€ Ü & ¬$¨s«)¨Ð5Ó6ˆØˆ
�1‰Øˆr*   )re   ÚcountrF   rG   rK   )r;   r“   rL  r’   s   ` @@r(   r„   r„   p  s<   ú€ Ü
�/‰/Ó
€CØ€JðœŸ
™
ð ¤u§|¡|÷ ð
 �wÐÐr*   Úargsizesc           	      ót   — t        | «      \  }}|D �cg c]  }t        t        ||«      «      ‘Œ }}||fS c c}w r$   )r„   rÉ   Úmap)r;   rN  r’   r“   rR   r¼   s         r(   Úindex_vars_no_squeezerQ  |  sC   € ô & fÓ-Ñ€J�ØKSÖ%TÀ4¤d¬3¨w¸Ó+=Õ&>Ð%T€DÐ%TØ�ÐÐùò &Us   “5Úd)r;   c                 óæ   — ddl m} t        | «      \  }}g }g }|D ]Q  }|j                  |«      \  }}	|j	                  |«       |j	                   |	t        t        ||«      «      «      «       ŒS ||fS )Nr   )ÚSqueezeView)r|   rT  r„   ÚsqueezerÚappendrÉ   rP  )
r;   rN  rT  r’   r“   r¼   r"  rR   Únew_sizer�   s
             r(   Úindex_vars_squeezerX  „  s|   € õ  ä% fÓ-Ñ€J�Ø')€DØ,.€IØò ;ˆØ'×0Ñ0°Ó6Ñˆ�'Ø×Ñ˜Ô"Ø�‰‘GœD¤ W¨hÓ!7Ó8Ó9Õ:ð;ð �ÐÐr*   Fr%   )rz   r;   Úhidden_argsÚfn.rz   rY  c                óÌ  — t        |d|iŽ\  }}ddlm} t        | |«      rt	        | g |¢|¢||«      }nAt        ||¬«      }	t        j                  |	«      5   | g |¢|¢­Ž  d d d «       |	j                  }|rg }
n!g t        j                  j                  |«      ¢}
t        t        |j                  «      t        |j                  «      |j                   |
|«      S # 1 sw Y   ŒzxY w)Nr;   r   )ÚLoopBody)rz   )rX  Ú	loop_bodyr\  r¶   Úextract_loop_body_with_argsrD  r   Úset_ops_handlerrG  re   rf   Úfrom_iterablerì   r   r  r  r  )rZ  rz   r;   rY  rN  r¼   r’   r\  Úinnerrÿ   rð   s              r(   Úextract_read_writesrb  “  sæ   € ô *¨8ÐC¸FÑCÑ€Dˆ*å#ä�"�hÔÜ+ØØ!ˆdÐ!�[Ð!ØØó	
‰ô ˜Z°9Ô=ˆÜ×Ñ˜rÓ"ñ 	$ÙÐ#�Ð#�{Ó#÷	$à×!Ñ!ˆáØ‰
à;”y—‘×4Ñ4°TÓ:Ð;ˆ
ää�5—<‘<Ó ä�5—=‘=Ó!à×ÑØØó	ð 	÷	$ð 	$ús   ÁCÃC#r¼   r’   c           	      ó¸  — ddl m} t        ||¬«      }| j                  |«      }| j                  rmt        | j                  «      D ��ci c]   \  }}|t        t        j                  |«      “Œ" }	}}|j                  «       D �
�ci c]  \  }
}|
t        ||	«      “Œ }}
}| j                  |j                     D ]+  }|j                  |j                  ||j                     «       Œ- | j                  |j                      D ]4  }|j#                  |j                  t%        ||j                     «      «       Œ6 | j                  |j&                     D ]7  }|j)                  |j                  ||j                     d |j*                  «       Œ9 | j                  |j,                     D ],  }|j/                  |j                  ||j                     d «       Œ. | j                  |j0                     D ]!  }|j3                  ||j                     d «       Œ# | j                  |j4                     D ]%  }|j7                  d |j                  d d d fd d d «       Œ' |S c c}}w c c}}
w )Nr   )ÚMemoryUsageTyperF  )r]  rd  rx   Úindexing_from_argsÚindirect_varsrl   r   r   ÚTMPr&  r   Úmemory_usageÚLOADr+  Úbuffer_nameÚ
index_nameÚ	LOAD_SEEDr-  rM   ÚSTOREr0  rS   ÚSTORE_REDUCTIONr2  Ú
INDEX_EXPRr5  Ú	BUCKETIZEr=  )rZ  r¼   r’   rz   rd  ra  Úname_to_indexrp   rÆ   Úreplr'  Úentrys               r(   r^  r^  ½  s:  € õ +ô "¨ZÀ9ÔM€EØ×)Ñ)¨$Ó/€MØ	×Òä8AÀ"×BRÑBRÓ8S×T±°°1�”;œtŸx™x¨Ó+Ñ+ÐTˆÑTØ<I×<OÑ<OÓ<Q×R±D°A°q˜œJ q¨$Ó/Ñ/ÐRˆÑRØ—‘ ×!5Ñ!5Ñ6ò GˆØ�
‰
�5×$Ñ$ m°E×4DÑ4DÑ&EÕFðGà—‘ ×!:Ñ!:Ñ;ò QˆØ�‰˜×)Ñ)¬3¨}¸U×=MÑ=MÑ/NÓ+OÕPðQà—‘ ×!6Ñ!6Ñ7ò 
ˆØ�‰Ø×ÑØ˜%×*Ñ*Ñ+ØØ�J‰Jõ		
ð
ð —‘ ×!@Ñ!@ÑAò 
ˆØ×ÑØ×ÑØ˜%×*Ñ*Ñ+Øõ	
ð
ð —‘ ×!;Ñ!;Ñ<ò @ˆØ×Ñ˜ u×'7Ñ'7Ñ8¸$Õ?ð@à—‘ ×!:Ñ!:Ñ;ò 	
ˆð 	�‰ØØ×Ñ  d¨DÐ1ØØØõ	
ð	
ð €LùóA UùÛRs   Á	%IÂIÚ
input_nodeztorch._inductor.ir.IRNodec                 ó  — ddl m}m}m} t	        | j                  «       |«      r7g | j                  «       ¢}g | j                  «       ¢}t        |«      dkD  r||fS yt	        | j                  j                  |«      sy| j                  «       }d}d}|�€lt        |«      dkD  �r]t        «       }g }|D �]%  }	t	        |	t        «      sŒ|	j                  |v rŒ$|j                  |	j                  «       t        j                   j#                  |	j                  «      }
|
€Œk|
j                  «       }|�t	        ||«      rŒŠt	        ||«      rqt        |j                  «       «      dkD  rU|€%g |j                  «       ¢}g |j                  «       ¢}ŒÙ|g |j                  «       ¢k7  s|g |j                  «       ¢k7  s�Œ y|j%                  |j                  «       «       �Œ( ||k(  r||fS t        |«      }|€t        |«      dkD  r�Œ]||fS )aX  
    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|   rv  rw  rx  r¶   Úget_defining_opÚget_sizeÚget_reduction_sizer\   ÚdataÚ	get_readsr   rP   r   r  r   rg   Útry_get_bufferÚextend)rt  rv  rw  rx  rR   Úreduction_sizerí   ÚseenÚ	new_readsÚreadÚbufferÚops               r(   Ú#extract_input_node_reduction_rangesr†  í  sû  € ÷ 8Ñ7ô
 �*×,Ñ,Ó.°Ô?à'�×$Ñ$Ó&Ð'ˆØ;˜:×8Ñ8Ó:Ð;ˆÜˆ~Ó Ò"Ø˜.Ð)Ð)àä�j—o‘o×*Ñ*¨EÔ2àð
 × Ñ Ó"€EØ.2€NØ$(€DØ
Ñ
 ¤S¨£Z°!£^Ü *£ˆØ!ˆ	Øó 	1ˆDÜ˜d¤IÔ.ØØ�y‰y˜DÑ ØØ�H‰H�T—Y‘YÔÜ—W‘W×+Ñ+¨D¯I©IÓ6ˆFØˆ~ØØ×'Ñ'Ó)ˆBØˆzœZ¨¨LÔ9Øä˜"˜nÔ-´#°b×6KÑ6KÓ6MÓ2NÐQRÒ2RØ!Ð)Ø%? r×'<Ñ'<Ó'>Ð%?�NØ+˜RŸ[™[›]Ð+‘DØ#Ð'A¨×)>Ñ)>Ó)@Ð'AÒAÀTð NØ—[‘[“]ðNô Fñ (à× Ñ  §¡£Ö0ð-	1ð. �IÒØ˜.Ð)Ð)ä˜yÓ)ˆEð; Ð
 ¤S¨£Z°!¤^ð< �.Ð!Ð!r*   c                   ó   — y)NÚcr%   r%   r*   r(   r  r  0  s   € Ør*   c                   ó   — e Zd ZU eej
                     ed<   d#deddfd„Zde	de
edf   d	ee	ef   defd
„Z	 	 d$dedeej                  z  dededej
                  f
d„Zdede
d   fd„Zdededee   de
d   fd„Zdedee   dedede
d   f
d„Zdej,                  dej,                  dedde
d   z  dde
d   z  f
d„Zded edef   d!eddfd"„Zy)%ÚFreeSymbolsOpsHandlerÚsymbolsr!   r"   Nc                 óT   — t        «       | _        |rt        | _        y t        | _        y r$   )r   r‹  r   r   Úget_symbolsr&   s     r(   r  zFreeSymbolsOpsHandler.__init__8  s   € Ü!“|ˆŒÙ4AÔ0ˆÕÄ|ˆÕr*   r   r¼   .Úkwargsc                 ó  — t        j                  ||j                  «       «      D ]e  }t        |t        j
                  t        j                  j                  j                  f«      sŒB| xj                  | j                  |«      z  c_	        Œg y r$   )re   rf   r‰   r¶   rF   rG   ÚlogicÚboolalgÚBooleanr‹  r�  )r'   r   r¼   rŽ  Úas        r(   Ú_defaultzFreeSymbolsOpsHandler._default<  s^   € Ü—‘  v§}¡}£Ó7ò 	4ˆAÜ˜!œeŸj™j¬%¯+©+×*=Ñ*=×*EÑ*EÐFÕGØ—’ × 0Ñ 0°Ó 3Ñ3–ñ	4r*   Ú	index_varrR   ÚcheckÚwrap_negc                 óú   — t        |t        j                  t        j                  j                  j
                  f«      rJ ‚| xj                  | j                  |«      z  c_        t        dt        |«      › d�«      S )Nú(rW   )
r¶   rF   rG   r�  r‘  r’  r‹  r�  r   rD   )r'   r•  rR   r–  r—  s        r(   Úindirect_indexingz'FreeSymbolsOpsHandler.indirect_indexingA  s_   € ô ˜i¬%¯*©*´e·k±k×6IÑ6I×6QÑ6QÐ)RÔSÐSÐSØ�Š˜×(Ñ(¨Ó.Ñ.�Ü! A¤c¨)£nÐ%5°QÐ"7Ó8Ð8r*   r”   )N.c                  ó   — y)Nr>  r%   )r'   r”   s     r(   ÚfrexpzFreeSymbolsOpsHandler.frexpL  s   € Ør*   ÚdtypesÚ
combine_fnr‰   c                 ó   — dt        |«      z  S ©Nr$   ©r\   )r'   r�  rž  r‰   s       r(   ÚscanzFreeSymbolsOpsHandler.scanO  ó   € ð œ˜V›Ñ$Ð$r*   ÚstableÚ
descendingc                 ó   — dt        |«      z  S r   r¡  )r'   r�  r‰   r¤  r¥  s        r(   ÚsortzFreeSymbolsOpsHandler.sortT  r£  r*   r3  Ú	src_dtypeÚreduction_typer.  c                 ó0   — t        |«      }|dkD  rd|z  S d S )Nr   r$   )r   )r'   r3  r¨  r©  r.  Ú
num_valuess         r(   Ú	reductionzFreeSymbolsOpsHandler.reductionY  s$   € ô +¨>Ó:ˆ
Ø'1°A¢~ˆw˜Ñ#Ð?¸4Ð?r*   ÚmaskÚbodyr^   c                 ó6   — t        |«      sJ d«       ‚ |«        y )Nz$masked body must always be callable.)Úcallable)r'   r­  r®  r^   s       r(   ÚmaskedzFreeSymbolsOpsHandler.maskedc  s   € Ü˜Œ~ÐEÐEÓEˆ~á�r*   rÇ   )TT)rA   rB   rC   r   rF   rK   rE   rJ   r  rD   r‡   r   rL   r”  rM   rG   rš  rœ  r   r¢  r§  r@  r3  r   r¬  r   r±  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ð �E—J‘JÑð	9ð ð		9ð
 ð	9ð 
�‰ó	9ð�sð ˜u YÑ/ó ð%Øð%Ø'*ð%Ø4<¸S±Mð%à	ˆyÑ	ó%ð
%Øð%Ø#+¨C¡=ð%Ø:=ð%ØKNð%à	ˆyÑ	ó%ð
@à�{‰{ð@ð —;‘;ð@ð &ð	@ð
 �e˜IÑ&Ñ&ð@ð 
��iÑ Ñ	 ó@ð˜3ð  h¨s°C¨xÑ&8ð Àð Èô r*   rŠ  r    Úrindexr!   c                 ó  — ddl m} |�||gn|g}t        |«      }t        j                  |«      5  t        j                  |dd«      5   | |Ž  d d d «       d d d «       |j                  S # 1 sw Y   ŒxY w# 1 sw Y   |j                  S xY w)Nr   )ÚFlexibleLayoutÚallow_indexingT)r|   r´  rŠ  r   r_  r	   Úobjectr‹  )rZ  r    r²  r!   r´  r¼   Úhandlers          r(   Úextract_free_symbolsr¸  i  sŠ   € õ #à$Ð0ˆE�6‰?°u°g€DÜ# MÓ2€Gô 	
×Ñ˜'Ó"ñä�‰�^Ð%5°tÓ<ññ 	ˆD‰	÷	÷ ð
 �?‰?Ð÷ð ú÷ ð
 �?‰?Ðús#   °A6ÁA*ÁA6Á*A3	Á/A6Á6B
c                   ón   — e Zd ZU ee   ed<   dej                  ddfd„Zdede	e
df   d	eee
f   de
fd
„Zy)ÚSymbolUsageCollectorOpsHandlerÚusagesÚsymbolr"   Nc                 ó0   — || _         t        «       | _        y r$   )r¼  r   r»  )r'   r¼  s     r(   r  z'SymbolUsageCollectorOpsHandler.__init__€  s   € ØˆŒÜ “lˆ�r*   r   r¼   .rŽ  c                 ó˜   — | j                   |v xs | j                   |j                  «       v }|r| j                  j                  |«       y y r$   )r¼  r‰   r»  r  )r'   r   r¼   rŽ  Ú	used_heres        r(   r”  z'SymbolUsageCollectorOpsHandler._default„  s<   € Ø—K‘K 4Ð'ÒI¨4¯;©;¸&¿-¹-»/Ð+Iˆ	ÙØ�K‰K�O‰O˜DÕ!ð r*   )rA   rB   rC   r   rD   rE   rF   rK   r  r‡   r   rL   r”  r%   r*   r(   rº  rº  }  sU   … Ø�s‰OÓð#˜uŸ|™|ð #°ó #ð"˜Sð "¨¨c°3¨h©ð "ÀÀcÈ3ÀhÁð "ÐTWô "r*   rº  r>   rµ   )LrH   Údataclassesre   ÚloggingÚreÚcollections.abcr   r   r   Útypingr   r   Útyping_extensionsr   Úunittest.mockr	   rF   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   Ú	getLoggerrA   rj   ÚcompileÚsearchrœ   ÚABCr   Ú	dataclassrP   rË   rÜ   rê   rì   ÚMockHandlerrx   ÚKernelFormatterHandlerrD  rD   r‡   rG   rK   r„   rÉ   rQ  rX  rJ   rb  r^  r†  r  rŠ  r¸  rº  r%   r*   r(   ú<module>rÖ     s§  ðÛ 
Û Û Û Û 	ß 8Ñ 8ß Ý "Ý ã ã Ý 2ß UÝ /ç 3Ý 4Ý '÷õ ÷ *ñ ˆCƒL€à€g×Ñ˜Ó!€Øˆb�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ÑÑ
 ð-ð ð-ð ð	-ð
 ó-ð`@"Ø+ð@"à
ˆ4�—
‘
Ñ˜dÑ" D¨¯©Ñ$4°tÑ$;Ð;Ñ<ó@"ðF ó ô
1˜Nô 1ðn +/Øñ	Ø��c�Ñðà�E—J‘JÑðð �U—Z‘ZÑ  4Ñ'ðð ð	ð
 �—‘Ñóô(
" ^õ 
"r*   