
    I/PhS                        d dl mZmZ d dlmZ d dlmZ d Z G d dej                  Zej	        ej
        j        _        ej	        gej
        j        _        ej	        ej        gej
        j        _        ej	        ej        gej
        j        _        ej
        j        ej
        j        ej
        j        fD ]Zej	        ege_        ej
        j        ej
        j        fD ]Zej	        ge_        ee_        ej
        j        ej
        j        ej
        j        fD ]Zej	        ege_        ej
        j        ej
        j        ej
        j        fD ]Zej	        ge_        ee_        dS )    )c_uintc_bool)ffi)passmanagersc                      t                      S N)PassManagerBuilder     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/llvmlite/binding/transforms.pycreate_pass_manager_builderr      s    r   c                   |   e Zd ZdZddZed             Zej        d             Zed             Zej        d             Zed             Z	e	j        d	             Z	ed
             Z
e
j        dd            Z
ed             Zej        dd            Zed             Zej        dd            Zd Zd Zd Zd ZdS )r	   r
   Nc                     |t           j                                        }t           j                            | |           d S r   )r   libLLVMPY_PassManagerBuilderCreate	ObjectRef__init__)selfptrs     r   r   zPassManagerBuilder.__init__   s8    ;'99;;CtS)))))r   c                 @    t           j                            |           S )zO
        The general optimization level as an integer between 0 and 3.
        )r   r   $LLVMPY_PassManagerBuilderGetOptLevelr   s    r   	opt_levelzPassManagerBuilder.opt_level   s    
 w;;DAAAr   c                 F    t           j                            | |           d S r   )r   r   $LLVMPY_PassManagerBuilderSetOptLevel)r   levels     r   r   zPassManagerBuilder.opt_level   s     44T5AAAAAr   c                 @    t           j                            |           S )zY
        Whether and how much to optimize for size.  An integer between 0 and 2.
        )r   r   %LLVMPY_PassManagerBuilderGetSizeLevelr   s    r   
size_levelzPassManagerBuilder.size_level   s    
 w<<TBBBr   c                 F    t           j                            | |           d S r   )r   r   %LLVMPY_PassManagerBuilderSetSizeLevel)r   sizes     r   r   zPassManagerBuilder.size_level$   s     55dDAAAAAr   c                      t          d          )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_thresholdz%PassManagerBuilder.inlining_threshold(   s     ""DEEEr   c                 F    t           j                            | |           d S r   )r   r   0LLVMPY_PassManagerBuilderUseInlinerWithThreshold)r   	thresholds     r   r%   z%PassManagerBuilder.inlining_threshold0   s+    @@)	 	 	 	 	r   c                 @    t           j                            |           S )z2
        If true, disable loop unrolling.
        )r   r   .LLVMPY_PassManagerBuilderGetDisableUnrollLoopsr   s    r   disable_unroll_loopsz'PassManagerBuilder.disable_unroll_loops5   s    
 wEEdKKKr   Tc                 F    t           j                            | |           d S r   )r   r   .LLVMPY_PassManagerBuilderSetDisableUnrollLoops)r   disables     r   r+   z'PassManagerBuilder.disable_unroll_loops<   s     >>tWMMMMMr   c                 @    t           j                            |           S )z3
        If true, allow vectorizing loops.
        )r   r   )LLVMPY_PassManagerBuilderGetLoopVectorizer   s    r   loop_vectorizez!PassManagerBuilder.loop_vectorize@   s    
 w@@FFFr   c                 B    t           j                            | |          S r   )r   r   )LLVMPY_PassManagerBuilderSetLoopVectorizer   enables     r   r1   z!PassManagerBuilder.loop_vectorizeG   s    w@@vNNNr   c                 @    t           j                            |           S )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_vectorizez PassManagerBuilder.slp_vectorizeK   s     w??EEEr   c                 B    t           j                            | |          S r   )r   r   (LLVMPY_PassManagerBuilderSetSLPVectorizer4   s     r   r8   z PassManagerBuilder.slp_vectorizeS   s    w??fMMMr   c                 F    t           j                            | |           d S r   )r   r   2LLVMPY_PassManagerBuilderPopulateModulePassManagerr   pms     r   _populate_module_pmz&PassManagerBuilder._populate_module_pmW   s     BB4LLLLLr   c                 F    t           j                            | |           d S r   )r   r   4LLVMPY_PassManagerBuilderPopulateFunctionPassManagerr=   s     r   _populate_function_pmz(PassManagerBuilder._populate_function_pmZ   s     DDT2NNNNNr   c                     t          |t          j                  r|                     |           d S t          |t          j                  r|                     |           d S t          |          r   )
isinstancer   ModulePassManagerr?   FunctionPassManagerrB   	TypeErrorr=   s     r   populatezPassManagerBuilder.populate]   sl    b,899 	 $$R(((((L<== 	 &&r*****B--r   c                 :    | j                             |            d S r   )_capi LLVMPY_PassManagerBuilderDisposer   s    r   _disposezPassManagerBuilder._disposee   s    
33D99999r   r   )T)__name__
__module____qualname__	__slots__r   propertyr   setterr   r%   r+   r1   r8   r?   rB   rH   rL   r
   r   r   r	   r	   
   s       I* * * *
 B B XB B B B C C XC B B B F F XF    L L XL  N N N ! N G G XG O O O O F F XF N N N NM M MO O O     : : : : :r   r	   N)ctypesr   r   llvmlite.bindingr   r   r   r   r	   LLVMPassManagerBuilderRefr   r   restyperK   argtypesLLVMPassManagerRefr<   rA   r   r!   r'   _funcr   r   r-   r3   r:   r*   r0   r7   r
   r   r   <module>rZ      s   ! ! ! ! ! ! ! !             ) ) ) ) ) )     \: \: \: \: \: \: \: \:D 362O ' / !5 ( 1
 !G : C !I < E g:g;gF = =E 3V<ENNg:g;  E 34ENEMM gDg?g> = =E 3V<ENNgDg?g>  E 34ENEMM r   