§
    ƒÛgÓq  ã                   óÌ  — 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m	Z	m
Z
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 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"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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; d dl<m=Z=m>Z> d dl?m@Z@mAZAmBZB  G d„ de@¦  «        ZC eC¦   «         ZDdeD_E        g d¢ZF G d„ d edeF¦  «        ¦  «        ZG edg d¢¦  «        ZHd„ ZId„ ZJdeDi fd„ZKd,d„ZL G d„ deM¦  «        ZN G d„ deO¦  «        ZP G d„ d eQ¦  «        ZRd!„ ZS G d"„ d#eM¦  «        ZT G d$„ d%eT¦  «        ZU G d&„ d'eM¦  «        ZVdeUfd(„ZWd)dddeUfd*„ZXd+„ ZYdS )-é    )Ú
namedtupleN)Úevent)	ÚutilsÚerrorsÚtypingÚinterpreterÚbytecodeÚpostprocÚconfigÚcallconvÚcpu)ÚParforDiagnostics)ÚCompilerError)Úlookup_environment)ÚPassManager)ÚExtractByteCodeÚTranslateByteCodeÚ	FixupArgsÚIRProcessingÚDeadBranchPruneÚRewriteSemanticConstantsÚInlineClosureLikesÚGenericRewritesÚWithLiftingÚInlineInlinablesÚFindLiterallyCallsÚMakeFunctionToJitFunctionÚCanonicalizeLoopExitÚCanonicalizeLoopEntryÚLiteralUnrollÚReconstructSSAÚRewriteDynamicRaisesÚ!LiteralPropagationSubPipelinePassÚRVSDGFrontend)ÚNopythonTypeInferenceÚAnnotateTypesÚNopythonRewritesÚPreParforPassÚ
ParforPassÚDumpParforDiagnosticsÚIRLegalizationÚNoPythonBackendÚInlineOverloadsÚPreLowerStripPhisÚNativeLoweringÚNativeParforLoweringÚ"NoPythonSupportedFeatureValidationÚParforFusionPassÚParforPreLoweringPass)ÚObjectModeFrontEndÚObjectModeBackEnd)ÚTargetConfigÚOptionÚConfigStackc                   ó  — e Zd Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z	 eedd	¬¦  «        Z
 eedd
¬¦  «        Z eedd
¬¦  «        Z eedd
¬¦  «        Z eedd¬¦  «        Z eedd
¬¦  «        Z eedd
¬¦  «        Z eej         ej        d¦  «        d¬¦  «        Z eedd
¬¦  «        Z eedd
¬¦  «        Z eedd
¬¦  «        Z eej         ej        d¦  «        d
¬¦  «        Z eedd
¬¦  «        Z eej         ej        d¦  «        d
¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z eedd¬¦  «        Z dS )ÚFlagsFzEnable loop-lifting)ÚtypeÚdefaultÚdocz!Enable pyobject mode (in general)z(Enable pyobject mode inside lifted loopsTz
Enable SSAz-Force pyobject mode inside the whole functionz&Release GIL inside the native functionÚTODOz7Force inlining of the function. Overrides _dbg_optnone.zŽEnable automatic parallel optimization, can be fine-tuned by
taking a dictionary of sub-options instead of a boolean, see parfor.py for
detailÚpythonÚneverr   ÚbackendzTExtend variable lifetime for debugging. This automatically turns on with debug=True.z\Disable optimization for debug. Equivalent to adding optnone attribute in the LLVM Function.zDMake debug emissions directives-only. Used when generating lineinfo.N)!Ú__name__Ú
__module__Ú__qualname__r7   ÚboolÚenable_loopliftÚenable_pyobjectÚenable_pyobject_loopliftÚ
enable_ssaÚforce_pyobjectÚrelease_gilÚ
no_compileÚ	debuginfoÚboundscheckÚforceinlineÚno_cpython_wrapperÚno_cfunc_wrapperr   ÚParallelOptionsÚauto_parallelÚnrtÚno_rewritesÚstrÚerror_modelÚFastMathOptionsÚfastmathÚnoaliasÚInlineOptionsÚinlineÚtarget_backendÚdbg_extend_lifetimesÚdbg_optnoneÚdbg_directives_only© ó    úI/granary/edev/quantum/lib/python3.11/site-packages/numba/core/compiler.pyr:   r:   +   sC  € € € € € Ø�fØØØ!ðñ ô €Oð
 �fØØØ/ðñ ô €Oð
  &˜vØØØ6ð ñ  ô  Ðð
 �ØØØðñ ô €Jð
 �VØØØ;ðñ ô €Nð
 �&ØØØ4ðñ ô €Kð
 �ØØØðñ ô €Jð
 �ØØØðñ ô €Ið
 �&ØØØðñ ô €Kð
 �&ØØØEðñ ô €Kð
  ˜ØØØðñ ô Ðð
 �vØØØðñ ô Ðð
 �FØÔ Ø#�Ô# EÑ*Ô*ð
ðñ ô €Mð ˆ&ØØØðñ ô €Cð
 �&ØØØðñ ô €Kð
 �&ØØØðñ ô €Kð
 ˆvØÔ Ø#�Ô# EÑ*Ô*Øðñ ô €Hð
 ˆfØØØðñ ô €Gð
 ˆVØÔØ!�Ô! 'Ñ*Ô*Øðñ ô €Fð �VØØØðñ ô €Nð "˜6ØØð<ðñ ô Ðð �&ØØðLðñ ô €Kð !˜&ØØð.ðñ ô ÐÐÐrb   r:   T)Útyping_contextÚtarget_contextÚentry_pointÚtyping_errorÚtype_annotationÚ	signatureÚ
objectmodeÚliftedÚfndescÚlibraryÚcall_helperÚenvironmentÚmetadataÚreload_initÚreferenced_envsc                   óV   — e Zd ZdZdZd„ Zd„ Zed„ ¦   «         Ze	d„ ¦   «         Z
d
d„Zd	S )ÚCompileResultzI
    A structure holding results from the compilation of a function.
    ra   c                 ó  — | j                              ¦   «         }t          | j        ¦  «        }| j        }dx|_        |_        |                      ¦   «         }|| j        | j        | j	        | j
        | j        || j        t          |¦  «        f	S )zA
        Reduce a CompileResult to picklable components.
        N)rm   Úserialize_using_object_coderV   rh   rl   ÚtypemapÚ	calltypesÚ_find_referenced_environmentsro   ri   rj   rk   rq   Útuple)ÚselfÚlibdataÚtypeannrl   rr   s        rc   Ú_reducezCompileResult._reduceÊ   sƒ   € ð ”,×:Ò:Ñ<Ô<ˆå�dÔ*Ñ+Ô+ˆØ”ˆà,0Ð0ˆŒ˜Ô)à×<Ò<Ñ>Ô>ˆØ˜œ dÔ&6¸¼Ø” ¤¨g°tÔ7GÝ�oÑ&Ô&ð(ð 	(rb   c                 óâ   — | j         j        }g }|j        D ]X}|j        }|                     d¦  «        r:t          |¦  «        }|�)|                     ¦   «         r|                     |¦  «         ŒY|S )z2Returns a list of referenced environments
        Ú_ZN08NumbaEnv)rm   Ú_final_moduleÚglobal_variablesÚnameÚ
startswithr   Ú	can_cacheÚappend)r{   Úmodrr   ÚgvÚgvnÚenvs         rc   ry   z+CompileResult._find_referenced_environmentsÚ   s}   € ð ŒlÔ(ˆàˆØÔ&ð 	4ð 	4ˆBØ”'ˆCØ�~Š~˜oÑ.Ô.ð 4Ý(¨Ñ-Ô-�Ø�?Ø—}’}‘”ð 4Ø'×.Ò.¨sÑ3Ô3Ð3øØÐrb   c                 ó,  — |	r|	D ]} |¦   «          Œ|                      ¦   «                              |¦  «        }|                     |||¦  «        } | ||j        ||||||||d d d |	|
¬¦  «        }|
D ]"}|j                              |j        |¦  «         Œ#|S )N)re   rd   rm   ro   rf   rl   rh   ri   rj   rk   rg   rn   rp   rq   rr   )ÚcodegenÚunserialize_libraryÚget_executablerd   Úset_envÚenv_name)Úclsre   r|   rl   rŠ   ri   rj   rk   r}   rq   rr   Úfnrm   ÚcfuncÚcrs                  rc   Ú_rebuildzCompileResult._rebuildé   sÖ   € ð ð 	à!ð ð �Ø�‘”��à ×(Ò(Ñ*Ô*×>Ò>¸wÑGÔGˆØ×-Ò-¨g°v¸sÑCÔCˆØˆS Ø .Ô =Ø Ø Ø"ØØ!(Ø$Ø&ØØ"Ø!ØØ(Ø!0ðñ ô ˆð$ #ð 	7ð 	7ˆCØŒO×#Ò# C¤L°#Ñ6Ô6Ð6Ð6àˆ	rb   c                 ó4   — | j                              ¦   «         S ©N)re   rŒ   ©r{   s    rc   rŒ   zCompileResult.codegen  s   € àÔ"×*Ò*Ñ,Ô,Ð,rb   Ú c                 óÂ   — t          |› dt          | ¦  «        j        › d| j        › �¦  «         | j                             |dz   ¬¦  «         t          |› d�¦  «         d S )NzDUMP ú z  )ÚtabzEND DUMP)Úprintr;   rB   rf   ri   Údump)r{   rœ   s     rc   rž   zCompileResult.dump  sl   € Ý�ÐCÐC�4 ™:œ:Ô.ÐCÐC°Ô1AÐCÐCÑDÔDÐDØŒ×Ò  d¡
ÐÑ+Ô+Ð+Ý�ÐÐÐÑÔÐÐÐrb   N)r™   )rB   rC   rD   Ú__doc__Ú	__slots__r~   ry   Úclassmethodr•   ÚpropertyrŒ   rž   ra   rb   rc   rt   rt   Ã   sŽ   € € € € € ðð ð €Ið(ð (ð (ð ð ð ð ðð ñ „[ððB ð-ð -ñ „Xð-ð ð  ð  ð  ð  ð  rb   rt   Ú_CompileResultÚ_LowerResult)rl   rn   r“   rŠ   c                 óò   — t          |                      ¦   «         ¦  «        }t          t          ¦  «        }||z
  }|r	t          |Ž ‚||z
  }|D ]}d | |<   Œ| d         }|�|                     d ¦  «        | d<   | S )Nrg   )ÚsetÚkeysÚ	CR_FIELDSÚ	NameErrorÚwith_traceback)Úentriesr§   ÚfieldsetÚbadnamesÚmissingÚkÚerrs          rc   Úsanitize_compile_result_entriesr±     s�   € Ýˆw�|Š|‰~Œ~ÑÔ€DÝ•9‰~Œ~€HØ�h‰€HØð #Ý˜Ð"Ð"Ø˜‰o€GØð ð ˆØˆ�‰
ˆ
à
�.Ô
!€CØ
€Ø"%×"4Ò"4°TÑ":Ô":ˆ�ÑØ€Nrb   c                  ó8   — t          | ¦  «        } t          di | ¤ŽS ©Nra   )r±   rt   )r«   s    rc   Úcompile_resultr´   -  s#   € Ý-¨gÑ6Ô6€GÝÐ#Ð#˜7Ð#Ð#Ð#rb   c           
      óê   — ddl m} t          j        ¦   «         }t	          j        |d¬¦  «        }|                     ||¦  «        5  t          ||| ||||¦  «        cddd¦  «         S # 1 swxY w Y   dS )zp
    Compile the function in an isolated environment (typing and target
    context).
    Good for testing.
    r   )Ú
cpu_targetr   )ÚtargetN)Únumba.core.registryr¶   r   ÚContextr   Ú
CPUContextÚnested_contextÚcompile_extra)ÚfuncÚargsÚreturn_typeÚflagsÚlocalsr¶   Ú	typingctxÚ	targetctxs           rc   Úcompile_isolatedrÄ   2  sÍ   € ð /Ð.Ð.Ð.Ð.Ð.Ý”Ñ Ô €IÝ”˜y°Ð7Ñ7Ô7€Ià	×	"Ò	" 9¨iÑ	8Ô	8ð ,ð ,Ý˜Y¨	°4¸¸{Ø" Fñ,ô ,ð,ð ,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s   ÁA(Á(A,Á/A,Fc                 óŠ  — t           j                             | ¦  «        }t          j        |¦  «        }t          j        |¬¦  «        }|                     |¦  «        }|r:ddlm}  ||t          j
        d¦  «        i d¦  «        }|                     ¦   «          t          j        |¦  «        }	|	                     |¦  «         |S )a  
    Run the compiler frontend over the given Python function, and return
    the function's canonical Numba IR.

    If inline_closures is Truthy then closure inlining will be run
    If emit_dels is Truthy the ir.Del nodes will be emitted appropriately
    )Úfunc_idr   )ÚInlineClosureCallPassF)r	   ÚFunctionIdentityÚfrom_functionr   ÚInterpreterÚByteCodeÚ	interpretÚnumba.core.inline_closurecallrÇ   r   rR   Úrunr
   ÚPostProcessor)
r½   Úinline_closuresÚ	emit_delsrÆ   ÚinterpÚbcÚfunc_irrÇ   Úinline_passÚ	post_procs
             rc   Úrun_frontendr×   B  sÇ   € õ Ô'×5Ò5°dÑ;Ô;€GÝÔ$ WÑ-Ô-€FÝ	Ô	 7Ð	+Ñ	+Ô	+€BØ×Ò˜rÑ"Ô"€GØð ØGÐGÐGÐGÐGÐGØ+Ð+¨GµSÔ5HÈÑ5OÔ5OØ,.°ñ7ô 7ˆà�ŠÑÔÐÝÔ& wÑ/Ô/€IØ‡M‚M�)ÑÔÐØ€Nrb   c                   ó&   — e Zd ZdZddgZd„ Zd„ ZdS )Ú_CompileStatuszC
    Describes the state of compilation. Used like a C record.
    Úfail_reasonÚcan_fallbackc                 ó"   — d | _         || _        d S r—   )rÚ   rÛ   )r{   rÛ   s     rc   Ú__init__z_CompileStatus.__init___  s   € ØˆÔØ(ˆÔÐÐrb   c           
      ó´   — g }| j         D ]:}|                     d                     |t          | |¦  «        ¬¦  «        ¦  «         Œ;d                     |¦  «        S )Nz{k}={v})r¯   Úvz, )r    r†   ÚformatÚgetattrÚjoin)r{   Úvalsr¯   s      rc   Ú__repr__z_CompileStatus.__repr__c  s\   € ØˆØ”ð 	Cð 	CˆAØ�KŠK˜	×(Ò(¨1µ¸¸aÑ0@Ô0@Ð(ÑAÔAÑBÔBÐBÐBØ�yŠy˜‰ŒÐrb   N)rB   rC   rD   rŸ   r    rÝ   rä   ra   rb   rc   rÙ   rÙ   Y  sH   € € € € € ðð ð  Ð/€Ið)ð )ð )ðð ð ð ð rb   rÙ   c                   ó   — e Zd ZdZd„ ZdS )Ú_EarlyPipelineCompletionz@
    Raised to indicate that a pipeline has completed early
    c                 ó   — || _         d S r—   )Úresult)r{   rè   s     rc   rÝ   z!_EarlyPipelineCompletion.__init__o  s   € ØˆŒˆˆrb   N)rB   rC   rD   rŸ   rÝ   ra   rb   rc   ræ   ræ   j  s-   € € € € € ðð ðð ð ð ð rb   ræ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú	StateDictz�
    A dictionary that has an overloaded getattr and setattr to permit getting
    and setting key/values through the use of attributes.
    c                 óN   — 	 | |         S # t           $ r t          |¦  «        ‚w xY wr—   )ÚKeyErrorÚAttributeError)r{   Úattrs     rc   Ú__getattr__zStateDict.__getattr__y  s:   € ð	'Ø˜”:ÐøÝð 	'ð 	'ð 	'Ý  Ñ&Ô&Ð&ð	'øøøs   ‚
 Š$c                 ó   — || |<   d S r—   ra   )r{   rî   Úvalues      rc   Ú__setattr__zStateDict.__setattr__  s   € ØˆˆT‰
ˆ
ˆ
rb   N)rB   rC   rD   rŸ   rï   rò   ra   rb   rc   rê   rê   s  s<   € € € € € ðð ð
'ð 'ð 'ðð ð ð ð rb   rê   c                 óê   — i }|j         rd|d<   |j        rd|d<   |j        rd|d<   |j        r
|j        |d<   |j        r
|j        |d<   t          j        |j        | ¦  «        }||d<    | j        di |¤ŽS )	zL
    Make a new target context from the given target context and flags.
    TÚenable_debuginfoÚenable_boundscheckÚ
enable_nrtrS   rY   rW   ra   )	rM   rN   rT   rS   rY   r   Úcreate_error_modelrW   Ú	subtarget)rÃ   rÀ   ÚsubtargetoptionsrW   s       rc   Ú_make_subtargetrú   ƒ  s·   € ð ÐØ„ð 4Ø/3ÐÐ+Ñ,ØÔð 6Ø15ÐÐ-Ñ.Ø„yð .Ø)-Ð˜Ñ&ØÔð @Ø,1Ô,?Ð˜Ñ)Ø„~ð 6Ø',¤~Ð˜Ñ$ÝÔ-¨eÔ.?ÀÑKÔK€KØ&1Ð�]Ñ#àˆ9ÔÐ2Ð2Ð!1Ð2Ð2Ð2rb   c                   ó>   — e Zd ZdZd„ Zd„ Zdd„Zd„ Zd„ Zd	„ Z	d
„ Z
dS )ÚCompilerBasez4
    Stores and manages states for the compiler
    c                 ó@  — t          j        ¦   «          |                     ¦   «          |                     ¦   «          t          ¦   «         | _        || j        _        t          ||¦  «        | j        _        || j        _        || j        _	        || j        _
        || j        _        || j        _        d | j        _        d | j        _        d | j        _        d | j        _        d | j        _        d | j        _        d | j        _        d | j        _        i | j        _        g | j        _        | | j        _        t1          ¦   «         | j        _        | j        j        | j        j        d<   i | j        j        d<   t5          | j        j        j        ¬¦  «        | j        _        d S )NÚparfor_diagnosticsÚparfors)rÛ   )r   Úreload_configÚrefreshrê   ÚstaterÂ   rú   rÃ   rm   r¾   r¿   rÀ   rÁ   rÓ   rÆ   rÔ   rk   Úlifted_fromrw   rx   rh   rp   rq   Úpipeliner   rþ   rÙ   rG   Ústatus)r{   rÂ   rÃ   rm   r¾   r¿   rÀ   rÁ   s           rc   rÝ   zCompilerBase.__init__�  sc  € õ 	ÔÑÔÐØ×ÒÑÔÐØ×ÒÑÔÐå‘[”[ˆŒ
à(ˆŒ
ÔÝ.¨y¸%Ñ@Ô@ˆŒ
ÔØ$ˆŒ
ÔØˆŒ
ŒØ!,ˆŒ
ÔØ ˆŒ
ÔØ"ˆŒ
Ôð ˆŒ
ŒØ!ˆŒ
ÔØ!ˆŒ
ÔØ ˆŒ
ÔØ!%ˆŒ
ÔØ!ˆŒ
ÔØ#ˆŒ
ÔØ%)ˆŒ
Ô"à ˆŒ
ÔØ!#ˆŒ
Ôà"ˆŒ
Ôõ ):Ñ(;Ô(;ˆŒ
Ô%àŒJÔ)ð 	Œ
ÔÐ0Ñ1à)+ˆŒ
Ô˜IÑ&å*ØœÔ)Ô9ð
ñ 
ô 
ˆŒ
ÔÐÐrb   c                 óø   — t           j                             |¦  «        | j        _        t          ¦   «                              | j        ¦  «         d| j        _        d | j        _        |  	                    ¦   «         S r³   )
r	   rÈ   rÉ   r  rÆ   r   Úrun_passrk   r  Ú_compile_bytecode)r{   r½   s     rc   r¼   zCompilerBase.compile_extraÇ  s_   € Ý%Ô6×DÒDÀTÑJÔJˆŒ
ÔÝÑÔ×"Ò" 4¤:Ñ.Ô.Ð.àˆŒ
ÔØ!%ˆŒ
ÔØ×%Ò%Ñ'Ô'Ð'rb   ra   Nc                 ó  — |j         | j        _         || j        _        || j        _        || j        _        | j        j        j        | j        _        t          ¦   «                              | j        ¦  «         |  	                    ¦   «         S r—   )
rÆ   r  rk   r  rÔ   Ú	arg_countÚnargsr   r  Ú_compile_ir)r{   rÔ   rk   r  s       rc   Ú
compile_irzCompilerBase.compile_irÏ  sj   € Ø$œ_ˆŒ
ÔØ"ˆŒ
ÔØ!,ˆŒ
ÔØ$ˆŒ
ÔØœ:Ô-Ô7ˆŒ
Ôå‰Œ×Ò˜TœZÑ(Ô(Ð(Ø×ÒÑ!Ô!Ð!rb   c                 ó   — t          ¦   «         ‚)zGChild classes override this to customize the pipelines in use.
        )ÚNotImplementedErrorr˜   s    rc   Údefine_pipelineszCompilerBase.define_pipelinesÙ  s   € õ "Ñ#Ô#Ð#rb   c                 ót  — t          ¦   «                              | j        j                             ¦   «         ¦  «        5  |                      ¦   «         }|D �]}|j        }| j        j        j        ›d| j        j        j	        ›�}t          d|›d|›�¦  «         ||j        i| j        j        d<   ||d         k    }d}	 |                     | j        ¦  «         | j        j        � n…Œ’# t          $ r}|j        }Y d}~ nmd}~wt"          $ rN}t%          j        ¦   «         rt)          |t*          j        ¦  «        s|‚|| j        j        _        |r|‚Y d}~Œÿd}~ww xY wt3          d¦  «        ‚d| j        _        |�|cddd¦  «         S | j        j        €J ‚| j        j        cddd¦  «         S # 1 swxY w Y   dS )z4
        Populate and run compiler pipeline
        ú.z
Pipeline: z for Úpipeline_timeséÿÿÿÿNz!All available pipelines exhausted)r8   Úenterr  rÀ   Úcopyr  Úpipeline_namerÆ   ÚmodnameÚfunc_qualnamer   Ú
exec_timesrp   rÎ   r”   ræ   rè   Ú	Exceptionr   Úuse_new_style_errorsÚ
isinstancer   Ú
NumbaErrorr  rÚ   r   r  )r{   ÚpmsÚpmr  Ú	func_nameÚis_final_pipelineÚresÚes           rc   Ú_compile_corezCompilerBase._compile_coreÞ  sl  € õ ‰]Œ]× Ò  ¤Ô!1×!6Ò!6Ñ!8Ô!8Ñ9Ô9ð (	%ð (	%Ø×'Ò'Ñ)Ô)ˆCØð Iñ I�Ø "Ô 0�Ø'+¤zÔ'9Ô'AÐ'AÐ'AØ'+¤zÔ'9Ô'GÐ'GðI�	õ �¨}¨}¨}¸i¸iÐHÑIÔIÐIØ9FØ9;¼ð9H�”
Ô#Ð$4Ñ5à$&¨#¨b¬'¢MÐ!Ø�ð Ø—F’F˜4œ:Ñ&Ô&Ð&Ø”z”}Ð0Ø˜ð 1øå/ð ð ð Øœ(�CØ�E�E�E�E�EøøøøÝ ð  ð  ð  ÝÔ2Ñ4Ô4ð  Ý& q­&Ô*;Ñ<Ô<ð à˜à45�D”JÔ%Ô1Ø(ð  Ø˜ð ð  ð  ð  ð  øøøøð øøøõ $Ð$GÑHÔHÐHð #'ˆDŒJÔð ˆàðK(	%ð (	%ð (	%ð (	%ñ (	%ô (	%ð (	%ð (	%ðN ”z”}Ð0Ð0Ð0Ø”z”}ðQ(	%ð (	%ð (	%ð (	%ñ (	%ô (	%ð (	%ð (	%ð (	%ð (	%ð (	%ð (	%øøøð (	%ð (	%ð (	%ð (	%ð (	%ð (	%sU   ¾A?F-Â>&C'Ã$F-Ã'
EÃ1C>Ã8F-Ã>EÄAEÅF-ÅEÅ!F-ÆF-Æ-F1Æ4F1c                 óF   — | j         j        �J ‚|                      ¦   «         S )z>
        Populate and run pipeline for bytecode input
        ©r  rÔ   r%  r˜   s    rc   r  zCompilerBase._compile_bytecode  s'   € ð ŒzÔ!Ð)Ð)Ð)Ø×!Ò!Ñ#Ô#Ð#rb   c                 óF   — | j         j        €J ‚|                      ¦   «         S )z8
        Populate and run pipeline for IR input
        r'  r˜   s    rc   r  zCompilerBase._compile_ir  s'   € ð ŒzÔ!Ð-Ð-Ð-Ø×!Ò!Ñ#Ô#Ð#rb   )ra   N)rB   rC   rD   rŸ   rÝ   r¼   r  r  r%  r  r  ra   rb   rc   rü   rü   ˜  sŽ   € € € € € ðð ð(
ð (
ð (
ðT(ð (ð (ð"ð "ð "ð "ð$ð $ð $ð
,%ð ,%ð ,%ð\$ð $ð $ð$ð $ð $ð $ð $rb   rü   c                   ó   — e Zd ZdZd„ ZdS )ÚCompilerzThe default compiler
    c                 ó8  — g }| j         j        j        s2|                     t                               | j         ¦  «        ¦  «         | j         j        j        s| j         j        j        r2|                     t                               | j         ¦  «        ¦  «         |S r—   )	r  rÀ   rJ   r†   ÚDefaultPassBuilderÚdefine_nopython_pipeliner  rÛ   Údefine_objectmode_pipeline)r{   r  s     rc   r  zCompiler.define_pipelines  sŠ   € àˆØŒzÔÔ.ð 	PØ�JŠJÕ)×BÒBÀ4Ä:ÑNÔNÑOÔOÐOØŒ:ÔÔ)ð 	¨T¬ZÔ-=Ô-Lð 	Ø�JŠJÝ"×=Ò=¸d¼jÑIÔIñô ð ð ˆ
rb   N)rB   rC   rD   rŸ   r  ra   rb   rc   r*  r*    s-   € € € € € ðð ð	ð 	ð 	ð 	ð 	rb   r*  c                   ó¼   — e Zd ZdZedd„¦   «         Zedd„¦   «         Ze	 dd„¦   «         Zedd	„¦   «         Zedd„¦   «         Z	edd„¦   «         Z
edd„¦   «         ZdS )r,  zð
    This is the default pass builder, it contains the "classic" default
    pipelines as pre-canned PassManager instances:
      - nopython
      - objectmode
      - interpreted
      - typed
      - untyped
      - nopython lowering
    Únopythonc                 ó’  — t           }t          |¦  «        }|                     | ¦  «        }|j                             |j        ¦  «         |                     | ¦  «        }|j                             |j        ¦  «         |                     | ¦  «        }|j                             |j        ¦  «         |                     ¦   «          |S )z<Returns an nopython mode pipeline based PassManager
        )r,  r   Údefine_untyped_pipelineÚpassesÚextendÚdefine_typed_pipelineÚ!define_nopython_lowering_pipelineÚfinalize)r  rƒ   Údpbr   Úuntyped_passesÚtyped_passesÚlowering_passess          rc   r-  z+DefaultPassBuilder.define_nopython_pipeline6  s¬   € õ
 !ˆÝ˜ÑÔˆØ×4Ò4°UÑ;Ô;ˆØ
Œ	×Ò˜Ô.Ñ/Ô/Ð/à×0Ò0°Ñ7Ô7ˆØ
Œ	×Ò˜Ô,Ñ-Ô-Ð-à×?Ò?ÀÑFÔFˆØ
Œ	×Ò˜Ô/Ñ0Ô0Ð0à
�Š‰ŒˆØˆ	rb   Únopython_loweringc                 óê  — t          |¦  «        }|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         | j        j        j        r|                     t          d¦  «         n|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     ¦   «          |S )Nú3ensure features that are in use are in a valid formú$ensure IR is legal prior to loweringúannotate typesúnative parfor loweringúnative loweringúnopython mode backendzdump parfor diagnostics)r   Úadd_passr1   r+   r&   rÀ   rS   Úenabledr0   r/   r,   r*   r7  ©r  rƒ   r   s      rc   r6  z4DefaultPassBuilder.define_nopython_lowering_pipelineI  sÛ   € å˜ÑÔˆà
�ŠÕ6ØIñ	Kô 	Kð 	Kà
�Š•NØ:ñ	<ô 	<ð 	<ð 	�Š•MÐ#3Ñ4Ô4Ð4àŒ;Ô$Ô,ð 	;Ø�KŠKÕ,Ð.FÑGÔGÐGÐGà�KŠK�Ð(9Ñ:Ô:Ð:Ø
�Š•OÐ%<Ñ=Ô=Ð=Ø
�ŠÕ)Ð+DÑEÔEÐEØ
�Š‰ŒˆØˆ	rb   Úparfor_gufunc_nopython_loweringc                 ó´  — t          |¦  «        }|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         | j        j        j        r|                     t          d¦  «         n|                     t          d¦  «         |                     t          d¦  «         |                     ¦   «          |S )Nr>  r?  r@  rA  rB  rC  )r   rD  r1   r+   r&   rÀ   rS   rE  r0   r/   r,   r7  rF  s      rc   Ú/define_parfor_gufunc_nopython_lowering_pipelinezBDefaultPassBuilder.define_parfor_gufunc_nopython_lowering_pipeline]  sÇ   € õ ˜ÑÔˆà
�ŠÕ6ØIñ	Kô 	Kð 	Kà
�Š•NØ:ñ	<ô 	<ð 	<ð 	�Š•MÐ#3Ñ4Ô4Ð4àŒ;Ô$Ô,ð 	;Ø�KŠKÕ,Ð.FÑGÔGÐGÐGà�KŠK�Ð(9Ñ:Ô:Ð:Ø
�Š•OÐ%<Ñ=Ô=Ð=Ø
�Š‰ŒˆØˆ	rb   Útypedc                 óX  — t          |¦  «        }|                     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¦  «         |                     ¦   «          |S )	ú/Returns the typed part of the nopython pipelineúnopython frontendúremove phis nodeszinline overloaded functionszPreprocessing for parforsúnopython rewriteszconvert to parforszfuse parforsúparfor prelowering)r   rD  r%   r.   r-   rÀ   rS   rE  r(   rU   r'   r)   r2   r3   r7  rF  s      rc   r5  z(DefaultPassBuilder.define_typed_pipelineq  s  € õ ˜ÑÔˆà
�ŠÕ)Ð+>Ñ?Ô?Ð?ð 	�ŠÕ%Ð':Ñ;Ô;Ð;ð 	�Š•OÐ%BÑCÔCÐCØŒ;Ô$Ô,ð 	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à
�Š‰ŒˆØˆ	rb   Úparfor_gufunc_typedc                 ó   — t          |¦  «        }| j        sJ ‚|                     t          d¦  «         |                     t          d¦  «         |                     t
          d¦  «         |                     ¦   «          |S )rL  úprocessing IRrM  rP  )r   rÔ   rD  r   r%   r3   r7  rF  s      rc   Údefine_parfor_gufunc_pipelinez0DefaultPassBuilder.define_parfor_gufunc_pipeline‰  sq   € õ ˜ÑÔˆØŒ}ÐÐÐØ
�Š•L /Ñ2Ô2Ð2Ø
�ŠÕ)Ð+>Ñ?Ô?Ð?Ø
�ŠÕ)Ð+?Ñ@Ô@Ð@à
�Š‰ŒˆØˆ	rb   Úuntypedc                 óÌ  — t          |¦  «        }t          j        rY| j        €6|                     t
          d¦  «         |                     t          d¦  «         |                     t          d¦  «         nX| j        €6|                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         | j        j        sQ|                     t          d¦  «         |                     t          d	¦  «         |                     t          d
¦  «         |                     t           d¦  «         |                     t"          d¦  «         |                     t$          d¦  «         | j        j        s|                     t          d	¦  «         |                     t&          d¦  «         |                     t(          d¦  «         | j        j        r|                     t,          d¦  «         |                     t.          d¦  «         |                     ¦   «          |S )z0Returns an untyped part of the nopython pipelineNzrvsdg frontendúfix up argsrS  úanalyzing bytecodezHandle with contextsú(inline calls to locally defined closureszrewrite semantic constantszdead branch pruningrO  zrewrite dynamic raisesú(convert make_function into JIT functionszinline inlinable functionszfind literally callszhandles literal_unrollÚssazLiteral propagation)r   r   ÚUSE_RVSDG_FRONTENDrÔ   rD  r$   r   r   r   r   r   rÀ   rU   r   r   r   r"   r   r   r   r    rI   r!   r#   r7  rF  s      rc   r2  z*DefaultPassBuilder.define_untyped_pipeline•  s  € õ ˜ÑÔˆÝÔ$ð 		7ØŒ}Ð$Ø—’�MÐ+;Ñ<Ô<Ð<Ø—’�I }Ñ5Ô5Ð5Ø�KŠK� oÑ6Ô6Ð6Ð6àŒ}Ð$Ø—’Õ-Ð/CÑDÔDÐDØ—’�I }Ñ5Ô5Ð5Ø�KŠK� oÑ6Ô6Ð6à
�Š•KÐ!7Ñ8Ô8Ð8ð 	�ŠÕ&Ø>ñ	@ô 	@ð 	@ð Œ{Ô&ð 	>Ø�KŠKÕ0Ð2NÑOÔOÐOØ�KŠK�Ð)>Ñ?Ô?Ð?Ø�KŠK�Ð)<Ñ=Ô=Ð=à
�ŠÕ(Ð*BÑCÔCÐCð 	�ŠÕ-Ø>ñ	@ô 	@ð 	@ð 	�ŠÕ$Ð&BÑCÔCÐCØŒ{Ô&ð 	@Ø�KŠK�Ð)>Ñ?Ô?Ð?à
�ŠÕ&Ð(>Ñ?Ô?Ð?Ø
�Š•MÐ#;Ñ<Ô<Ð<àŒ;Ô!ð 	/Ø�KŠK�¨Ñ.Ô.Ð.à
�ŠÕ5Ð7LÑMÔMÐMà
�Š‰ŒˆØˆ	rb   Úobjectc                 óä  — t          |¦  «        }| j        €7|                     t          d¦  «         |                     t          d¦  «         n|                     t
          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d	¦  «         |                     t          d
¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     t          d¦  «         |                     ¦   «          |S )z:Returns an object-mode pipeline based PassManager
        NrX  rW  rN  rS  zcanonicalize loop entryzcanonicalize loop exitzobject mode frontendrY  rZ  r?  r@  zobject mode backend)r   rÔ   rD  r   r   r.   r   r   r   r4   r   r   r+   r&   r5   r7  rF  s      rc   r.  z-DefaultPassBuilder.define_objectmode_pipelineÉ  sH  € õ ˜ÑÔˆØŒ=Ð Ø�KŠKÕ)Ð+?Ñ@Ô@Ð@Ø�KŠK�	 =Ñ1Ô1Ð1Ð1ð �KŠKÕ)Ð+>Ñ?Ô?Ð?Ø
�Š•L /Ñ2Ô2Ð2ð 	�ŠÕ)Ð+DÑEÔEÐEØ
�ŠÕ(Ð*BÑCÔCÐCà
�ŠÕ&Ð(>Ñ?Ô?Ð?Ø
�ŠÕ&Ø>ñ	@ô 	@ð 	@ð 	�ŠÕ-Ø>ñ	@ô 	@ð 	@à
�Š•NÐ$JÑKÔKÐKØ
�Š•MÐ#3Ñ4Ô4Ð4Ø
�ŠÕ%Ð'<Ñ=Ô=Ð=Ø
�Š‰ŒˆØˆ	rb   N)r0  )r<  )rG  )rJ  )rQ  )rU  )r]  )rB   rC   rD   rŸ   Ústaticmethodr-  r6  rI  r5  rT  r2  r.  ra   rb   rc   r,  r,  +  s  € € € € € ð	ð 	ð ðð ð ñ „\ðð$ ðð ð ñ „\ðð& à9ðð ð ñ „\ðð& ðð ð ñ „\ðð. ð	ð 	ð 	ñ „\ð	ð ð1ð 1ð 1ñ „\ð1ðf ðð ð ñ „\ðð ð rb   r,  c	           	      óN   —  || ||||||¦  «        }	|	                      |¦  «        S )aD  Compiler entry point

    Parameter
    ---------
    typingctx :
        typing context
    targetctx :
        target context
    func : function
        the python function to be compiled
    args : tuple, list
        argument types
    return_type :
        Use ``None`` to indicate void return
    flags : numba.compiler.Flags
        compiler flags
    library : numba.codegen.CodeLibrary
        Used to store the compiled code.
        If it is ``None``, a new CodeLibrary is used.
    pipeline_class : type like numba.compiler.CompilerBase
        compiler pipeline
    )r¼   )
rÂ   rÃ   r½   r¾   r¿   rÀ   rÁ   rm   Úpipeline_classr  s
             rc   r¼   r¼   è  s:   € ð0 ˆ~˜i¨°GØ" K°¸ñ@ô @€Hà×!Ò! $Ñ'Ô'Ð'rb   ra   c           	      ó  ‡ ‡‡‡‡‡‡‡
‡— |	rÒt          j        |¦  «        }d|_        ˆˆ
ˆˆˆˆˆˆˆ f	d„} ||                      ¦   «         |¦  «        }d}|j        szt          j        ¦   «         5  t          j        dt          j        ¦  «         	  ||                      ¦   «         |¦  «        }n# t          $ r Y nw xY wddd¦  «         n# 1 swxY w Y   |�|}n|}|S  ‰‰ ‰‰
‰‰|‰¦  «        }| 	                    |‰‰¬¦  «        S )zK
    Compile a function with the given IR.

    For internal use only.
    Tc           	      óV   •	—  ‰‰‰
‰‰‰	|‰¦  «        }|                      | ‰‰¬¦  «        S )N©rÔ   rk   r  )r  )Úthe_irÚ	the_flagsr  r¾   rm   rk   r  rÁ   ra  r¿   rÃ   rÂ   s      €€€€€€€€€rc   Úcompile_localz!compile_ir.<locals>.compile_local!  sL   ø€ Ø%�~ i°¸GØ&*¨K¸ÀFñLô LˆHà×&Ò&¨v¸fØ3>ð 'ñ @ô @ð @rb   NÚignorerd  )
r  ÚdeepcopyrU   ÚwarningsÚcatch_warningsÚsimplefilterr   ÚNumbaWarningr  r  )rÂ   rÃ   rÔ   r¾   r¿   rÀ   rÁ   rk   r  Úis_lifted_looprm   ra  Ú
norw_flagsrg  Ú	norw_cresÚrw_cresÚcresr  s   `` `` ``` ``      rc   r  r    sÄ  øøøøøøøøø€ ð ð 3<õ ”] 5Ñ)Ô)ˆ
Ø!%ˆ
Ôð	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð "�M '§,¢,¡.¤.°*Ñ=Ô=ˆ	ð
 ˆØÔ ð 	åÔ(Ñ*Ô*ð ð ÝÔ% hµÔ0CÑDÔDÐDðØ+˜m¨G¯LªL©N¬N¸EÑBÔB�G�GøÝ ð ð ð Ø�Dðøøøð	ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ÐØˆDˆDàˆDØˆð "�> )¨Y¸Ø"&¨°U¸FñDô Dˆà×"Ò"¨7¸6Ø/:ð #ñ <ô <ð 	<s6   Á. C
ÂB.Â-C
Â.
B;Â8C
Â:B;Â;C
Ã
CÃCc           	      óV   — t          | ||||||¦  «        }|                     |¦  «        S )z 
    For internal use only.
    )r*  r¼   )	rÂ   rÃ   rm   r½   r¾   r¿   rÀ   rÁ   r  s	            rc   Úcompile_internalrt  E  s6   € õ
 ˜	 9¨gØ˜k¨5°&ñ:ô :€Hà×!Ò! $Ñ'Ô'Ð'rb   )FF)ZÚcollectionsr   r  rj  Únumba.core.tracingr   Ú
numba.corer   r   r   r   r	   r
   r   r   r   Únumba.parfors.parforr   Únumba.core.errorsr   Únumba.core.environmentr   Únumba.core.compiler_machineryr   Únumba.core.untyped_passesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   Únumba.core.typed_passesr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   Únumba.core.object_mode_passesr4   r5   Únumba.core.targetconfigr6   r7   r8   r:   ÚDEFAULT_FLAGSrT   r¨   rt   r¤   r±   r´   rÄ   r×   r]  rÙ   r  ræ   Údictrê   rú   rü   r*  r,  r¼   r  rt  ra   rb   rc   ú<module>r‚     s4  ðØ "Ð "Ð "Ð "Ð "Ð "Ø €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $ð/ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø +Ð +Ð +Ð +Ð +Ð +Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5à 5Ð 5Ð 5Ð 5Ð 5Ð 5ð)ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð )ð'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð>ð >ð >ð >ð >ð >ð >ð >à EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eð}ð }ð }ð }ð }ˆLñ }ô }ð }ð@ �‘”€Ø€Ô ðð ð €	ð(O ð O ð O ð O ð O �J�JÐ/°Ñ;Ô;ñ O ô O ð O ðd ˆz˜.ð +ð +ð +ñ ô €ðð ð ð $ð $ð $ð
 .2¸Øð,ð ,ð ,ð ,ð ð ð ð ð.ð ð ð ð �Vñ ô ð ð"ð ð ð ð ˜yñ ô ð ðð ð ð ð �ñ ô ð ð 3ð 3ð 3ð*@$ð @$ð @$ð @$ð @$�6ñ @$ô @$ð @$ðFð ð ð ð ˆ|ñ ô ð ð zð zð zð zð z˜ñ zô zð zð| #'°xð(ð (ð (ð (ð< !¨dÀ5Ø¨Hð=<ð =<ð =<ð =<ð@(ð (ð (ð (ð (rb   