U
    h9                     @   sp  d dl mZ d dlmZ ddlmZ ddlmZ ddl	m
Z
 e
dZeeddd	ZejedddZejedddZejedddZejedddZejedddZejedddZejedddZejedddZejedddZejedddZejeddd Zejedd!d"Zejedd#d$Zejedd%d&Zejedd'd(Zejedd)d*Zejedd+d,Zejedd-d.Zejedd/d0Z ejedd1d2Z!ejedd3d4Z"ejedd5d6Z#ejedd7d8Z$ejedd9d:Z%ejedd;d<Z&ejedd=d>Z'ejedd?d@Z(ejeddAdBZ)ejeddCdDZ*ejeddEdFZ+ejeddGdHZ,ejeddIdJZ-ejeddKdLZ.ejeddMdNZ/ejeddOdPZ0ejeddQdRZ1ejeddSdTZ2ejeddUdVZ3ejeddWdXZ4ejeddYdZZ5ejedd[d\Z6ejedd]d^Z7ejedd_d`Z8ejeddadbZ9ejeddcddZ:ejeddedfZ;ejeddgdhZ<ejeddidjZ=ejeddkdlZ>ejeddmdnZ?ejeddodpZ@ejeddqdrZAejeddsdtZBejeddudvZCejeddwdxZDejeddydzZEejedd{d|ZFejedd}d~ZGejedddZHejedddZIejedddZJejedddZKejedddZLejedddZMejedddZNejedddZOejedddZPejedddZQejedddZRejedddZSejedddZTejedddZUejedddZVejedddZWejedddZXejedddZYejedddZZejedddZ[ejedddZ\ejedddZ]ejedddZ^ejedddZ_ejedddZ`ejedddZaejedddZbejedddZcejedddZdejedddZeejedddZfejedddZgejedddZhejedddZiejedddĄZjejedddƄZkejedddȄZlejedddʄZmejeddd̄Znejeddd΄ZoejedddЄZpejeddd҄ZqejedddԄZrejedddքZsejeddd؄ZtejedddڄZuejeddd܄ZvejedddބZwejedddZxejed ddZyejedddZzejedddZ{ejedddZ|ejedddZ}ejedddZ~ejedddZejedddZejedddZejed	ddZejed
ddZejedddZejedddZejedddZejedddZejeddd ZejedddZejedddZejedddZejedddZejedd	d
ZejedddZejedddZejedddZejedddZejedddZejedddZejedddZejedddZejedddZejedddZejeddd Zejed d!d"Zejed!d#d$Zejed"d%d&Zejed#d'd(Zejed$d)d*Zejed%d+d,Zejed&d-d.Zejed'd/d0Zejed(d1d2Zejed)d3d4Zejed*d5d6Zejed+d7d8Zejed,d9d:Zejed-d;d<Zejed.d=d>Zejed/d?d@Zejed0dAdBZejed1dCdDZejed2dEdFZejed3dGdHZejed4dIdJZejed5dKdLZejed6dMdNZejed7dOdPZejed8dQdRZejed9dSdTZejed:dUdVZejed;dWdXZejed<dYdZZejed=d[d\Zejed>d]d^Zejed?d_d`Zejed@dadbZejedAdcddZejedBdedfZejedCdgdhZejedDdidjZejedEdkdlZejedFdmdnZejedGdodpZejedHdqdrZejedIdsdtZejedJdudvZejedKdwdxZejedLdydzZejedMd{d|ZejedNd}d~ZejedOddZejedPddZejedQddZejedRddZejedSddZejedTddZejedUddZejedVddZejedWddZejedXddZejedYddZd
S (Z     )	libdevice    )core)wraps)TypeVarT)fnreturnc                    s$   t  stt  fdd}|S )z0Dispatch a function to a correct implementation.c               	      sx   |d j j}|dkrt}n|dkr(t}ntdzt| j}W n, tk
rl   td| d j dY nX || |S )N_buildercudahipzunknown backend`z ` does not provide support for `z` extra function)optionsbackend_namecuda_libdevicehip_libdeviceRuntimeErrorgetattr__name__AttributeError)argskwargsZ_backendZ_curr_libdevice_module_implr    Q/var/www/html/venv/lib/python3.8/site-packages/triton/language/extra/libdevice.pywrapper   s    zdispatch.<locals>.wrapper)callableAssertionErrorr   )r   r   r   r   r   dispatch
   s    r   Nc                 C   s   d S Nr   arg0r
   r   r   r   clz"   s    r#   c                 C   s   d S r    r   r!   r   r   r   popc(   s    r$   c                 C   s   d S r    r   r"   arg1arg2r
   r   r   r   	byte_perm.   s    r(   c                 C   s   d S r    r   r"   r&   r
   r   r   r   mulhi4   s    r*   c                 C   s   d S r    r   r)   r   r   r   mul24:   s    r+   c                 C   s   d S r    r   r!   r   r   r   brev@   s    r,   c                 C   s   d S r    r   r%   r   r   r   sadF   s    r-   c                 C   s   d S r    r   r!   r   r   r   absL   s    r.   c                 C   s   d S r    r   r!   r   r   r   floorR   s    r/   c                 C   s   d S r    r   r!   r   r   r   rcp64hX   s    r0   c                 C   s   d S r    r   r!   r   r   r   rsqrt^   s    r1   c                 C   s   d S r    r   r!   r   r   r   ceild   s    r2   c                 C   s   d S r    r   r!   r   r   r   truncj   s    r3   c                 C   s   d S r    r   r!   r   r   r   exp2p   s    r4   c                 C   s   d S r    r   r!   r   r   r   	saturatefv   s    r5   c                 C   s   d S r    r   r%   r   r   r   fma_rn|   s    r6   c                 C   s   d S r    r   r%   r   r   r   fma_rz   s    r7   c                 C   s   d S r    r   r%   r   r   r   fma_rd   s    r8   c                 C   s   d S r    r   r%   r   r   r   fma_ru   s    r9   c                 C   s   d S r    r   r)   r   r   r   fast_dividef   s    r:   c                 C   s   d S r    r   r)   r   r   r   div_rn   s    r;   c                 C   s   d S r    r   r)   r   r   r   div_rz   s    r<   c                 C   s   d S r    r   r)   r   r   r   div_rd   s    r=   c                 C   s   d S r    r   r)   r   r   r   div_ru   s    r>   c                 C   s   d S r    r   r!   r   r   r   rcp_rn   s    r?   c                 C   s   d S r    r   r!   r   r   r   rcp_rz   s    r@   c                 C   s   d S r    r   r!   r   r   r   rcp_rd   s    rA   c                 C   s   d S r    r   r!   r   r   r   rcp_ru   s    rB   c                 C   s   d S r    r   r!   r   r   r   sqrt_rn   s    rC   c                 C   s   d S r    r   r!   r   r   r   sqrt_rz   s    rD   c                 C   s   d S r    r   r!   r   r   r   sqrt_rd   s    rE   c                 C   s   d S r    r   r!   r   r   r   sqrt_ru   s    rF   c                 C   s   d S r    r   r!   r   r   r   sqrt   s    rG   c                 C   s   d S r    r   r)   r   r   r   add_rn   s    rH   c                 C   s   d S r    r   r)   r   r   r   add_rz   s    rI   c                 C   s   d S r    r   r)   r   r   r   add_rd   s    rJ   c                 C   s   d S r    r   r)   r   r   r   add_ru   s    rK   c                 C   s   d S r    r   r)   r   r   r   mul_rn   s    rL   c                 C   s   d S r    r   r)   r   r   r   mul_rz  s    rM   c                 C   s   d S r    r   r)   r   r   r   mul_rd  s    rN   c                 C   s   d S r    r   r)   r   r   r   mul_ru  s    rO   c                 C   s   d S r    r   r!   r   r   r   double2float_rn  s    rP   c                 C   s   d S r    r   r!   r   r   r   double2float_rz  s    rQ   c                 C   s   d S r    r   r!   r   r   r   double2float_rd$  s    rR   c                 C   s   d S r    r   r!   r   r   r   double2float_ru*  s    rS   c                 C   s   d S r    r   r!   r   r   r   double2int_rn0  s    rT   c                 C   s   d S r    r   r!   r   r   r   double2int_rz6  s    rU   c                 C   s   d S r    r   r!   r   r   r   double2int_rd<  s    rV   c                 C   s   d S r    r   r!   r   r   r   double2int_ruB  s    rW   c                 C   s   d S r    r   r!   r   r   r   double2uint_rnH  s    rX   c                 C   s   d S r    r   r!   r   r   r   double2uint_rzN  s    rY   c                 C   s   d S r    r   r!   r   r   r   double2uint_rdT  s    rZ   c                 C   s   d S r    r   r!   r   r   r   double2uint_ruZ  s    r[   c                 C   s   d S r    r   r!   r   r   r   int2double_rn`  s    r\   c                 C   s   d S r    r   r!   r   r   r   uint2double_rnf  s    r]   c                 C   s   d S r    r   r!   r   r   r   float2int_rnl  s    r^   c                 C   s   d S r    r   r!   r   r   r   float2int_rzr  s    r_   c                 C   s   d S r    r   r!   r   r   r   float2int_rdx  s    r`   c                 C   s   d S r    r   r!   r   r   r   float2int_ru~  s    ra   c                 C   s   d S r    r   r!   r   r   r   float2uint_rn  s    rb   c                 C   s   d S r    r   r!   r   r   r   float2uint_rz  s    rc   c                 C   s   d S r    r   r!   r   r   r   float2uint_rd  s    rd   c                 C   s   d S r    r   r!   r   r   r   float2uint_ru  s    re   c                 C   s   d S r    r   r!   r   r   r   int2float_rn  s    rf   c                 C   s   d S r    r   r!   r   r   r   int2float_rz  s    rg   c                 C   s   d S r    r   r!   r   r   r   int2float_rd  s    rh   c                 C   s   d S r    r   r!   r   r   r   int2float_ru  s    ri   c                 C   s   d S r    r   r!   r   r   r   uint2float_rn  s    rj   c                 C   s   d S r    r   r!   r   r   r   uint2float_rz  s    rk   c                 C   s   d S r    r   r!   r   r   r   uint2float_rd  s    rl   c                 C   s   d S r    r   r!   r   r   r   uint2float_ru  s    rm   c                 C   s   d S r    r   r)   r   r   r   hiloint2double  s    rn   c                 C   s   d S r    r   r!   r   r   r   double2loint  s    ro   c                 C   s   d S r    r   r!   r   r   r   double2hiint  s    rp   c                 C   s   d S r    r   r!   r   r   r   float2ll_rn  s    rq   c                 C   s   d S r    r   r!   r   r   r   float2ll_rz  s    rr   c                 C   s   d S r    r   r!   r   r   r   float2ll_rd  s    rs   c                 C   s   d S r    r   r!   r   r   r   float2ll_ru  s    rt   c                 C   s   d S r    r   r!   r   r   r   float2ull_rn  s    ru   c                 C   s   d S r    r   r!   r   r   r   float2ull_rz  s    rv   c                 C   s   d S r    r   r!   r   r   r   float2ull_rd  s    rw   c                 C   s   d S r    r   r!   r   r   r   float2ull_ru  s    rx   c                 C   s   d S r    r   r!   r   r   r   double2ll_rn  s    ry   c                 C   s   d S r    r   r!   r   r   r   double2ll_rz  s    rz   c                 C   s   d S r    r   r!   r   r   r   double2ll_rd  s    r{   c                 C   s   d S r    r   r!   r   r   r   double2ll_ru   s    r|   c                 C   s   d S r    r   r!   r   r   r   double2ull_rn&  s    r}   c                 C   s   d S r    r   r!   r   r   r   double2ull_rz,  s    r~   c                 C   s   d S r    r   r!   r   r   r   double2ull_rd2  s    r   c                 C   s   d S r    r   r!   r   r   r   double2ull_ru8  s    r   c                 C   s   d S r    r   r!   r   r   r   ll2float_rn>  s    r   c                 C   s   d S r    r   r!   r   r   r   ll2float_rzD  s    r   c                 C   s   d S r    r   r!   r   r   r   ll2float_rdJ  s    r   c                 C   s   d S r    r   r!   r   r   r   ll2float_ruP  s    r   c                 C   s   d S r    r   r!   r   r   r   ull2float_rnV  s    r   c                 C   s   d S r    r   r!   r   r   r   ull2float_rz\  s    r   c                 C   s   d S r    r   r!   r   r   r   ull2float_rdb  s    r   c                 C   s   d S r    r   r!   r   r   r   ull2float_ruh  s    r   c                 C   s   d S r    r   r!   r   r   r   ll2double_rnn  s    r   c                 C   s   d S r    r   r!   r   r   r   ll2double_rzt  s    r   c                 C   s   d S r    r   r!   r   r   r   ll2double_rdz  s    r   c                 C   s   d S r    r   r!   r   r   r   ll2double_ru  s    r   c                 C   s   d S r    r   r!   r   r   r   ull2double_rn  s    r   c                 C   s   d S r    r   r!   r   r   r   ull2double_rz  s    r   c                 C   s   d S r    r   r!   r   r   r   ull2double_rd  s    r   c                 C   s   d S r    r   r!   r   r   r   ull2double_ru  s    r   c                 C   s   d S r    r   r!   r   r   r   int_as_float  s    r   c                 C   s   d S r    r   r!   r   r   r   float_as_int  s    r   c                 C   s   d S r    r   r!   r   r   r   uint_as_float  s    r   c                 C   s   d S r    r   r!   r   r   r   float_as_uint  s    r   c                 C   s   d S r    r   r!   r   r   r   longlong_as_double  s    r   c                 C   s   d S r    r   r!   r   r   r   double_as_longlong  s    r   c                 C   s   d S r    r   r!   r   r   r   	fast_sinf  s    r   c                 C   s   d S r    r   r!   r   r   r   	fast_cosf  s    r   c                 C   s   d S r    r   r!   r   r   r   
fast_log2f  s    r   c                 C   s   d S r    r   r!   r   r   r   	fast_logf  s    r   c                 C   s   d S r    r   r!   r   r   r   	fast_expf  s    r   c                 C   s   d S r    r   r!   r   r   r   	fast_tanf  s    r   c                 C   s   d S r    r   r!   r   r   r   fast_exp10f  s    r   c                 C   s   d S r    r   r!   r   r   r   fast_log10f  s    r   c                 C   s   d S r    r   r)   r   r   r   	fast_powf  s    r   c                 C   s   d S r    r   r)   r   r   r   hadd  s    r   c                 C   s   d S r    r   r)   r   r   r   rhadd  s    r   c                 C   s   d S r    r   r)   r   r   r   sub_rn  s    r   c                 C   s   d S r    r   r)   r   r   r   sub_rz
  s    r   c                 C   s   d S r    r   r)   r   r   r   sub_rd  s    r   c                 C   s   d S r    r   r)   r   r   r   sub_ru  s    r   c                 C   s   d S r    r   r!   r   r   r   rsqrt_rn  s    r   c                 C   s   d S r    r   r!   r   r   r   ffs"  s    r   c                 C   s   d S r    r   r!   r   r   r   rint(  s    r   c                 C   s   d S r    r   r!   r   r   r   llrint.  s    r   c                 C   s   d S r    r   r!   r   r   r   	nearbyint4  s    r   c                 C   s   d S r    r   r!   r   r   r   isnan:  s    r   c                 C   s   d S r    r   r!   r   r   r   signbit@  s    r   c                 C   s   d S r    r   r)   r   r   r   copysignF  s    r   c                 C   s   d S r    r   r!   r   r   r   finitefL  s    r   c                 C   s   d S r    r   r!   r   r   r   isinfR  s    r   c                 C   s   d S r    r   r)   r   r   r   	nextafterX  s    r   c                 C   s   d S r    r   r!   r   r   r   sin^  s    r   c                 C   s   d S r    r   r!   r   r   r   cosd  s    r   c                 C   s   d S r    r   r!   r   r   r   sinpij  s    r   c                 C   s   d S r    r   r!   r   r   r   cospip  s    r   c                 C   s   d S r    r   r!   r   r   r   tanv  s    r   c                 C   s   d S r    r   r!   r   r   r   log2|  s    r   c                 C   s   d S r    r   r!   r   r   r   exp  s    r   c                 C   s   d S r    r   r!   r   r   r   exp10  s    r   c                 C   s   d S r    r   r!   r   r   r   cosh  s    r   c                 C   s   d S r    r   r!   r   r   r   sinh  s    r   c                 C   s   d S r    r   r!   r   r   r   tanh  s    r   c                 C   s   d S r    r   r)   r   r   r   atan2  s    r   c                 C   s   d S r    r   r!   r   r   r   atan  s    r   c                 C   s   d S r    r   r!   r   r   r   asin  s    r   c                 C   s   d S r    r   r!   r   r   r   acos  s    r   c                 C   s   d S r    r   r!   r   r   r   log  s    r   c                 C   s   d S r    r   r!   r   r   r   log10  s    r   c                 C   s   d S r    r   r!   r   r   r   log1p  s    r   c                 C   s   d S r    r   r!   r   r   r   acosh  s    r   c                 C   s   d S r    r   r!   r   r   r   asinh  s    r   c                 C   s   d S r    r   r!   r   r   r   atanh  s    r   c                 C   s   d S r    r   r!   r   r   r   expm1  s    r   c                 C   s   d S r    r   r)   r   r   r   hypot  s    r   c                 C   s   d S r    r   r)   r   r   r   rhypot  s    r   c                 C   s   d S r    r   r%   r   r   r   norm3d  s    r   c                 C   s   d S r    r   r%   r   r   r   rnorm3d  s    r   c                 C   s   d S r    r   r"   r&   r'   Zarg3r
   r   r   r   norm4d  s    r   c                 C   s   d S r    r   r   r   r   r   rnorm4d   s    r   c                 C   s   d S r    r   r!   r   r   r   cbrt  s    r   c                 C   s   d S r    r   r!   r   r   r   rcbrt  s    r   c                 C   s   d S r    r   r!   r   r   r   j0  s    r   c                 C   s   d S r    r   r!   r   r   r   j1  s    r   c                 C   s   d S r    r   r!   r   r   r   y0  s    r   c                 C   s   d S r    r   r!   r   r   r   y1$  s    r   c                 C   s   d S r    r   r)   r   r   r   yn*  s    r   c                 C   s   d S r    r   r)   r   r   r   jn0  s    r   c                 C   s   d S r    r   r!   r   r   r   cyl_bessel_i06  s    r   c                 C   s   d S r    r   r!   r   r   r   cyl_bessel_i1<  s    r   c                 C   s   d S r    r   r!   r   r   r   erfB  s    r   c                 C   s   d S r    r   r!   r   r   r   erfinvH  s    r   c                 C   s   d S r    r   r!   r   r   r   erfcN  s    r   c                 C   s   d S r    r   r!   r   r   r   erfcxT  s    r   c                 C   s   d S r    r   r!   r   r   r   erfcinvZ  s    r   c                 C   s   d S r    r   r!   r   r   r   
normcdfinv`  s    r   c                 C   s   d S r    r   r!   r   r   r   normcdff  s    r   c                 C   s   d S r    r   r!   r   r   r   lgammal  s    r   c                 C   s   d S r    r   r)   r   r   r   ldexpr  s    r   c                 C   s   d S r    r   r)   r   r   r   scalbnx  s    r   c                 C   s   d S r    r   r)   r   r   r   fmod~  s    r   c                 C   s   d S r    r   r)   r   r   r   	remainder  s    r   c                 C   s   d S r    r   r%   r   r   r   fma  s    r   c                 C   s   d S r    r   r)   r   r   r   pow  s    r   c                 C   s   d S r    r   r!   r   r   r   tgamma  s    r   c                 C   s   d S r    r   r!   r   r   r   round  s    r   c                 C   s   d S r    r   r!   r   r   r   llround  s    r   c                 C   s   d S r    r   r)   r   r   r   fdim  s    r   c                 C   s   d S r    r   r!   r   r   r   ilogb  s    r   c                 C   s   d S r    r   r!   r   r   r   logb  s    r   c                 C   s   d S r    r   r!   r   r   r   	isfinited  s    r   )N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)r   r   r   r   r   Ztriton.languager   	functoolsr   typingr   r   r   Zexternr#   r$   r(   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s  