Ë
    P/æj*"  ã                   óÊ  — 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 ej                  d   ej                  d   ej                  d   hZ	ej                  dk\  re	j                  ej                  d   «       ej                  dk\  r=e	j                  ej                  d	   «       e	j                  ej                  d   «       ne	j                  ej                  d
   «       ej                  dk\  re	j                  ej                  d   «        eej                  ej                  z   «      ZeD � ch c]  } ej                   |    ’Œ c} Z eej$                  «      Z eej(                  «      Zej,                  Zd„ Zd„ Zd„ Zd„ Zd„ Zej8                   G d„ d«      «       Zd„ Zej8                   G d„ d«      «       Zej8                   G d„ d«      «       Z dee!e"f   fd„Z#yc c} w )é    N)ÚAnyÚSetÚUnionÚRETURN_VALUEÚJUMP_FORWARDÚRAISE_VARARGS©é   é	   ÚRERAISE©r
   é   ÚJUMP_BACKWARDÚJUMP_ABSOLUTE)r
   é   ÚRETURN_CONSTc                 óF   — i }t        | «      D ]  \  }}||vsJ ‚|||<   Œ |S )z¢
    Get a mapping from instruction memory address to index in instruction list.
    Additionally checks that each instruction only appears once in the list.
    )Ú	enumerate)ÚinstsÚindexofÚiÚinsts       úb/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/bytecode_analysis.pyÚget_indexofr       s?   € ð
 €GÜ˜UÓ#ò ‰ˆˆ4Ø˜7Ñ"Ð"Ð"Øˆ�Šðð €Nó    c                 óœ  ‡ ‡‡‡— t        ‰ «      Št        «       Šˆˆˆ ˆfd„Š ‰d«       t        j                  dk\  rèt	        ‰«      }t        ‰ «      D ]Ï  \  }}|‰v sŒ|j                  sŒt        j                  |‰|j                  j                     «      }|t        |«      k  sJ ‚t        j                  |‰|j                  j                     «      dz
  }|dk\  sJ ‚||   |cxk  r	||   k  sJ ‚ J ‚‰ ||      |j                  _	        ‰ ||      |j                  _        ŒÑ t        ‰ «      D ��cg c]  \  }}|‰v sŒ|‘Œ c}}S c c}}w )zDead code eliminationc                 ó>  •— t        | t        ‰«      «      D ]„  }|‰v r y ‰j                  |«       ‰|   }|j                  r ‰‰|j                  j                     «       |j
                  t        v r ‰‰|j                     «       |j
                  t        v sŒ„ y  y ©N)ÚrangeÚlenÚaddÚexn_tab_entryÚtargetÚopcodeÚJUMP_OPCODESÚTERMINAL_OPCODES)Ústartr   r   Úfind_live_coder   ÚinstructionsÚ	live_codes      €€€€r   r(   z(remove_dead_code.<locals>.find_live_code1   sŒ   ø€ Ü�uœc ,Ó/Ó0ò 
	ˆAØ�I‰~ÙØ�M‰M˜!ÔØ ‘?ˆDØ×!Ò!Ù˜w t×'9Ñ'9×'@Ñ'@ÑAÔBØ�{‰{œlÑ*Ù˜w t§{¡{Ñ3Ô4Ø�{‰{Ô.Ò.Ùñ
	r   r   r   é   )r   ÚsetÚsysÚversion_infoÚsortedr   r"   ÚbisectÚbisect_leftr'   r    Úbisect_rightÚend)	r)   Úlive_idxr   r   Ú	start_idxÚend_idxr(   r   r*   s	   `     @@@r   Úremove_dead_coder7   ,   sT  û€ ä˜,Ó'€GÜ“€I÷ñ �1Ôô ×Ñ˜7Ò"Ü˜)Ó$ˆÜ  Ó.ò 	I‰GˆAˆtØ�IŠ~ $×"4Ó"4ä"×.Ñ.Ø˜g d×&8Ñ&8×&>Ñ&>Ñ?ó�	ð !¤3 x£=Ò0Ð0Ð0ô ×'Ñ'¨°'¸$×:LÑ:L×:PÑ:PÑ2QÓRÐUVÑVð ð  !’|Ð#�|Ø 	Ñ*¨aÔD°8¸GÑ3DÒDÐDÑDÐDÐDØ+7¸ÀÑ8KÑ+L�×"Ñ"Ô(Ø)5°h¸wÑ6GÑ)H�×"Ñ"Õ&ð	Iô  !*¨,Ó 7×J‘W�Q˜¸1À	º>ŠDÓJÐJùÓJs   Ä3EÅ Ec                 óâ   — t        | | dd «      D ��ch c]-  \  }}|j                  dk(  r|j                  |u rt        |«      ’Œ/ }}}| D �cg c]  }t        |«      |vsŒ|‘Œ c}S c c}}w c c}w )z'Eliminate jumps to the next instructionr+   Nr   )ÚzipÚopnamer#   Úid)r)   ÚaÚbÚpointless_jumpsr   s        r   Úremove_pointless_jumpsr?   Y   sv   € ô ˜ l°1°2Ð&6Ó7÷áˆAˆqØ�8‰8�Ò&¨1¯8©8°q©=ô 	ˆ1�ð€Oñ ð
 *ÖM�T¬R°«X¸_Ò-LŠDÒMÐMùóùò
 Ns   “2A&ÁA,ÁA,c                 ó2   ‡— dŠˆfd„}| D ]
  } ||«       Œ y)zEEnsure every instruction has line number set in case some are removedNc                 óD   •— | j                   r| j                   Š‰| _         y r   ©Ústarts_line©r   Úcur_line_nos    €r   Úpopulate_line_numz.propagate_line_nums.<locals>.populate_line_numg   s   ø€ à×ÒØ×*Ñ*ˆKà&ˆÕr   © )r)   rF   r   rE   s      @r   Úpropagate_line_numsrH   c   s&   ø€ à€Kô'ð ò  ˆÙ˜$Õñ r   c                 ó2   ‡— dŠˆfd„}| D ]
  } ||«       Œ y)z;Remove extra starts line properties before packing bytecodeNc                 óf   •— | j                   €y | j                   ‰k(  rd | _         y | j                   Šy r   rB   rD   s    €r   Úremove_line_numz/remove_extra_line_nums.<locals>.remove_line_numw   s3   ø€ à×ÑÐ#ØØ×Ñ Ò,Ø#ˆDÕà×*Ñ*‰Kr   rG   )r)   rK   r   rE   s      @r   Úremove_extra_line_numsrL   r   s(   ø€ ð €Kô+ð ò ˆÙ˜Õñr   c                   ó>   — e Zd ZU ee   ed<   ee   ed<   ee   ed<   y)ÚReadsWritesÚreadsÚwritesÚvisitedN)Ú__name__Ú
__module__Ú__qualname__r   r   Ú__annotations__rG   r   r   rN   rN   „   s   … àˆs‰8ƒOØ�‰HÓØ�‰XÔr   rN   c                 ó  ‡ ‡‡‡‡— t        ‰ «      Št        t        «       t        «       t        «       «      Št        t        «       t        «       t        «       «      Šˆˆ ˆˆˆfd„Š ‰‰‰|   «       ‰j                  ‰j                  z  S )Nc                 ó$  •— || j                   v ry | j                   j                  |«       t        |t        ‰«      «      D �]L  }‰|   }|j                  t
        v s|j                  t        v r¶d|j                  v sd|j                  v r>|j                  ‰j                  vr‚| j                  j                  |j                  «       n\d|j                  v r&| j                  j                  |j                  «       n(|j                  dk(  rnt        d|j                  › �«      ‚|j                  r  ‰‰‰|j                  j                     «       |j                  t        v r ‰‰‰|j                     «       ‰} |j                  t        v s�ŒM y  y )NÚLOADÚDELETEÚSTOREÚ	MAKE_CELLz
unhandled )rQ   r!   r   r    r$   ÚHASLOCALÚHASFREEr:   ÚargvalrP   rO   ÚNotImplementedErrorr"   r#   r%   r&   )	Ústater'   r   r   r   r)   ÚmayÚmustÚwalks	       €€€€€r   rc   zlivevars_analysis.<locals>.walk�   s9  ø€ Ø�E—M‘MÑ!ØØ�‰×Ñ˜%Ô ä�uœc ,Ó/Ó0ó 	ˆAØ ‘?ˆDØ�{‰{œhÑ&¨$¯+©+¼Ñ*@Ø˜TŸ[™[Ñ(¨H¸¿¹Ñ,CØ—{‘{¨$¯+©+Ñ5ØŸ™Ÿ™¨¯©Õ4Ø §¡Ñ+Ø—L‘L×$Ñ$ T§[¡[Õ1Ø—[‘[ KÒ/Øä-°
¸4¿;¹;¸-Ð.HÓIÐIØ×!Ò!Ù�S˜' $×"4Ñ"4×";Ñ";Ñ<Ô=Ø�{‰{œlÑ*Ù�S˜' $§+¡+Ñ.Ô/Ø�Ø�{‰{Ô.Ó.Ùñ%	r   )r   rN   r,   rO   )r)   Úinstructionr   ra   rb   rc   s   ` @@@@r   Úlivevars_analysisre   ‹   sc   ü€ Ü˜,Ó'€GÜ”s“uœc›e¤S£UÓ+€DÜ
”c“eœS›U¤C£EÓ
*€C÷ð ñ2 	ˆˆw�{Ñ#Ô$Ø�:‰:˜Ÿ	™	Ñ!Ð!r   c                   ó   — e Zd ZU dZeed<   y)ÚFixedPointBoxTÚvalueN)rR   rS   rT   rh   ÚboolrU   rG   r   r   rg   rg   ­   s   … à€Eˆ4Ôr   rg   c                   óR   — e Zd ZU eeef   ed<   eeef   ed<   eed<   d„ Zd„ Z	d„ Z
y)Ú	StackSizeÚlowÚhighÚfixed_pointc                 óB   — d| _         d| _        d| j                  _        y )Nr   F)rl   rm   rn   rh   )Úselfs    r   ÚzerozStackSize.zero¸   s   € ØˆŒØˆŒ	Ø!&ˆ×ÑÕr   c                 ó.  — | j                   | j                  f}t        | j                   |j                   |z   «      | _         t        | j                  |j                  |z   «      | _        | j                   | j                  f|k7  rd| j                  _        y y ©NF©rl   rm   ÚminÚmaxrn   rh   )rp   ÚotherÚnÚpriors       r   Ú	offset_ofzStackSize.offset_of½   sp   € Ø—‘˜4Ÿ9™9Ð%ˆÜ�t—x‘x §¡¨Q¡Ó/ˆŒÜ˜Ÿ	™	 5§:¡:°¡>Ó2ˆŒ	Ø�H‰H�d—i‘iÐ  EÒ)Ø%*ˆD×ÑÕ"ð *r   c                 óú   — | j                   | j                  f}t        | j                   |«      | _         t        | j                  |«      | _        | j                   | j                  f|k7  rd| j                  _        y y rs   rt   )rp   Údepthry   s      r   Úexn_tab_jumpzStackSize.exn_tab_jumpÄ   s`   € Ø—‘˜4Ÿ9™9Ð%ˆÜ�t—x‘x Ó'ˆŒÜ˜Ÿ	™	 5Ó)ˆŒ	Ø�H‰H�d—i‘iÐ  EÒ)Ø%*ˆD×ÑÕ"ð *r   N)rR   rS   rT   r   ÚintÚfloatrU   rg   rq   rz   r}   rG   r   r   rk   rk   ²   s5   … à	ˆs�EˆzÑ	ÓØ
��U�
Ñ
ÓØÓò'ò
+ó+r   rk   Úreturnc           
      óš  — | sJ ‚t        «       }| D �ci c]"  }|t        t        d«      t        d«      |«      “Œ$ }}|| d      j                  «        t	        d«      D �]Š  }|j
                  r �n{d|_        t        | | dd  d gz   «      D �]Z  \  }}||   }t        j                  dk  xr  |j                  t        j                  d   k(  }|j                  t        vrG|€
J d	|› �«       ‚|rdn!t        |j                  |j                  d
¬«      }||   j                  ||«       |j                  t         v rA|s?||j"                     j                  |t        |j                  |j                  d¬«      «       |j$                  sŒú|j$                  j&                  t)        |j$                  j*                  «      z   dz   }	||j$                  j"                     j-                  |	«       �Œ] �Œ� 	 t5        d„ |j7                  «       D «       «      }
t9        d„ |j7                  «       D «       «      }|j
                  sJ d«       ‚|
dk\  sJ ‚|S c c}w )NÚinfz-infr   éd   Tr+   r	   ÚCALL_FINALLYzmissing next inst: F)Újumpc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )rl   ©Ú.0Úxs     r   ú	<genexpr>z%stacksize_analysis.<locals>.<genexpr>ü   s   è ø€ Ò2˜ˆa�e�eÑ2ùó   ‚c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )rm   r‡   s     r   rŠ   z%stacksize_analysis.<locals>.<genexpr>ý   s   è ø€ Ò4˜!ˆq�v�vÑ4ùr‹   zfailed to reach fixed point)rg   rk   r   rq   r   rh   r9   r-   r.   r$   ÚdisÚopmapr&   Ústack_effectÚargrz   r%   r#   r"   r|   r~   Úlastir}   Úprintrl   rm   ru   Úvaluesrv   )r)   rn   r   Ústack_sizesÚ_Ú	next_instÚ
stack_sizeÚis_call_finallyÚeffr|   rl   rm   s               r   Ústacksize_analysisrš   Ì   sA  € ÙÐˆ<Ü“/€Kð !öàð 	Œiœ˜e›¤e¨F£m°[ÓAÑAð€Kð ð �˜Q‘Ñ ×%Ñ%Ô'ä�3‹Zó  KˆØ×ÒÚØ ˆÔä" <°¸a¸bÐ1AÀTÀFÑ1JÓKó 	K‰OˆD�)Ø$ TÑ*ˆJô × Ñ  6Ñ)ÒV¨d¯k©k¼S¿Y¹YÀ~Ñ=VÑ.Vð ð �{‰{Ô"2Ñ2Ø Ð,ÐJÐ0CÀDÀ6Ð.JÓJÐ,ñ 'ñ ä% d§k¡k°4·8±8À%ÔHð ð
 ˜IÑ&×0Ñ0°¸SÔAØ�{‰{œlÑ*±?Ø˜DŸK™KÑ(×2Ñ2Ø¤¨T¯[©[¸$¿(¹(ÈÔ Nôð ×!Ó!ð ×*Ñ*×0Ñ0´3°t×7IÑ7I×7OÑ7OÓ3PÑPÐSTÑT�Ø˜D×.Ñ.×5Ñ5Ñ6×CÑCÀEÖJò7	Kð KðD ô
 Ñ2˜[×/Ñ/Ó1Ô2Ó
2€CÜÑ4˜{×1Ñ1Ó3Ô4Ó4€Dà×ÒÐ;Ð;Ó;ÐØ�!Š8€Oˆ8Ø€Kùòes   “'I)$r0   Údataclassesr�   r-   Útypingr   r   r   rŽ   r&   r.   r!   r,   ÚhasjrelÚhasjabsr%   r:   ÚJUMP_OPNAMESÚhaslocalr\   Úhasfreer]   r�   r   r7   r?   rH   rL   Ú	dataclassrN   re   rg   rk   r~   r   rš   )r$   s   0r   ú<module>r£      sÕ  ðã Û Û 
Û 
ß "Ñ "ð ‡I�IˆnÑØ‡I�IˆnÑØ‡I�IˆoÑðÐ ð ×Ñ�vÒØ×Ñ˜Ÿ™ 9Ñ-Ô.Ø×Ñ�wÒØ×Ñ˜Ÿ™ ?Ñ3Ô4Ø×Ñ˜Ÿ™ >Ñ2Õ3à×Ñ˜Ÿ™ ?Ñ3Ô4Ø×Ñ�wÒØ×Ñ˜Ÿ™ >Ñ2Ô3Ù�3—;‘; §¡Ñ,Ó-€Ø1=Ö> v�—
‘
˜6Ó"Ò>€Ùˆs�|‰|Ó€Ù
ˆc�k‰kÓ
€à×Ñ€ò	ò*KòZNò òð$ ×Ñ÷ð ó ðò"ðD ×Ñ÷ð ó ðð ×Ñ÷+ð +ó ð+ð25¨¨c°5¨jÑ(9ô 5ùòg ?s   Ä.G 