B
     \                 @   s   d Z ddlmZmZ ddlmZ G dd dejZdd Zdd	d
ddddddddddddddddddddZ	d
 Zee	 eeB Zd S )!z9
LLVM pass that converts intrinsic into other math calls
    )print_functionabsolute_import)irc               @   s   e Zd Zdd ZdS )_DivmodFixerc             C   s   |j tdkr|jdkrdj|jd}| jj|}|d krf|j }t|||g}tj	| j||d}tj
|j||j|jd}|j|| d S )N@   )ZsremZuremZsdivZudivz
numba_{op})op)name)parentfuncargsr   )typer   ZIntTypeopnameformatmoduleglobalsgetFunctionTypeZFunctionZ	CallInstrr	   Zoperandsr   replace)selfZinstrr   fnZoptyZsdivfntyrepl r   7lib/python3.7/site-packages/numba/targets/intrinsics.pyvisit_Instruction
   s    

z_DivmodFixer.visit_InstructionN)__name__
__module____qualname__r   r   r   r   r   r   	   s   r   c             C   s   t  |  dS )zAReplace division and reminder instructions to builtins calls
    N)r   Zvisit)modr   r   r   
fix_divmod   s    r   ZpowfpowZsinfZsinZcosfZcosZsqrtfZsqrtZexpfZexpZlogflogZlog10fZlog10ZfabsfZfabsZfloorfZfloorZceilfZceilZtruncfZtrunc)zllvm.pow.f32zllvm.pow.f64zllvm.sin.f32zllvm.sin.f64zllvm.cos.f32zllvm.cos.f64zllvm.sqrt.f32zllvm.sqrt.f64zllvm.exp.f32zllvm.exp.f64zllvm.log.f32zllvm.log.f64zllvm.log10.f32zllvm.log10.f64zllvm.fabs.f32zllvm.fabs.f64zllvm.floor.f32zllvm.floor.f64zllvm.ceil.f32zllvm.ceil.f64zllvm.trunc.f32zllvm.trunc.f64z
tan
tanf
sinh
sinhf
cosh
coshf
tanh
tanhf
asin
asinf
acos
acosf
atan
atanf
atan2
atan2f
atan2_fixed
asinh
asinhf
acosh
acoshf
atanh
atanhf
expm1
expm1f
log1p
log1pf
log10
log10f
fmod
fmodf
round
roundf
N)__doc__Z
__future__r   r   Zllvmliter   ZVisitorr   r   ZINTR_TO_CMATHsplitZOTHER_CMATHS	frozensetvaluesZ	INTR_MATHr   r   r   r   <module>   s8   %