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   U/home/ubuntu/veenaModal/venv/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#   key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rt||S t||S )Nr      )r   r	   r
   r%   
as_pointerappendr   r   r   r   alloca_oncer   r   voidload
isinstanceUniTuple
pack_arraypack_struct)r   r   r   r   r   r   r   r
   r   r   r   actual_argsvirtual_argsarg_idxtmp_argret
tuple_argsr    nb_rettyprototype_argsr"   r   r   r#      s>   





z2libdevice_implement_multiple_returns.<locals>.corer$   )r   create_signaturereturn_typer&   r   r'   r   )r    r"   r=   r   r#   r(   r   r;   r   $libdevice_implement_multiple_returns   s
   .r@   c                 C   s   g | ]}|j qS r   )r%   r   r   r   r   r   P   s    r   N)llvmliter   
numba.corer   r   numba.core.imputilsr   
numba.cudar   r   registryr'   r*   r@   	functionsitemsr    r"   r   anyr   r   r   r   <module>   s    6