o
    4ήcH                     @   s  d dl Z d dlmZ d dlmZ d dlZed ejZG dd de	Z
e  Zdd Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Ze Z e Z!e Z"e Z#e Z$e Z%d	Z&d
Z'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2G dd de3Z4G dd de3Z5G dd dej6Z6G dd dej7Z7ededed ed!ed"ed#iZ8ed ed!ed"ed#iZ9eded"ed#ed ed!eded$iZ:ede d"e!d#e"d e#d!e$de%d%iZ;G d&d' d'ej<Z=G d(d) d)ej>Z>G d*d+ d+e3Z?G d,d- d-ej@Z@dS ).    N)ir)bindingzThe module `llvmlite.llvmpy.core` is deprecated and will be removed in the future. Equivalent functionality is provided by `llvmlite.ir`.c                   @   s   e Zd ZdS )LLVMExceptionN)__name__
__module____qualname__ r   r   ;/tmp/pip-target-vg8gfxp4/lib/python/llvmlite/llvmpy/core.pyr      s    r   c                   C   s   t tS N)next_icmp_ctr   r   r   r	   	_icmp_get   s   r   z	llvm.fabszllvm.expzllvm.logz
llvm.log10zllvm.sinzllvm.cosz	llvm.powizllvm.powz
llvm.floorexternalinternallinkonce_odr	nocapturec                   @   s~   e Zd ZedddZedd Zedd Zedd	 ZedddZedddZ	edd Z
edd Zedd ZdS )Type    c                 C   
   t | S r
   )r   IntType)widthr   r   r	   intG      
zType.intc                   C      t  S r
   )r   	FloatTyper   r   r   r	   floatK      z
Type.floatc                   C   r   r
   )r   HalfTyper   r   r   r	   halfO   r   z	Type.halfc                   C   r   r
   )r   
DoubleTyper   r   r   r	   doubleS   r   zType.doubler   c                 C      t | |S r
   )r   PointerType)ty	addrspacer   r   r	   pointerW      zType.pointerFc                 C   s   t j| ||dS )N)var_arg)r   FunctionType)resargsr'   r   r   r	   function[   s   zType.functionc                 C   r   r
   )r   LiteralStructType)membersr   r   r	   struct_   r   zType.structc                 C   r!   r
   )r   	ArrayType)elementcountr   r   r	   arrayc   r&   z
Type.arrayc                   C   r   r
   )r   VoidTyper   r   r   r	   voidg   r   z	Type.voidN)r   r   )F)r   r   r   staticmethodr   r   r   r    r%   r+   r.   r2   r4   r   r   r   r	   r   F   s&    




r   c                   @   s   e Zd Zedd Zedd Zedd Zedd Zed	d
 Zedd Z	edd Z
edd Zedd Zedd Zedd Zedd ZdS )Constantc                 C   s,   t | tjrt| td| j dS t| )N1   )
isinstancer   r   r7   r   r   NotImplementedErrorr#   r   r   r	   all_onesm   s   zConstant.all_onesc                 C   r!   r
   r   r7   r#   nr   r   r	   r   t   r&   zConstant.intc                 C   r!   r
   r>   r?   r   r   r	   int_signextendx   r&   zConstant.int_signextendc                 C   r!   r
   r>   r?   r   r   r	   real|   r&   zConstant.realc                 C   s   t j| S r
   )r   r7   literal_struct)elemsr   r   r	   r.      r&   zConstant.structc                 C   s   t | d S r
   r>   r<   r   r   r	   null   r&   zConstant.nullc                 C   s   t | t jS r
   )r   r7   	Undefinedr<   r   r   r	   undef      zConstant.undefc                 C   sR   t | d }td| d}d|d< | d|d d< tttd||S )N    asciir   zutf-8   )len	bytearrayencoder   r7   r/   r   )stringr@   bufr   r   r	   stringz   s
   zConstant.stringzc                 C   s   t t | t||S r
   )r   r7   r/   rN   )typvalr   r   r	   r2      s   zConstant.arrayc                 C   
   |  |S r
   )bitcastconstrT   r   r   r	   rW      r   zConstant.bitcastc                 C   rV   r
   )inttoptrrX   r   r   r	   rZ      r   zConstant.inttoptrc                 C   rV   r
   )gep)rY   indicesr   r   r	   r[      r   zConstant.gepN)r   r   r   r6   r=   r   rA   rB   r.   rE   rG   rS   r2   rW   rZ   r[   r   r   r   r	   r7   l   s2    










r7   c                   @   s>   e Zd Zdd Zdd Zdd Zddd	Zd
d Zdd ZdS )Modulec                 C   s"   || j v r
| j | S t| ||S r
   )globalsr   Functionselffntynamer   r   r	   get_or_insert_function   s   

zModule.get_or_insert_functionc                 C   s   t t|  d S r
   )llvmparse_assemblystr)ra   r   r   r	   verify   s   zModule.verifyc                 C   s   t | ||S r
   )r   r_   r`   r   r   r	   add_function   s   zModule.add_functionr   c                 C   s   t | || ||S r
   )r   GlobalVariableget_unique_name)ra   r#   rc   r$   r   r   r	   add_global_variable   s   zModule.add_global_variablec                 C   s$   z| j | W S  ty   t|w r
   )r^   KeyErrorr   ra   rc   r   r   r	   get_global_variable_named   s
   z Module.get_global_variable_namedc                 C   s*   z|  |W S  ty   | | Y S w r
   )get_named_metadatarm   add_named_metadatarn   r   r   r	   get_or_insert_named_metadata   s
   z#Module.get_or_insert_named_metadataNr5   )	r   r   r   rd   rh   ri   rl   ro   rr   r   r   r   r	   r]      s    
r]   c                   @   s&   e Zd ZedddZedd ZdS )r_    c                 C   s   | |||S r
   r   )cls
module_objfunctyrc   r   r   r	   new   r&   zFunction.newc                 C   s   |  ||S r
   )declare_intrinsic)module	intrinsictysr   r   r	   rz      r&   zFunction.intrinsicNrs   )r   r   r   classmethodrw   r6   rz   r   r   r   r	   r_      s
    r_   z==z!=<z<=>z>=ordunoc                   @   s    e Zd ZdddZdddZdS )Builderrs   c                 C   4   |t v r| jt | |||dS | jt| |||dS N)rc   )
_icmp_umapicmp_unsignedicmp_signed
_icmp_smapra   predlhsrhsrc   r   r   r	   icmp      zBuilder.icmpc                 C   r   r   )
_fcmp_umapfcmp_unorderedfcmp_ordered
_fcmp_omapr   r   r   r	   fcmp   r   zBuilder.fcmpNr|   )r   r   r   r   r   r   r   r   r	   r      s    
r   c                   @      e Zd Zedd ZdS )MetaDataStringc                 C   s
   t | |S r
   )r   )ry   textr   r   r	   get  r   zMetaDataString.getNr   r   r   r6   r   r   r   r   r	   r         r   c                   @   r   )MetaDatac                 C   rV   r
   )add_metadata)ry   valuesr   r   r	   r   
  r   zMetaData.getNr   r   r   r   r	   r   	  r   r   c                   @   r   )	InlineAsmc                  O   s   t | i |S r
   )r   )r*   kwargsr   r   r	   r     rH   zInlineAsm.getNr   r   r   r   r	   r     r   r   )A	itertoolsllvmliter   r   re   warningswarn	CallInstrCallOrInvokeInstruction	Exceptionr   r1   r   r   ICMP_EQICMP_NEICMP_SLTICMP_SLEICMP_SGTICMP_SGEICMP_ULTICMP_ULEICMP_UGTICMP_UGEFCMP_OEQFCMP_OGTFCMP_OGEFCMP_OLTFCMP_OLEFCMP_ONEFCMP_ORDFCMP_UEQFCMP_UGTFCMP_UGEFCMP_ULTFCMP_ULEFCMP_UNEFCMP_UNO	INTR_FABSINTR_EXPINTR_LOG
INTR_LOG10INTR_SININTR_COS	INTR_POWIINTR_POW
INTR_FLOORLINKAGE_EXTERNALLINKAGE_INTERNALLINKAGE_LINKONCE_ODRATTR_NO_CAPTUREobjectr   r7   r]   r_   r   r   r   r   	IRBuilderr   r   r   r   r   r   r   r	   <module>   s    &9
