+
    -i                     +   ^ RI HtHtHtHtHtHtHt ^ RIH	t	 ^ RI
Ht ^ RIHt R tR tR tR R lt]	! R	R
4      t ! R R	]4      t ! R R]4      tR!R ltR tR t ! R R]4      t ! R R4      t ! R R]P4                  ]4      t ! R R]P4                  ]4      t ! R R]P4                  4      t ! R R]P4                  4      t ! R R]P4                  4      t]! ]4      ].]P@                  PB                  n"        ].]P@                  PF                  n"        ]! ]4      .]P@                  PH                  n"        ]PJ                  ]P@                  PL                  n'        ]PJ                  ]PP                  ]PR                  .]P@                  PT                  n"        ]PJ                  .]P@                  PV                  n"        ]PJ                  .]P@                  PX                  n"        ]PJ                  .]P@                  PZ                  n"        ]PJ                  .]P@                  P\                  n"        ]PJ                  .]P@                  P^                  n"        ]PJ                  .]P@                  P`                  n"        ]PJ                  .]P@                  Pb                  n"        ]PJ                  .]P@                  Pd                  n"        ]PJ                  .]P@                  Pf                  n"        ]PJ                  .]P@                  Ph                  n"        ]PJ                  .]P@                  Pj                  n"        ]PJ                  .]P@                  Pl                  n"        ]PJ                  .]P@                  Pn                  n"        ]PJ                  .]P@                  Pp                  n"        ]PJ                  .]P@                  Pr                  n"        ]PJ                  .]P@                  Pt                  n"        ]PJ                  .]P@                  Pv                  n"        ]PJ                  .]P@                  Px                  n"        ]PJ                  .]P@                  Pz                  n"        ]PJ                  .]P@                  P|                  n"        ]PJ                  .]P@                  P~                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  .]P@                  P                  n"        ]PJ                  ]].]P@                  P                  n"        ]P                  ]P@                  P                  n'        ]P                  ]P                  ]PR                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  ].]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  P                  n"        ]P                  .]P@                  EP                   n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP
                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                  n"        ]P                  .]P@                  EP                   n"        ]P                  .]P@                  EP"                  n"        ]P                  .]P@                  EP$                  n"        ]P                  .]P@                  EP&                  n"        ]P                  .]P@                  EP(                  n"        ]P                  .]P@                  EP*                  n"        ]P                  .]P@                  EP,                  n"        ]P                  ]].]P@                  EP.                  n"        ]EP0                  ]P@                  EP2                  n'        ]]P@                  EP4                  n'        ]EP0                  .]P@                  EP4                  n"        ]EP0                  ].]P@                  EP6                  n"        ]]P@                  EP8                  n'        ]EP0                  .]P@                  EP8                  n"        ]EP0                  ].]P@                  EP:                  n"        ]]P@                  EP<                  n'        ]EP0                  .]P@                  EP<                  n"        ]EP0                  ].]P@                  EP>                  n"        ]]P@                  EP@                  n'        ]EP0                  .]P@                  EP@                  n"        ]EP0                  ].]P@                  EPB                  n"        ]]P@                  EPD                  n'        ]EP0                  ].]P@                  EPF                  n"        ]EP0                  .]P@                  EPH                  n"        ]PR                  ]P@                  EPJ                  n'        ]EPL                  ]EP0                  .]P@                  EPJ                  n"        ]PR                  .]P@                  EPN                  n"        ]EPP                  ]P@                  EPR                  n'        ]EPP                  .]P@                  EPT                  n"        ]PR                  ]EPP                  .]P@                  EPV                  n"        ]EPP                  ]! ]4      .]P@                  EPX                  n"        ]PJ                  ]P@                  EPZ                  n'        ]PR                  ]].]P@                  EPZ                  n"        ]P                  ]P@                  EP\                  n'        ]PR                  ]].]P@                  EP\                  n"        R# )"    )c_boolc_intc_size_tPOINTER	Structurebyrefc_char_p)
namedtuple)IntFlag)ffic                      \        4       # N)ModulePassManager     ^/var/www/html/photoedit/myenv/lib/python3.14/site-packages/llvmlite/binding/newpassmanagers.pycreate_new_module_pass_managerr      s    r   c                      \        4       # r   )FunctionPassManagerr   r   r    create_new_function_pass_managerr      s      r   c                     \        W4      # r   )PassBuilder)tmptos   &&r   create_pass_builderr      s    rr   c                     \        W4      # r   )PipelineTuningOptions)speed_level
size_levels   &&r   create_pipeline_tuning_optionsr       s     99r   
PruneStatsz&basicblock diamond fanout fanout_raisec                   0   a  ] tR t^t o RtR tR tRtV tR# )r!   z3Holds statistics from reference count pruning.
    c                l   \        V\        4      '       g&   R p\        VP                  \	        V4      4      4      h\        V P
                  VP
                  ,           V P                  VP                  ,           V P                  VP                  ,           V P                  VP                  ,           4      # )z;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    %,,OCCJJtE{344$//E,<,<<,,6++4++e.@.@@B 	Br   c                l   \        V\        4      '       g&   R p\        VP                  \	        V4      4      4      h\        V P
                  VP
                  ,
          V P                  VP                  ,
          V P                  VP                  ,
          V P                  VP                  ,
          4      # )zBPruneStats can only be subtracted from another PruneStats, got {}.r$   r-   s   && r   __sub__PruneStats.__sub__(   s    %,,CCJJtE{344$//E,<,<<,,6++4++e.@.@@B 	Br   r   N)	__name__
__module____qualname____firstlineno____doc__r1   r4   __static_attributes____classdictcell____classdict__s   @r   r!   r!      s     BB Br   c                   2    ] tR t^3tR]3R]3R]3R]3.tRtR# )_c_PruneStatsr)   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                    \        ^ ^ ^ ^ 4      p\        V 4      p\        P                  P	                  \        V4      V4       \        VP                  VP                  VP                  VP                  4      # )zReturns 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   libLLVMPY_DumpRefPruneStatsr   r!   r)   r*   r+   r,   )printoutstatsdo_prints   &  r   dump_refprune_statsrH   ;   s`     !Q1%EhHGG$$U5\8<e&&u||((* *r   c                V    \         P                  P                  \        V 4      4       R# )zEnable 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   rC   LLVMPY_SetTimePassesr   )enables   &r   set_time_passesrL   N   s     GG  0r   c                     \         P                  ! 4       ;_uu_ 4       p \         P                  P                  V 4       \	        V 4      uuRRR4       #   + '       g   i     R# ; i)zReturns 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   OutputStringrC   LLVMPY_ReportAndResetTimingsstr)bufs    r   report_and_reset_timingsrR   Z   s=     
				s,,S13x 
			s   *AA$	c                   T    ] tR t^jt^t^t^t^t]],          ],          ],          tRt	R# )RefPruneSubpassesr   N)
r6   r7   r8   r9   PER_BBDIAMONDFANOUTFANOUT_RAISEALLr;   r   r   r   rT   rT   j   s*    FGFL
7
V
#l
2Cr   rT   c                   &  a  ] tR t^rt o R tR tR tR tR tR t	R.R lt
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R" t%R# t&R$ t'R% t(R& t)R' t*R( t+R) t,R* t-R+ t.R,t/V t0R-# )/NewPassManagerc                B    \        V 4      \        J d   \        R 4      hR# )z*Cannot instantiate NewPassManager directlyN)r(   r[   r&   r.   s   &r   __init__NewPassManager.__init__t   s    :'HII (r   c                    \        V \        4      '       d#   \        P                  P	                  WV4       R # \        P                  P                  WV4       R # r   )r%   r   r   rC   LLVMPY_RunNewModulePassManager LLVMPY_RunNewFunctionPassManager)r.   IRpbs   &&&r   runNewPassManager.runx   s8    d-..GG224R@GG44TrBr   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddAAEvaluatorLLVMPY_function_AddAAEvaluatorr]   s   &r   add_aa_eval_passNewPassManager.add_aa_eval_pass~   4    d-..GG006GG2248r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC    LLVMPY_module_AddSimplifyCFGPass"LLVMPY_function_AddSimplifyCFGPassr]   s   &r   add_simplify_cfg_pass$NewPassManager.add_simplify_cfg_pass   4    d-..GG44T:GG66t<r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddLoopUnrollPass!LLVMPY_function_AddLoopUnrollPassr]   s   &r   add_loop_unroll_pass#NewPassManager.add_loop_unroll_pass   4    d-..GG33D9GG55d;r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC    LLVMPY_module_AddInstCombinePass"LLVMPY_function_AddInstCombinePassr]   s   &r   add_instruction_combine_pass+NewPassManager.add_instruction_combine_pass   rr   r   c                    \        V \        4      '       d"   \        P                  P	                  W4       R # \        P                  P                  W4       R # r   )r%   r   r   rC   "LLVMPY_AddJumpThreadingPass_module$LLVMPY_AddJumpThreadingPass_function)r.   	thresholds   &&r   add_jump_threading_pass&NewPassManager.add_jump_threading_pass   s4    d-..GG66tGGG88Ir   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddCFGPrinterPass!LLVMPY_function_AddCFGPrinterPassr]   s   &r   add_cfg_printer_pass#NewPassManager.add_cfg_printer_pass   rx   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   #LLVMPY_module_AddCFGOnlyPrinterPass%LLVMPY_function_AddCFGOnlyPrinterPassr]   s   &r   add_cfg_only_printer_pass(NewPassManager.add_cfg_only_printer_pass   4    d-..GG77=GG99$?r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddDomPrinterLLVMPY_function_AddDomPrinterr]   s   &r   add_dom_printer_pass#NewPassManager.add_dom_printer_pass   4    d-..GG//5GG11$7r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddDomOnlyPrinter!LLVMPY_function_AddDomOnlyPrinterr]   s   &r   add_dom_only_printer_pass(NewPassManager.add_dom_only_printer_pass   rx   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddPostDomPrinter!LLVMPY_function_AddPostDomPrinterr]   s   &r   add_post_dom_printer_pass(NewPassManager.add_post_dom_printer_pass   rx   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   #LLVMPY_module_AddPostDomOnlyPrinter%LLVMPY_function_AddPostDomOnlyPrinterr]   s   &r   add_post_dom_only_printer_pass-NewPassManager.add_post_dom_only_printer_pass   r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddDomViewerLLVMPY_function_AddDomViewerr]   s   &r   add_dom_viewer_pass"NewPassManager.add_dom_viewer_pass   4    d-..GG..t4GG006r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddDomOnlyViewer LLVMPY_function_AddDomOnlyViewerr]   s   &r   add_dom_only_viewer_pass'NewPassManager.add_dom_only_viewer_pass   4    d-..GG2248GG44T:r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddPostDomViewer LLVMPY_function_AddPostDomViewerr]   s   &r   add_post_dom_viewer_pass'NewPassManager.add_post_dom_viewer_pass   r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   "LLVMPY_module_AddPostDomOnlyViewer$LLVMPY_function_AddPostDomOnlyViewerr]   s   &r   add_post_dom_only_viewer_pass,NewPassManager.add_post_dom_only_viewer_pass   s4    d-..GG66t<GG88>r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddLintPassLLVMPY_function_AddLintPassr]   s   &r   add_lint_passNewPassManager.add_lint_pass   4    d-..GG--d3GG//5r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddADCEPassLLVMPY_function_AddADCEPassr]   s   &r   add_aggressive_dce_pass&NewPassManager.add_aggressive_dce_pass   r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   'LLVMPY_module_AddBreakCriticalEdgesPass)LLVMPY_function_AddBreakCriticalEdgesPassr]   s   &r   add_break_critical_edges_pass,NewPassManager.add_break_critical_edges_pass   4    d-..GG;;DAGG==dCr   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddDSEPassLLVMPY_function_AddDSEPassr]   s   &r   add_dead_store_elimination_pass.NewPassManager.add_dead_store_elimination_pass   4    d-..GG,,T2GG..t4r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddDCEPassLLVMPY_function_AddDCEPassr]   s   &r   add_dead_code_elimination_pass-NewPassManager.add_dead_code_elimination_pass   r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   *LLVMPY_module_AddAggressiveInstCombinePass,LLVMPY_function_AddAggressiveInstCombinePassr]   s   &r   add_aggressive_instcombine_pass.NewPassManager.add_aggressive_instcombine_pass   s4    d-..GG>>tDGG@@Fr   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddLCSSAPassLLVMPY_function_AddLCSSAPassr]   s   &r   add_lcssa_passNewPassManager.add_lcssa_pass   r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddNewGVNPassLLVMPY_function_AddNewGVNPassr]   s   &r   add_new_gvn_passNewPassManager.add_new_gvn_pass  r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   !LLVMPY_module_AddLoopSimplifyPass#LLVMPY_function_AddLoopSimplifyPassr]   s   &r   add_loop_simplify_pass%NewPassManager.add_loop_simplify_pass  4    d-..GG55d;GG77=r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   %LLVMPY_module_AddLoopUnrollAndJamPass'LLVMPY_function_AddLoopUnrollAndJamPassr]   s   &r   add_loop_unroll_and_jam_pass+NewPassManager.add_loop_unroll_and_jam_pass  4    d-..GG99$?GG;;DAr   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddSCCPPassLLVMPY_function_AddSCCPPassr]   s   &r   add_sccp_passNewPassManager.add_sccp_pass  r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC    LLVMPY_module_AddLowerAtomicPass"LLVMPY_function_AddLowerAtomicPassr]   s   &r   add_lower_atomic_pass$NewPassManager.add_lower_atomic_pass  rr   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC    LLVMPY_module_AddLowerInvokePass"LLVMPY_function_AddLowerInvokePassr]   s   &r   add_lower_invoke_pass$NewPassManager.add_lower_invoke_pass   rr   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC    LLVMPY_module_AddLowerSwitchPass"LLVMPY_function_AddLowerSwitchPassr]   s   &r   add_lower_switch_pass$NewPassManager.add_lower_switch_pass&  rr   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddMemCpyOptPass LLVMPY_function_AddMemCpyOptPassr]   s   &r   add_mem_copy_opt_pass$NewPassManager.add_mem_copy_opt_pass,  r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   +LLVMPY_module_AddUnifyFunctionExitNodesPass-LLVMPY_function_AddUnifyFunctionExitNodesPassr]   s   &r   "add_unify_function_exit_nodes_pass1NewPassManager.add_unify_function_exit_nodes_pass2  s4    d-..GG??EGGAA$Gr   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC    LLVMPY_module_AddReassociatePass"LLVMPY_function_AddReassociatePassr]   s   &r   add_reassociate_pass#NewPassManager.add_reassociate_pass8  rr   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddRegToMemPassLLVMPY_function_AddRegToMemPassr]   s   &r   add_register_to_memory_pass*NewPassManager.add_register_to_memory_pass>  s4    d-..GG11$7GG33D9r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddSROAPassLLVMPY_function_AddSROAPassr]   s   &r   add_sroa_passNewPassManager.add_sroa_passD  r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddSinkingPassLLVMPY_function_AddSinkingPassr]   s   &r   add_sinking_passNewPassManager.add_sinking_passJ  rl   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   !LLVMPY_module_AddTailCallElimPass#LLVMPY_function_AddTailCallElimPassr]   s   &r   add_tail_call_elimination_pass-NewPassManager.add_tail_call_elimination_passP  r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   %LLVMPY_module_AddInstructionNamerPass'LLVMPY_function_AddInstructionNamerPassr]   s   &r   add_instruction_namer_pass)NewPassManager.add_instruction_namer_passV  r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   !LLVMPY_module_AddLoopDeletionPass#LLVMPY_function_AddLoopDeletionPassr]   s   &r   add_loop_deletion_pass%NewPassManager.add_loop_deletion_pass\  r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   'LLVMPY_module_AddLoopStrengthReducePass)LLVMPY_function_AddLoopStrengthReducePassr]   s   &r   add_loop_strength_reduce_pass,NewPassManager.add_loop_strength_reduce_passb  r   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   LLVMPY_module_AddLoopRotatePass!LLVMPY_function_AddLoopRotatePassr]   s   &r   add_loop_rotate_pass#NewPassManager.add_loop_rotate_passh  rx   r   c                    \        V \        4      '       d"   \        P                  P	                  V 4       R # \        P                  P                  V 4       R # r   )r%   r   r   rC   !LLVMPY_DisposeNewModulePassManger#LLVMPY_DisposeNewFunctionPassMangerr]   s   &r   _disposeNewPassManager._disposen  r   r   r   N))1r6   r7   r8   r9   r^   re   rj   rp   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+  r0  r5  r:  r?  r;   r<   r=   s   @r   r[   r[   r   s     JC9=<=J<@8<<@7;;?66D55G78>B6===;H=:69>B>D<> >r   r[   c                      a a ] tR tRt oRV 3R lltR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR t]P6                  R3R ltRtVtV ;t# )r   iu  c                j   < Vf   \         P                  P                  4       p\        SV `  V4       R # r   )r   rC   !LLVMPY_CreateNewModulePassManagersuperr^   r.   ptr	__class__s   &&r   r^   ModulePassManager.__init__w  s'    ;'';;=Cr   c                D    \         P                  P                  V 4       R # r   )r   rC   LLVMPY_module_AddVerifierPassr]   s   &r   add_verifierModulePassManager.add_verifier|  s    --d3r   c                D    \         P                  P                  V 4       R # r   )r   rC   "LLVMPY_module_AddConstantMergePassr]   s   &r   add_constant_merge_pass)ModulePassManager.add_constant_merge_pass      2248r   c                D    \         P                  P                  V 4       R # r   )r   rC   ,LLVMPY_module_AddDeadArgumentEliminationPassr]   s   &r   add_dead_arg_elimination_pass/ModulePassManager.add_dead_arg_elimination_pass  s    <<TBr   c                D    \         P                  P                  V 4       R # r   )r   rC   (LLVMPY_module_AddCallGraphDOTPrinterPassr]   s   &r   add_dot_call_graph_printer_pass1ModulePassManager.add_dot_call_graph_printer_pass      88>r   c                D    \         P                  P                  V 4       R # r   )r   rC   +LLVMPY_module_AddModuleDebugInfoPrinterPassr]   s   &r   add_module_debug_info_pass,ModulePassManager.add_module_debug_info_pass      ;;DAr   c                D    \         P                  P                  V 4       R # r   )r   rC   "LLVMPY_module_AddAlwaysInlinerPassr]   s   &r   add_always_inliner_pass)ModulePassManager.add_always_inliner_pass  rR  r   c                D    \         P                  P                  V 4       R # r   )r   rC   2LLVMPY_module_AddReversePostOrderFunctionAttrsPassr]   s   &r   add_rpo_function_attrs_pass-ModulePassManager.add_rpo_function_attrs_pass  s    BB4Hr   c                D    \         P                  P                  V 4       R # r   )r   rC   LLVMPY_module_AddGlobalDCEPassr]   s   &r   #add_global_dead_code_eliminate_pass5ModulePassManager.add_global_dead_code_eliminate_pass      ..t4r   c                D    \         P                  P                  V 4       R # r   )r   rC   LLVMPY_module_AddGlobalOptPassr]   s   &r   add_global_opt_pass%ModulePassManager.add_global_opt_pass  rm  r   c                D    \         P                  P                  V 4       R # r   )r   rC   LLVMPY_module_AddIPSCCPPassr]   s   &r   add_ipsccp_pass!ModulePassManager.add_ipsccp_pass  s    ++D1r   c                D    \         P                  P                  V 4       R # r   )r   rC    LLVMPY_module_AddInternalizePassr]   s   &r   add_internalize_pass&ModulePassManager.add_internalize_pass  s    006r   c                D    \         P                  P                  V 4       R # r   )r   rC   "LLVMPY_module_AddLoopExtractorPassr]   s   &r   add_loop_extract_pass'ModulePassManager.add_loop_extract_pass  rR  r   c                D    \         P                  P                  V 4       R # r   )r   rC   #LLVMPY_module_AddMergeFunctionsPassr]   s   &r   add_merge_functions_pass*ModulePassManager.add_merge_functions_pass      33D9r   c                D    \         P                  P                  V 4       R # r   )r   rC   #LLVMPY_module_AddPartialInlinerPassr]   s   &r   add_partial_inliner_pass*ModulePassManager.add_partial_inliner_pass  r  r   c                D    \         P                  P                  V 4       R # r   )r   rC   !LLVMPY_module_AddStripSymbolsPassr]   s   &r   add_strip_symbols_pass(ModulePassManager.add_strip_symbols_pass  s    11$7r   c                D    \         P                  P                  V 4       R # r   )r   rC   'LLVMPY_module_AddStripDeadDebugInfoPassr]   s   &r   add_strip_dead_debug_info_pass0ModulePassManager.add_strip_dead_debug_info_pass  s    77=r   c                D    \         P                  P                  V 4       R # r   )r   rC   (LLVMPY_module_AddStripDeadPrototypesPassr]   s   &r   add_strip_dead_prototype_pass/ModulePassManager.add_strip_dead_prototype_pass  r[  r   c                D    \         P                  P                  V 4       R # r   )r   rC   &LLVMPY_module_AddStripDebugDeclarePassr]   s   &r   add_strip_debug_declare_pass.ModulePassManager.add_strip_debug_declare_pass      66t<r   c                D    \         P                  P                  V 4       R # r   )r   rC   )LLVMPY_module_AddStripNonDebugSymbolsPassr]   s   &r    add_strip_non_debug_symbols_pass2ModulePassManager.add_strip_non_debug_symbols_pass  s    99$?r   c                D    \         P                  P                  V 4       R # r   )r   rC   &LLVMPY_module_AddArgumentPromotionPassr]   s   &r   add_argument_promotion_pass-ModulePassManager.add_argument_promotion_pass  r  r   c                D    \         P                  P                  V 4       R # r   )r   rC   +LLVMPY_module_AddPostOrderFunctionAttrsPassr]   s   &r   'add_post_order_function_attributes_pass9ModulePassManager.add_post_order_function_attributes_pass  r`  r     c                \    \        V4      p\        P                  P                  WV4       R# 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)rT   r   rC   LLVMPY_AddRefPrunePass_moduler.   subpasses_flagssubgraph_limitiflagss   &&& r   add_refprune_pass#ModulePassManager.add_refprune_pass  s"     #?3--dNKr   r   r   ) r6   r7   r8   r9   r^   rL  rP  rU  rY  r^  rc  rg  rk  rp  rt  rx  r|  r  r  r  r  r  r  r  r  r  rT   rY   r  r;   r<   __classcell__rH  r>   s   @@r   r   r   u  s     
49C?
B9I55279::8>?=@=B 1B0E0E)-L Lr   r   c                   X   a a ] tR tRt oRV 3R llt]P                  R3R ltRtVt	V ;t
# )r   i  c                j   < Vf   \         P                  P                  4       p\        SV `  V4       R # r   )r   rC   #LLVMPY_CreateNewFunctionPassManagerrE  r^   rF  s   &&r   r^   FunctionPassManager.__init__  s'    ;''==?Cr   r  c                \    \        V4      p\        P                  P                  WV4       R# r  )rT   r   rC   LLVMPY_AddRefPrunePass_functionr  s   &&& r   r  %FunctionPassManager.add_refprune_pass  s"     #?3//nMr   r   r   )r6   r7   r8   r9   r^   rT   rY   r  r;   r<   r  r  s   @@r   r   r     s%      1B0E0E)-N Nr   r   c                     a a ] tR tRt oRV 3R llt]R 4       t]P                  R 4       t]R 4       t]P                  R 4       t]R 4       t	]	P                  R 4       t	]R	 4       t
]
P                  R
 4       t
]R 4       t]P                  R 4       t]R 4       t]P                  R 4       t]R 4       t]P                  R 4       tR tRtVtV ;t# )r   i  c                   < R V n         R V n        Wn        W n        \        SV `  \        P                  P                  4       4       R # r   )	_speed_level_size_levelr   r   rE  r^   r   rC   "LLVMPY_CreatePipelineTuningOptions)r.   r   r   rH  s   &&&r   r^   PipelineTuningOptions.__init__  s8     &$CCEFr   c                    V P                   # r   )r  r]   s   &r   r   !PipelineTuningOptions.speed_level  s       r   c                J    ^ Tu;8:  d   ^8:  g   M \        R4      hWn        R# )r   z4Optimization level for speed should be 0, 1, 2, or 3N)
ValueErrorr  r.   values   &&r   r   r    s%    EQFH H!r   c                    V P                   # r   )r  r]   s   &r   r    PipelineTuningOptions.size_level  s    r   c                    ^ Tu;8:  d   ^8:  g   M \        R4      hV^ 8w  d   V P                  ^8w  d   \        R4      hWn        R# )r   z0Optimization level for size should be 0, 1, or 2z=Optimization for size should be encoded with speed level == 2N)r  r   r  r  s   &&r   r   r    sE    EQOPPA:$**a/OQ Q r   c                @    \         P                  P                  V 4      # r   )r   rC   LLVMPY_PTOGetLoopInterleavingr]   s   &r   loop_interleaving'PipelineTuningOptions.loop_interleaving      ww44T::r   c                D    \         P                  P                  W4       R # r   )r   rC   LLVMPY_PTOSetLoopInterleavingr  s   &&r   r  r        --d:r   c                @    \         P                  P                  V 4      # r   )r   rC   LLVMPY_PTOGetLoopVectorizationr]   s   &r   loop_vectorization(PipelineTuningOptions.loop_vectorization  s    ww55d;;r   c                D    \         P                  P                  W4       R # r   )r   rC   LLVMPY_PTOSetLoopVectorizationr  s   &&r   r  r    s    ..t;r   c                @    \         P                  P                  V 4      # r   )r   rC   LLVMPY_PTOGetSLPVectorizationr]   s   &r   slp_vectorization'PipelineTuningOptions.slp_vectorization  r  r   c                D    \         P                  P                  W4       R # r   )r   rC   LLVMPY_PTOSetSLPVectorizationr  s   &&r   r  r    r  r   c                @    \         P                  P                  V 4      # r   )r   rC   LLVMPY_PTOGetLoopUnrollingr]   s   &r   loop_unrolling$PipelineTuningOptions.loop_unrolling#  s    ww11$77r   c                D    \         P                  P                  W4       R # r   )r   rC   LLVMPY_PTOSetLoopUnrollingr  s   &&r   r  r  '  s    **47r   c                @    \         P                  P                  V 4      # r   )r   rC   LLVMPY_PTOGetInlinerThresholdr]   s   &r   inlining_threshold(PipelineTuningOptions.inlining_threshold+  r  r   c                D    \         P                  P                  W4       R # r   )r   rC   LLVMPY_PTOSetInlinerThresholdr  s   &&r   r  r  /  r  r   c                D    \         P                  P                  V 4       R # r   )r   rC   #LLVMPY_DisposePipelineTuningOptionsr]   s   &r   r?  PipelineTuningOptions._dispose3  r  r   )r  r  r   r      r   )r6   r7   r8   r9   r^   propertyr   setterr   r  r  r  r  r  r?  r;   r<   r  r  s   @@r   r   r     sW    G ! ! " "     ! ! ; ; ; ; < < < < ; ; ; ; 8 8 8 8 ; ; ; ;: :r   r   c                   8   a a ] tR tRt oV 3R ltR tRtVtV ;t# )TimePassesHandleri7  c                ^   < \         SV `  \        P                  P	                  4       4       R # r   )rE  r^   r   rC   LLVMPY_CreateTimePassesHandler)r.   rH  s   &r   r^   TimePassesHandler.__init__8  s    ??ABr   c                D    \         P                  P                  V 4       R # r   )r   rC   LLVMPY_DisposeTimePassesHandlerr]   s   &r   r?  TimePassesHandler._dispose;  s    //5r   r   )	r6   r7   r8   r9   r^   r?  r;   r<   r  r  s   @@r   r  r  7  s     C6 6r   r  c                   P   a a ] tR tRt oV 3R ltR tR tR tR tR t	Rt
VtV ;t# )	r   i?  c                   < \         SV `  \        P                  P	                  W4      4       W n        Wn        R V n        R # r   )rE  r^   r   rC   LLVMPY_CreatePassBuilder_pto_tm_time_passes_handler)r.   r   r   rH  s   &&&r   r^   PassBuilder.__init__A  s1    99"BC	$(!r   c                    \        \        P                  P                  W P                  P
                  V P                  P                  4      4      # r   )r   r   rC   $LLVMPY_buildPerModuleDefaultPipeliner  r   r   r]   s   &r   getModulePassManager PassBuilder.getModulePassManagerG  s;     GG88ii++TYY-A-AC
 	
r   c                    \        \        P                  P                  W P                  P
                  V P                  P                  4      4      # r   )r   r   rC   *LLVMPY_buildFunctionSimplificationPipeliner  r   r   r]   s   &r   getFunctionPassManager"PassBuilder.getFunctionPassManagerM  s;    "GG>>ii++TYY-A-AC
 	
r   c                    V P                   '       d   \        R4      h\        4       V n         \        P                  P                  W P                   4       R# )z[Enable the pass timers.

Raises
------
RuntimeError
    If pass timing is already enabled.
z!Pass timing can only be done onceN)r  RuntimeErrorr  r   rC   LLVMPY_EnableTimePassesr]   s   &r   start_pass_timingPassBuilder.start_pass_timingS  s?     $$$BCC$5$7!''.G.GHr   c                   V P                   '       g   \        R4      h\        P                  ! 4       ;_uu_ 4       p\        P                  P                  V P                   V4       \        V4      uuRRR4       #   + '       g   i     R# ; i)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   rN   rC   !LLVMPY_ReportAndDisableTimePassesrP   )r.   rQ   s   & r   finish_pass_timingPassBuilder.finish_pass_timing`  s`     (((;<<3GG55))30s8  s   5A;;B	c                D    \         P                  P                  V 4       R # r   )r   rC   LLVMPY_DisposePassBuilderr]   s   &r   r?  PassBuilder._disposes  s    ))$/r   )r  r  r  )r6   r7   r8   r9   r^   r  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@   rH   rL   rR   rT   r[   	ObjectRefr   r   r   r  r   rC   rD   argtypesrJ   rO   LLVMModulePassManagerRefrD  restypeLLVMModuleRefLLVMPassBuilderRefra   rK  rh   rn   rt   r8  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.  r3  rO  rT  rX  r]  rb  rf  rj  ro  rs  rw  r{  r  r  r  r  r  r  r  r  r  r=  r  LLVMFunctionPassManagerRefr  LLVMValueRefrb   ri   ro   ru   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*  r9  r/  r4  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@> @>FXL~ XLvN#-- N4J:CMM J:Z6 650#-- 50v .5]-CV,L     ))/   %181B0C $ $ - 584P4P ) ) 1   #"3"33 & & / 362N2N1P % % .141M1M0O $ $ -  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& # # , ""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 ""E8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 E59* , , 5 ""  2 2 : E5?* 2 2 ;r   