
    shS                     |   S SK JrJr  S SKJr  S SKJr  S r " S S\R                  5      r\R                  \R                  R                  l        \R                  /\R                  R                  l        \R                  \R                  /\R                  R                   l        \R                  \R                  /\R                  R"                  l        \R                  R$                  \R                  R&                  \R                  R(                  4 H  r\R                  \/\l        M     \R                  R,                  \R                  R.                  4 H  r\R                  /\l        \\l        M     \R                  R0                  \R                  R2                  \R                  R4                  4 H  r\R                  \/\l        M     \R                  R6                  \R                  R8                  \R                  R:                  4 H  r\R                  /\l        \\l        M     g)    )c_uintc_bool)ffi)passmanagersc                      [        5       $ N)PassManagerBuilder     o/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/llvmlite/binding/transforms.pycreate_pass_manager_builderr      s    r   c                   ~   \ rS rSrSrSS 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S j5       r\S 5       r\R                  SS j5       r\S 5       r\R                  SS j5       rS rS rS rS rSrg)r	   
   r
   Nc                     Uc  [         R                  R                  5       n[         R                  R	                  X5        g r   )r   libLLVMPY_PassManagerBuilderCreate	ObjectRef__init__)selfptrs     r   r   PassManagerBuilder.__init__   s+    ;''99;Ct)r   c                 @    [         R                  R                  U 5      $ )z?
The general optimization level as an integer between 0 and 3.
)r   r   $LLVMPY_PassManagerBuilderGetOptLevelr   s    r   	opt_levelPassManagerBuilder.opt_level   s    
 ww;;DAAr   c                 B    [         R                  R                  X5        g r   )r   r   $LLVMPY_PassManagerBuilderSetOptLevel)r   levels     r   r   r      s    44TAr   c                 @    [         R                  R                  U 5      $ )zI
Whether and how much to optimize for size.  An integer between 0 and 2.
)r   r   %LLVMPY_PassManagerBuilderGetSizeLevelr   s    r   
size_levelPassManagerBuilder.size_level   s    
 ww<<TBBr   c                 B    [         R                  R                  X5        g r   )r   r   %LLVMPY_PassManagerBuilderSetSizeLevel)r   sizes     r   r"   r#   $   s    55dAr   c                     [        S5      e)z
The integer threshold for inlining a function into another.  The higher,
the more likely inlining a function is.  This attribute is write-only.
z inlining_threshold is write-only)NotImplementedErrorr   s    r   inlining_threshold%PassManagerBuilder.inlining_threshold(   s     ""DEEr   c                 B    [         R                  R                  X5        g r   )r   r   0LLVMPY_PassManagerBuilderUseInlinerWithThreshold)r   	thresholds     r   r)   r*   0   s    @@	r   c                 @    [         R                  R                  U 5      $ )z"
If true, disable loop unrolling.
)r   r   .LLVMPY_PassManagerBuilderGetDisableUnrollLoopsr   s    r   disable_unroll_loops'PassManagerBuilder.disable_unroll_loops5   s    
 wwEEdKKr   c                 B    [         R                  R                  X5        g r   )r   r   .LLVMPY_PassManagerBuilderSetDisableUnrollLoops)r   disables     r   r0   r1   <   s    >>tMr   c                 @    [         R                  R                  U 5      $ )z#
If true, allow vectorizing loops.
)r   r   )LLVMPY_PassManagerBuilderGetLoopVectorizer   s    r   loop_vectorize!PassManagerBuilder.loop_vectorize@   s    
 ww@@FFr   c                 @    [         R                  R                  X5      $ r   )r   r   )LLVMPY_PassManagerBuilderSetLoopVectorizer   enables     r   r7   r8   G   s    ww@@NNr   c                 @    [         R                  R                  U 5      $ )z
If true, enable the "SLP vectorizer", which uses a different algorithm
from the loop vectorizer.  Both may be enabled at the same time.
)r   r   (LLVMPY_PassManagerBuilderGetSLPVectorizer   s    r   slp_vectorize PassManagerBuilder.slp_vectorizeK   s     ww??EEr   c                 @    [         R                  R                  X5      $ r   )r   r   (LLVMPY_PassManagerBuilderSetSLPVectorizer;   s     r   r?   r@   S   s    ww??MMr   c                 B    [         R                  R                  X5        g r   )r   r   2LLVMPY_PassManagerBuilderPopulateModulePassManagerr   pms     r   _populate_module_pm&PassManagerBuilder._populate_module_pmW   s    BB4Lr   c                 B    [         R                  R                  X5        g r   )r   r   4LLVMPY_PassManagerBuilderPopulateFunctionPassManagerrE   s     r   _populate_function_pm(PassManagerBuilder._populate_function_pmZ   s    DDTNr   c                     [        U[        R                  5      (       a  U R                  U5        g [        U[        R                  5      (       a  U R                  U5        g [        U5      er   )
isinstancer   ModulePassManagerrG   FunctionPassManagerrK   	TypeErrorrE   s     r   populatePassManagerBuilder.populate]   sN    b,8899$$R(L<<==&&r*B-r   c                 :    U R                   R                  U 5        g r   )_capi LLVMPY_PassManagerBuilderDisposer   s    r   _disposePassManagerBuilder._disposee   s    

33D9r   r   )T)__name__
__module____qualname____firstlineno__	__slots__r   propertyr   setterr"   r)   r0   r7   r?   rG   rK   rR   rW   __static_attributes__r
   r   r   r	   r	   
   sL   I*
 B B B B C C B B F F   L L   N !N G G O O F F N NMO :r   r	   N)ctypesr   r   llvmlite.bindingr   r   r   r   r	   LLVMPassManagerBuilderRefr   r   restyperV   argtypesLLVMPassManagerRefrD   rJ   r   r%   r,   _funcr   r!   r3   r:   rB   r/   r6   r>   r
   r   r   <module>rh      s   !   ) \: \:D 362O2O ' ' / !!5 ( ( 1
 !!G : : C !!I < < E gg::gg;;ggFFE 33V<EN	 gg::gg;;E 334ENEM	 ggDDgg??gg>>E 33V<EN	 ggDDgg??gg>>E 334ENEMr   