§
    .@Äjù†  ã                   ó”  — d dl 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„ Zd„ Zd„ Zd"d	„Z e	d
d¦  «        Z G d„ d
e¦  «        Z G d„ de¦  «        Zd#d„Zd„ Zd„ Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ dej        e¦  «        Z G d„ dej        e¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z G d„ d ej        ¦  «        Z ee¦  «        egej         j!        _"        egej         j#        _"         ee¦  «        gej         j$        _"        ej%        ej         j&        _'        ej%        ej(        ej)        gej         j*        _"        ej%        gej         j+        _"        ej%        gej         j,        _"        ej%        gej         j-        _"        ej%        gej         j.        _"        ej%        gej         j/        _"        ej%        gej         j0        _"        ej%        gej         j1        _"        ej%        gej         j2        _"        ej%        gej         j3        _"        ej%        gej         j4        _"        ej%        gej         j5        _"        ej%        gej         j6        _"        ej%        gej         j7        _"        ej%        gej         j8        _"        ej%        gej         j9        _"        ej%        gej         j:        _"        ej%        gej         j;        _"        ej%        gej         j<        _"        ej%        gej         j=        _"        ej%        gej         j>        _"        ej%        gej         j?        _"        ej%        gej         j@        _"        ej%        gej         jA        _"        ej%        gej         jB        _"        ej%        gej         jC        _"        ej%        gej         jD        _"        ej%        gej         jE        _"        ej%        gej         jF        _"        ej%        gej         jG        _"        ej%        gej         jH        _"        ej%        gej         jI        _"        ej%        gej         jJ        _"        ej%        gej         jK        _"        ej%        gej         jL        _"        ej%        gej         jM        _"        ej%        gej         jN        _"        ej%        gej         jO        _"        ej%        gej         jP        _"        ej%        gej         jQ        _"        ej%        gej         jR        _"        ej%        gej         jS        _"        ej%        gej         jT        _"        ej%        gej         jU        _"        ej%        gej         jV        _"        ej%        gej         jW        _"        ej%        gej         jX        _"        ej%        gej         jY        _"        ej%        gej         jZ        _"        ej%        gej         j[        _"        ej%        gej         j\        _"        ej%        gej         j]        _"        ej%        gej         j^        _"        ej%        gej         j_        _"        ej%        gej         j`        _"        ej%        gej         ja        _"        ej%        gej         jb        _"        ej%        gej         jc        _"        ej%        gej         jd        _"        ej%        gej         je        _"        ej%        gej         jf        _"        ej%        gej         jg        _"        ej%        eegej         jh        _"        eji        ej         jj        _'        eji        ejk        ej)        gej         jl        _"        eji        gej         jm        _"        eji        gej         jn        _"        eji        gej         jo        _"        eji        gej         jp        _"        eji        egej         jq        _"        eji        gej         jr        _"        eji        gej         js        _"        eji        gej         jt        _"        eji        gej         ju        _"        eji        gej         jv        _"        eji        gej         jw        _"        eji        gej         jx        _"        eji        gej         jy        _"        eji        gej         jz        _"        eji        gej         j{        _"        eji        gej         j|        _"        eji        gej         j}        _"        eji        gej         j~        _"        eji        gej         j        _"        eji        gej         j€        _"        eji        gej         j�        _"        eji        gej         j‚        _"        eji        gej         jƒ        _"        eji        gej         j„        _"        eji        gej         j…        _"        eji        gej         j†        _"        eji        gej         j‡        _"        eji        gej         jˆ        _"        eji        gej         j‰        _"        eji        gej         jŠ        _"        eji        gej         j‹        _"        eji        gej         jŒ        _"        eji        gej         j�        _"        eji        gej         jŽ        _"        eji        gej         j�        _"        eji        gej         j�        _"        eji        gej         j‘        _"        eji        gej         j’        _"        eji        gej         j“        _"        eji        gej         j”        _"        eji        eegej         j•        _"        ej–        ej         j—        _'        eej         j˜        _'        ej–        gej         j˜        _"        ej–        egej         j™        _"        eej         jš        _'        ej–        gej         jš        _"        ej–        egej         j›        _"        eej         jœ        _'        ej–        gej         jœ        _"        ej–        egej         j�        _"        eej         jž        _'        ej–        gej         jž        _"        ej–        egej         jŸ        _"        eej         j         _'        ej–        egej         j¡        _"        ej–        gej         j¢        _"        ej)        ej         j£        _'        ej¤        ej–        gej         j£        _"        ej)        gej         j¥        _"        ej¦        ej         j§        _'        ej¦        gej         j¨        _"        ej)        ej¦        gej         j©        _"        ej¦         ee¦  «        gej         jª        _"        ej%        ej         j«        _'        ej)        egej         j«        _"        eji        ej         j¬        _'        ej)        egej         j¬        _"        d!S )$é    )Úc_boolÚc_intÚc_size_tÚPOINTERÚ	StructureÚbyrefÚc_char_p)Ú
namedtuple)ÚIntFlag)Úffic                  ó   — t          ¦   «         S ©N)ÚModulePassManager© ó    úQC:\Projects\Historical\venv\Lib\site-packages\llvmlite/binding/newpassmanagers.pyÚcreate_new_module_pass_managerr      s   € ÝÑÔÐr   c                  ó   — t          ¦   «         S r   )ÚFunctionPassManagerr   r   r   Ú create_new_function_pass_managerr      s   € ÝÑ Ô Ð r   c                 ó"   — t          | |¦  «        S r   )ÚPassBuilder)ÚtmÚptos     r   Úcreate_pass_builderr      s   € Ý�r˜3ÑÔÐr   é   c                 ó    — t          | ¦  «        S r   )ÚPipelineTuningOptions)Úspeed_levels    r   Úcreate_pipeline_tuning_optionsr       s   € Ý  Ñ-Ô-Ð-r   Ú
PruneStatsz&basicblock diamond fanout fanout_raisec                   ó   — e Zd ZdZd„ Zd„ ZdS )r!   z4 Holds statistics from reference count pruning.
    c                 ó  — t          |t          ¦  «        s1d}t          |                     t	          |¦  «        ¦  «        ¦  «        ‚t          | j        |j        z   | j        |j        z   | j        |j        z   | j        |j        z   ¦  «        S )Nz;PruneStats can only be added to another PruneStats, got {}.©	Ú
isinstancer!   Ú	TypeErrorÚformatÚtypeÚ
basicblockÚdiamondÚfanoutÚfanout_raise©ÚselfÚotherÚmsgs      r   Ú__add__zPruneStats.__add__   s€   € Ý˜%¥Ñ,Ô,ð 	5ØOˆCÝ˜CŸJšJ¥t¨E¡{¤{Ñ3Ô3Ñ4Ô4Ð4Ý˜$œ/¨EÔ,<Ñ<Øœ,¨¬Ñ6Øœ+¨¬Ñ4ØÔ+¨eÔ.@Ñ@ñBô Bð 	Br   c                 ó  — t          |t          ¦  «        s1d}t          |                     t	          |¦  «        ¦  «        ¦  «        ‚t          | j        |j        z
  | j        |j        z
  | j        |j        z
  | j        |j        z
  ¦  «        S )NzBPruneStats can only be subtracted from another PruneStats, got {}.r$   r-   s      r   Ú__sub__zPruneStats.__sub__(   s‚   € Ý˜%¥Ñ,Ô,ð 	5ðˆCå˜CŸJšJ¥t¨E¡{¤{Ñ3Ô3Ñ4Ô4Ð4Ý˜$œ/¨EÔ,<Ñ<Øœ,¨¬Ñ6Øœ+¨¬Ñ4ØÔ+¨eÔ.@Ñ@ñBô Bð 	Br   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   r3   r   r   r   r!   r!      sD   € € € € € ðð ðBð Bð BðBð Bð Bð Bð Br   c                   ó*   — e Zd ZdefdefdefdefgZdS )Ú_c_PruneStatsr)   r*   r+   r,   N)r4   r5   r6   r   Ú_fields_r   r   r   r9   r9   3   s5   € € € € € à	�xÐ Ø	�HÐØ	�8ÐØ	˜Ð"ð	$€H€H€Hr   r9   Fc                 óê   — t          dddd¦  «        }t          | ¦  «        }t          j                             t          |¦  «        |¦  «         t          |j        |j        |j	        |j
        ¦  «        S )z± Returns a namedtuple containing the current values for the refop pruning
    statistics. If kwarg `printout` is True the stats are printed to stderr,
    default is False.
    r   )r9   r   r   ÚlibÚLLVMPY_DumpRefPruneStatsr   r!   r)   r*   r+   r,   )ÚprintoutÚstatsÚdo_prints      r   Údump_refprune_statsrA   ;   sg   € õ ˜!˜Q  1Ñ%Ô%€EÝ�hÑÔ€Hå„G×$Ò$¥U¨5¡\¤\°8Ñ<Ô<Ð<Ý�eÔ&¨¬°u´|ØÔ(ñ*ô *ð *r   c                 ó^   — t           j                             t          | ¦  «        ¦  «         dS )z¸Enable or disable the pass timers.

    Parameters
    ----------
    enable : bool
        Set to True to enable the pass timers.
        Set to False to disable the pass timers.
    N)r   r<   ÚLLVMPY_SetTimePassesr   )Úenables    r   Úset_time_passesrE   N   s&   € õ „G× Ò ¥¨¡¤Ñ0Ô0Ð0Ð0Ð0r   c                  ó¸   — t          j        ¦   «         5 } t           j                             | ¦  «         t	          | ¦  «        cddd¦  «         S # 1 swxY w Y   dS )a  Returns the pass timings report and resets the LLVM internal timers.

    Pass timers are enabled by ``set_time_passes()``. If the timers are not
    enabled, this function will return an empty string.

    Returns
    -------
    res : str
        LLVM generated timing report.
    N)r   ÚOutputStringr<   ÚLLVMPY_ReportAndResetTimingsÚstr)Úbufs    r   Úreport_and_reset_timingsrK   Z   s“   € õ 
Ô	Ñ	Ô	ð ˜sÝŒ×,Ò,¨SÑ1Ô1Ð1Ý�3‰xŒxðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ”.AÁAÁAc                   ó4   — e Zd ZdZdZdZdZeez  ez  ez  ZdS )ÚRefPruneSubpassesé   r   é   é   N)r4   r5   r6   ÚPER_BBÚDIAMONDÚFANOUTÚFANOUT_RAISEÚALLr   r   r   rM   rM   j   s6   € € € € € Ø€FØ€GØ€FØ€LØ
�7Ñ
˜VÑ
# lÑ
2€C€C€Cr   rM   c                   ó  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd-d„Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!d!„ Z"d"„ Z#d#„ Z$d$„ Z%d%„ Z&d&„ Z'd'„ Z(d(„ Z)d)„ Z*d*„ Z+d+„ Z,d,S ).ÚNewPassManagerc                 óP   — t          | ¦  «        t          u rt          d¦  «        ‚d S )Nz*Cannot instantiate NewPassManager directly)r(   rW   r&   ©r.   s    r   Ú__init__zNewPassManager.__init__t   s*   € Ý�‰:Œ:�Ð'Ð'ÝÐHÑIÔIÐIð (Ð'r   c                 ó¸   — t          | t          ¦  «        r#t          j                             | ||¦  «         d S t          j                             | ||¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_RunNewModulePassManagerÚ LLVMPY_RunNewFunctionPassManager)r.   ÚIRÚpbs      r   ÚrunzNewPassManager.runx   sV   € Ý�dÕ-Ñ.Ô.ð 	CÝŒG×2Ò2°4¸¸RÑ@Ô@Ð@Ð@Ð@åŒG×4Ò4°T¸2¸rÑBÔBÐBÐBÐBr   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddAAEvaluatorÚLLVMPY_function_AddAAEvaluatorrY   s    r   Úadd_aa_eval_passzNewPassManager.add_aa_eval_pass~   óM   € Ý�dÕ-Ñ.Ô.ð 	9ÝŒG×0Ò0°Ñ6Ô6Ð6Ð6Ð6åŒG×2Ò2°4Ñ8Ô8Ð8Ð8Ð8r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú LLVMPY_module_AddSimplifyCFGPassÚ"LLVMPY_function_AddSimplifyCFGPassrY   s    r   Úadd_simplify_cfg_passz$NewPassManager.add_simplify_cfg_pass„   óM   € Ý�dÕ-Ñ.Ô.ð 	=ÝŒG×4Ò4°TÑ:Ô:Ð:Ð:Ð:åŒG×6Ò6°tÑ<Ô<Ð<Ð<Ð<r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddLoopUnrollPassÚ!LLVMPY_function_AddLoopUnrollPassrY   s    r   Úadd_loop_unroll_passz#NewPassManager.add_loop_unroll_passŠ   óM   € Ý�dÕ-Ñ.Ô.ð 	<ÝŒG×3Ò3°DÑ9Ô9Ð9Ð9Ð9åŒG×5Ò5°dÑ;Ô;Ð;Ð;Ð;r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú LLVMPY_module_AddInstCombinePassÚ"LLVMPY_function_AddInstCombinePassrY   s    r   Úadd_instruction_combine_passz+NewPassManager.add_instruction_combine_pass�   rj   r   éÿÿÿÿc                 ó´   — t          | t          ¦  «        r"t          j                             | |¦  «         d S t          j                             | |¦  «         d S r   )r%   r   r   r<   Ú"LLVMPY_AddJumpThreadingPass_moduleÚ$LLVMPY_AddJumpThreadingPass_function)r.   Ú	thresholds     r   Úadd_jump_threading_passz&NewPassManager.add_jump_threading_pass–   sR   € Ý�dÕ-Ñ.Ô.ð 	JÝŒG×6Ò6°t¸YÑGÔGÐGÐGÐGåŒG×8Ò8¸¸yÑIÔIÐIÐIÐIr   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddCFGPrinterPassÚ!LLVMPY_function_AddCFGPrinterPassrY   s    r   Úadd_cfg_printer_passz#NewPassManager.add_cfg_printer_passœ   ro   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú#LLVMPY_module_AddCFGOnlyPrinterPassÚ%LLVMPY_function_AddCFGOnlyPrinterPassrY   s    r   Úadd_cfg_only_printer_passz(NewPassManager.add_cfg_only_printer_pass¢   óN   € Ý�dÕ-Ñ.Ô.ð 	@ÝŒG×7Ò7¸Ñ=Ô=Ð=Ð=Ð=åŒG×9Ò9¸$Ñ?Ô?Ð?Ð?Ð?r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddDomPrinterÚLLVMPY_function_AddDomPrinterrY   s    r   Úadd_dom_printer_passz#NewPassManager.add_dom_printer_pass¨   óM   € Ý�dÕ-Ñ.Ô.ð 	8ÝŒG×/Ò/°Ñ5Ô5Ð5Ð5Ð5åŒG×1Ò1°$Ñ7Ô7Ð7Ð7Ð7r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddDomOnlyPrinterÚ!LLVMPY_function_AddDomOnlyPrinterrY   s    r   Úadd_dom_only_printer_passz(NewPassManager.add_dom_only_printer_pass®   ro   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddPostDomPrinterÚ!LLVMPY_function_AddPostDomPrinterrY   s    r   Úadd_post_dom_printer_passz(NewPassManager.add_post_dom_printer_pass´   ro   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú#LLVMPY_module_AddPostDomOnlyPrinterÚ%LLVMPY_function_AddPostDomOnlyPrinterrY   s    r   Úadd_post_dom_only_printer_passz-NewPassManager.add_post_dom_only_printer_passº   r‚   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddDomViewerÚLLVMPY_function_AddDomViewerrY   s    r   Úadd_dom_viewer_passz"NewPassManager.add_dom_viewer_passÀ   óM   € Ý�dÕ-Ñ.Ô.ð 	7ÝŒG×.Ò.¨tÑ4Ô4Ð4Ð4Ð4åŒG×0Ò0°Ñ6Ô6Ð6Ð6Ð6r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddDomOnlyViewerÚ LLVMPY_function_AddDomOnlyViewerrY   s    r   Úadd_dom_only_viewer_passz'NewPassManager.add_dom_only_viewer_passÆ   óM   € Ý�dÕ-Ñ.Ô.ð 	;ÝŒG×2Ò2°4Ñ8Ô8Ð8Ð8Ð8åŒG×4Ò4°TÑ:Ô:Ð:Ð:Ð:r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddPostDomViewerÚ LLVMPY_function_AddPostDomViewerrY   s    r   Úadd_post_dom_viewer_passz'NewPassManager.add_post_dom_viewer_passÌ   r�   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú"LLVMPY_module_AddPostDomOnlyViewerÚ$LLVMPY_function_AddPostDomOnlyViewerrY   s    r   Úadd_post_dom_only_viewer_passz,NewPassManager.add_post_dom_only_viewer_passÒ   sM   € Ý�dÕ-Ñ.Ô.ð 	?ÝŒG×6Ò6°tÑ<Ô<Ð<Ð<Ð<åŒG×8Ò8¸Ñ>Ô>Ð>Ð>Ð>r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddADCEPassÚLLVMPY_function_AddADCEPassrY   s    r   Úadd_aggressive_dce_passz&NewPassManager.add_aggressive_dce_passØ   óM   € Ý�dÕ-Ñ.Ô.ð 	6ÝŒG×-Ò-¨dÑ3Ô3Ð3Ð3Ð3åŒG×/Ò/°Ñ5Ô5Ð5Ð5Ð5r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú'LLVMPY_module_AddBreakCriticalEdgesPassÚ)LLVMPY_function_AddBreakCriticalEdgesPassrY   s    r   Úadd_break_critical_edges_passz,NewPassManager.add_break_critical_edges_passÞ   óN   € Ý�dÕ-Ñ.Ô.ð 	DÝŒG×;Ò;¸DÑAÔAÐAÐAÐAåŒG×=Ò=¸dÑCÔCÐCÐCÐCr   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddDSEPassÚLLVMPY_function_AddDSEPassrY   s    r   Úadd_dead_store_elimination_passz.NewPassManager.add_dead_store_elimination_passä   óM   € Ý�dÕ-Ñ.Ô.ð 	5ÝŒG×,Ò,¨TÑ2Ô2Ð2Ð2Ð2åŒG×.Ò.¨tÑ4Ô4Ð4Ð4Ð4r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddDCEPassÚLLVMPY_function_AddDCEPassrY   s    r   Úadd_dead_code_elimination_passz-NewPassManager.add_dead_code_elimination_passê   r´   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú*LLVMPY_module_AddAggressiveInstCombinePassÚ,LLVMPY_function_AddAggressiveInstCombinePassrY   s    r   Úadd_aggressive_instcombine_passz.NewPassManager.add_aggressive_instcombine_passð   sN   € Ý�dÕ-Ñ.Ô.ð 	GÝŒG×>Ò>¸tÑDÔDÐDÐDÐDåŒG×@Ò@ÀÑFÔFÐFÐFÐFr   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddLCSSAPassÚLLVMPY_function_AddLCSSAPassrY   s    r   Úadd_lcssa_passzNewPassManager.add_lcssa_passö   r˜   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddNewGVNPassÚLLVMPY_function_AddNewGVNPassrY   s    r   Úadd_new_gvn_passzNewPassManager.add_new_gvn_passü   r‡   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú!LLVMPY_module_AddLoopSimplifyPassÚ#LLVMPY_function_AddLoopSimplifyPassrY   s    r   Úadd_loop_simplify_passz%NewPassManager.add_loop_simplify_pass  óM   € Ý�dÕ-Ñ.Ô.ð 	>ÝŒG×5Ò5°dÑ;Ô;Ð;Ð;Ð;åŒG×7Ò7¸Ñ=Ô=Ð=Ð=Ð=r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú%LLVMPY_module_AddLoopUnrollAndJamPassÚ'LLVMPY_function_AddLoopUnrollAndJamPassrY   s    r   Úadd_loop_unroll_and_jam_passz+NewPassManager.add_loop_unroll_and_jam_pass  óN   € Ý�dÕ-Ñ.Ô.ð 	BÝŒG×9Ò9¸$Ñ?Ô?Ð?Ð?Ð?åŒG×;Ò;¸DÑAÔAÐAÐAÐAr   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddSCCPPassÚLLVMPY_function_AddSCCPPassrY   s    r   Úadd_sccp_passzNewPassManager.add_sccp_pass  rª   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú LLVMPY_module_AddLowerAtomicPassÚ"LLVMPY_function_AddLowerAtomicPassrY   s    r   Úadd_lower_atomic_passz$NewPassManager.add_lower_atomic_pass  rj   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú LLVMPY_module_AddLowerInvokePassÚ"LLVMPY_function_AddLowerInvokePassrY   s    r   Úadd_lower_invoke_passz$NewPassManager.add_lower_invoke_pass  rj   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú LLVMPY_module_AddLowerSwitchPassÚ"LLVMPY_function_AddLowerSwitchPassrY   s    r   Úadd_lower_switch_passz$NewPassManager.add_lower_switch_pass   rj   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddMemCpyOptPassÚ LLVMPY_function_AddMemCpyOptPassrY   s    r   Úadd_mem_copy_opt_passz$NewPassManager.add_mem_copy_opt_pass&  r�   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú+LLVMPY_module_AddUnifyFunctionExitNodesPassÚ-LLVMPY_function_AddUnifyFunctionExitNodesPassrY   s    r   Ú"add_unify_function_exit_nodes_passz1NewPassManager.add_unify_function_exit_nodes_pass,  sN   € Ý�dÕ-Ñ.Ô.ð 	HÝŒG×?Ò?ÀÑEÔEÐEÐEÐEåŒG×AÒAÀ$ÑGÔGÐGÐGÐGr   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú LLVMPY_module_AddReassociatePassÚ"LLVMPY_function_AddReassociatePassrY   s    r   Úadd_reassociate_passz#NewPassManager.add_reassociate_pass2  rj   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddRegToMemPassÚLLVMPY_function_AddRegToMemPassrY   s    r   Úadd_register_to_memory_passz*NewPassManager.add_register_to_memory_pass8  sM   € Ý�dÕ-Ñ.Ô.ð 	:ÝŒG×1Ò1°$Ñ7Ô7Ð7Ð7Ð7åŒG×3Ò3°DÑ9Ô9Ð9Ð9Ð9r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddSROAPassÚLLVMPY_function_AddSROAPassrY   s    r   Úadd_sroa_passzNewPassManager.add_sroa_pass>  rª   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddSinkingPassÚLLVMPY_function_AddSinkingPassrY   s    r   Úadd_sinking_passzNewPassManager.add_sinking_passD  re   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú!LLVMPY_module_AddTailCallElimPassÚ#LLVMPY_function_AddTailCallElimPassrY   s    r   Úadd_tail_call_elimination_passz-NewPassManager.add_tail_call_elimination_passJ  rÉ   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú%LLVMPY_module_AddInstructionNamerPassÚ'LLVMPY_function_AddInstructionNamerPassrY   s    r   Úadd_instruction_namer_passz)NewPassManager.add_instruction_namer_passP  rÎ   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú!LLVMPY_module_AddLoopDeletionPassÚ#LLVMPY_function_AddLoopDeletionPassrY   s    r   Úadd_loop_deletion_passz%NewPassManager.add_loop_deletion_passV  rÉ   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú'LLVMPY_module_AddLoopStrengthReducePassÚ)LLVMPY_function_AddLoopStrengthReducePassrY   s    r   Úadd_loop_strength_reduce_passz,NewPassManager.add_loop_strength_reduce_pass\  r¯   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   ÚLLVMPY_module_AddLoopRotatePassÚ!LLVMPY_function_AddLoopRotatePassrY   s    r   Úadd_loop_rotate_passz#NewPassManager.add_loop_rotate_passb  ro   r   c                 ó°   — t          | t          ¦  «        r!t          j                             | ¦  «         d S t          j                             | ¦  «         d S r   )r%   r   r   r<   Ú!LLVMPY_DisposeNewModulePassMangerÚ#LLVMPY_DisposeNewFunctionPassMangerrY   s    r   Ú_disposezNewPassManager._disposeh  rÉ   r   N)rt   )-r4   r5   r6   rZ   r`   rd   ri   rn   rs   ry   r}   r�   r†   r‹   r�   r“   r—   rœ   r¡   r¥   r©   r®   r³   r¸   r¼   rÀ   rÄ   rÈ   rÍ   rÒ   rÖ   rÚ   rÞ   râ   ræ   rê   rî   rò   rö   rú   rþ   r  r  r
  r  r   r   r   rW   rW   r   s±  € € € € € ðJð Jð JðCð Cð Cð9ð 9ð 9ð=ð =ð =ð<ð <ð <ð=ð =ð =ðJð Jð Jð Jð<ð <ð <ð@ð @ð @ð8ð 8ð 8ð<ð <ð <ð<ð <ð <ð@ð @ð @ð7ð 7ð 7ð;ð ;ð ;ð;ð ;ð ;ð?ð ?ð ?ð6ð 6ð 6ðDð Dð Dð5ð 5ð 5ð5ð 5ð 5ðGð Gð Gð7ð 7ð 7ð8ð 8ð 8ð>ð >ð >ðBð Bð Bð6ð 6ð 6ð=ð =ð =ð=ð =ð =ð=ð =ð =ð;ð ;ð ;ðHð Hð Hð=ð =ð =ð:ð :ð :ð6ð 6ð 6ð9ð 9ð 9ð>ð >ð >ðBð Bð Bð>ð >ð >ðDð Dð Dð<ð <ð <ð>ð >ð >ð >ð >r   rW   c                   ó´   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej        dfd„Zˆ xZS )r   Nc                 óŠ   •— |€t           j                             ¦   «         }t          ¦   «                              |¦  «         d S r   )r   r<   Ú!LLVMPY_CreateNewModulePassManagerÚsuperrZ   ©r.   ÚptrÚ	__class__s     €r   rZ   zModulePassManager.__init__q  s9   ø€ Øˆ;Ý”'×;Ò;Ñ=Ô=ˆCÝ‰Œ×Ò˜ÑÔÐÐÐr   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   ÚLLVMPY_module_AddVerifierPassrY   s    r   Úadd_verifierzModulePassManager.add_verifierv  s   € ÝŒ×-Ò-¨dÑ3Ô3Ð3Ð3Ð3r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú"LLVMPY_module_AddConstantMergePassrY   s    r   Úadd_constant_merge_passz)ModulePassManager.add_constant_merge_passy  ó   € ÝŒ×2Ò2°4Ñ8Ô8Ð8Ð8Ð8r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú,LLVMPY_module_AddDeadArgumentEliminationPassrY   s    r   Úadd_dead_arg_elimination_passz/ModulePassManager.add_dead_arg_elimination_pass|  s   € ÝŒ×<Ò<¸TÑBÔBÐBÐBÐBr   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú(LLVMPY_module_AddCallGraphDOTPrinterPassrY   s    r   Úadd_dot_call_graph_printer_passz1ModulePassManager.add_dot_call_graph_printer_pass  ó   € ÝŒ×8Ò8¸Ñ>Ô>Ð>Ð>Ð>r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú+LLVMPY_module_AddModuleDebugInfoPrinterPassrY   s    r   Úadd_module_debug_info_passz,ModulePassManager.add_module_debug_info_pass„  ó   € ÝŒ×;Ò;¸DÑAÔAÐAÐAÐAr   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú"LLVMPY_module_AddAlwaysInlinerPassrY   s    r   Úadd_always_inliner_passz)ModulePassManager.add_always_inliner_pass‡  r  r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú2LLVMPY_module_AddReversePostOrderFunctionAttrsPassrY   s    r   Úadd_rpo_function_attrs_passz-ModulePassManager.add_rpo_function_attrs_passŠ  s   € ÝŒ×BÒBÀ4ÑHÔHÐHÐHÐHr   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   ÚLLVMPY_module_AddGlobalDCEPassrY   s    r   Ú#add_global_dead_code_eliminate_passz5ModulePassManager.add_global_dead_code_eliminate_pass�  ó   € ÝŒ×.Ò.¨tÑ4Ô4Ð4Ð4Ð4r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   ÚLLVMPY_module_AddGlobalOptPassrY   s    r   Úadd_global_opt_passz%ModulePassManager.add_global_opt_pass�  r1  r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   ÚLLVMPY_module_AddIPSCCPPassrY   s    r   Úadd_ipsccp_passz!ModulePassManager.add_ipsccp_pass“  s   € ÝŒ×+Ò+¨DÑ1Ô1Ð1Ð1Ð1r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú LLVMPY_module_AddInternalizePassrY   s    r   Úadd_internalize_passz&ModulePassManager.add_internalize_pass–  s   € ÝŒ×0Ò0°Ñ6Ô6Ð6Ð6Ð6r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú"LLVMPY_module_AddLoopExtractorPassrY   s    r   Úadd_loop_extract_passz'ModulePassManager.add_loop_extract_pass™  r  r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú#LLVMPY_module_AddMergeFunctionsPassrY   s    r   Úadd_merge_functions_passz*ModulePassManager.add_merge_functions_passœ  ó   € ÝŒ×3Ò3°DÑ9Ô9Ð9Ð9Ð9r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú#LLVMPY_module_AddPartialInlinerPassrY   s    r   Úadd_partial_inliner_passz*ModulePassManager.add_partial_inliner_passŸ  rA  r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú!LLVMPY_module_AddStripSymbolsPassrY   s    r   Úadd_strip_symbols_passz(ModulePassManager.add_strip_symbols_pass¢  s   € ÝŒ×1Ò1°$Ñ7Ô7Ð7Ð7Ð7r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú'LLVMPY_module_AddStripDeadDebugInfoPassrY   s    r   Úadd_strip_dead_debug_info_passz0ModulePassManager.add_strip_dead_debug_info_pass¥  s   € ÝŒ×7Ò7¸Ñ=Ô=Ð=Ð=Ð=r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú(LLVMPY_module_AddStripDeadPrototypesPassrY   s    r   Úadd_strip_dead_prototype_passz/ModulePassManager.add_strip_dead_prototype_pass¨  r#  r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú&LLVMPY_module_AddStripDebugDeclarePassrY   s    r   Úadd_strip_debug_declare_passz.ModulePassManager.add_strip_debug_declare_pass«  ó   € ÝŒ×6Ò6°tÑ<Ô<Ð<Ð<Ð<r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú)LLVMPY_module_AddStripNonDebugSymbolsPassrY   s    r   Ú add_strip_non_debug_symbols_passz2ModulePassManager.add_strip_non_debug_symbols_pass®  s   € ÝŒ×9Ò9¸$Ñ?Ô?Ð?Ð?Ð?r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú&LLVMPY_module_AddArgumentPromotionPassrY   s    r   Úadd_argument_promotion_passz-ModulePassManager.add_argument_promotion_pass±  rQ  r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú+LLVMPY_module_AddPostOrderFunctionAttrsPassrY   s    r   Ú'add_post_order_function_attributes_passz9ModulePassManager.add_post_order_function_attributes_pass´  r'  r   éè  c                 óf   — t          |¦  «        }t          j                             | ||¦  «         dS ©aá  Add Numba specific Reference count pruning pass.

        Parameters
        ----------
        subpasses_flags : RefPruneSubpasses
            A bitmask to control the subpasses to be enabled.
        subgraph_limit : int
            Limit the fanout pruners to working on a subgraph no bigger than
            this number of basic-blocks to avoid spending too much time in very
            large graphs. Default is 1000. Subject to change in future
            versions.
        N)rM   r   r<   ÚLLVMPY_AddRefPrunePass_module©r.   Úsubpasses_flagsÚsubgraph_limitÚiflagss       r   Úadd_refprune_passz#ModulePassManager.add_refprune_pass¸  s1   € õ # ?Ñ3Ô3ˆÝŒ×-Ò-¨d°F¸NÑKÔKÐKÐKÐKr   r   )r4   r5   r6   rZ   r  r  r  r"  r&  r*  r-  r0  r4  r7  r:  r=  r@  rD  rG  rJ  rM  rP  rT  rW  rZ  rM   rU   rc  Ú__classcell__©r  s   @r   r   r   o  s¯  ø€ € € € € ðð ð ð ð ð ð
4ð 4ð 4ð9ð 9ð 9ðCð Cð Cð?ð ?ð ?ð
Bð Bð Bð9ð 9ð 9ðIð Ið Ið5ð 5ð 5ð5ð 5ð 5ð2ð 2ð 2ð7ð 7ð 7ð9ð 9ð 9ð:ð :ð :ð:ð :ð :ð8ð 8ð 8ð>ð >ð >ð?ð ?ð ?ð=ð =ð =ð@ð @ð @ð=ð =ð =ðBð Bð Bð 1BÔ0EØ)-ðLð Lð Lð Lð Lð Lð Lð Lr   r   c                   ó6   ‡ — e Zd Zdˆ fd„	Zej        dfd„Zˆ xZS )r   Nc                 óŠ   •— |€t           j                             ¦   «         }t          ¦   «                              |¦  «         d S r   )r   r<   Ú#LLVMPY_CreateNewFunctionPassManagerr  rZ   r  s     €r   rZ   zFunctionPassManager.__init__Ì  s9   ø€ Øˆ;Ý”'×=Ò=Ñ?Ô?ˆCÝ‰Œ×Ò˜ÑÔÐÐÐr   r[  c                 óf   — t          |¦  «        }t          j                             | ||¦  «         dS r]  )rM   r   r<   ÚLLVMPY_AddRefPrunePass_functionr_  s       r   rc  z%FunctionPassManager.add_refprune_passÒ  s1   € õ # ?Ñ3Ô3ˆÝŒ×/Ò/°°f¸nÑMÔMÐMÐMÐMr   r   )r4   r5   r6   rZ   rM   rU   rc  rd  re  s   @r   r   r   Ê  se   ø€ € € € € ðð ð ð ð ð ð 1BÔ0EØ)-ðNð Nð Nð Nð Nð Nð Nð Nr   r   c                   ój  ‡ — e Zd Zdˆ fd„	Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed„ ¦   «         Zej        d„ ¦   «         Zed	„ ¦   «         Z	e	j        d
„ ¦   «         Z	ed„ ¦   «         Z
e
j        d„ ¦   «         Z
ed„ ¦   «         Zej        d„ ¦   «         Zd„ Zˆ xZS )r   r   c                 óž   •— || _         || _        t          ¦   «                              t          j                             ¦   «         ¦  «         d S r   )Ú_speed_levelr   r  rZ   r   r<   Ú"LLVMPY_CreatePipelineTuningOptions)r.   r   r  s     €r   rZ   zPipelineTuningOptions.__init__æ  s?   ø€ Ø'ˆÔØ&ˆÔÝ‰Œ×Ò�œ×CÒCÑEÔEÑFÔFÐFÐFÐFr   c                 ó   — | j         S r   )rm  rY   s    r   r   z!PipelineTuningOptions.speed_levelë  s   € àÔ Ð r   c                 óP   — d|cxk    rdk    sn t          d¦  «        ‚|| _        d S )Nr   é   z4Optimization level for speed should be 0, 1, 2, or 3)Ú
ValueErrorrm  ©r.   Úvalues     r   r   z!PipelineTuningOptions.speed_levelï  s?   € à�EˆˆŠˆ˜QŠˆˆˆÝØFñHô Hð Hà!ˆÔÐÐr   c                 ó@   — t           j                             | ¦  «        S r   )r   r<   ÚLLVMPY_PTOGetLoopInterleavingrY   s    r   Úloop_interleavingz'PipelineTuningOptions.loop_interleavingö  ó   € åŒw×4Ò4°TÑ:Ô:Ð:r   c                 óF   — t           j                             | |¦  «         d S r   )r   r<   ÚLLVMPY_PTOSetLoopInterleavingrs  s     r   rw  z'PipelineTuningOptions.loop_interleavingú  ó    € åŒ×-Ò-¨d°EÑ:Ô:Ð:Ð:Ð:r   c                 ó@   — t           j                             | ¦  «        S r   )r   r<   ÚLLVMPY_PTOGetLoopVectorizationrY   s    r   Úloop_vectorizationz(PipelineTuningOptions.loop_vectorizationþ  s   € åŒw×5Ò5°dÑ;Ô;Ð;r   c                 óF   — t           j                             | |¦  «         d S r   )r   r<   ÚLLVMPY_PTOSetLoopVectorizationrs  s     r   r~  z(PipelineTuningOptions.loop_vectorization  s    € åŒ×.Ò.¨t°UÑ;Ô;Ð;Ð;Ð;r   c                 ó@   — t           j                             | ¦  «        S r   )r   r<   ÚLLVMPY_PTOGetSLPVectorizationrY   s    r   Úslp_vectorizationz'PipelineTuningOptions.slp_vectorization  rx  r   c                 óF   — t           j                             | |¦  «         d S r   )r   r<   ÚLLVMPY_PTOSetSLPVectorizationrs  s     r   rƒ  z'PipelineTuningOptions.slp_vectorization
  r{  r   c                 ó@   — t           j                             | ¦  «        S r   )r   r<   ÚLLVMPY_PTOGetLoopUnrollingrY   s    r   Úloop_unrollingz$PipelineTuningOptions.loop_unrolling  s   € åŒw×1Ò1°$Ñ7Ô7Ð7r   c                 óF   — t           j                             | |¦  «         d S r   )r   r<   ÚLLVMPY_PTOSetLoopUnrollingrs  s     r   rˆ  z$PipelineTuningOptions.loop_unrolling  s    € åŒ×*Ò*¨4°Ñ7Ô7Ð7Ð7Ð7r   c                 ó@   — t           j                             | ¦  «        S r   )r   r<   ÚLLVMPY_PTOGetInlinerThresholdrY   s    r   Úinlining_thresholdz(PipelineTuningOptions.inlining_threshold  rx  r   c                 óF   — t           j                             | |¦  «         d S r   )r   r<   ÚLLVMPY_PTOSetInlinerThresholdrs  s     r   r�  z(PipelineTuningOptions.inlining_threshold  r{  r   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   Ú#LLVMPY_DisposePipelineTuningOptionsrY   s    r   r  zPipelineTuningOptions._dispose  rA  r   ©r   )r4   r5   r6   rZ   Úpropertyr   Úsetterrw  r~  rƒ  rˆ  r�  r  rd  re  s   @r   r   r   ä  s®  ø€ € € € € ðGð Gð Gð Gð Gð Gð
 ð!ð !ñ „Xð!ð Ôð"ð "ñ Ôð"ð ð;ð ;ñ „Xð;ð Ôð;ð ;ñ Ôð;ð ð<ð <ñ „Xð<ð Ôð<ð <ñ Ôð<ð ð;ð ;ñ „Xð;ð Ôð;ð ;ñ Ôð;ð ð8ð 8ñ „Xð8ð Ôð8ð 8ñ Ôð8ð ð;ð ;ñ „Xð;ð Ôð;ð ;ñ Ôð;ð:ð :ð :ð :ð :ð :ð :r   r   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )ÚTimePassesHandlerc                 ó‚   •— t          ¦   «                              t          j                             ¦   «         ¦  «         d S r   )r  rZ   r   r<   ÚLLVMPY_CreateTimePassesHandler)r.   r  s    €r   rZ   zTimePassesHandler.__init__#  s/   ø€ Ý‰Œ×Ò�œ×?Ò?ÑAÔAÑBÔBÐBÐBÐBr   c                 óD   — t           j                             | ¦  «         d S r   )r   r<   ÚLLVMPY_DisposeTimePassesHandlerrY   s    r   r  zTimePassesHandler._dispose&  s   € ÝŒ×/Ò/°Ñ5Ô5Ð5Ð5Ð5r   )r4   r5   r6   rZ   r  rd  re  s   @r   r–  r–  "  sL   ø€ € € € € ðCð Cð Cð Cð Cð6ð 6ð 6ð 6ð 6ð 6ð 6r   r–  c                   ó<   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZ	S )r   c                 ó°   •— t          ¦   «                              t          j                             ||¦  «        ¦  «         || _        || _        d | _        d S r   )r  rZ   r   r<   ÚLLVMPY_CreatePassBuilderÚ_ptoÚ_tmÚ_time_passes_handler)r.   r   r   r  s      €r   rZ   zPassBuilder.__init__,  sI   ø€ Ý‰Œ×Ò�œ×9Ò9¸"¸cÑBÔBÑCÔCÐCØˆŒ	ØˆŒØ$(ˆÔ!Ð!Ð!r   c                 óp   — t          t          j                             | | j        j        ¦  «        ¦  «        S r   )r   r   r<   Ú$LLVMPY_buildPerModuleDefaultPipelinerž  r   rY   s    r   ÚgetModulePassManagerz PassBuilder.getModulePassManager2  s3   € Ý ÝŒG×8Ò8Ø�d”iÔ+ñ-ô -ñ
ô 
ð 	
r   c                 óp   — t          t          j                             | | j        j        ¦  «        ¦  «        S r   )r   r   r<   Ú*LLVMPY_buildFunctionSimplificationPipelinerž  r   rY   s    r   ÚgetFunctionPassManagerz"PassBuilder.getFunctionPassManager8  s3   € Ý"ÝŒG×>Ò>Ø�d”iÔ+ñ-ô -ñ
ô 
ð 	
r   c                 ó¢   — | j         rt          d¦  «        ‚t          ¦   «         | _         t          j                             | | j         ¦  «         dS )zƒEnable the pass timers.

        Raises
        ------
        RuntimeError
            If pass timing is already enabled.
        z!Pass timing can only be done onceN)r   ÚRuntimeErrorr–  r   r<   ÚLLVMPY_EnableTimePassesrY   s    r   Ústart_pass_timingzPassBuilder.start_pass_timing>  sN   € ð Ô$ð 	DÝÐBÑCÔCÐCÝ$5Ñ$7Ô$7ˆÔ!ÝŒ×'Ò'¨¨dÔ.GÑHÔHÐHÐHÐHr   c                 óð   — | j         st          d¦  «        ‚t          j        ¦   «         5 }t          j                             | j         |¦  «         t          |¦  «        cddd¦  «         S # 1 swxY w Y   dS )a:  Returns the pass timings report and disables the LLVM internal
        timers. Pass timers are enabled by ``start_pass_timing()``. If the
        timers are not enabled, this function will return an empty string.

        Returns
        -------
        res : str
            LLVM generated timing report.
        zPass timing is not enabledN)r   r¨  r   rG   r<   Ú!LLVMPY_ReportAndDisableTimePassesrI   )r.   rJ   s     r   Úfinish_pass_timingzPassBuilder.finish_pass_timingK  s¹   € ð Ô(ð 	=ÝÐ;Ñ<Ô<Ð<åÔÑÔð 	 3ÝŒG×5Ò5ØÔ)¨3ñ0ô 0ð 0å�s‘8”8ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ª4A+Á+A/Á2A/c                 óD   — t           j                             | ¦  «         d S r   )r   r<   ÚLLVMPY_DisposePassBuilderrY   s    r   r  zPassBuilder._dispose^  s   € ÝŒ×)Ò)¨$Ñ/Ô/Ð/Ð/Ð/r   )
r4   r5   r6   rZ   r£  r¦  rª  r­  r  rd  re  s   @r   r   r   *  s†   ø€ € € € € ð)ð )ð )ð )ð )ð
ð 
ð 
ð
ð 
ð 
ðIð Ið Iðð ð ð&0ð 0ð 0ð 0ð 0ð 0ð 0r   r   Nr’  )F)­Úctypesr   r   r   r   r   r   r	   Úcollectionsr
   Úenumr   Úllvmlite.bindingr   r   r   r   r    Ú_prunestatsr!   r9   rA   rE   rK   rM   rW   Ú	ObjectRefr   r   r   r–  r   r<   r=   ÚargtypesrC   rH   ÚLLVMModulePassManagerRefr  ÚrestypeÚLLVMModuleRefÚLLVMPassBuilderRefr\   r  rb   rg   rl   r  rq   rv   r{   r   r„   r‰   r�   r‘   r•   rš   rŸ   r£   r§   r¬   r±   r¶   rº   r¾   rÂ   rÆ   rË   rÐ   rÔ   rØ   rÜ   rà   rä   rè   rì   rð   rô   rø   rü   r   r  r  r  r!  r%  r)  r,  r/  r3  r6  r9  r<  r?  rC  rF  rI  rL  rO  rS  rV  rY  r  r^  ÚLLVMFunctionPassManagerRefrh  ÚLLVMValueRefr]   rc   rh   rm   rr   rw   r|   r€   r…   rŠ   rŽ   r’   r–   r›   r    r¤   r¨   r­   r²   r·   r»   r¿   rÃ   rÇ   rÌ   rÑ   rÕ   rÙ   rÝ   rá   rå   ré   rí   rñ   rõ   rù   rý   r	  r  r  r  rj  ÚLLVMPipelineTuningOptionsRefrn  rv  rz  r}  r€  r‚  r…  r‡  rŠ  rŒ  r�  r‘  r�  ÚLLVMTargetMachineRefr¯  ÚLLVMTimePassesHandlerRefr˜  rš  r©  r¬  r¢  r¥  r   r   r   ú<module>rÀ     s  ðØ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  ðð ð ð!ð !ð !ð ð  ð  ð.ð .ð .ð .ð ˆj˜ØBñEô E€ðBð Bð Bð Bð B�ñ Bô Bð Bð0$ð $ð $ð $ð $�Iñ $ô $ð $ð*ð *ð *ð *ð&	1ð 	1ð 	1ðð ð ð 3ð 3ð 3ð 3ð 3˜ñ 3ô 3ð 3ðz>ð z>ð z>ð z>ð z>ñ z>ô z>ð z>ðzXLð XLð XLð XLð XL˜œ ~ñ XLô XLð XLðvNð Nð Nð Nð N˜#œ-¨ñ Nô Nð Nð4;:ð ;:ð ;:ð ;:ð ;:˜CœMñ ;:ô ;:ð ;:ð|6ð 6ð 6ð 6ð 6˜œñ 6ô 6ð 6ð50ð 50ð 50ð 50ð 50�#”-ñ 50ô 50ð 50ðv .5¨W°]Ñ-CÔ-CÀVÐ,L€„Ô  Ô )à)/¨€„Ô Ô %à18°¸Ñ1BÔ1BÐ0C€„Ô $Ô -ð 58Ô4P€„Ô )Ô 1ð Ô  #Ô"3ØÔð3€„Ô &Ô /ð 36Ô2NÐ1P€„Ô %Ô .Ø14Ô1MÐ0O€„Ô $Ô -àÔ ð5#€„Ô (Ô 1ð Ô ð4#€„Ô 'Ô 0ð Ô ð4#€„Ô 'Ô 0ð Ô ð5#€„Ô (Ô 1ð Ô ð7#€„Ô *Ô 3ð Ô ð4#€„Ô 'Ô 0ð Ô ð8#€„Ô +Ô 4ð Ô ð0#€„Ô #Ô ,ð Ô ð4#€„Ô 'Ô 0ð Ô ð4#€„Ô 'Ô 0ð Ô ð8#€„Ô +Ô 4ð Ô ð/#€„Ô "Ô +ð Ô ð3#€„Ô &Ô /ð Ô ð3#€„Ô &Ô /ð Ô ð7#€„Ô *Ô 3ð Ô ð.#€„Ô !Ô *ð Ô ð<#€„Ô /Ô 8ð Ô ð-#€„Ô  Ô )ð Ô ð-#€„Ô  Ô )ð Ô ð?#€„Ô 2Ô ;ð Ô ð/#€„Ô "Ô +ð Ô ð0#€„Ô #Ô ,ð Ô ð6#€„Ô )Ô 2ð Ô ð:#€„Ô -Ô 6ð Ô ð.#€„Ô !Ô *ð Ô ð5#€„Ô (Ô 1ð Ô ð5#€„Ô (Ô 1ð Ô ð5#€„Ô (Ô 1ð Ô ð3#€„Ô &Ô /ð Ô ð@#€„Ô 3Ô <ð Ô ð5#€„Ô (Ô 1ð Ô ð2#€„Ô %Ô .ð Ô ð.#€„Ô !Ô *ð Ô ð1#€„Ô $Ô -ð Ô ð6#€„Ô )Ô 2ð Ô ð:#€„Ô -Ô 6ð Ô ð6#€„Ô )Ô 2ð Ô ð<#€„Ô /Ô 8ð Ô ð7$€„Ô *Ô 3ð Ô ðA$€„Ô 4Ô =ð Ô ð=$€„Ô 0Ô 9ð Ô ð@$€„Ô 3Ô <ð Ô ð7$€„Ô *Ô 3ð Ô ðG$€„Ô :Ô Cð Ô ð3$€„Ô &Ô /ð Ô ð3$€„Ô &Ô /ð Ô ð0$€„Ô #Ô ,ð Ô ð5$€„Ô (Ô 1ð Ô ð7$€„Ô *Ô 3ð Ô ð8$€„Ô +Ô 4ð Ô ð8$€„Ô +Ô 4ð Ô ð6$€„Ô )Ô 2ð Ô ð<$€„Ô /Ô 8ð Ô ð=$€„Ô 0Ô 9ð Ô ð;$€„Ô .Ô 7ð Ô ð>$€„Ô 1Ô :ð Ô ð;$€„Ô .Ô 7ð Ô ð@$€„Ô 3Ô <ð Ô ð6#€„Ô )Ô 2ð Ô  %¨ð2€„Ô %Ô .ð Ô"ð „Ô +Ô 3ð Ô" CÔ$4ØÔð5€„Ô (Ô 1ð
 Ô"ð3%€„Ô &Ô /ð Ô"ð7%€„Ô *Ô 3ð Ô"ð6%€„Ô )Ô 2ð Ô"ð7%€„Ô *Ô 3ð Ô" Eð9,€„Ô ,Ô 5ð Ô"ð6&€„Ô )Ô 2ð Ô"ð:&€„Ô -Ô 6ð Ô"ð2&€„Ô %Ô .ð Ô"ð6&€„Ô )Ô 2ð Ô"ð6&€„Ô )Ô 2ð Ô"ð:&€„Ô -Ô 6ð Ô"ð1&€„Ô $Ô -ð Ô"ð5&€„Ô (Ô 1ð Ô"ð5&€„Ô (Ô 1ð Ô"ð9&€„Ô ,Ô 5ð Ô"ð0&€„Ô #Ô ,ð Ô"ð>&€„Ô 1Ô :ð Ô"ð/&€„Ô "Ô +ð Ô"ð/&€„Ô "Ô +ð Ô"ðA&€„Ô 4Ô =ð Ô"ð1&€„Ô $Ô -ð Ô"ð2&€„Ô %Ô .ð Ô"ð8&€„Ô +Ô 4ð Ô"ð<&€„Ô /Ô 8ð Ô"ð0&€„Ô #Ô ,ð Ô"ð7&€„Ô *Ô 3ð Ô"ð7&€„Ô *Ô 3ð Ô"ð7&€„Ô *Ô 3ð Ô"ð5&€„Ô (Ô 1ð Ô"ðB&€„Ô 5Ô >ð Ô"ð7&€„Ô *Ô 3ð Ô"ð4&€„Ô 'Ô 0ð Ô"ð0&€„Ô #Ô ,ð Ô"ð3&€„Ô &Ô /ð Ô"ð8&€„Ô +Ô 4ð Ô"ð<&€„Ô /Ô 8ð Ô"ð6&€„Ô )Ô 2ð Ô"ð8&€„Ô +Ô 4ð Ô"ð>&€„Ô 1Ô :ð Ô"ð8%€„Ô +Ô 4ð Ô" E¨8ð4€„Ô 'Ô 0ð Ô$ð „Ô *Ô 2ð 17€„Ô %Ô -àÔ$ð2'€„Ô %Ô .ð Ô$ fð2.€„Ô %Ô .ð 28€„Ô &Ô .àÔ$ð3'€„Ô &Ô /ð Ô$ fð3.€„Ô &Ô /ð 17€„Ô %Ô -àÔ$ð2'€„Ô %Ô .ð Ô$ fð2.€„Ô %Ô .ð .4€„Ô "Ô *àÔ$ð/'€„Ô "Ô +ð Ô$ fð/.€„Ô "Ô +ð 16€„Ô %Ô -ð Ô$ eð2-€„Ô %Ô .ð 	Ô%Ð'ð „Ô +Ô 4ð
 ,/Ô+A€„Ô  Ô (àÔØÔ$ð-€„Ô  Ô )ð
 /2Ô.DÐ-F€„Ô !Ô *ð Ô ð „Ô &Ô .ð Ô ð4#€„Ô 'Ô 0ð ÔØÔ ð,€„Ô Ô (ð Ô Ø€GˆHÑÔð6€„Ô )Ô 2ð Ô ð „Ô ,Ô 4ð Ô˜Eð9#€„Ô ,Ô 5ð Ô"ð „Ô 2Ô :ð Ô˜Eð?#€„Ô 2Ô ;Ð ;Ð ;r   