Ë
    èÿæi  ã                   óö   — d dl mZmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZ d dl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	„ Zd
„ Zd„ Zd„ Zd„ Z G d„ dej8                  «      Zedk(  r ej>                  «        yy)é    )ÚjitÚnjit)ÚtypesÚirÚconfigÚcompiler)Ú
cpu_target)Útype_annotations)Úcopy_propagateÚapply_copy_propagateÚget_name_var_table)Útype_inference_stage)ÚIRPreservingTestPipelineNc                 ó8   — d}|}| dkD  r||z   }nd}d|z  }|| k  S )Né   r   é   © )ÚbÚzÚwÚxÚx1ÚyÚas          út/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_copy_propagate.pyÚtest_will_propagater      s3   € Ø	€AØ	
€BØˆ1‚uØ�‰E‰àˆØ	ˆB‰€AØˆq‰5€Ló    c                 ó8   — d}| dkD  r||z   }d}nd}d|z  }|| k  S )Nr   r   é   r   r   )r   r   r   r   r   r   s         r   Útest_wont_propagater       s3   € Ø	€AØˆ1‚uØ�‰EˆØ‰àˆØ	ˆA‰€AØˆq‰5€Lr   c                  ó   — y )Nr   )r   r   ÚcÚds       r   Ú	null_funcr$   (   s   € Ø	r   c                 ó4   — | D ]  }|j                   |k(  sŒ y y©NTF)Úname)Úlist_varÚvarÚis      r   Ú	inListVarr+   ,   s   € ÛˆØ�6‰6�S‹=Ùð ð r   c                 ó*  — | j                   j                  «       D ]v  \  }}t        |j                  «      D ]Y  \  }}t	        |t
        j                  «      sŒ!|j                  j                  |k7  sŒ;|j                  «       }t        ||«      sŒX  y Œx yr&   )ÚblocksÚitemsÚ	enumerateÚbodyÚ
isinstancer   ÚAssignÚtargetr'   Ú	list_varsr+   )Úfunc_irr)   ÚlabelÚblockr*   ÚinstÚall_vars          r   Ú
findAssignr:   3   sq   € ØŸ™×,Ñ,Ö.‰ˆˆuÜ  §¡Ö,‰GˆAˆtÜ˜$¤§	¡	Õ*¨t¯{©{×/?Ñ/?ÀÓ/DØŸ.™.Ó*�Ü˜W cÕ*Úñ	 -ð /ð r   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestCopyPropagatec           
      óR  — t         j                  }t         j                  }t        j                  t
        «      }|j                  «        |j                  «        t        j                  t        j                  t        j                  f}t        ||||d «      \  }}}}t        j                  |||dd ||t        j                  ¬«      }	t        |j                  |«      \  }
}t!        |j                  |
t#        |j                  «      ||«       | j%                  t'        |d«      «       y )Nr   ©r5   ÚtypemapÚ	calltypesÚliftedÚlifted_fromÚargsÚreturn_typeÚhtml_outputr   )r	   Útyping_contextÚtarget_contextr   Úrun_frontendr   Úrefreshr   Úint64r   r
   ÚTypeAnnotationr   ÚHTMLr   r-   r   r   ÚassertFalser:   ©ÚselfÚ	typingctxÚ	targetctxÚtest_irrC   r?   rD   r@   Ú_Útype_annotationÚin_cpsÚout_cpss               r   Útest1zTestCopyPropagate.test1?   s÷   € Ü×-Ñ-ˆ	Ü×-Ñ-ˆ	Ü×'Ñ'Ô(;Ó<ˆØ×ÑÔØ×ÑÔÜ—‘œUŸ[™[¬%¯+©+Ð6ˆÜ-AÀ)ØDMØDKØDHØDHó	.JÑ*ˆ�˜i¨ô
 +×9Ñ9ØØØØØØØ#ÜŸ™ô%ˆô )¨¯©¸ÓA‰ˆ�Ü˜WŸ^™^¨VÜ 2°7·>±>Ó BÀGØ )ô	+ð 	×Ñœ G¨TÓ2Õ3r   c           
      óR  — t         j                  }t         j                  }t        j                  t
        «      }|j                  «        |j                  «        t        j                  t        j                  t        j                  f}t        ||||d «      \  }}}}t        j                  |||dd ||t        j                  ¬«      }	t        |j                  |«      \  }
}t!        |j                  |
t#        |j                  «      ||«       | j%                  t'        |d«      «       y )Nr   r>   r   )r	   rF   rG   r   rH   r    rI   r   rJ   r   r
   rK   r   rL   r   r-   r   r   Ú
assertTruer:   rN   s               r   Útest2zTestCopyPropagate.test2[   sò   € Ü×-Ñ-ˆ	Ü×-Ñ-ˆ	Ü×'Ñ'Ô(;Ó<ˆØ×ÑÔØ×ÑÔÜ—‘œUŸ[™[¬%¯+©+Ð6ˆÜ-AÀ)ØDMØDKØDHØDHó	.JÑ*ˆ�˜i¨ô
 +×9Ñ9ØØØØØØØ#ÜŸ™ô%ˆô )¨¯©¸ÓA‰ˆ�Ü˜WŸ^™^¨VÔ5GÈÏÉÓ5WÐY`ÐbkÔlà�‰œ
 7¨CÓ0Õ1r   c                 ó  — d„ } t        t        ¬«      |«      }| j                   |d«       |d«      «       |j                  |j                  d      j
                  d   }| j                  t        |j                  «      dk(  «       t        t        |j                  j                  «       «      «      }d}|j                  D ]¬  }t        |t        j                  «      sŒ|j                   j"                  dk(  sŒ8d	}| j                  t        |j$                  t        j&                  «      xr> |j$                  j(                  d
k(  xr# |j$                  j*                  j"                  dk(  «       Œ® | j                  |«       y)z”make sure Interpreter._remove_unused_temporaries() has removed extra copies
        in the IR in simple cases so copy propagation is faster
        c                 ó   — | dz   }|S )Nr   r   )r   r   s     r   Ú	test_implz?TestCopyPropagate.test_input_ir_extra_copies.<locals>.test_imply   s   € Ø�A‘ˆAØˆHr   )Úpipeline_classé   r   Úpreserved_irr   Fr   TÚbinopr   N)r   r   ÚassertEqualÚ	overloadsÚ
signaturesÚmetadatarY   Úlenr-   ÚnextÚiterÚvaluesr0   r1   r   r2   r3   r'   ÚvalueÚExprÚopÚlhs)rO   r]   Új_funcÚfirr7   Úb_foundÚstmts          r   Útest_input_ir_extra_copiesz,TestCopyPropagate.test_input_ir_extra_copiesu   s%  € ò	ð ?”Ô%=Ô>¸yÓIˆØ×Ñ™ 1›¡v¨a£yÔ1ð ×Ñ˜v×0Ñ0°Ñ3Ñ4×=Ñ=¸nÑMˆØ�‰œ˜CŸJ™J›¨1Ñ,Ô-Ü”T˜#Ÿ*™*×+Ñ+Ó-Ó.Ó/ˆØˆØ—J”JˆDÜ˜$¤§	¡	Õ*¨t¯{©{×/?Ñ/?À3Ó/FØ�Ø—‘¤
¨4¯:©:´r·w±wÓ ?ò !PØŸ
™
Ÿ™¨Ñ0ò!PØ59·Z±Z·^±^×5HÑ5HÈCÑ5OõQð ð 	�‰˜Õ r   c                 óŽ  — d„ }d„ }d„ } G d„ d«      }| j                   |d«       t        |«      d«      «       | j                   |t        j                  d«      dd«       t        |«      t        j                  d«      dd«      «       | j                   | |«       d«        t	        d	¬
«      |«       |«       d«      «       y)z„make sure Interpreter._remove_unused_temporaries() does not generate
        invalid code for rare chained assignment cases
        c                 ó   — | dz   x}}||fS )Nr   r   )r   r   r"   s      r   Úimpl1zDTestCopyPropagate.test_input_ir_copy_remove_transform.<locals>.impl1’   s   € Ø˜‘EˆMˆA�Ø�q�6ˆMr   c                 ó*   — |dz   x}| |<   || |   dz   fS ©Nr   r   r   )ÚAr*   r   r   s       r   Úimpl2zDTestCopyPropagate.test_input_ir_copy_remove_transform.<locals>.impl2—   s&   € Ø˜1‘uÐˆA��!‘Ø�a˜‘d˜Q‘h�;Ðr   c                 ó<   — |dz   x}| _         || j                   dz   fS rw   )r   )rx   r   r   s      r   Úimpl3zDTestCopyPropagate.test_input_ir_copy_remove_transform.<locals>.impl3œ   s#   € Ø˜!‘eˆOˆA�”Ø�a—c‘c˜A‘g�:Ðr   c                   ó   — e Zd Zy)ú@TestCopyPropagate.test_input_ir_copy_remove_transform.<locals>.CN)Ú__name__Ú
__module__Ú__qualname__r   r   r   ÚCr}       s   „ Ør   r�   r_   r   r   T)ÚforceobjN)rb   r   ÚnpÚonesr   )rO   ru   ry   r{   r�   s        r   Ú#test_input_ir_copy_remove_transformz5TestCopyPropagate.test_input_ir_copy_remove_transform�   s¤   € ò
	ò
	ò
	÷	ñ 	ð 	×Ñ™˜q› ;¤4¨£;¨q£>Ô2Ø×Ñ™œrŸw™w q›z¨1¨aÓ0°+´$°u³+¼b¿g¹gÀa»jÈ!ÈQÓ2OÔPØ×Ñ™™q›s A›Ð(AÐ(:¬°TÔ(:¸5Ó(AÁ!Ã#ÀqÓ(IÕJr   N)r~   r   r€   rW   rZ   rr   r…   r   r   r   r<   r<   >   s   „ ò4ò82ò4!ó0Kr   r<   Ú__main__) Únumbar   r   Ú
numba.corer   r   r   r   Únumba.core.registryr	   Únumba.core.annotationsr
   Únumba.core.ir_utilsr   r   r   Únumba.core.typed_passesr   Únumba.tests.supportr   Únumpyrƒ   Úunittestr   r    r$   r+   r:   ÚTestCaser<   r~   Úmainr   r   r   Ú<module>r’      sv   ð÷ ß 2Ó 2Ý *Ý 3÷0ñ 0å 8Ý 8Û Û òòò
òòôgK˜×)Ñ)ô gKðT ˆzÒØ€H‡M�M…Oð r   