ó
    ¸Î{jù†  ã                   óø*  • S SK JrJrJrJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  S rS rS rS S jr\	" S	S
5      r " S S	\5      r " S S\5      rS!S jrS rS r " S S\5      r " S S5      r " S S\R4                  \5      r " S S\R4                  \5      r " S S\R4                  5      r " S S\R4                  5      r " S S\R4                  5      r\" \5      \/\R@                  RB                  l"        \/\R@                  RF                  l"        \" \5      /\R@                  RH                  l"        \RJ                  \R@                  RL                  l'        \RJ                  \RP                  \RR                  /\R@                  RT                  l"        \RJ                  /\R@                  RV                  l"        \RJ                  /\R@                  RX                  l"        \RJ                  /\R@                  RZ                  l"        \RJ                  /\R@                  R\                  l"        \RJ                  /\R@                  R^                  l"        \RJ                  /\R@                  R`                  l"        \RJ                  /\R@                  Rb                  l"        \RJ                  /\R@                  Rd                  l"        \RJ                  /\R@                  Rf                  l"        \RJ                  /\R@                  Rh                  l"        \RJ                  /\R@                  Rj                  l"        \RJ                  /\R@                  Rl                  l"        \RJ                  /\R@                  Rn                  l"        \RJ                  /\R@                  Rp                  l"        \RJ                  /\R@                  Rr                  l"        \RJ                  /\R@                  Rt                  l"        \RJ                  /\R@                  Rv                  l"        \RJ                  /\R@                  Rx                  l"        \RJ                  /\R@                  Rz                  l"        \RJ                  /\R@                  R|                  l"        \RJ                  /\R@                  R~                  l"        \RJ                  /\R@                  R€                  l"        \RJ                  /\R@                  R‚                  l"        \RJ                  /\R@                  R„                  l"        \RJ                  /\R@                  R†                  l"        \RJ                  /\R@                  Rˆ                  l"        \RJ                  /\R@                  RŠ                  l"        \RJ                  /\R@                  RŒ                  l"        \RJ                  /\R@                  RŽ                  l"        \RJ                  /\R@                  R�                  l"        \RJ                  /\R@                  R’                  l"        \RJ                  /\R@                  R”                  l"        \RJ                  /\R@                  R–                  l"        \RJ                  /\R@                  R˜                  l"        \RJ                  /\R@                  Rš                  l"        \RJ                  /\R@                  Rœ                  l"        \RJ                  /\R@                  Rž                  l"        \RJ                  /\R@                  R                   l"        \RJ                  /\R@                  R¢                  l"        \RJ                  /\R@                  R¤                  l"        \RJ                  /\R@                  R¦                  l"        \RJ                  /\R@                  R¨                  l"        \RJ                  /\R@                  Rª                  l"        \RJ                  /\R@                  R¬                  l"        \RJ                  /\R@                  R®                  l"        \RJ                  /\R@                  R°                  l"        \RJ                  /\R@                  R²                  l"        \RJ                  /\R@                  R´                  l"        \RJ                  /\R@                  R¶                  l"        \RJ                  /\R@                  R¸                  l"        \RJ                  /\R@                  Rº                  l"        \RJ                  /\R@                  R¼                  l"        \RJ                  /\R@                  R¾                  l"        \RJ                  /\R@                  RÀ                  l"        \RJ                  /\R@                  RÂ                  l"        \RJ                  /\R@                  RÄ                  l"        \RJ                  /\R@                  RÆ                  l"        \RJ                  /\R@                  RÈ                  l"        \RJ                  /\R@                  RÊ                  l"        \RJ                  /\R@                  RÌ                  l"        \RJ                  /\R@                  RÎ                  l"        \RJ                  \\/\R@                  RÐ                  l"        \RÒ                  \R@                  RÔ                  l'        \RÒ                  \RÖ                  \RR                  /\R@                  RØ                  l"        \RÒ                  /\R@                  RÚ                  l"        \RÒ                  /\R@                  RÜ                  l"        \RÒ                  /\R@                  RÞ                  l"        \RÒ                  /\R@                  Rà                  l"        \RÒ                  \/\R@                  Râ                  l"        \RÒ                  /\R@                  Rä                  l"        \RÒ                  /\R@                  Ræ                  l"        \RÒ                  /\R@                  Rè                  l"        \RÒ                  /\R@                  Rê                  l"        \RÒ                  /\R@                  Rì                  l"        \RÒ                  /\R@                  Rî                  l"        \RÒ                  /\R@                  Rð                  l"        \RÒ                  /\R@                  Rò                  l"        \RÒ                  /\R@                  Rô                  l"        \RÒ                  /\R@                  Rö                  l"        \RÒ                  /\R@                  Rø                  l"        \RÒ                  /\R@                  Rú                  l"        \RÒ                  /\R@                  Rü                  l"        \RÒ                  /\R@                  Rþ                  l"        \RÒ                  /\R@                  GR                   l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR
                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                  l"        \RÒ                  /\R@                  GR                   l"        \RÒ                  /\R@                  GR"                  l"        \RÒ                  /\R@                  GR$                  l"        \RÒ                  /\R@                  GR&                  l"        \RÒ                  /\R@                  GR(                  l"        \RÒ                  \\/\R@                  GR*                  l"        \GR,                  \R@                  GR.                  l'        \\R@                  GR0                  l'        \GR,                  /\R@                  GR0                  l"        \GR,                  \/\R@                  GR2                  l"        \\R@                  GR4                  l'        \GR,                  /\R@                  GR4                  l"        \GR,                  \/\R@                  GR6                  l"        \\R@                  GR8                  l'        \GR,                  /\R@                  GR8                  l"        \GR,                  \/\R@                  GR:                  l"        \\R@                  GR<                  l'        \GR,                  /\R@                  GR<                  l"        \GR,                  \/\R@                  GR>                  l"        \\R@                  GR@                  l'        \GR,                  \/\R@                  GRB                  l"        \GR,                  /\R@                  GRD                  l"        \RR                  \R@                  GRF                  l'        \GRH                  \GR,                  /\R@                  GRF                  l"        \RR                  /\R@                  GRJ                  l"        \GRL                  \R@                  GRN                  l'        \GRL                  /\R@                  GRP                  l"        \RR                  \GRL                  /\R@                  GRR                  l"        \GRL                  \" \5      /\R@                  GRT                  l"        \RJ                  \R@                  GRV                  l'        \RR                  \/\R@                  GRV                  l"        \RÒ                  \R@                  GRX                  l'        \RR                  \/\R@                  GRX                  l"        g)"é    )Úc_boolÚc_intÚc_size_tÚPOINTERÚ	StructureÚbyrefÚc_char_p)Ú
namedtuple)ÚIntFlag)Úffic                  ó   • [        5       $ ©N)ÚModulePassManager© ó    Ú®C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\llvmlite/binding/newpassmanagers.pyÚcreate_new_module_pass_managerr      s   € ÜÓÐr   c                  ó   • [        5       $ r   )ÚFunctionPassManagerr   r   r   Ú create_new_function_pass_managerr      s   € ÜÓ Ð r   c                 ó   • [        X5      $ r   )ÚPassBuilder)ÚtmÚptos     r   Úcreate_pass_builderr      s   € Ü�rÓÐr   c                 ó   • [        U 5      $ r   )ÚPipelineTuningOptions)Úspeed_levels    r   Úcreate_pipeline_tuning_optionsr      s   € Ü  Ó-Ð-r   Ú
PruneStatsz&basicblock diamond fanout fanout_raisec                   ó$   • \ rS rSrSrS rS rSrg)r    é   z3Holds statistics from reference count pruning.
    c                 óJ  • [        U[        5      (       d%  Sn[        UR                  [	        U5      5      5      e[        U R
                  UR
                  -   U R                  UR                  -   U R                  UR                  -   U R                  UR                  -   5      $ )Nz;PruneStats can only be added to another PruneStats, got {}.©	Ú
isinstancer    Ú	TypeErrorÚformatÚtypeÚ
basicblockÚdiamondÚfanoutÚfanout_raise©ÚselfÚotherÚmsgs      r   Ú__add__ÚPruneStats.__add__   s€   € Ü˜%¤×,Ñ,ØOˆCÜ˜CŸJ™J¤t¨E£{Ó3Ó4Ð4Ü˜$Ÿ/™/¨E×,<Ñ,<Ñ<ØŸ,™,¨¯©Ñ6ØŸ+™+¨¯©Ñ4Ø×+Ñ+¨e×.@Ñ.@Ñ@óBð 	Br   c                 óJ  • [        U[        5      (       d%  Sn[        UR                  [	        U5      5      5      e[        U R
                  UR
                  -
  U R                  UR                  -
  U R                  UR                  -
  U R                  UR                  -
  5      $ )NzBPruneStats can only be subtracted from another PruneStats, got {}.r$   r-   s      r   Ú__sub__ÚPruneStats.__sub__(   s‚   € Ü˜%¤×,Ñ,ðˆCä˜CŸJ™J¤t¨E£{Ó3Ó4Ð4Ü˜$Ÿ/™/¨E×,<Ñ,<Ñ<ØŸ,™,¨¯©Ñ6ØŸ+™+¨¯©Ñ4Ø×+Ñ+¨e×.@Ñ.@Ñ@óBð 	Br   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r1   r4   Ú__static_attributes__r   r   r   r    r       s   † ñòBõBr   c                   ó0   • \ rS rSrS\4S\4S\4S\4/rSrg)Ú_c_PruneStatsé3   r)   r*   r+   r,   r   N)r6   r7   r8   r9   r   Ú_fields_r;   r   r   r   r=   r=   3   s)   † à	�xÐ Ø	�HÐØ	�8ÐØ	˜Ð"ð	$ƒHr   r=   c                 óò   • [        SSSS5      n[        U 5      n[        R                  R	                  [        U5      U5        [        UR                  UR                  UR                  UR                  5      $ )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   )r=   r   r   ÚlibÚLLVMPY_DumpRefPruneStatsr   r    r)   r*   r+   r,   )ÚprintoutÚstatsÚdo_prints      r   Údump_refprune_statsrF   ;   s`   € ô ˜!˜Q  1Ó%€EÜ�hÓ€Hä‡G�G×$Ñ$¤U¨5£\°8Ô<Ü�e×&Ñ&¨¯©°u·|±|Ø×(Ñ(ó*ð *r   c                 óT   • [         R                  R                  [        U 5      5        g)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   rA   ÚLLVMPY_SetTimePassesr   )Úenables    r   Úset_time_passesrJ   N   s   € ô ‡G�G× Ñ ¤¨£Õ0r   c                  ó¶   • [         R                  " 5        n [         R                  R                  U 5        [	        U 5      sSSS5        $ ! , (       d  f       g= f)zÿ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   ÚOutputStringrA   ÚLLVMPY_ReportAndResetTimingsÚstr)Úbufs    r   Úreport_and_reset_timingsrP   Z   s7   € ô 
×	Ò	Ô	˜sÜ�‰×,Ñ,¨SÔ1Ü�3‹x÷ 
×	×	ús   –*A
Á

Ac                   ó:   • \ rS rSrSrSrSrSr\\-  \-  \-  rSr	g)ÚRefPruneSubpasseséj   é   é   é   é   r   N)
r6   r7   r8   r9   ÚPER_BBÚDIAMONDÚFANOUTÚFANOUT_RAISEÚALLr;   r   r   r   rR   rR   j   s*   † Ø€FØ€GØ€FØ€LØ
�7Ñ
˜VÑ
# lÑ
2ƒCr   rR   c                   ó  • \ rS rSrS rS rS rS rS rS r	S.S jr
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S,r.g-)/ÚNewPassManagerér   c                 ó>   • [        U 5      [        L a  [        S5      eg )Nz*Cannot instantiate NewPassManager directly)r(   r^   r&   ©r.   s    r   Ú__init__ÚNewPassManager.__init__t   s   € Ü�‹:œÒ'ÜÐHÓIÐIð (r   c                 ó°   • [        U [        5      (       a!  [        R                  R	                  XU5        g [        R                  R                  XU5        g r   )r%   r   r   rA   ÚLLVMPY_RunNewModulePassManagerÚ LLVMPY_RunNewFunctionPassManager)r.   ÚIRÚpbs      r   ÚrunÚNewPassManager.runx   s8   € Ü�dÔ-×.Ñ.Ü�G‰G×2Ñ2°4¸RÕ@ä�G‰G×4Ñ4°T¸rÕBr   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddAAEvaluatorÚLLVMPY_function_AddAAEvaluatorra   s    r   Úadd_aa_eval_passÚNewPassManager.add_aa_eval_pass~   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×0Ñ0°Õ6ä�G‰G×2Ñ2°4Õ8r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú LLVMPY_module_AddSimplifyCFGPassÚ"LLVMPY_function_AddSimplifyCFGPassra   s    r   Úadd_simplify_cfg_passÚ$NewPassManager.add_simplify_cfg_pass„   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×4Ñ4°TÕ:ä�G‰G×6Ñ6°tÕ<r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddLoopUnrollPassÚ!LLVMPY_function_AddLoopUnrollPassra   s    r   Úadd_loop_unroll_passÚ#NewPassManager.add_loop_unroll_passŠ   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×3Ñ3°DÕ9ä�G‰G×5Ñ5°dÕ;r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú LLVMPY_module_AddInstCombinePassÚ"LLVMPY_function_AddInstCombinePassra   s    r   Úadd_instruction_combine_passÚ+NewPassManager.add_instruction_combine_pass�   rv   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  X5        g [        R                  R                  X5        g r   )r%   r   r   rA   Ú"LLVMPY_AddJumpThreadingPass_moduleÚ$LLVMPY_AddJumpThreadingPass_function)r.   Ú	thresholds     r   Úadd_jump_threading_passÚ&NewPassManager.add_jump_threading_pass–   s4   € Ü�dÔ-×.Ñ.Ü�G‰G×6Ñ6°tÕGä�G‰G×8Ñ8¸ÕIr   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddCFGPrinterPassÚ!LLVMPY_function_AddCFGPrinterPassra   s    r   Úadd_cfg_printer_passÚ#NewPassManager.add_cfg_printer_passœ   r|   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú#LLVMPY_module_AddCFGOnlyPrinterPassÚ%LLVMPY_function_AddCFGOnlyPrinterPassra   s    r   Úadd_cfg_only_printer_passÚ(NewPassManager.add_cfg_only_printer_pass¢   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×7Ñ7¸Õ=ä�G‰G×9Ñ9¸$Õ?r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddDomPrinterÚLLVMPY_function_AddDomPrinterra   s    r   Úadd_dom_printer_passÚ#NewPassManager.add_dom_printer_pass¨   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×/Ñ/°Õ5ä�G‰G×1Ñ1°$Õ7r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddDomOnlyPrinterÚ!LLVMPY_function_AddDomOnlyPrinterra   s    r   Úadd_dom_only_printer_passÚ(NewPassManager.add_dom_only_printer_pass®   r|   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddPostDomPrinterÚ!LLVMPY_function_AddPostDomPrinterra   s    r   Úadd_post_dom_printer_passÚ(NewPassManager.add_post_dom_printer_pass´   r|   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú#LLVMPY_module_AddPostDomOnlyPrinterÚ%LLVMPY_function_AddPostDomOnlyPrinterra   s    r   Úadd_post_dom_only_printer_passÚ-NewPassManager.add_post_dom_only_printer_passº   r’   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddDomViewerÚLLVMPY_function_AddDomViewerra   s    r   Úadd_dom_viewer_passÚ"NewPassManager.add_dom_viewer_passÀ   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×.Ñ.¨tÕ4ä�G‰G×0Ñ0°Õ6r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddDomOnlyViewerÚ LLVMPY_function_AddDomOnlyViewerra   s    r   Úadd_dom_only_viewer_passÚ'NewPassManager.add_dom_only_viewer_passÆ   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×2Ñ2°4Õ8ä�G‰G×4Ñ4°TÕ:r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddPostDomViewerÚ LLVMPY_function_AddPostDomViewerra   s    r   Úadd_post_dom_viewer_passÚ'NewPassManager.add_post_dom_viewer_passÌ   r³   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú"LLVMPY_module_AddPostDomOnlyViewerÚ$LLVMPY_function_AddPostDomOnlyViewerra   s    r   Úadd_post_dom_only_viewer_passÚ,NewPassManager.add_post_dom_only_viewer_passÒ   s4   € Ü�dÔ-×.Ñ.Ü�G‰G×6Ñ6°tÕ<ä�G‰G×8Ñ8¸Õ>r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddADCEPassÚLLVMPY_function_AddADCEPassra   s    r   Úadd_aggressive_dce_passÚ&NewPassManager.add_aggressive_dce_passØ   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×-Ñ-¨dÕ3ä�G‰G×/Ñ/°Õ5r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú'LLVMPY_module_AddBreakCriticalEdgesPassÚ)LLVMPY_function_AddBreakCriticalEdgesPassra   s    r   Úadd_break_critical_edges_passÚ,NewPassManager.add_break_critical_edges_passÞ   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×;Ñ;¸DÕAä�G‰G×=Ñ=¸dÕCr   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddDSEPassÚLLVMPY_function_AddDSEPassra   s    r   Úadd_dead_store_elimination_passÚ.NewPassManager.add_dead_store_elimination_passä   ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×,Ñ,¨TÕ2ä�G‰G×.Ñ.¨tÕ4r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddDCEPassÚLLVMPY_function_AddDCEPassra   s    r   Úadd_dead_code_elimination_passÚ-NewPassManager.add_dead_code_elimination_passê   rÏ   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú*LLVMPY_module_AddAggressiveInstCombinePassÚ,LLVMPY_function_AddAggressiveInstCombinePassra   s    r   Úadd_aggressive_instcombine_passÚ.NewPassManager.add_aggressive_instcombine_passð   s4   € Ü�dÔ-×.Ñ.Ü�G‰G×>Ñ>¸tÕDä�G‰G×@Ñ@ÀÕFr   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddLCSSAPassÚLLVMPY_function_AddLCSSAPassra   s    r   Úadd_lcssa_passÚNewPassManager.add_lcssa_passö   r­   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddNewGVNPassÚLLVMPY_function_AddNewGVNPassra   s    r   Úadd_new_gvn_passÚNewPassManager.add_new_gvn_passü   r˜   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú!LLVMPY_module_AddLoopSimplifyPassÚ#LLVMPY_function_AddLoopSimplifyPassra   s    r   Úadd_loop_simplify_passÚ%NewPassManager.add_loop_simplify_pass  ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×5Ñ5°dÕ;ä�G‰G×7Ñ7¸Õ=r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú%LLVMPY_module_AddLoopUnrollAndJamPassÚ'LLVMPY_function_AddLoopUnrollAndJamPassra   s    r   Úadd_loop_unroll_and_jam_passÚ+NewPassManager.add_loop_unroll_and_jam_pass  ó4   € Ü�dÔ-×.Ñ.Ü�G‰G×9Ñ9¸$Õ?ä�G‰G×;Ñ;¸DÕAr   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddSCCPPassÚLLVMPY_function_AddSCCPPassra   s    r   Úadd_sccp_passÚNewPassManager.add_sccp_pass  rÃ   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú LLVMPY_module_AddLowerAtomicPassÚ"LLVMPY_function_AddLowerAtomicPassra   s    r   Úadd_lower_atomic_passÚ$NewPassManager.add_lower_atomic_pass  rv   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú LLVMPY_module_AddLowerInvokePassÚ"LLVMPY_function_AddLowerInvokePassra   s    r   Úadd_lower_invoke_passÚ$NewPassManager.add_lower_invoke_pass  rv   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú LLVMPY_module_AddLowerSwitchPassÚ"LLVMPY_function_AddLowerSwitchPassra   s    r   Úadd_lower_switch_passÚ$NewPassManager.add_lower_switch_pass   rv   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddMemCpyOptPassÚ LLVMPY_function_AddMemCpyOptPassra   s    r   Úadd_mem_copy_opt_passÚ$NewPassManager.add_mem_copy_opt_pass&  r³   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú+LLVMPY_module_AddUnifyFunctionExitNodesPassÚ-LLVMPY_function_AddUnifyFunctionExitNodesPassra   s    r   Ú"add_unify_function_exit_nodes_passÚ1NewPassManager.add_unify_function_exit_nodes_pass,  s4   € Ü�dÔ-×.Ñ.Ü�G‰G×?Ñ?ÀÕEä�G‰G×AÑAÀ$ÕGr   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú LLVMPY_module_AddReassociatePassÚ"LLVMPY_function_AddReassociatePassra   s    r   Úadd_reassociate_passÚ#NewPassManager.add_reassociate_pass2  rv   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddRegToMemPassÚLLVMPY_function_AddRegToMemPassra   s    r   Úadd_register_to_memory_passÚ*NewPassManager.add_register_to_memory_pass8  s4   € Ü�dÔ-×.Ñ.Ü�G‰G×1Ñ1°$Õ7ä�G‰G×3Ñ3°DÕ9r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddSROAPassÚLLVMPY_function_AddSROAPassra   s    r   Úadd_sroa_passÚNewPassManager.add_sroa_pass>  rÃ   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddSinkingPassÚLLVMPY_function_AddSinkingPassra   s    r   Úadd_sinking_passÚNewPassManager.add_sinking_passD  rp   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú!LLVMPY_module_AddTailCallElimPassÚ#LLVMPY_function_AddTailCallElimPassra   s    r   Úadd_tail_call_elimination_passÚ-NewPassManager.add_tail_call_elimination_passJ  ré   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú%LLVMPY_module_AddInstructionNamerPassÚ'LLVMPY_function_AddInstructionNamerPassra   s    r   Úadd_instruction_namer_passÚ)NewPassManager.add_instruction_namer_passP  rï   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú!LLVMPY_module_AddLoopDeletionPassÚ#LLVMPY_function_AddLoopDeletionPassra   s    r   Úadd_loop_deletion_passÚ%NewPassManager.add_loop_deletion_passV  ré   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú'LLVMPY_module_AddLoopStrengthReducePassÚ)LLVMPY_function_AddLoopStrengthReducePassra   s    r   Úadd_loop_strength_reduce_passÚ,NewPassManager.add_loop_strength_reduce_pass\  rÉ   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   ÚLLVMPY_module_AddLoopRotatePassÚ!LLVMPY_function_AddLoopRotatePassra   s    r   Úadd_loop_rotate_passÚ#NewPassManager.add_loop_rotate_passb  r|   r   c                 ó¬   • [        U [        5      (       a   [        R                  R	                  U 5        g [        R                  R                  U 5        g r   )r%   r   r   rA   Ú!LLVMPY_DisposeNewModulePassMangerÚ#LLVMPY_DisposeNewFunctionPassMangerra   s    r   Ú_disposeÚNewPassManager._disposeh  ré   r   r   N)éÿÿÿÿ)/r6   r7   r8   r9   rb   ri   rn   rt   rz   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/  r4  r9  r>  r;   r   r   r   r^   r^   r   sß   † òJòCò9ò=ò<ò=ôJò<ò@ò8ò<ò<ò@ò7ò;ò;ò?ò6òDò5ò5òGò7ò8ò>òBò6ò=ò=ò=ò;òHò=ò:ò6ò9ò>òBò>òDò<õ>r   r^   c                   óÌ   ^ • \ rS rSrSU 4S jjrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS r\R6                  S4S jrSrU =r$ )r   io  c                 óf   >• Uc  [         R                  R                  5       n[        TU ]  U5        g r   )r   rA   Ú!LLVMPY_CreateNewModulePassManagerÚsuperrb   ©r.   ÚptrÚ	__class__s     €r   rb   ÚModulePassManager.__init__q  s'   ø€ Ø‰;Ü—'‘'×;Ñ;Ó=ˆCÜ‰Ñ˜Õr   c                 óB   • [         R                  R                  U 5        g r   )r   rA   ÚLLVMPY_module_AddVerifierPassra   s    r   Úadd_verifierÚModulePassManager.add_verifierv  s   € Ü�‰×-Ñ-¨dÕ3r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú"LLVMPY_module_AddConstantMergePassra   s    r   Úadd_constant_merge_passÚ)ModulePassManager.add_constant_merge_passy  ó   € Ü�‰×2Ñ2°4Õ8r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú,LLVMPY_module_AddDeadArgumentEliminationPassra   s    r   Úadd_dead_arg_elimination_passÚ/ModulePassManager.add_dead_arg_elimination_pass|  s   € Ü�‰×<Ñ<¸TÕBr   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú(LLVMPY_module_AddCallGraphDOTPrinterPassra   s    r   Úadd_dot_call_graph_printer_passÚ1ModulePassManager.add_dot_call_graph_printer_pass  ó   € Ü�‰×8Ñ8¸Õ>r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú+LLVMPY_module_AddModuleDebugInfoPrinterPassra   s    r   Úadd_module_debug_info_passÚ,ModulePassManager.add_module_debug_info_pass„  ó   € Ü�‰×;Ñ;¸DÕAr   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú"LLVMPY_module_AddAlwaysInlinerPassra   s    r   Úadd_always_inliner_passÚ)ModulePassManager.add_always_inliner_pass‡  rQ  r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú2LLVMPY_module_AddReversePostOrderFunctionAttrsPassra   s    r   Úadd_rpo_function_attrs_passÚ-ModulePassManager.add_rpo_function_attrs_passŠ  s   € Ü�‰×BÑBÀ4ÕHr   c                 óB   • [         R                  R                  U 5        g r   )r   rA   ÚLLVMPY_module_AddGlobalDCEPassra   s    r   Ú#add_global_dead_code_eliminate_passÚ5ModulePassManager.add_global_dead_code_eliminate_pass�  ó   € Ü�‰×.Ñ.¨tÕ4r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   ÚLLVMPY_module_AddGlobalOptPassra   s    r   Úadd_global_opt_passÚ%ModulePassManager.add_global_opt_pass�  rl  r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   ÚLLVMPY_module_AddIPSCCPPassra   s    r   Úadd_ipsccp_passÚ!ModulePassManager.add_ipsccp_pass“  s   € Ü�‰×+Ñ+¨DÕ1r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú LLVMPY_module_AddInternalizePassra   s    r   Úadd_internalize_passÚ&ModulePassManager.add_internalize_pass–  s   € Ü�‰×0Ñ0°Õ6r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú"LLVMPY_module_AddLoopExtractorPassra   s    r   Úadd_loop_extract_passÚ'ModulePassManager.add_loop_extract_pass™  rQ  r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú#LLVMPY_module_AddMergeFunctionsPassra   s    r   Úadd_merge_functions_passÚ*ModulePassManager.add_merge_functions_passœ  ó   € Ü�‰×3Ñ3°DÕ9r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú#LLVMPY_module_AddPartialInlinerPassra   s    r   Úadd_partial_inliner_passÚ*ModulePassManager.add_partial_inliner_passŸ  r�  r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú!LLVMPY_module_AddStripSymbolsPassra   s    r   Úadd_strip_symbols_passÚ(ModulePassManager.add_strip_symbols_pass¢  s   € Ü�‰×1Ñ1°$Õ7r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú'LLVMPY_module_AddStripDeadDebugInfoPassra   s    r   Úadd_strip_dead_debug_info_passÚ0ModulePassManager.add_strip_dead_debug_info_pass¥  s   € Ü�‰×7Ñ7¸Õ=r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú(LLVMPY_module_AddStripDeadPrototypesPassra   s    r   Úadd_strip_dead_prototype_passÚ/ModulePassManager.add_strip_dead_prototype_pass¨  rZ  r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú&LLVMPY_module_AddStripDebugDeclarePassra   s    r   Úadd_strip_debug_declare_passÚ.ModulePassManager.add_strip_debug_declare_pass«  ó   € Ü�‰×6Ñ6°tÕ<r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú)LLVMPY_module_AddStripNonDebugSymbolsPassra   s    r   Ú add_strip_non_debug_symbols_passÚ2ModulePassManager.add_strip_non_debug_symbols_pass®  s   € Ü�‰×9Ñ9¸$Õ?r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú&LLVMPY_module_AddArgumentPromotionPassra   s    r   Úadd_argument_promotion_passÚ-ModulePassManager.add_argument_promotion_pass±  r–  r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú+LLVMPY_module_AddPostOrderFunctionAttrsPassra   s    r   Ú'add_post_order_function_attributes_passÚ9ModulePassManager.add_post_order_function_attributes_pass´  r_  r   éè  c                 óZ   • [        U5      n[        R                  R                  XU5        g©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)rR   r   rA   ÚLLVMPY_AddRefPrunePass_module©r.   Úsubpasses_flagsÚsubgraph_limitÚiflagss       r   Úadd_refprune_passÚ#ModulePassManager.add_refprune_pass¸  s"   € ô # ?Ó3ˆÜ�‰×-Ñ-¨d¸NÕKr   r   r   )r6   r7   r8   r9   rb   rK  rO  rT  rX  r]  rb  rf  rj  ro  rs  rw  r{  r  r„  rˆ  rŒ  r�  r”  r™  r�  r¡  rR   r\   r«  r;   Ú__classcell__©rG  s   @r   r   r   o  s‘   ø† ÷ò
4ò9òCò?ò
Bò9òIò5ò5ò2ò7ò9ò:ò:ò8ò>ò?ò=ò@ò=òBð 1B×0EÑ0EØ)-÷Lò Lr   r   c                   óN   ^ • \ rS rSrSU 4S jjr\R                  S4S jrSrU =r	$ )r   iÊ  c                 óf   >• Uc  [         R                  R                  5       n[        TU ]  U5        g r   )r   rA   Ú#LLVMPY_CreateNewFunctionPassManagerrD  rb   rE  s     €r   rb   ÚFunctionPassManager.__init__Ì  s'   ø€ Ø‰;Ü—'‘'×=Ñ=Ó?ˆCÜ‰Ñ˜Õr   r£  c                 óZ   • [        U5      n[        R                  R                  XU5        gr¥  )rR   r   rA   ÚLLVMPY_AddRefPrunePass_functionr§  s       r   r«  Ú%FunctionPassManager.add_refprune_passÒ  s"   € ô # ?Ó3ˆÜ�‰×/Ñ/°¸nÕMr   r   r   )
r6   r7   r8   r9   rb   rR   r\   r«  r;   r­  r®  s   @r   r   r   Ê  s#   ø† ÷ð 1B×0EÑ0EØ)-÷Nò Nr   r   c                   ój  ^ • \ rS rSrSU 4S jjr\S 5       r\R                  S 5       r\S 5       r\R                  S 5       r\S 5       r	\	R                  S 5       r	\S	 5       r
\
R                  S
 5       r
\S 5       r\R                  S 5       r\S 5       r\R                  S 5       rS rSrU =r$ )r   iä  c                 ót   >• Xl         Xl        [        TU ]  [        R
                  R                  5       5        g r   )Ú_speed_levelr   rD  rb   r   rA   Ú"LLVMPY_CreatePipelineTuningOptions)r.   r   rG  s     €r   rb   ÚPipelineTuningOptions.__init__æ  s)   ø€ Ø'ÔØ&ÔÜ‰ÑœŸ™×CÑCÓEÕFr   c                 ó   • U R                   $ r   )r¸  ra   s    r   r   Ú!PipelineTuningOptions.speed_levelë  s   € à× Ñ Ð r   c                 óD   • SUs=::  a  S::  d  O  [        S5      eXl        g )Nr   é   z4Optimization level for speed should be 0, 1, 2, or 3)Ú
ValueErrorr¸  ©r.   Úvalues     r   r   r¼  ï  s%   € à�E�˜Q�ÜØFóHð Hà!Õr   c                 ó@   • [         R                  R                  U 5      $ r   )r   rA   ÚLLVMPY_PTOGetLoopInterleavingra   s    r   Úloop_interleavingÚ'PipelineTuningOptions.loop_interleavingö  ó   € ä�w‰w×4Ñ4°TÓ:Ð:r   c                 óB   • [         R                  R                  X5        g r   )r   rA   ÚLLVMPY_PTOSetLoopInterleavingrÀ  s     r   rÄ  rÅ  ú  ó   € ä�‰×-Ñ-¨dÕ:r   c                 ó@   • [         R                  R                  U 5      $ r   )r   rA   ÚLLVMPY_PTOGetLoopVectorizationra   s    r   Úloop_vectorizationÚ(PipelineTuningOptions.loop_vectorizationþ  s   € ä�w‰w×5Ñ5°dÓ;Ð;r   c                 óB   • [         R                  R                  X5        g r   )r   rA   ÚLLVMPY_PTOSetLoopVectorizationrÀ  s     r   rÌ  rÍ    s   € ä�‰×.Ñ.¨tÕ;r   c                 ó@   • [         R                  R                  U 5      $ r   )r   rA   ÚLLVMPY_PTOGetSLPVectorizationra   s    r   Úslp_vectorizationÚ'PipelineTuningOptions.slp_vectorization  rÆ  r   c                 óB   • [         R                  R                  X5        g r   )r   rA   ÚLLVMPY_PTOSetSLPVectorizationrÀ  s     r   rÒ  rÓ  
  rÉ  r   c                 ó@   • [         R                  R                  U 5      $ r   )r   rA   ÚLLVMPY_PTOGetLoopUnrollingra   s    r   Úloop_unrollingÚ$PipelineTuningOptions.loop_unrolling  s   € ä�w‰w×1Ñ1°$Ó7Ð7r   c                 óB   • [         R                  R                  X5        g r   )r   rA   ÚLLVMPY_PTOSetLoopUnrollingrÀ  s     r   rØ  rÙ    s   € ä�‰×*Ñ*¨4Õ7r   c                 ó@   • [         R                  R                  U 5      $ r   )r   rA   ÚLLVMPY_PTOGetInlinerThresholdra   s    r   Úinlining_thresholdÚ(PipelineTuningOptions.inlining_threshold  rÆ  r   c                 óB   • [         R                  R                  X5        g r   )r   rA   ÚLLVMPY_PTOSetInlinerThresholdrÀ  s     r   rÞ  rß    rÉ  r   c                 óB   • [         R                  R                  U 5        g r   )r   rA   Ú#LLVMPY_DisposePipelineTuningOptionsra   s    r   r>  ÚPipelineTuningOptions._dispose  r�  r   )r¸  r   ©rU   )r6   r7   r8   r9   rb   Úpropertyr   ÚsetterrÄ  rÌ  rÒ  rØ  rÞ  r>  r;   r­  r®  s   @r   r   r   ä  s'  ø† ÷Gð
 ñ!ó ð!ð ×Ññ"ó ð"ð ñ;ó ð;ð ×Ññ;ó ð;ð ñ<ó ð<ð ×Ññ<ó ð<ð ñ;ó ð;ð ×Ññ;ó ð;ð ñ8ó ð8ð ×Ññ8ó ð8ð ñ;ó ð;ð ×Ññ;ó ð;÷:ð :r   r   c                   ó.   ^ • \ rS rSrU 4S jrS rSrU =r$ )ÚTimePassesHandleri"  c                 ó\   >• [         TU ]  [        R                  R	                  5       5        g r   )rD  rb   r   rA   ÚLLVMPY_CreateTimePassesHandler)r.   rG  s    €r   rb   ÚTimePassesHandler.__init__#  s   ø€ Ü‰ÑœŸ™×?Ñ?ÓAÕBr   c                 óB   • [         R                  R                  U 5        g r   )r   rA   ÚLLVMPY_DisposeTimePassesHandlerra   s    r   r>  ÚTimePassesHandler._dispose&  s   € Ü�‰×/Ñ/°Õ5r   r   )r6   r7   r8   r9   rb   r>  r;   r­  r®  s   @r   ré  ré  "  s   ø† õC÷6ð 6r   ré  c                   óF   ^ • \ rS rSrU 4S jrS rS rS rS rS r	Sr
U =r$ )	r   i*  c                 ó„   >• [         TU ]  [        R                  R	                  X5      5        X l        Xl        S U l        g r   )rD  rb   r   rA   ÚLLVMPY_CreatePassBuilderÚ_ptoÚ_tmÚ_time_passes_handler)r.   r   r   rG  s      €r   rb   ÚPassBuilder.__init__,  s1   ø€ Ü‰ÑœŸ™×9Ñ9¸"ÓBÔCØŒ	ØŒØ$(ˆÕ!r   c                 óz   • [        [        R                  R                  X R                  R
                  5      5      $ r   )r   r   rA   Ú$LLVMPY_buildPerModuleDefaultPipelineró  r   ra   s    r   ÚgetModulePassManagerÚ PassBuilder.getModulePassManager2  s.   € Ü Ü�G‰G×8Ñ8Ø—i‘i×+Ñ+ó-ó
ð 	
r   c                 óz   • [        [        R                  R                  X R                  R
                  5      5      $ r   )r   r   rA   Ú*LLVMPY_buildFunctionSimplificationPipelineró  r   ra   s    r   ÚgetFunctionPassManagerÚ"PassBuilder.getFunctionPassManager8  s.   € Ü"Ü�G‰G×>Ñ>Ø—i‘i×+Ñ+ó-ó
ð 	
r   c                 ó¬   • U R                   (       a  [        S5      e[        5       U l         [        R                  R                  X R                   5        g)z[Enable the pass timers.

Raises
------
RuntimeError
    If pass timing is already enabled.
z!Pass timing can only be done onceN)rõ  ÚRuntimeErrorré  r   rA   ÚLLVMPY_EnableTimePassesra   s    r   Ústart_pass_timingÚPassBuilder.start_pass_timing>  s<   € ð ×$×$ÜÐBÓCÐCÜ$5Ó$7ˆÔ!Ü�‰×'Ñ'¨×.GÑ.GÕHr   c                 ó  • U R                   (       d  [        S5      e[        R                  " 5        n[        R                  R                  U R                   U5        [        U5      sSSS5        $ ! , (       d  f       g= f)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   rL   rA   Ú!LLVMPY_ReportAndDisableTimePassesrN   )r.   rO   s     r   Úfinish_pass_timingÚPassBuilder.finish_pass_timingK  sW   € ð ×(×(ÜÐ;Ó<Ð<ä×ÒÔ 3Ü�G‰G×5Ñ5Ø×)Ñ)¨3ô0ä�s“8÷  ××ús   ²5A1Á1
A?c                 óB   • [         R                  R                  U 5        g r   )r   rA   ÚLLVMPY_DisposePassBuilderra   s    r   r>  ÚPassBuilder._dispose^  s   € Ü�‰×)Ñ)¨$Õ/r   )ró  rõ  rô  )r6   r7   r8   r9   rb   rù  rý  r  r  r>  r;   r­  r®  s   @r   r   r   *  s'   ø† õ)ò
ò
òIò÷&0ð 0r   r   Nrå  )F)­Úctypesr   r   r   r   r   r   r	   Úcollectionsr
   Úenumr   Úllvmlite.bindingr   r   r   r   r   Ú_prunestatsr    r=   rF   rJ   rP   rR   r^   Ú	ObjectRefr   r   r   ré  r   rA   rB   ÚargtypesrH   rM   ÚLLVMModulePassManagerRefrC  ÚrestypeÚLLVMModuleRefÚLLVMPassBuilderRefre   rJ  rl   rr   rx   r7  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-  r2  rN  rS  rW  r\  ra  re  ri  rn  rr  rv  rz  r~  rƒ  r‡  r‹  r�  r“  r˜  rœ  r   r<  r¦  ÚLLVMFunctionPassManagerRefr±  ÚLLVMValueRefrf   rm   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)  r8  r.  r3  r=  r´  ÚLLVMPipelineTuningOptionsRefr¹  rÃ  rÈ  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Ý "Ý Ý  òò!ò ô.ñ ˜ØBóE€ôB�ô Bô0$�Iô $ô*ò&	1òô 3˜ô 3÷z>ñ z>ôzXL˜Ÿ™ ~ô XLôvN˜#Ÿ-™-¨ô Nô4;:˜CŸM™Mô ;:ô|6˜Ÿ™ô 6ô50�#—-‘-ô 50ñv .5°]Ó-CÀVÐ,L€‡�×  Ñ  Ô )à)/¨€‡�× Ñ Ô %á18¸Ó1BÐ0C€‡�× $Ñ $Ô -ð 58×4PÑ4P€‡�× )Ñ )Ô 1ð × Ñ  #×"3Ñ"3Ø×Ñð3€‡�× &Ñ &Ô /ð 36×2NÑ2NÐ1P€‡�× %Ñ %Ô .Ø14×1MÑ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Ñ 2Ô ;ð × Ñ ð/#€‡�× "Ñ "Ô +ð × Ñ ð0#€‡�× #Ñ #Ô ,ð × Ñ ð6#€‡�× )Ñ )Ô 2ð × Ñ ð:#€‡�× -Ñ -Ô 6ð × Ñ ð.#€‡�× !Ñ !Ô *ð × Ñ ð5#€‡�× (Ñ (Ô 1ð × Ñ ð5#€‡�× (Ñ (Ô 1ð × Ñ ð5#€‡�× (Ñ (Ô 1ð × Ñ ð3#€‡�× &Ñ &Ô /ð × Ñ ð@#€‡�× 3Ñ 3Ô <ð × Ñ ð5#€‡�× (Ñ (Ô 1ð × Ñ ð2#€‡�× %Ñ %Ô .ð × Ñ ð.#€‡�× !Ñ !Ô *ð × Ñ ð1#€‡�× $Ñ $Ô -ð × Ñ ð6#€‡�× )Ñ )Ô 2ð × Ñ ð:#€‡�× -Ñ -Ô 6ð × Ñ ð6#€‡�× )Ñ )Ô 2ð × Ñ ð<#€‡�× /Ñ /Ô 8ð × Ñ ð7$€‡�× *Ñ *Ô 3ð × Ñ ðA$€‡�× 4Ñ 4Ô =ð × Ñ ð=$€‡�× 0Ñ 0Ô 9ð × Ñ ð@$€‡�× 3Ñ 3Ô <ð × Ñ ð7$€‡�× *Ñ *Ô 3ð × Ñ ðG$€‡�× :Ñ :Ô Cð × Ñ ð3$€‡�× &Ñ &Ô /ð × Ñ ð3$€‡�× &Ñ &Ô /ð × Ñ ð0$€‡�× #Ñ #Ô ,ð × Ñ ð5$€‡�× (Ñ (Ô 1ð × Ñ ð7$€‡�× *Ñ *Ô 3ð × Ñ ð8$€‡�× +Ñ +Ô 4ð × Ñ ð8$€‡�× +Ñ +Ô 4ð × Ñ ð6$€‡�× )Ñ )Ô 2ð × Ñ ð<$€‡�× /Ñ /Ô 8ð × Ñ ð=$€‡�× 0Ñ 0Ô 9ð × Ñ ð;$€‡�× .Ñ .Ô 7ð × Ñ ð>$€‡�× 1Ñ 1Ô :ð × Ñ ð;$€‡�× .Ñ .Ô 7ð × Ñ ð@$€‡�× 3Ñ 3Ô <ð × Ñ ð6#€‡�× )Ñ )Ô 2ð × Ñ  %¨ð2€‡�× %Ñ %Ô .ð ×"Ñ"ð ‡�× +Ñ +Ô 3ð ×"Ñ" C×$4Ñ$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Ñ 1Ô :ð ×"Ñ"ð/&€‡�× "Ñ "Ô +ð ×"Ñ"ð/&€‡�× "Ñ "Ô +ð ×"Ñ"ðA&€‡�× 4Ò 4Ô =ð ×"Ñ"ð1&€‡�× $Ò $Ô -ð ×"Ñ"ð2&€‡�× %Ò %Ô .ð ×"Ñ"ð8&€‡�× +Ò +Ô 4ð ×"Ñ"ð<&€‡�× /Ò /Ô 8ð ×"Ñ"ð0&€‡�× #Ò #Ô ,ð ×"Ñ"ð7&€‡�× *Ò *Ô 3ð ×"Ñ"ð7&€‡�× *Ò *Ô 3ð ×"Ñ"ð7&€‡�× *Ò *Ô 3ð ×"Ñ"ð5&€‡�× (Ò (Ô 1ð ×"Ñ"ðB&€‡�× 5Ò 5Ô >ð ×"Ñ"ð7&€‡�× *Ò *Ô 3ð ×"Ñ"ð4&€‡�× 'Ò 'Ô 0ð ×"Ñ"ð0&€‡�× #Ò #Ô ,ð ×"Ñ"ð3&€‡�× &Ò &Ô /ð ×"Ñ"ð8&€‡�× +Ò +Ô 4ð ×"Ñ"ð<&€‡�× /Ò /Ô 8ð ×"Ñ"ð6&€‡�× )Ò )Ô 2ð ×"Ñ"ð8&€‡�× +Ò +Ô 4ð ×"Ñ"ð>&€‡�× 1Ò 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Ñ+A€‡�×  Ò  Ô (à×ÒØ×$Ò$ð-€‡�×  Ò  Ô )ð
 /2×.DÑ.DÐ-F€‡�× !Ò !Ô *ð × Ò ð ‡�× &Ò &Ô .ð × Ò ð4#€‡�× 'Ò 'Ô 0ð ×ÑØ× Ò ð,€‡�× Ò Ô (ð × Ò ÙˆHÓð6€‡�× )Ò )Ô 2ð × Ñ ð ‡�× ,Ò ,Ô 4ð ×Ñ˜Eð9#€‡�× ,Ò ,Ô 5ð ×"Ñ"ð ‡�× 2Ò 2Ô :ð ×Ñ˜Eð?#€‡�× 2Ò 2Õ ;r   