o
    ‘iö
  ã                   @   sœ   d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 eƒ Z
e
jZdd„ Zdd„ Ze	j ¡ D ]\Z\ZZed	d
„ eD ƒƒrEeeeeƒ q/eeeeƒ q/dS )é    )Úir)ÚcgutilsÚtypes)ÚRegistry)Ú	libdeviceÚlibdevicefuncsc                    sH   ‡ ‡‡fdd„}t tˆ dd … ƒ}dd„ tD ƒ}t|g|¢R Ž |ƒ d S )Nc           	         sH   |j }ˆ  ˆ¡}‡ fdd„ˆD ƒ}t ||¡}t ||ˆ¡}| ||¡S )Nc                    s   g | ]}ˆ   |j¡‘qS © )Úget_value_typeÚty©Ú.0Úarg©Úcontextr   úg/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/cuda/libdeviceimpl.pyÚ
<listcomp>   ó    z5libdevice_implement.<locals>.core.<locals>.<listcomp>)Úmoduler	   r   ÚFunctionTyper   Úget_or_insert_functionÚcall)	r   ÚbuilderÚsigÚargsÚlmodÚfrettyÚfargtysÚfntyÚfn©ÚfuncÚnbargsÚrettyr   r   Úcore   s   
z!libdevice_implement.<locals>.coreé   c                 S   s   g | ]}|j s|j‘qS r   )Úis_ptrr
   r   r   r   r   r      r   z'libdevice_implement.<locals>.<listcomp>)Úgetattrr   r   Úlower)r    r"   r!   r#   ÚkeyZargtysr   r   r   Úlibdevice_implement
   s   r)   c                    sP   t  ˆˆ¡}|j‰‡ ‡‡‡fdd„}ttˆ dd … ƒ}t|g|j¢R Ž |ƒ d S )Nc                    s  |j }g }ˆD ]}|  |j¡}|jr| ¡ }| |¡ q|  ˆ¡}t ||¡}	t 	||	ˆ ¡}
g }g }d}ˆD ]%}|jrPt 
||  |j¡¡}| |¡ | |¡ q6| || ¡ |d7 }q6| |
|¡}g }ˆtjkrn| |¡ |D ]
}| | |¡¡ qptˆtjƒr‡t ||¡S t ||¡S )Nr   é   )r   r	   r
   r%   Z
as_pointerÚappendr   r   r   r   Zalloca_oncer   r   ÚvoidÚloadÚ
isinstanceZUniTupleZ
pack_arrayZpack_struct)r   r   r   r   r   r   r   r
   r   r   r   Zactual_argsZvirtual_argsZarg_idxZtmp_argÚretZ
tuple_args©r    Znb_rettyÚprototype_argsr"   r   r   r#      s>   

ÿ



z2libdevice_implement_multiple_returns.<locals>.corer$   )r   Zcreate_signatureÚreturn_typer&   r   r'   r   )r    r"   r1   r   r#   r(   r   r0   r   Ú$libdevice_implement_multiple_returns   s
   .r3   c                 C   s   g | ]}|j ‘qS r   )r%   r   r   r   r   r   P   s    r   N)Zllvmliter   Z
numba.corer   r   Znumba.core.imputilsr   Z
numba.cudar   r   Úregistryr'   r)   r3   Z	functionsÚitemsr    r"   r   Úanyr   r   r   r   Ú<module>   s    6ü