Ë
    g^(hls  ã                   óº  — 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 d dlm	Z	m
Z
mZ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 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$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=eAeAej|                        e%f   fd*„ZCd+d(d,d-œd.e
d/e	f   d&eej|                     d0eDd#e<d1eeAej|                        d$e7fd2„ZE	 d?d.e	d3eAeAej|                        d4e%d0eDd$e9f
d5„ZFd6d7d$e=eeAej|                        eeAej|                        f   fd8„ZGd$e<fd9„ZH G d:„ d;e«      ZI	 d@d.e
d/e	f   d<eej|                     d=eeej|                        d$eej~                     fd>„ZJy)Aé    N)ÚIterableÚSequence)ÚAnyÚCallableÚOptionalÚTypeVarÚUnion)ÚSelf)Úpatch)Úfree_unbacked_symbols)Ú
OrderedSeté   )Úmake_symbolÚSymTé   )Úindex_prevent_reordering)ÚDefaultHandler)Úget_dtype_sizeÚreduction_num_outputsÚsympy_index_symbolÚ	sympy_strÚ
sympy_subsÚ	VarRanges)ÚReductionTypeÚVÚTzindirect|tmpc                   ó<  — e Zd ZU eed<   ej                  ed<   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dd
ede
fd„Zy)ÚDepÚnameÚindexÚrenamesÚreturnc                  ó   — y ©N© ©Úselfr!   s     úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_inductor/dependencies.pyÚrenamez
Dep.rename)   ó   € àó    c                  ó   — y r$   r%   ©r'   s    r(   Ú	get_numelzDep.get_numel-   r*   r+   c                  ó   — y r$   r%   r-   s    r(   Únumbytes_hintzDep.numbytes_hint1   r*   r+   c                  ó   — y r$   r%   r-   s    r(   Úhas_unbacked_symbolszDep.has_unbacked_symbols5   r*   r+   c                  ó   — y r$   r%   r-   s    r(   Úis_contiguouszDep.is_contiguous9   r*   r+   Úprefixc                 ó   — | S r$   r%   )r'   r5   s     r(   Únormalize_with_stride_orderzDep.normalize_with_stride_order=   s   € Øˆr+   N©Út)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚsympyÚExprÚabcÚabstractmethodÚdictr
   r)   r.   Úintr0   Úboolr2   r4   r7   r%   r+   r(   r   r   %   sÚ   … Ø
ƒIØ�:‰:Óà×Ñð˜d 3¨ 8™nð °ò ó ðð 	×Ñð˜5Ÿ:™:ò ó ðð 	×Ñð˜sò ó ðð 	×Ñð 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
e   ed<   defd	„Zedefd
„«       Zdd de
ee      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dedefd„Zdefd„Zdefd„Zy) Ú	MemoryDepr   r    .Ú	var_namesÚsizeNÚmoder"   c                 ó”   — d}| j                   �d| j                   › �}d| j                  ›d| j                  › d| j                  › |› d�S )NÚ ú, z
MemoryDep(ú))rK   r   r    Úranges)r'   Ú
maybe_modes     r(   Ú__repr__zMemoryDep.__repr__I   sM   € Øˆ
Ø�9‰9Ð Ø˜dŸi™i˜[Ð)ˆJØ˜DŸI™I˜=¨¨4¯:©:¨,°b¸¿¹¸ÀjÀ\ÐQRÐSÐSr+   c                 ó,   — t        | j                  «      S r$   )ÚlenrI   r-   s    r(   Únum_varszMemoryDep.num_varsO   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#        d| 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>h   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=%sr   )rU   rT   r    Úfree_symbolsÚanyÚ	itertoolsÚchainrJ   r   ÚgraphÚsizevarsÚstride_hintsrI   r   ÚlogÚdebugÚ	enumerateÚrange)r'   rV   Úself_stridesÚother_stridesÚirZ   Ústride_to_indexÚorders           r(   Údecide_loop_order_to_matchz$MemoryDep.decide_loop_order_to_matchS   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°Q¸¿¹Ó/FÓ$GÒGÐGÐGØˆùó	 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    rC   ÚfromkeysrI   r-   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.
        )rH   r   Ú_RecordLoadStoreInnerÚ
_normalizer    rP   rK   r-   s    r(   Ú	normalizezMemoryDep.normalize’   sC   € ô Ø�I‰Ið
ä"×-Ñ-¨d¯j©j¸$¿+¹+ÓFð
ð �I‰Iò
ð 	
r+   r5   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._inductorru   r   r`   ra   rb   r    rI   Úsortedrf   rT   Ú__getitem__Úsame_reorderrJ   Ú_simplify_loopsr   Úvar_builderrC   Úzipr   r?   ÚexpandrH   r   ÚtupleÚkeysÚvalues)r'   r5   ru   Ústridesrk   Ústride_reorderÚsizesrI   Únew_reordered_sizesÚnew_reordered_var_namesÚnew_simplified_sizesÚreindexÚ_pruneÚ
var_rangesÚadd_varÚxÚreplacementÚ	new_indexÚouts                      r(   r7   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, ...})rC   r~   rI   rJ   r-   s    r(   rP   zMemoryDep.rangesÊ   s   € ô ”C˜Ÿ™¨¯	©	Ó2Ó3Ð3r+   c                 óê   — t        | j                  t        j                  j                  j                  | j                  | j                  «      | j                  | j                  | j                  ¬«      S )N)r   r    rI   rJ   rK   )rH   r   r   r`   ra   Úsimplify_with_rangesr    rP   rI   rJ   rK   r-   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   r`   r.   r   r   r    r\   r?   ÚSÚOner~   rI   rJ   )r'   ÚnumelÚvarsÚvarrJ   s        r(   r.   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)rI   rJ   rK   )r   rH   r    rI   rJ   rK   r&   s     r(   r)   zMemoryDep.renameã   sJ   € Ø�9‰9˜ÑÜØ˜Ÿ	™	Ñ"Ø—
‘
ØŸ.™.Ø—Y‘YØ—Y‘Yôð ð ˆr+   c                 óö   — 	 t         j                  j                  j                  | j	                  «       «      t        t         j                  j                  | j                  «      «      z  S # t        $ r Y yw xY w©Nr   ©	r   r`   ra   Ú	size_hintr.   r   Ú	get_dtyper   ÚNotImplementedErrorr-   s    r(   r0   zMemoryDep.numbytes_hintî   ób   € ð	Ü—7‘7×#Ñ#×-Ñ-¨d¯n©nÓ.>Ó?Ä.Ü—‘×!Ñ! $§)¡)Ó,óCñ ð øô #ò 	Ùð	úó   ‚A)A, Á,	A8Á7A8c                 óL   — t        t        | j                  «       «      «      dkD  S r�   ©rT   r   r.   r-   s    r(   r2   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    r?   ÚIntegerÚSymbolrI   r-   s    r(   r4   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)
rT   rI   r¨   r    r?   ÚAddÚargsÚMulrD   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    r?   rª   rI   r•   rD   r©   r-   s    r(   Ú	is_scalarzMemoryDep.is_scalar  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   )rY   Úvs     r(   r[   z(MemoryDep.is_indirect.<locals>.<genexpr>!  s   è ø€ ÒH¨1”;˜qŸv™v×&ÑHùs   ‚!)r]   r    r\   r-   s    r(   r•   zMemoryDep.is_indirect   s   € ÜÑH°·
±
×0GÑ0GÔHÓHÐHr+   )r"   rH   r8   ©T) r:   r;   r<   r=   r>   r?   r@   r€   rª   rK   r   rR   ÚpropertyrD   rU   Úlistrl   ro   rs   r7   rC   rP   r“   r.   r)   r0   rE   r2   r4   r´   r¶   r•   r%   r+   r(   rH   rH   A   sj  … à
ƒIØ�:‰:ÓØ�U—\‘\ 3Ð&Ñ'Ó'Ø
�—
‘
˜C�Ñ
 Ó Ø€Dˆ(�3‰-Óð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ó ð@ dó @ðU˜tó Uñ
-À$ð -ÐRVó -ð:<˜4ó <ð
I˜Tô Ir+   rH   c                   óÌ   — e Zd ZU eed<   dZee   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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   NrK   r"   c                 ó   — t        d«      ‚)NzStarDep does not have an index©r¡   r-   s    r(   r    zStarDep.index*  ó   € ä!Ð"BÓCÐCr+   c                 óT   — t         j                  j                  | j                  «      S r$   )r   r`   r.   r   r-   s    r(   r.   zStarDep.get_numel.  s   € Ü�w‰w× Ñ  §¡Ó+Ð+r+   r!   c                 óh   — | j                   |v r#t        || j                      | j                  «      S | S r$   )r   r¾   rK   r&   s     r(   r)   zStarDep.rename1  s-   € Ø�9‰9˜ÑÜ˜7 4§9¡9Ñ-¨t¯y©yÓ9Ð9Øˆr+   c                 óö   — 	 t         j                  j                  j                  | j	                  «       «      t        t         j                  j                  | j                  «      «      z  S # t        $ r Y yw xY wr�   rž   r-   s    r(   r0   zStarDep.numbytes_hint6  r¢   r£   c                 óL   — t        t        | j                  «       «      «      dkD  S r�   r¥   r-   s    r(   r2   zStarDep.has_unbacked_symbols>  r¦   r+   c                  ó   — y©NFr%   r-   s    r(   r4   zStarDep.is_contiguousA  ó   € Ør+   c                  ó   — yrÇ   r%   r-   s    r(   r¶   zStarDep.is_scalarD  rÈ   r+   c                  ó   — yrÇ   r%   r-   s    r(   r•   zStarDep.is_indirectG  rÈ   r+   )r:   r;   r<   r=   r>   rK   r   r»   r?   r@   r    r.   rC   r)   rD   r0   rE   r2   r4   r¶   r•   r%   r+   r(   r¾   r¾   $  s    … à
ƒIØ€Dˆ(�3‰-Óð ðD�u—z‘zò Dó ðDð,˜5Ÿ:™:ó ,ð˜d 3¨ 8™nð °ó ð
˜só ð@ dó @ð˜tó ð˜4ó ð˜Tô r+   r¾   c                   óª   — e Zd ZU eed<   e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efd„Zdefd	„Zdefd
„Zy)ÚWeakDepr   Úmutating_bufr"   c                 ó   — t        d«      ‚)NzWeakDep does not have an indexrÀ   r-   s    r(   r    zWeakDep.indexZ  rÁ   r+   c                 ó6   — t         j                  j                  S r$   )r?   r–   r—   r-   s    r(   r.   zWeakDep.get_numel^  s   € Ü�w‰w�{‰{Ðr+   r!   c                 óh   — | j                   |v r#t        || j                      | j                  «      S | S r$   )r   rÌ   rÍ   r&   s     r(   r)   zWeakDep.renamea  s/   € Ø�9‰9˜ÑÜ˜7 4§9¡9Ñ-¨t×/@Ñ/@ÓAÐAØˆr+   c                  ó   — y©Nr   r%   r-   s    r(   r0   zWeakDep.numbytes_hintf  s   € Ør+   c                  ó   — yrÇ   r%   r-   s    r(   r2   zWeakDep.has_unbacked_symbolsi  rÈ   r+   c                  ó   — yrÇ   r%   r-   s    r(   r4   zWeakDep.is_contiguousl  rÈ   r+   N)r:   r;   r<   r=   r>   r»   r?   r@   r    r.   rC   r)   rD   r0   rE   r2   r4   r%   r+   r(   rÌ   rÌ   S  s~   … ð ƒIàÓàðD�u—z‘zò Dó ðDð˜5Ÿ:™:ó ð˜d 3¨ 8™nð °ó ð
˜só ð 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    .rI   rJ   N)r:   r;   r<   r?   r@   r>   r€   rª   r%   r+   r(   rÖ   rÖ   p  s3   … à�:‰:ÓØ�U—\‘\ 3Ð&Ñ'Ó'Ø
�—
‘
˜C�Ñ
 Ô r+   rÖ   c                   ó"  — e Zd ZU ee   ed<   ee   ed<   ee   ed<   dZee	e
j                        ed<   dZee   ed<   deeef   dd fd	„Zd
eeee   f   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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)   ©rY   Údepr!   s     €r(   r[   z$ReadWrites.rename.<locals>.<genexpr>�  s   øè ø€ ÒA¨s�s—z‘z '×*ÑAùó   ƒc              3   ó@   •K  — | ]  }|j                  ‰«      –— Œ y ­wr$   rß   rà   s     €r(   r[   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'   rV   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$   )r^   r_   rÙ   rÚ   r-   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¨   rH   r    rD   r?   r©   Úaddr   )r'   rõ   Únamesrá   s       r(   Úbuffer_nameszReadWrites.buffer_names­  se   € ô ",£ˆØ×(Ñ(Ó*ò 	$ˆCÜ˜c¤9Ô-ØÙ'¬zØ—	‘	œC¤§¡Ð/õ0ð —	‘	˜#Ÿ(™(Õ#ð	$ð ˆr+   )rV   rØ   r"   rØ   rº   )r:   r;   r<   r   r   r>   rÖ   rÜ   r   r¼   r?   r@   r‹   r   rC   r=   r)   r	   ræ   rè   Ústaticmethodrï   rò   r   rô   rE   rù   r%   r+   r(   rØ   rØ   w  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Áô r+   rØ   c                   óH  ‡ — e Zd Zdededdfˆ fd„Zedeee	j                  f   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efd„Zdededefd„Z	 ddede	j                  dedee   def
d„Zdede	j                  dedefd„Zde	j                  deej2                     defd„Z	 	 ddedeee	j                  e	j                  e	j                  f   dedej2                  dedeeee	j                  f      dee   ddfd„Zˆ xZS ) rq   r‹   rs   r"   Nc                 ó˜   •— t         ‰| �  «        t        «       | _        t        «       | _        t        «       | _        || _        || _        y r$   )ÚsuperÚ__init__r   Ú_readsÚ_writesÚ_index_exprsÚ_var_rangesÚ_should_normalize)r'   r‹   rs   Ú	__class__s      €r(   rþ   z_RecordLoadStoreInner.__init__½  s:   ø€ Ü‰ÑÔÜ'1£|ˆŒÜ.8«lˆŒÜ6@³lˆÔØ&0ˆÔØ'0ˆÕr+   r    rI   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¨   r?   r@   r\   Úpop)r    rI   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   r`   ra   r|   r   r}   Úcanonicalization_prefixrC   r~   r   r?   r   r  )Úclsr    r‹   Ú
index_varsr…   Ú	new_sizesr‰   rŠ   Únew_varsrŒ   r�   rŽ   s               r(   rr   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   r`   ra   Úsimplifyr~   r�   r  r€   Úitemsrr   )r'   r    r�   r…   Úkr¹   rI   r‹   s           r(   Úcanonicalizez"_RecordLoadStoreInner.canonicalizeñ  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                 óŽ   — | j                   j                  t        |g| j                  |«      ¢­Ž «       d|› dt	        |«      › d�S )Nzload(rN   rO   )rÿ   r÷   rH   r  r   ©r'   r   r    s      r(   Úloadz_RecordLoadStoreInner.load  sB   € Ø�‰�‰œ	 $ÐB¨×):Ñ):¸5Ó)AÒBÔCØ�t�f˜Bœy¨Ó/Ð0°Ð2Ð2r+   c                 óp   — t        |t        «      sJ ‚| j                  |t        j                  |«      «      S r$   )r¨   rD   r  r?   r©   r  s      r(   Ú	load_seedz_RecordLoadStoreInner.load_seed  s,   € Ü˜%¤Ô%Ð%Ð%Ø�y‰y˜œuŸ}™}¨UÓ3Ó4Ð4r+   ÚvaluerK   c           	      ó    — | j                   j                  t        |g| j                  |«      ¢­d|iŽ«       d|› dt	        |«      › d|› d|› d�	S )NrK   zstore(rN   rO   )r   r÷   rH   r  r   )r'   r   r    r  rK   s        r(   Ústorez_RecordLoadStoreInner.store  sW   € ð 	�‰×Ñœ 4ÐN¨$×*;Ñ*;¸EÓ*BÒNÈÑNÔOØ˜�v˜R¤	¨%Ó 0Ð1°°E°7¸"¸T¸FÀ!ÐDÐDr+   c                 ó0   — | j                  ||d|› d�«      S )Nzstore_reduction(rO   )r  )r'   r   r    r  s       r(   Ústore_reductionz%_RecordLoadStoreInner.store_reduction  s   € Ø�z‰z˜$ Ð)9¸%¸ÀÐ'BÓCÐCr+   Údtypec                 ó†   — | j                   j                  t        | j                  |«      Ž «       dt	        |«      › d|› d�S )Nzindex_expr(rN   rO   )r  r÷   rÖ   r  r   )r'   r    r  s      r(   Ú
index_exprz _RecordLoadStoreInner.index_expr  sA   € Ø×Ñ×Ñœl¨D×,=Ñ,=¸eÓ,DÐEÔFØœY uÓ-Ð.¨b°°°qÐ9Ð9r+   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‚   r   r!  r"  r#  r$  r%  s           r(   Ú	bucketizez_RecordLoadStoreInner.bucketize  sA   € ð 	�‰�‰œ 
¨1¡Ó.Ô/ØÐØ�K‰K�O‰OœG F¨1¡IÓ.Õ/ð r+   r$   ©NN)r:   r;   r<   r   rE   rþ   rú   r	   rD   r?   r@   r¼   r  Úclassmethodr€   rª   rr   r  r=   r  r  r   r  r  Útorchr  r  r   r'  Ú__classcell__©r  s   @r(   rq   rq   ¼  sm  ø„ ð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ð&3˜ð 3 U§Z¡Zð 3°Có 3ð5˜cð 5¨#ð 5°#ó 5ð
 OSñEØðEØ %§
¡
ðEØ36ðEØ>FÀs¹mðEà	óEðD Cð D°·
±
ð DÀ3ð DÈ3ó Dð: §
¡
ð :°8¸E¿K¹KÑ3Hð :ÈSó :ð 48Ø&*ñ0àð0ð ˜#˜uŸz™z¨5¯:©:°u·z±zÐAÑBð0ð ð	0ð
 Ÿ™ð0ð ð0ð ˜˜s E§J¡J˜Ñ/Ñ0ð0ð ! ™ð0ð 
÷0r+   rq   c                   ó,   ‡ — e Zd Zdededdfˆ fd„Zˆ xZS )ÚRecordLoadStorer‹   rs   r"   Nc                 ó@   •— t        ||¬«      }t        ‰| �	  |¬«       y )N©r‹   rs   )Úparent_handler)rq   rý   rþ   )r'   r‹   rs   r1  r  s       €r(   rþ   zRecordLoadStore.__init__*  s$   ø€ Ü.Ø!¨Yô
ˆô 	‰Ñ¨ÐÕ7r+   )r:   r;   r<   r   rE   rþ   r+  r,  s   @r(   r.  r.  )  s"   ø„ ð8 9ð 8¸ð 8À$÷ 8ñ 8r+   r.  r5   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)r3  r¹   Úcntr5   r‹   s     €€€r(   rŒ   zvar_builder.<locals>.add_var6  s(   ø€ Ü & ¬$¨s«)¨Ð5Ó6ˆØˆ
�1‰Øˆr+   )r^   Úcountr?   r@   rª   )r5   rŒ   r6  r‹   s   ` @@r(   r}   r}   2  s<   ú€ Ü
�/‰/Ó
€CØ€JðœŸ
™
ð ¤u§|¡|÷ ð
 �wÐÐr+   Úargsizesc           	      ót   — t        | «      \  }}|D �cg c]  }t        t        ||«      «      ‘Œ }}||fS c c}w r$   )r}   r¼   Úmap)r5   r8  r‹   rŒ   rJ   r¯   s         r(   Úindex_vars_no_squeezer;  >  sC   € ô & fÓ-Ñ€J�ØKSÖ%TÀ4¤d¬3¨w¸Ó+=Õ&>Ð%T€DÐ%TØ�ÐÐùò &Us   “5Úd)r5   c                 óæ   — ddl m} t        | «      \  }}g }g }|D ]Q  }|j                  |«      \  }}	|j	                  |«       |j	                   |	t        t        ||«      «      «      «       ŒS ||fS )Nr   )ÚSqueezeView)ru   r>  r}   ÚsqueezerÚappendr¼   r:  )
r5   r8  r>  r‹   rŒ   r¯   r  rJ   Únew_sizer‰   s
             r(   Úindex_vars_squeezerB  F  s|   € õ  ä% fÓ-Ñ€J�Ø#%€DØ(*€IØò ;ˆØ'×0Ñ0°Ó6Ñˆ�'Ø×Ñ˜Ô"Ø�‰‘GœD¤ W¨hÓ!7Ó8Ó9Õ:ð;ð �ÐÐr+   Fr%   )rs   r5   Úhidden_argsÚfn.rs   rC  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)Nr5   r   )ÚLoopBody)rs   )rB  Ú	loop_bodyrF  r¨   Úextract_loop_body_with_argsr.  r   Úset_ops_handlerr1  r^   r_   Úfrom_iterablerØ   r   rÿ   r   r  )rD  rs   r5   rC  r8  r¯   r‹   rF  Úinnerrë   rÜ   s              r(   Úextract_read_writesrL  U  sä   € ô *¨8ÐC¸FÑCÑ€Dˆ*å#ä�"�hÔÜ+ØÐ%�$Ð%˜Ð% z°9ó
‰ô
 ˜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   )ÚMemoryUsageTyper0  )rG  rN  rq   Úindexing_from_argsÚindirect_varsre   r   r   ÚTMPr  r   Úmemory_usageÚLOADr  Úbuffer_nameÚ
index_nameÚ	LOAD_SEEDr  rD   ÚSTOREr  rK   ÚSTORE_REDUCTIONr  Ú
INDEX_EXPRr  Ú	BUCKETIZEr'  )rD  r¯   r‹   rs   rN  rK  Úname_to_indexri   r¹   Úreplr  Úentrys               r(   rH  rH  y  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)ru   r`  ra  rb  r¨   Úget_defining_opÚget_sizeÚget_reduction_sizerT   ÚdataÚ	get_readsr   rH   r   r÷   r   r`   Útry_get_bufferÚextend)r^  r`  ra  rb  rJ   Úreduction_sizerÙ   ÚseenÚ	new_readsÚreadÚbufferÚops               r(   Ú#extract_input_node_reduction_rangesrp  ©  sû  € ÷ 8Ñ7ô
 �*×,Ñ,Ó.°Ô?à'�×$Ñ$Ó&Ð'ˆØ;˜:×8Ñ8Ó:Ð;ˆÜˆ~Ó Ò"Ø˜.Ð)Ð)àä�j—o‘o×*Ñ*¨EÔ2àð
 × Ñ Ó"€EØ15€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	  ì  s   € Ør+   c                   ó¢  — e Zd ZU eej
                     ed<   d"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ej                  f   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ede	d   f   dede	d   f   f
d„Zde
dede
f   d e
ddfd!„Zy)$ÚFreeUnbackedSymbolsOpsHandlerÚsymbolsr"   Nc                 ó"   — t        «       | _        y r$   )r   ru  r-   s    r(   rþ   z&FreeUnbackedSymbolsOpsHandler.__init__ô  s   € Ü!“|ˆ�r+   r   r¯   .Úkwargsc                 ó  — t        j                  ||j                  «       «      D ]_  }t        |t        j
                  t        j                  j                  j                  f«      sŒB| xj                  t        |«      z  c_	        Œa y r$   )r^   r_   r‚   r¨   r?   r@   ÚlogicÚboolalgÚBooleanru  r   )r'   r   r¯   rw  Úas        r(   Ú_defaultz&FreeUnbackedSymbolsOpsHandler._default÷  sY   € Ü—‘  v§}¡}£Ó7ò 	9ˆAÜ˜!œeŸj™j¬%¯+©+×*=Ñ*=×*EÑ*EÐFÕGØ—’Ô 5°aÓ 8Ñ8–ñ	9r+   Ú	index_varrJ   ÚcheckÚwrap_negc                 óî   — t        |t        j                  t        j                  j                  j
                  f«      rJ ‚| xj                  t        |«      z  c_        t        dt        |«      › d�«      S )Nú(rO   )
r¨   r?   r@   ry  rz  r{  ru  r   r   r=   )r'   r~  rJ   r  r€  s        r(   Úindirect_indexingz/FreeUnbackedSymbolsOpsHandler.indirect_indexingü  sZ   € ô ˜i¬%¯*©*´e·k±k×6IÑ6I×6QÑ6QÐ)RÔSÐSÐSØ�ŠÔ-¨dÓ3Ñ3�Ü! A¤c¨)£nÐ%5°QÐ"7Ó8Ð8r+   r�   )N.c                  ó   — y)Nr(  r%   )r'   r�   s     r(   Úfrexpz#FreeUnbackedSymbolsOpsHandler.frexp  s   € Ør+   ÚdtypesÚ
combine_fnr‚   c                 ó   — dt        |«      z  S ©Nr$   ©rT   )r'   r†  r‡  r‚   s       r(   Úscanz"FreeUnbackedSymbolsOpsHandler.scan
  ó   € ð œ˜V›Ñ$Ð$r+   ÚstableÚ
descendingc                 ó   — dt        |«      z  S r‰  rŠ  )r'   r†  r‚   r�  rŽ  s        r(   Úsortz"FreeUnbackedSymbolsOpsHandler.sort  rŒ  r+   r  Ú	src_dtypeÚreduction_typer  c                 ó0   — t        |«      }|dkD  rd|z  S d S )Nr   r$   )r   )r'   r  r‘  r’  r  Ú
num_valuess         r(   Ú	reductionz'FreeUnbackedSymbolsOpsHandler.reduction  s$   € ô +¨>Ó:ˆ
Ø'1°A¢~ˆw˜Ñ#Ð?¸4Ð?r+   ÚmaskÚbodyrV   c                 ó6   — t        |«      sJ d«       ‚ |«        y )Nz$masked body must always be callable.)Úcallable)r'   r–  r—  rV   s       r(   Úmaskedz$FreeUnbackedSymbolsOpsHandler.masked  s   € Ü˜Œ~ÐEÐEÓEˆ~á�r+   )r"   N)TT)r:   r;   r<   r   r?   rª   r>   rþ   r=   r€   r   rC   r}  r	   rD   r@   rE   rƒ  r…  r   r‹  r�  r*  r  r   r•  r   rš  r%   r+   r(   rt  rt  ñ  s�  … Ø˜Ÿ™Ñ%Ó%ó$ð9˜Sð 9¨¨c°3¨h©ð 9ÀÀcÈ3ÀhÁð 9ÐTWó 9ð Øñ	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+   rt  r    Úrindexc                 ó  — 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)ru   r�  rt  r   rI  r   Úobjectru  )rD  r    r›  r�  r¯   Úhandlers         r(   Úextract_free_unbacked_symbolsr¡  $  sˆ   € õ
 #à$Ð0ˆE�6‰?°u°g€DÜ+Ó-€Gô 	
×Ñ˜'Ó"ñä�‰�^Ð%5°tÓ<ññ 	ˆD‰	÷	÷ ð
 �?‰?Ð÷ð ú÷ ð
 �?‰?Ðús#   ¯A5ÁA)ÁA5Á)A2	Á.A5Á5B	)Fr$   )KrA   Údataclassesr^   ÚloggingÚreÚcollections.abcr   r   Útypingr   r   r   r   r	   Útyping_extensionsr
   Úunittest.mockr   r?   r*  Ú%torch.fx.experimental.symbolic_shapesr   Útorch.utils._ordered_setr   Úutils._sympy.symbolr   r   Úcodegen.commonr   Úops_handlerr   Úutilsr   r   r   r   r   r   Úvirtualizedr   r   r   Ú	getLoggerr:   rc   ÚcompileÚsearchr•   ÚABCr   Ú	dataclassrH   r¾   rÌ   rÖ   rØ   ÚMockHandlerrq   ÚKernelFormatterHandlerr.  r=   r€   r@   rª   r}   r¼   r;  rB  rE   rL  rH  rp  r	  rt  r¡  r%   r+   r(   ú<module>r·     s‰  ðÛ 
Û Û Û Û 	ß .ß :Õ :Ý "Ý ã ã Ý GÝ /ç 3Ý 4Ý '÷÷ ÷ *ñ ˆCƒL€à€g×Ñ˜Ó!€Øˆb�j‰j˜Ó)×0Ñ0€ôˆ#�'‰'ô ð8 €×Ñ˜dÔ#ô_I�ó _Ió $ð_IðD €×Ñ˜dÔ#ô#ˆcó #ó $ð#ð\ €×Ñ˜dÔ#ôˆcó ó $ðð8 €×Ñ˜dÔ#÷!ð !ó $ð!ð ×Ñ÷Að Aó ðAôHj0˜AŸM™Mô j0ôZ8�a×.Ñ.ô 8ð	˜ð 	  i°¸5¿:¹:¸,ÈÏÉÐ:TÑ1UÐ&UÑ Vó 	ðØ˜Ÿ
™
Ñ#ðØ-0ðà
ˆ4��U—\‘\Ñ"Ñ# YÐ.Ñ/óð 47òØ˜Ÿ
™
Ñ#ðØ-0ðà
ˆ4��U—Z‘ZÑ Ñ! 9Ð,Ñ-óð$ ØØ.0ò!Ø��c�Ñð!à˜Ÿ
™
Ñ#ð!ð ð!ð ð	!ð
 ˜$˜uŸz™zÑ*Ñ+ð!ð ó!ðP ñ	-Øð-à
ˆt�E—J‘JÑÑ
 ð-ð ð-ð ð	-ð
 ó-ð`@"Ø+ð@"à
ˆ8�D˜Ÿ™Ñ$Ñ% x°°U·Z±ZÑ0@Ñ'AÐAÑBó@"ðF ó ô
0 Nô 0ðl .2ñØ��c�Ñðà�E—J‘JÑðð �X˜eŸj™jÑ)Ñ*ðð �—‘Ñô	r+   