
    shP,                        S SK JrJr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\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r\R$                  \R&                  R(                  l        \R$                  \R,                  \R.                  /\R&                  R0                  l        \R$                  /\R&                  R4                  l        \R$                  /\R&                  R6                  l        \R$                  /\R&                  R8                  l        \R$                  /\R&                  R:                  l        \R$                  /\R&                  R<                  l        \R$                  /\R&                  R>                  l        \R$                  /\R&                  R@                  l        \R$                  /\R&                  RB                  l        \R$                  \\/\R&                  RD                  l        \RF                  \R&                  RH                  l        \RF                  \RJ                  \R.                  /\R&                  RL                  l        \RF                  /\R&                  RN                  l        \RF                  /\R&                  RP                  l        \RF                  /\R&                  RR                  l        \RF                  /\R&                  RT                  l        \RF                  /\R&                  RV                  l        \RF                  \/\R&                  RX                  l        \RF                  /\R&                  RZ                  l        \RF                  \\/\R&                  R\                  l        \R^                  \R&                  R`                  l        \\R&                  Rb                  l        \R^                  /\R&                  Rb                  l        \R^                  \/\R&                  Rd                  l        \\R&                  Rf                  l        \R^                  /\R&                  Rf                  l        \R^                  \/\R&                  Rh                  l        \\R&                  Rj                  l        \R^                  /\R&                  Rj                  l        \R^                  \/\R&                  Rl                  l        \\R&                  Rn                  l        \R^                  /\R&                  Rn                  l        \R^                  \/\R&                  Rp                  l        \R^                  /\R&                  Rr                  l        \R.                  \R&                  Rt                  l        \Rv                  \R^                  /\R&                  Rt                  l        \R.                  /\R&                  Rx                  l        \R$                  \R&                  Rz                  l        \R.                  \\/\R&                  Rz                  l        \RF                  \R&                  R|                  l        \R.                  \\/\R&                  R|                  l        g)    )c_boolc_intc_size_t)IntFlag)ffic                      [        5       $ N)ModulePassManager     t/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/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                     [        X5      $ r	   )PipelineTuningOptions)speed_level
size_levels     r   create_pipeline_tuning_optionsr      s     99r   c                   :    \ rS rSrSrSrSrSr\\-  \-  \-  rSr	g)RefPruneSubpasses               r   N)
__name__
__module____qualname____firstlineno__PER_BBDIAMONDFANOUTFANOUT_RAISEALL__static_attributes__r   r   r   r   r      s*    FGFL
7
V
#l
2Cr   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S
 jrS r\R                  S4S jrSrU =r$ )r
      c                 f   > Uc  [         R                  R                  5       n[        TU ]  U5        g r	   )r   lib!LLVMPY_CreateNewModulePassManagersuper__init__selfptr	__class__s     r   r3   ModulePassManager.__init__    s'    ;'';;=Cr   c                 D    [         R                  R                  XU5        g r	   )r   r0   LLVMPY_RunNewModulePassManager)r5   modulepbs      r   runModulePassManager.run%   s    ..tR@r   c                 B    [         R                  R                  U 5        g r	   )r   r0   LLVMPY_AddVerifierPassr5   s    r   add_verifierModulePassManager.add_verifier(   s    &&t,r   c                 B    [         R                  R                  U 5        g r	   )r   r0   LLVMPY_AddAAEvalPass_modulerA   s    r   add_aa_eval_pass"ModulePassManager.add_aa_eval_pass+   s    ++D1r   c                 B    [         R                  R                  U 5        g r	   )r   r0    LLVMPY_AddSimplifyCFGPass_modulerA   s    r   add_simplify_cfg_pass'ModulePassManager.add_simplify_cfg_pass.   s    006r   c                 B    [         R                  R                  U 5        g r	   )r   r0   LLVMPY_AddLoopUnrollPass_modulerA   s    r   add_loop_unroll_pass&ModulePassManager.add_loop_unroll_pass1       //5r   c                 B    [         R                  R                  U 5        g r	   )r   r0   LLVMPY_AddLoopRotatePass_modulerA   s    r   add_loop_rotate_pass&ModulePassManager.add_loop_rotate_pass4   rP   r   c                 B    [         R                  R                  U 5        g r	   )r   r0   'LLVMPY_AddInstructionCombinePass_modulerA   s    r   add_instruction_combine_pass.ModulePassManager.add_instruction_combine_pass7   s    77=r   c                 B    [         R                  R                  X5        g r	   )r   r0   "LLVMPY_AddJumpThreadingPass_moduler5   	thresholds     r   add_jump_threading_pass)ModulePassManager.add_jump_threading_pass:   s    224Cr   c                 B    [         R                  R                  U 5        g r	   )r   r0   !LLVMPY_DisposeNewModulePassMangerrA   s    r   _disposeModulePassManager._dispose=       11$7r     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)r   r   r0   LLVMPY_AddRefPrunePass_moduler5   subpasses_flagssubgraph_limitiflagss       r   add_refprune_pass#ModulePassManager.add_refprune_passA   s"     #?3--dNKr   r   r	   )r#   r$   r%   r&   r3   r=   rB   rF   rJ   rN   rS   rW   r]   ra   r   r+   rl   r,   __classcell__r7   s   @r   r
   r
      sR    
A-2766>D8 1B0E0E)-L L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S	 jrS
 r\R                  S4S jrSrU =r$ )r   S   c                 f   > Uc  [         R                  R                  5       n[        TU ]  U5        g r	   )r   r0   #LLVMPY_CreateNewFunctionPassManagerr2   r3   r4   s     r   r3   FunctionPassManager.__init__U   s'    ;''==?Cr   c                 D    [         R                  R                  XU5        g r	   )r   r0    LLVMPY_RunNewFunctionPassManager)r5   funr<   s      r   r=   FunctionPassManager.runZ   s    00B?r   c                 B    [         R                  R                  U 5        g r	   )r   r0   LLVMPY_AddAAEvalPass_functionrA   s    r   rF   $FunctionPassManager.add_aa_eval_pass]   s    --d3r   c                 B    [         R                  R                  U 5        g r	   )r   r0   "LLVMPY_AddSimplifyCFGPass_functionrA   s    r   rJ   )FunctionPassManager.add_simplify_cfg_pass`   s    2248r   c                 B    [         R                  R                  U 5        g r	   )r   r0   !LLVMPY_AddLoopUnrollPass_functionrA   s    r   rN   (FunctionPassManager.add_loop_unroll_passc   rc   r   c                 B    [         R                  R                  U 5        g r	   )r   r0   !LLVMPY_AddLoopRotatePass_functionrA   s    r   rS   (FunctionPassManager.add_loop_rotate_passf   rc   r   c                 B    [         R                  R                  U 5        g r	   )r   r0   )LLVMPY_AddInstructionCombinePass_functionrA   s    r   rW   0FunctionPassManager.add_instruction_combine_passi   s    99$?r   c                 B    [         R                  R                  X5        g r	   )r   r0   $LLVMPY_AddJumpThreadingPass_functionr[   s     r   r]   +FunctionPassManager.add_jump_threading_passl   s    44TEr   c                 B    [         R                  R                  U 5        g r	   )r   r0   #LLVMPY_DisposeNewFunctionPassMangerrA   s    r   ra   FunctionPassManager._disposeo       33D9r   rd   c                 Z    [        U5      n[        R                  R                  XU5        grf   )r   r   r0   LLVMPY_AddRefPrunePass_functionrh   s       r   rl   %FunctionPassManager.add_refprune_passs   s"     #?3//nMr   r   r	   rn   )r#   r$   r%   r&   r3   r=   rF   rJ   rN   rS   rW   r]   ra   r   r+   rl   r,   rp   rq   s   @r   r   r   S   sN    
@4988@F: 1B0E0E)-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      c                    > S U l         S U l        Xl        X l        [        TU ]  [        R                  R                  5       5        g r	   )	_speed_level_size_levelr   r   r2   r3   r   r0   "LLVMPY_CreatePipelineTuningOptions)r5   r   r   r7   s      r   r3   PipelineTuningOptions.__init__   s8     &$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   r5   values     r   r   r      s%    EQFH H!r   c                     U R                   $ r	   )r   rA   s    r   r    PipelineTuningOptions.size_level   s    r   c                     SUs=::  a  S::  d  O  [        S5      eUS:w  a  U R                  S:w  a  [        S5      eXl        g )Nr   r    z0Optimization level for size should be 0, 1, or 2z=Optimization for size should be encoded with speed level == 2)r   r   r   r   s     r   r   r      sE    EQOPPA:$**a/OQ Q r   c                 @    [         R                  R                  U 5      $ r	   )r   r0   LLVMPY_PTOGetLoopInterleavingrA   s    r   loop_interleaving'PipelineTuningOptions.loop_interleaving       ww44T::r   c                 B    [         R                  R                  X5        g r	   )r   r0   LLVMPY_PTOSetLoopInterleavingr   s     r   r   r          --d:r   c                 @    [         R                  R                  U 5      $ r	   )r   r0   LLVMPY_PTOGetLoopVectorizationrA   s    r   loop_vectorization(PipelineTuningOptions.loop_vectorization   s    ww55d;;r   c                 B    [         R                  R                  X5        g r	   )r   r0   LLVMPY_PTOSetLoopVectorizationr   s     r   r   r      s    ..t;r   c                 @    [         R                  R                  U 5      $ r	   )r   r0   LLVMPY_PTOGetSLPVectorizationrA   s    r   slp_vectorization'PipelineTuningOptions.slp_vectorization   r   r   c                 B    [         R                  R                  X5        g r	   )r   r0   LLVMPY_PTOSetSLPVectorizationr   s     r   r   r      r   r   c                 @    [         R                  R                  U 5      $ r	   )r   r0   LLVMPY_PTOGetLoopUnrollingrA   s    r   loop_unrolling$PipelineTuningOptions.loop_unrolling   s    ww11$77r   c                 B    [         R                  R                  X5        g r	   )r   r0   LLVMPY_PTOSetLoopUnrollingr   s     r   r   r      s    **47r   c                 B    [         R                  R                  U 5        g r	   )r   r0   #LLVMPY_DisposePipelineTuningOptionsrA   s    r   ra   PipelineTuningOptions._dispose   r   r   )r   r   r   r   r    r   )r#   r$   r%   r&   r3   propertyr   setterr   r   r   r   r   ra   r,   rp   rq   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S rSrU =r	$ )r      c                 v   > [         TU ]  [        R                  R	                  X5      5        X l        Xl        g r	   )r2   r3   r   r0   LLVMPY_CreatePassBuilder_pto_tm)r5   r   r   r7   s      r   r3   PassBuilder.__init__   s)    99"BC	r   c                     [        [        R                  R                  X R                  R
                  U R                  R                  5      5      $ r	   )r
   r   r0   $LLVMPY_buildPerModuleDefaultPipeliner   r   r   rA   s    r   getModulePassManager PassBuilder.getModulePassManager   s;     GG88ii++TYY-A-AC
 	
r   c                     [        [        R                  R                  X R                  R
                  U R                  R                  5      5      $ r	   )r   r   r0   *LLVMPY_buildFunctionSimplificationPipeliner   r   r   rA   s    r   getFunctionPassManager"PassBuilder.getFunctionPassManager   s;    "GG>>ii++TYY-A-AC
 	
r   c                 B    [         R                  R                  U 5        g r	   )r   r0   LLVMPY_DisposePassBuilderrA   s    r   ra   PassBuilder._dispose   s    ))$/r   )r   r   )
r#   r$   r%   r&   r3   r   r   ra   r,   rp   rq   s   @r   r   r      s    


0 0r   r   Nr   )?ctypesr   r   r   enumr   llvmlite.bindingr   r   r   r   r   r   	ObjectRefr
   r   r   r   LLVMModulePassManagerRefr0   r1   restypeLLVMModuleRefLLVMPassBuilderRefr:   argtypesr@   rE   rI   rM   rR   rV   rZ   r`   rg   LLVMFunctionPassManagerRefru   LLVMValueRefrx   r|   r   r   r   r   r   r   r   LLVMPipelineTuningOptionsRefr   r   r   r   r   r   r   r   r   r   r   LLVMTargetMachineRefr   r   r   r   r   r   <module>r      s   * *   ! :3 32L 2Lj/N#-- /NdK:CMM K:\0#-- 08 584P4P ) ) 1   #"3"33 & & / ,/+G+G*I   '030L0L/N # # ,  5# ( ( 1   4# ' ' 0   4# ' ' 0   <# / / 8   7# * * 3   6# ) ) 2   %2 % % . ""  + + 3 ""C$4$45 ( ( 1
 ""2% % % . ""7% * * 3 ""6% ) ) 2 ""6% ) ) 2 "">% 1 1 : ""E9, , , 5 ""8% + + 4 ""E84 ' ' 0 $$  * * 2 17 % % -$$2' % % . $$f2. % % . 28 & & .$$3' & & / $$f3. & & / 17 % % -$$2' % % . $$f2. % % . .4 " " *$$/' " " + $$f/. " " + 	%%'  + + 4
 ,/+A+A     (-0-E-E-0-M-M-P     ) /2.D.D-F ! ! *
     , , 4 E59* , , 5 ""  2 2 : E5?* 2 2 ;r   