§
    ƒÛgK-  ã                   ó\  — d dl Z d dlZd dlmZmZmZmZ d dlm	Z	m
Z
 d dlmZmZ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mZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d d	l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m,Z,m0Z0m1Z1 d d
l2m3Z3m4Z4m5Z5 d dl6Z6 e	ej7        fd¬¦  «        d„ ¦   «         Z8 e	ej7        fd¬¦  «        d„ ¦   «         Z9d„ Z:d„ Z;e
d„ ¦   «         Z< e5dd¬¦  «         G d„ de3¦  «        ¦   «         Z=d„ Z> G d„ dej?        ¦  «        Z@ G d„ de¦  «        ZAeBdk    r e6jC        ¦   «          dS dS )é    N)ÚTestCaseÚoverride_configÚcaptured_stdoutÚskip_parfors_unsupported)ÚjitÚnjit)ÚtypesÚirÚpostprocÚcompiler)ÚguardÚfind_callnameÚ
find_constÚget_definitionÚsimplify_CFG)ÚCPUDispatcher)Úinline_closure_call)
ÚExtractByteCodeÚTranslateByteCodeÚ	FixupArgsÚIRProcessingÚDeadBranchPruneÚRewriteSemanticConstantsÚGenericRewritesÚWithLiftingÚ
PreserveIRÚInlineClosureLikes)ÚNopythonTypeInferenceÚAnnotateTypesÚNopythonRewritesÚPreParforPassÚ
ParforPassÚDumpParforDiagnosticsÚNativeLoweringÚNativeParforLoweringÚIRLegalizationÚNoPythonBackendr$   ÚParforFusionPassÚParforPreLoweringPass)ÚFunctionPassÚPassManagerÚregister_passT©Únopythonc                 ó   — | dz   S ©Né   © ©Úas    úO/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_inlining.pyÚinnerr6      s   € àˆq‰5€Ló    c                 ó:   — t          t          | ¦  «        ¦  «        S ©N©r6   r3   s    r5   Úmorer;       s   € å•�q‘”‰?Œ?Ðr7   c                 ó&   — t          | ¦  «        dz  S ©Né   r:   r3   s    r5   Úouter_simpler?   $   s   € Ý�‰8Œ8�a‰<Ðr7   c                 ó@   — t          | ¦  «        t          | ¦  «        z  S r9   )r6   r;   r3   s    r5   Úouter_multiplerA   '   s   € Ý�‰8Œ8•d˜1‘g”gÑÐr7   c                  ó   — d S r9   r2   r2   r7   r5   Ú	__dummy__rC   *   s   € à
€Fr7   F©Úanalysis_onlyÚmutates_CFGc                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚInlineTestPassÚinline_test_passc                 ó.   — t          j        | ¦  «         d S r9   ©r*   Ú__init__©Úselfs    r5   rL   zInlineTestPass.__init__2   s   € ÝÔ˜dÑ#Ô#Ð#Ð#Ð#r7   c                 ó  — t          |j        j        ¦  «        dk    sJ ‚t          |j        j                             ¦   «         ¦  «        d         }t          |j        ¦  «        D ]Y\  }}t          t          |j        |j	        ¦  «        �4t          |j        i ||d„ |j        |j        d|j        |j        ¦
  «
          nŒZt          j        |j        ¦  «        }|                     ¦   «          |                     ¦   «          dS )Nr1   r   c                  ó   — d S r9   r2   r2   r7   r5   ú<lambda>z)InlineTestPass.run_pass.<locals>.<lambda>;   s   € È€ r7   r2   T)ÚlenÚfunc_irÚblocksÚlistÚvaluesÚ	enumerateÚbodyr   r   Úvaluer   Ú	typingctxÚ	targetctxÚtypemapÚ	calltypesr   ÚPostProcessorÚrunÚremove_dels)rN   ÚstateÚblockÚiÚstmtÚ	post_procs         r5   Úrun_passzInlineTestPass.run_pass5   sò   € å�5”=Ô'Ñ(Ô(¨AÒ-Ð-Ð-Ð-Ý�U”]Ô)×0Ò0Ñ2Ô2Ñ3Ô3°AÔ6ˆÝ  ¤Ñ,Ô,ð 	ð 	‰GˆAˆtÝ•] 5¤=°$´*Ñ=Ô=ÐIÝ# E¤M°2°u¸aÀÀØ$)¤O°U´_ÀbØ$)¤M°5´?ñDô Dð Dð �ð	 Jõ Ô*¨5¬=Ñ9Ô9ˆ	Ø�Š‰ŒˆØ×ÒÑÔÐØˆtr7   N©Ú__name__Ú
__module__Ú__qualname__Ú_namerL   rf   r2   r7   r5   rH   rH   .   s7   € € € € € à€Eð$ð $ð $ðð ð ð ð r7   rH   c                 óZ  — d}t          |¦  «        }|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t
          d¦  «         | j        j        sQ|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d	¦  «         |                     t          d
¦  «         | j        j        j        r|                     t          d¦  «         | j        j        s|                     t           d¦  «         | j        j        j        rQ|                     t"          d¦  «         |                     t$          d¦  «         |                     t&          d¦  «         |                     |d¦  «         |                     t(          d¦  «         |                     t*          d¦  «         |                     t,          d¦  «         | j        j        j        r|                     t.          d¦  «         n|                     t0          d¦  «         |                     t2          d¦  «         |                     t4          d¦  «         |S )NÚinline_testzanalyzing bytecodezfix up argszprocessing IRzHandle with contextsznopython rewriteszrewrite semantic constantszdead branch pruningz(inline calls to locally defined closuresznopython frontendzPreprocessing for parforszconvert to parforszfuse parforszparfor preloweringzinline testz$ensure IR is legal prior to loweringzannotate typeszpreserve IRznative parfor loweringznative loweringznopython mode backendzdump parfor diagnostics)r+   Úadd_passr   r   r   r   ÚflagsÚno_rewritesr   r   r   r   r   Úauto_parallelÚenabledr!   r    r"   r(   r)   r&   r   r   r%   r$   r'   r#   )ra   Ú	test_passÚnameÚpms       r5   Úgen_pipelinerv   F   sJ  € ØˆÝ˜ÑÔˆØ
�ŠÕ%Ð';Ñ<Ô<Ð<Ø
�Š•I˜}Ñ-Ô-Ð-Ø
�Š•L /Ñ2Ô2Ð2Ø
�Š•KÐ!7Ñ8Ô8Ð8àŒ{Ô&ð 	@Ø�KŠK�Ð)<Ñ=Ô=Ð=Ø�KŠKÕ0Ð2NÑOÔOÐOØ�KŠK�Ð)>Ñ?Ô?Ð?Ø
�ŠÕ&Ø>ñ	@ô 	@ð 	@ð 	�ŠÕ)Ð+>Ñ?Ô?Ð?àŒ;Ô$Ô,ð 	DØ�KŠK�Ð'BÑCÔCÐCØŒ{Ô&ð 	?Ø�KŠKÕ(Ð*=Ñ>Ô>Ð>ØŒ;Ô$Ô,ð 	EØ�KŠK�
Ð$8Ñ9Ô9Ð9Ø�KŠKÕ(¨.Ñ9Ô9Ð9Ø�KŠKÕ-Ð/CÑDÔDÐDà
�Š�I˜}Ñ-Ô-Ð-ð 	�Š•NÐ$JÑKÔKÐKØ
�Š•MÐ#3Ñ4Ô4Ð4Ø
�Š•J Ñ.Ô.Ð.ð Œ;Ô$Ô,ð 	;Ø�KŠKÕ,Ð.FÑGÔGÐGÐGà�KŠK�Ð(9Ñ:Ô:Ð:Ø
�Š•OÐ%<Ñ=Ô=Ð=Ø
�ŠÕ)Ð+DÑEÔEÐEØˆ	r7   c                   ó   — e Zd ZdZd„ ZdS )ÚInlineTestPipelinez>compiler pipeline for testing inlining after optimization
    c                 ód   — t          | j        t          ¦  «        }|                     ¦   «          |gS r9   )rv   ra   rH   Úfinalize)rN   ru   s     r5   Údefine_pipelinesz#InlineTestPipeline.define_pipeliness   s'   € Ý˜$œ*¥nÑ5Ô5ˆØ
�Š‰ŒˆØˆtˆr7   N)rh   ri   rj   Ú__doc__r{   r2   r7   r5   rx   rx   p   s-   € € € € € ðð ðð ð ð ð r7   rx   c                   óˆ   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Ze	d„ ¦   «         Z
e	d„ ¦   «         Ze	d	„ ¦   «         Ze	d
„ ¦   «         ZdS )ÚTestInliningzÕ
    Check that jitted inner functions are inlined into outer functions,
    in nopython mode.
    Note that not all inner functions are guaranteed to be inlined.
    We just trust LLVM's inlining heuristics.
    c                 óp   — |                      d¦  «        }dd                     d„ |D ¦   «         ¦  «        z   S )z4
        Make regexpr to match mangled name
        ú.z_ZN?Ú c                 ó8   — g | ]}d                       |¦  «        ‘ŒS )z\d+{})Úformat)Ú.0Úps     r5   ú
<listcomp>z-TestInlining.make_pattern.<locals>.<listcomp>…   s$   € Ð"EÐ"EÐ"E¸! 8§?¢?°1Ñ#5Ô#5Ð"EÐ"EÐ"Er7   )ÚsplitÚjoin)rN   ÚfullnameÚpartss      r5   Úmake_patternzTestInlining.make_pattern€   s;   € ð —’˜sÑ#Ô#ˆØ˜ŸšÐ"EÐ"E¸uÐ"EÑ"EÔ"EÑFÔFÑFÐFr7   c                 óª   — |                       |¦  «        }|                      t          j        ||¦  «        d                     |¦  «        ¬¦  «         d S )Nzexpected {}©Úmsg)r‹   ÚassertIsNotNoneÚreÚsearchrƒ   ©rN   r‰   ÚtextÚpats       r5   Úassert_has_patternzTestInlining.assert_has_pattern‡   s[   € Ø×Ò Ñ)Ô)ˆØ×Ò�RœY s¨DÑ1Ô1Ø!.×!5Ò!5°cÑ!:Ô!:ð 	ñ 	<ô 	<ð 	<ð 	<ð 	<r7   c                 óª   — |                       |¦  «        }|                      t          j        ||¦  «        d                     |¦  «        ¬¦  «         d S )Nzunexpected {}r�   )r‹   ÚassertIsNoner�   r‘   rƒ   r’   s       r5   Úassert_not_has_patternz#TestInlining.assert_not_has_patternŒ   s[   € Ø×Ò Ñ)Ô)ˆØ×Ò�"œ) C¨Ñ.Ô.Ø-×4Ò4°SÑ9Ô9ð 	ñ 	;ô 	;ð 	;ð 	;ð 	;r7   c                 óÎ  — t          dd¦  «        5  t          ¦   «         5 } t          t          j        fd¬¦  «        t
          ¦  «        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                       |d¦  «        d¦  «         |                     ¦   «         }t          }|  	                    d|z  |¦  «         |  
                    d|z  |¦  «         d S )NÚDUMP_ASSEMBLYTr-   r1   é   z%s.outer_simpleú%s.inner)r   r   r   r	   Úint32r?   ÚassertPreciseEqualÚgetvaluerh   r•   r˜   ©rN   ÚoutÚcfuncÚasmÚprefixs        r5   Útest_inner_functionz TestInlining.test_inner_function‘   sw  € Ý˜_¨dÑ3Ô3ð 	Ið 	IÝ Ñ"Ô"ð I cØ:��Uœ[˜N°TÐ:Ñ:Ô:½<ÑHÔH�ðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Ið	Ið 	Ið 	Iñ 	Iô 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Iøøøð 	Ið 	Ið 	Ið 	Ið 	×Ò   a¡¤¨!Ñ,Ô,Ð,ð �lŠl‰nŒnˆÝˆØ×ÒÐ 1°FÑ :¸CÑ@Ô@Ð@Ø×#Ò# J°Ñ$7¸Ñ=Ô=Ð=Ð=Ð=ó4   ‘A. +AÁA.ÁA	ÁA.ÁA	ÁA.Á.A2Á5A2c                 ó   — t          dd¦  «        5  t          ¦   «         5 } t          t          j        fd¬¦  «        t
          ¦  «        }d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                       |d¦  «        d¦  «         |                     ¦   «         }t          }|  	                    d|z  |¦  «         |  
                    d|z  |¦  «         |  
                    d|z  |¦  «         d S )	Nrš   Tr-   r1   é   z%s.outer_multiplez%s.morerœ   )r   r   r   r	   r�   rA   rž   rŸ   rh   r•   r˜   r    s        r5   Útest_multiple_inner_functionsz*TestInlining.test_multiple_inner_functions�   s’  € õ ˜_¨dÑ3Ô3ð 	Kð 	KÝ Ñ"Ô"ð K cØ:��Uœ[˜N°TÐ:Ñ:Ô:½>ÑJÔJ�ðKð Kð Kñ Kô Kð Kð Kð Kð Kð Kð Køøøð Kð Kð Kð Kð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð 	×Ò   a¡¤¨!Ñ,Ô,Ð,Ø�lŠl‰nŒnˆÝˆØ×ÒÐ 3°fÑ <¸cÑBÔBÐBØ×#Ò# I°Ñ$6¸Ñ<Ô<Ð<Ø×#Ò# J°Ñ$7¸Ñ=Ô=Ð=Ð=Ð=r¦   c                 óÂ   — d„ } t          dt          ¬¦  «        |¦  «        }t          j        d¦  «        }|                       ||¦  «         ||¦  «        ¦  «         d S )Nc                 óF   — t          ¦   «          |                      ¦   «         S r9   )rC   Úsum©ÚAs    r5   Ú	test_implz=TestInlining.test_inline_call_after_parfor.<locals>.test_impl¯   s   € Ý‰KŒKˆKØ—5’5‘7”7ˆNr7   T)ÚparallelÚpipeline_classé
   )r   rx   ÚnpÚarangeÚassertEqual)rN   r¯   Új_funcr®   s       r5   Útest_inline_call_after_parforz*TestInlining.test_inline_call_after_parfor«   sq   € ð	ð 	ð 	ð H•˜tÕ4FÐGÑGÔGØDMñOô OˆåŒI�b‰MŒMˆØ×Ò˜˜ 1™œ v v¨a¡y¤yÑ1Ô1Ð1Ð1Ð1r7   c           	      óP  — d„ }t          j        |¦  «        }t          |j                             ¦   «         ¦  «        }|D �]6}t          |j        ¦  «        D �]\  }}t          |t          j	        ¦  «        rýt          |j
        t          j        ¦  «        rÞt          t          ||j
        ¦  «        dk    r¿|j        |j        j                                      |j
        ¦  «         t          j                             t          j        |j        d|j        ¬¦  «        dd|j        ¦  «        |_
        |j        |j        j                                      |j
        ¦  «         t/          |i ||d„ ¦  «          n�Œ�Œ8|                      t3          |j        d         ¦  «        d¦  «         d S )Nc                 ó   — | dk    rd}nd}|S )Nr1   r>   é   r2   ©r4   Úbs     r5   r¯   z=TestInlining.test_inline_update_target_def.<locals>.test_implº   s   € Ø�AŠvˆvØ��à�ØˆHr7   r>   Úmyvar)Úlocr2   c                  ó   — dS r=   r2   r2   r7   r5   rQ   z<TestInlining.test_inline_update_target_def.<locals>.<lambda>Í   s   € Àq€ r7   r¼   )r   Úrun_frontendrU   rT   rV   rW   rX   Ú
isinstancer
   ÚAssignrY   ÚVarr   r   Ú_definitionsÚtargetrt   ÚremoveÚExprÚcallÚscoper¾   Úappendr   rµ   rR   )rN   r¯   rS   rT   rb   rc   rd   s          r5   Útest_inline_update_target_defz*TestInlining.test_inline_update_target_def·   ss  € ð	ð 	ð 	õ Ô'¨	Ñ2Ô2ˆÝ�g”n×+Ò+Ñ-Ô-Ñ.Ô.ˆØð 	ñ 	ˆEÝ$ U¤ZÑ0Ô0ð 
ñ 
‘��4å˜t¥R¤YÑ/Ô/ð µJ¸t¼zÍ2Ì6Ñ4RÔ4Rð Ý!¥*¨g°t´zÑBÔBÀaÒGÐGàÔ(¨¬Ô)9Ô:×AÒAÀ$Ä*ÑMÔMÐMÝ!#¤§¢­b¬f°U´[À'ÈtÌxÐ.XÑ.XÔ.XÐZ\Ð^`ÐbfÔbjÑ!kÔ!k�D”JØÔ(¨¬Ô)9Ô:×AÒAÀ$Ä*ÑMÔMÐMå'¨°°U¸A¸y¸yÑIÔIÐIØ�Eùùà×Ò�˜WÔ1°#Ô6Ñ7Ô7¸Ñ;Ô;Ð;Ð;Ð;r7   c           	      óà  ‡— t          dt          j        i¬¦  «        d„ ¦   «         Šˆfd„}t          j        |¦  «        }t          |j                             ¦   «         ¦  «        }|D ]î}t          |j	        ¦  «        D ]×\  }}t          |t          j        ¦  «        r¸t          |j        t          j        ¦  «        r™|j        j        dk    r‰t!          t"          ||j        j        ¦  «        }t          |t          j        t          j        f¦  «        rCt          |j        t*          ¦  «        r)|j        j        }t/          ||j        |||¦  «        \  }	}
 nŒØŒï|                      d|
v ¦  «         d S )Nr¼   )Úlocalsc                 ó   — | dz   }|S r0   r2   r»   s     r5   Úgz0TestInlining.test_inline_var_dict_ret.<locals>.gÖ   s   € à�A‘ˆAØˆHr7   c                  ó   •—  ‰ d¦  «        S r0   r2   )rÏ   s   €r5   r¯   z8TestInlining.test_inline_var_dict_ret.<locals>.test_implÛ   s   ø€ Ø�1�Q‘4”4ˆKr7   rÈ   )r   r	   Úfloat64r   rÀ   rU   rT   rV   rW   rX   rÁ   r
   rÂ   rY   rÇ   Úopr   r   ÚfuncÚGlobalÚFreeVarr   Úpy_funcr   Ú__globals__Ú
assertTrue)rN   r¯   rS   rT   rb   rc   rd   Úfunc_defrÖ   Ú_Úvar_maprÏ   s              @r5   Útest_inline_var_dict_retz%TestInlining.test_inline_var_dict_retÒ   sp  ø€ õ 
�c�5œ=Ð)Ð	*Ñ	*Ô	*ð	ð 	ñ 
+Ô	*ð	ð	ð 	ð 	ð 	ð 	õ Ô'¨	Ñ2Ô2ˆÝ�g”n×+Ò+Ñ-Ô-Ñ.Ô.ˆØð 	ð 	ˆEÝ$ U¤ZÑ0Ô0ð 
ð 
‘��4Ý˜t¥R¤YÑ/Ô/ð 	Ý& t¤zµ2´7Ñ;Ô;ð	à œJœM¨VÒ3Ð3Ý$¥^°W¸d¼j¼oÑNÔN�HÝ" 8­b¬i½¼Ð-DÑEÔEð Ý *¨8¬>½=Ñ IÔ Iðà"*¤.Ô"8˜Ý%8Ø# WÔ%8¸%ÀÀGñ&Mô &M™
˜˜7à˜øøà�Š˜˜w˜Ñ'Ô'Ð'Ð'Ð'r7   c                 ón  ‡‡— t           dd„¦   «         Šdˆfd„	}t          dd¬¦  «         G ˆfd„dt          ¦  «        ¦   «         Š G ˆfd„d	t          j        ¦  «        } t          |¬
¦  «        |¦  «        }d}|                       ||¦  «         ||¦  «        ¦  «         |                       |¦   «          |¦   «         ¦  «         |j        t          j        d ¦  «        f         j	        d         }t          |j        ¦  «        |_        |                      t          |j        ¦  «        d¦  «         d S )Nc                 ó   — | €dS | S r=   r2   r­   s    r5   Úfooz9TestInlining.test_inline_call_branch_pruning.<locals>.fooó   s   € àˆyØ�qà�r7   c                 ó   •—  ‰| ¦  «        S r9   r2   )r®   rß   s    €r5   r¯   z?TestInlining.test_inline_call_branch_pruning.<locals>.test_implú   s   ø€ Ø�3�q‘6”6ˆMr7   FTrD   c                   ó$   •— e Zd ZdZd„ Zˆ fd„ZdS )úKTestInlining.test_inline_call_branch_pruning.<locals>.PruningInlineTestPassÚpruning_inline_test_passc                 ó.   — t          j        | ¦  «         d S r9   rK   rM   s    r5   rL   zTTestInlining.test_inline_call_branch_pruning.<locals>.PruningInlineTestPass.__init__  s   € ÝÔ% dÑ+Ô+Ð+Ð+Ð+r7   c                 óÐ  •— t          |j        j        ¦  «        dk    sJ ‚t          |j        j                             ¦   «         ¦  «        d         }t          |j        ¦  «        D ]\  }}t          t          |j        |j	        ¦  «        	 �Yt          |j        i ||‰j        |j        |j        |j        |j	        j        d         j                 f|j        |j        ¦
  «
          nŒ€dS )Nr1   r   T)rR   rS   rT   rU   rV   rW   rX   r   r   rY   r   rÖ   rZ   r[   r\   Úargsrt   r]   )rN   ra   rb   rc   rd   rß   s        €r5   rf   zTTestInlining.test_inline_call_branch_pruning.<locals>.PruningInlineTestPass.run_pass  sÚ   ø€ å˜5œ=Ô/Ñ0Ô0°AÒ5Ð5Ð5Ð5Ý˜Uœ]Ô1×8Ò8Ñ:Ô:Ñ;Ô;¸AÔ>�Ý(¨¬Ñ4Ô4ð ð ‘G�A�tÝ�m¨U¬]¸D¼JÑGÔGØ#'ð(å+¨E¬M¸2¸uÀaØœK¨¬¸%¼/Ø"œ]¨4¬:¬?¸1Ô+=Ô+BÔCÐEØ"œ]¨E¬Oñ=ô =ð =ð ˜ð(ð �tr7   Nrg   )rß   s   €r5   ÚPruningInlineTestPassrâ   ý   sB   ø€ € € € € à.ˆEð,ð ,ð ,ðð ð ð ð ð ð r7   rç   c                   ó   •— e Zd Zˆ fd„ZdS )úMTestInlining.test_inline_call_branch_pruning.<locals>.InlineTestPipelinePrunec                 ó\   •— t          | j        ‰¦  «        }|                     ¦   «          |gS r9   )rv   ra   rz   )rN   ru   rç   s     €r5   r{   z^TestInlining.test_inline_call_branch_pruning.<locals>.InlineTestPipelinePrune.define_pipelines  s)   ø€ Ý! $¤*Ð.CÑDÔD�Ø—’‘”�Ø�t�r7   N)rh   ri   rj   r{   )rç   s   €r5   ÚInlineTestPipelinePruneré     s.   ø€ € € € € ðð ð ð ð ð ð r7   rë   )r±   rº   Úpreserved_irr1   r9   )r   r,   r*   r   ÚCompilerBaserµ   Ú	overloadsr	   ÚOmittedÚmetadatar   rT   rR   )rN   r¯   rë   r¶   r®   Úfirrç   rß   s         @@r5   Útest_inline_call_branch_pruningz,TestInlining.test_inline_call_branch_pruningï   sŠ  øø€ õ 
ð	ð 	ð 	ñ 
Œð	ð	ð 	ð 	ð 	ð 	ð 	õ 
 U¸Ð	=Ñ	=Ô	=ð	ð 	ð 	ð 	ð 	ð 	ð 	¥Lñ 	ô 	ñ 
>Ô	=ð	ð(	ð 	ð 	ð 	ð 	ð 	ð 	¥hÔ&;ñ 	ô 	ð 	ð >•Ð%<Ð=Ñ=Ô=¸iÑHÔHˆØˆØ×Ò˜˜ 1™œ v v¨a¡y¤yÑ1Ô1Ð1Ø×Ò˜˜™œ f f¡h¤hÑ/Ô/Ð/ð Ô¥¤¨dÑ 3Ô 3Ð5Ô6Ô?ÀÔOˆÝ! #¤*Ñ-Ô-ˆŒ
Ø×Ò�˜SœZ™œ¨!Ñ,Ô,Ð,Ð,Ð,r7   N)rh   ri   rj   r|   r‹   r•   r˜   r¥   r©   r   r·   rË   rÜ   rò   r2   r7   r5   r~   r~   x   sÜ   € € € € € ðð ðGð Gð Gð<ð <ð <ð
;ð ;ð ;ð

>ð 
>ð 
>ð>ð >ð >ð ð	2ð 	2ñ Ôð	2ð ð<ð <ñ Ôð<ð4 ð(ð (ñ Ôð(ð8 ð2-ð 2-ñ Ôð2-ð 2-ð 2-r7   r~   Ú__main__)Dr�   Únumpyr³   Únumba.tests.supportr   r   r   r   Únumbar   r   Ú
numba.corer	   r
   r   r   Únumba.core.ir_utilsr   r   r   r   r   Únumba.core.registryr   Únumba.core.inline_closurecallr   Únumba.core.untyped_passesr   r   r   r   r   r   r   r   r   r   Únumba.core.typed_passesr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Únumba.core.compiler_machineryr*   r+   r,   Úunittestr�   r6   r;   r?   rA   rC   rH   rv   rí   rx   r~   rh   Úmainr2   r7   r5   ú<module>r      sÛ  ðØ 	€	€	€	Ø Ð Ð Ð ð0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0à Ð Ð Ð Ð Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4ð?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?à -Ð -Ð -Ð -Ð -Ð -Ø =Ð =Ð =Ð =Ð =Ð =ðJð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð Jð
Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð Dð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ €€€à€€e„k€^˜dÐ#Ñ#Ô#ðð ñ $Ô#ðð €€e„k€^˜dÐ#Ñ#Ô#ðð ñ $Ô#ððð ð ðð ð ð ðð ñ „ðð €˜U°Ð5Ñ5Ô5ðð ð ð ð �\ñ ô ñ 6Ô5ðð.(ð (ð (ðTð ð ð ð ˜Ô.ñ ô ð ðj-ð j-ð j-ð j-ð j-�8ñ j-ô j-ð j-ðX ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr7   