ó
&³Y]c           @@ sÊ  d  d l  m Z m Z d  d l m Z m Z d d l m Z d d l m Z d   Z	 d e j
 f d     YZ 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 _ x; e j j e j j e j j f D] Z e j e g e _ qí Wx8 e j j e j j f D] Z e j g e _ e e _ q"Wx; e j j e j j e j j f D] Z e j e g e _ qfWxA e j j e j j e j j  f D] Z e j g e _ e e _ q¤Wd	 S(
   i    (   t   print_functiont   absolute_import(   t   c_uintt   c_booli   (   t   ffi(   t   passmanagersc           C@ s   t    S(   N(   t   PassManagerBuilder(    (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   create_pass_manager_builder   s    R   c           B@ s  e  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 e d   Z
 e d	    Z e j e d
   Z e d    Z e j e d   Z d   Z d   Z d   Z d   Z RS(   c         C@ s5   | d  k r t j j   } n  t j j |  |  d  S(   N(   t   NoneR   t   libt   LLVMPY_PassManagerBuilderCreatet	   ObjectReft   __init__(   t   selft   ptr(    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyR      s    c         C@ s   t  j j |   S(   sO   
        The general optimization level as an integer between 0 and 3.
        (   R   R	   t$   LLVMPY_PassManagerBuilderGetOptLevel(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt	   opt_level   s    c         C@ s   t  j j |  |  d  S(   N(   R   R	   t$   LLVMPY_PassManagerBuilderSetOptLevel(   R   t   level(    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyR      s    c         C@ s   t  j j |   S(   sY   
        Whether and how much to optimize for size.  An integer between 0 and 2.
        (   R   R	   t%   LLVMPY_PassManagerBuilderGetSizeLevel(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt
   size_level   s    c         C@ s   t  j j |  |  d  S(   N(   R   R	   t%   LLVMPY_PassManagerBuilderSetSizeLevel(   R   t   size(    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyR   %   s    c         C@ s   t  d   d S(   sİ   
        The integer threshold for inlining a function into another.  The higher,
        the more likely inlining a function is.  This attribute is write-only.
        s    inlining_threshold is write-onlyN(   t   NotImplementedError(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   inlining_threshold)   s    c         C@ s   t  j j |  |  d  S(   N(   R   R	   t0   LLVMPY_PassManagerBuilderUseInlinerWithThreshold(   R   t	   threshold(    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyR   1   s    c         C@ s   t  j j |   S(   s2   
        If true, disable loop unrolling.
        (   R   R	   t.   LLVMPY_PassManagerBuilderGetDisableUnrollLoops(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   disable_unroll_loops5   s    c         C@ s   t  j j |  |  d  S(   N(   R   R	   t.   LLVMPY_PassManagerBuilderSetDisableUnrollLoops(   R   t   disable(    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyR   <   s    c         C@ s   t  j j |   S(   s3   
        If true, allow vectorizing loops.
        (   R   R	   t)   LLVMPY_PassManagerBuilderGetLoopVectorize(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   loop_vectorize@   s    c         C@ s   t  j j |  |  S(   N(   R   R	   t)   LLVMPY_PassManagerBuilderSetLoopVectorize(   R   t   enable(    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyR    G   s    c         C@ s   t  j j |   S(   sĦ   
        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	   t(   LLVMPY_PassManagerBuilderGetSLPVectorize(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   slp_vectorizeK   s    c         C@ s   t  j j |  |  S(   N(   R   R	   t(   LLVMPY_PassManagerBuilderSetSLPVectorize(   R   R"   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyR$   S   s    c         C@ s   t  j j |  |  d  S(   N(   R   R	   t2   LLVMPY_PassManagerBuilderPopulateModulePassManager(   R   t   pm(    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   _populate_module_pmW   s    c         C@ s   t  j j |  |  d  S(   N(   R   R	   t4   LLVMPY_PassManagerBuilderPopulateFunctionPassManager(   R   R'   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   _populate_function_pmZ   s    c         C@ sT   t  | t j  r" |  j |  n. t  | t j  rD |  j |  n t |   d  S(   N(   t
   isinstanceR   t   ModulePassManagerR(   t   FunctionPassManagerR*   t	   TypeError(   R   R'   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   populate]   s
    c         C@ s   |  j  j |   d  S(   N(   t   _capit    LLVMPY_PassManagerBuilderDispose(   R   (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   _disposee   s    (    N(   t   __name__t
   __module__t	   __slots__R   R   t   propertyR   t   setterR   R   R   t   TrueR    R$   R(   R*   R/   R2   (    (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyR      s*   			N(!   t
   __future__R    R   t   ctypesR   R   t    R   R   R   R   R   t   LLVMPassManagerBuilderRefR	   R
   t   restypeR1   t   argtypest   LLVMPassManagerRefR&   R)   R   R   R   t   _funcR   R   R   R!   R%   R   R   R#   (    (    (    s:   lib/python2.7/site-packages/llvmlite/binding/transforms.pyt   <module>   s8   	a			