o
    ߐiS                     @   s&  d dl mZmZ d dlmZ d dlmZ dd ZG d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_qKej
jej
jfD ]
Zej	ge_ee_q\ej
jej
jej
jfD ]Zej	ege_qrej
jej
jej
jfD ]
Zej	ge_ee_qdS )	    )c_uintc_bool)ffi)passmanagersc                   C   s   t  S N)PassManagerBuilder r   r   j/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/llvmlite/binding/transforms.pycreate_pass_manager_builder   s   r
   c                   @   s   e Zd ZdZd ddZedd Zejdd Zedd	 Zejd
d	 Zedd Z	e	jdd Z	edd Z
e
jd!ddZ
edd Zejd!ddZedd Zejd!ddZdd Zdd Zdd Zdd ZdS )"r   r   Nc                 C   s$   |d u r	t j }t j| | d S r   )r   libLLVMPY_PassManagerBuilderCreate	ObjectRef__init__)selfZptrr   r   r	   r      s   
zPassManagerBuilder.__init__c                 C      t j| S )zO
        The general optimization level as an integer between 0 and 3.
        )r   r   $LLVMPY_PassManagerBuilderGetOptLevelr   r   r   r	   	opt_level      zPassManagerBuilder.opt_levelc                 C      t j| | d S r   )r   r   $LLVMPY_PassManagerBuilderSetOptLevel)r   levelr   r   r	   r         c                 C   r   )zY
        Whether and how much to optimize for size.  An integer between 0 and 2.
        )r   r   %LLVMPY_PassManagerBuilderGetSizeLevelr   r   r   r	   
size_level   r   zPassManagerBuilder.size_levelc                 C   r   r   )r   r   %LLVMPY_PassManagerBuilderSetSizeLevel)r   sizer   r   r	   r   $   r   c                 C   s   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   r   r   r	   inlining_threshold(   s   z%PassManagerBuilder.inlining_thresholdc                 C   r   r   )r   r   0LLVMPY_PassManagerBuilderUseInlinerWithThreshold)r   	thresholdr   r   r	   r   0   s   c                 C   r   )z2
        If true, disable loop unrolling.
        )r   r   .LLVMPY_PassManagerBuilderGetDisableUnrollLoopsr   r   r   r	   disable_unroll_loops5   r   z'PassManagerBuilder.disable_unroll_loopsTc                 C   r   r   )r   r   .LLVMPY_PassManagerBuilderSetDisableUnrollLoops)r   disabler   r   r	   r"   <   r   c                 C   r   )z3
        If true, allow vectorizing loops.
        )r   r   )LLVMPY_PassManagerBuilderGetLoopVectorizer   r   r   r	   loop_vectorize@   r   z!PassManagerBuilder.loop_vectorizec                 C      t j| |S r   )r   r   )LLVMPY_PassManagerBuilderSetLoopVectorizer   enabler   r   r	   r&   G      c                 C   r   )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   r   r   r	   slp_vectorizeK   s   z PassManagerBuilder.slp_vectorizec                 C   r'   r   )r   r   (LLVMPY_PassManagerBuilderSetSLPVectorizer)   r   r   r	   r-   S   r+   c                 C   r   r   )r   r   2LLVMPY_PassManagerBuilderPopulateModulePassManagerr   pmr   r   r	   _populate_module_pmW      z&PassManagerBuilder._populate_module_pmc                 C   r   r   )r   r   4LLVMPY_PassManagerBuilderPopulateFunctionPassManagerr0   r   r   r	   _populate_function_pmZ   r3   z(PassManagerBuilder._populate_function_pmc                 C   s<   t |tjr| | d S t |tjr| | d S t|r   )
isinstancer   ZModulePassManagerr2   ZFunctionPassManagerr5   	TypeErrorr0   r   r   r	   populate]   s
   zPassManagerBuilder.populatec                 C   s   | j |  d S r   )Z_capi LLVMPY_PassManagerBuilderDisposer   r   r   r	   _disposee   s   zPassManagerBuilder._disposer   )T)__name__
__module____qualname__	__slots__r   propertyr   setterr   r   r"   r&   r-   r2   r5   r8   r:   r   r   r   r	   r   
   s>    









r   N)ctypesr   r   Zllvmlite.bindingr   r   r
   r   r   ZLLVMPassManagerBuilderRefr   r   restyper9   argtypesZLLVMPassManagerRefr/   r4   r   r   r   Z_funcr   r   r#   r(   r.   r!   r%   r,   r   r   r   r	   <module>   sH    b




