o
    4Î®cƒ
  ã                   @   sR   d Z ddlmZ ddlmZ ddlZe d¡ ddd„Z				dd
d„Z	dd„ Z
dS )aH  
Useful options to debug LLVM passes

llvm.set_option("test", "-debug-pass=Details")
llvm.set_option("test", "-debug-pass=Executions")
llvm.set_option("test", "-debug-pass=Arguments")
llvm.set_option("test", "-debug-pass=Structure")
llvm.set_option("test", "-debug-only=loop-vectorize")
llvm.set_option("test", "-help-hidden")

é    )Úbinding)Ú
namedtupleNzœThe module `llvmlite.llvmpy.passes` is deprecated and will be removed in the future. If you are using this code, it should be inlined into your own project.c                 C   s(   | dkrdS |dkrdS |dkrdS dS )Né   i  é   éK   é   éá   © )ÚoptlevelÚ	sizelevelr	   r	   ú=/tmp/pip-target-vg8gfxp4/lib/python/llvmlite/llvmpy/passes.pyÚ_inlining_threshold   s   r   r   Fc                 C   s(   t  ¡ }| |_||_||_t| ƒ|_|S )N)ÚllvmÚcreate_pass_manager_builderÚ	opt_levelÚloop_vectorizeÚslp_vectorizer   Úinlining_threshold)Úoptr   r   Úpmbr	   r	   r   r   '   s   
r   c            
      K   st  |   d¡}|stdƒ‚t ¡ }|   dd¡r#t|tjƒsJ ‚t |¡}nd }t ¡ ‡}|   dd¡ |_}|   dd¡|_	|   d	d¡|_
t|d
|_|r{t |j¡}|   dd¡rZ| ¡  n|   dd¡D ]}| |¡}| |¡ q`| |¡ |d ur{| |¡ |   d¡}	|	r|	 |¡ |d ur|	 |¡ | |¡ |d urž| |¡ tdddgƒ||dW  d   ƒ S 1 s³w   Y  d S )NÚmodzmodule must be providedÚfpmTr   r   r   Fr   )r
   Ú
nobuiltinsÚdisable_builtinsr	   ÚtmÚpmsÚpm)r   r   )ÚgetÚ	NameErrorr   Úcreate_module_pass_managerÚ
isinstanceÚ	ModuleRefÚcreate_function_pass_managerr   r   r   r   r   r   Úcreate_target_library_infoÚtripleÚdisable_allÚget_libfuncÚset_unavailableÚadd_passÚadd_analysis_passesÚpopulater   )
Úkwsr   r   r   r   r   ÚtliÚkÚlibfr   r	   r	   r   Úbuild_pass_managers1   sB   










$ár/   )r   )r   FF)Ú__doc__Úllvmliter   r   Úcollectionsr   ÚwarningsÚwarnr   r   r/   r	   r	   r	   r   Ú<module>   s    ÿ

ÿ
