§
    ƒÛgö
  ã                   ó  — 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„ Zd„ Ze	j                             ¦   «         D ]8\  Z\  ZZ ed„ eD ¦   «         ¦  «        r eeee¦  «         Œ+ eeee¦  «         Œ9dS )	é    )Úir)ÚcgutilsÚtypes)ÚRegistry)Ú	libdeviceÚlibdevicefuncsc                 ó¢   ‡ ‡‡— ˆ ˆˆfd„}t          t          ‰ dd …         ¦  «        }d„ t          D ¦   «         } t          |g|¢R Ž |¦  «         d S )Nc                 óÜ   •‡ — |j         }‰                      ‰¦  «        }ˆ fd„‰
D ¦   «         }t          j        ||¦  «        }t	          j        ||‰	¦  «        }|                     ||¦  «        S )Nc                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS © )Úget_value_typeÚty)Ú.0ÚargÚcontexts     €úN/granary/edev/quantum/lib/python3.11/site-packages/numba/cuda/libdeviceimpl.pyú
<listcomp>z5libdevice_implement.<locals>.core.<locals>.<listcomp>   s)   ø€ ÐDÐDÐD°c�7×)Ò)¨#¬&Ñ1Ô1ÐDÐDÐDó    )Úmoduler   r   ÚFunctionTyper   Úget_or_insert_functionÚcall)r   ÚbuilderÚsigÚargsÚlmodÚfrettyÚfargtysÚfntyÚfnÚfuncÚnbargsÚrettys   `        €€€r   Úcorez!libdevice_implement.<locals>.core   sp   øø€ ØŒ~ˆØ×'Ò'¨Ñ.Ô.ˆØDÐDÐDÐD¸VÐDÑDÔDˆÝŒ˜v wÑ/Ô/ˆÝÔ+¨D°$¸Ñ=Ô=ˆØ�|Š|˜B Ñ%Ô%Ð%r   é   c                 ó*   — g | ]}|j         °	|j        ‘ŒS r   )Úis_ptrr   ©r   r   s     r   r   z'libdevice_implement.<locals>.<listcomp>   s!   € Ð7Ð7Ð7˜¨C¬JÐ7ˆcŒfÐ7Ð7Ð7r   )Úgetattrr   r   Úlower)r!   r#   r"   r$   ÚkeyÚargtyss   ```   r   Úlibdevice_implementr-   
   sz   øøø€ ð&ð &ð &ð &ð &ð &ð &õ •)˜T ! " "œXÑ
&Ô
&€Cà7Ð7¥Ð7Ñ7Ô7€FØ…Eˆ#Ð�ÐÐÐ˜ÑÔÐÐÐr   c                 óÆ   ‡ ‡‡‡— t          j        ‰‰¦  «        }|j        Šˆ ˆˆˆfd„}t          t          ‰ dd …         ¦  «        } t          |g|j        ¢R Ž |¦  «         d S )Nc                 ó¤  •— |j         }g }‰D ]L}|                      |j        ¦  «        }|j        r|                     ¦   «         }|                     |¦  «         ŒM|                      ‰¦  «        }t          j        ||¦  «        }	t          j	        ||	‰¦  «        }
g }g }d}‰D ]�}|j        rXt          j
        ||                      |j        ¦  «        ¦  «        }|                     |¦  «         |                     |¦  «         Œa|                     ||         ¦  «         |dz  }Œ‚|                     |
|¦  «        }g }‰t          j        k    r|                     |¦  «         |D ]*}|                     |                     |¦  «        ¦  «         Œ+t          ‰t          j        ¦  «        rt          j        ||¦  «        S t          j        ||¦  «        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_argsr!   Únb_rettyÚprototype_argsr#   s                    €€€€r   r$   z2libdevice_implement_multiple_returns.<locals>.core   sß  ø€ ØŒ~ˆàˆØ!ð 	ð 	ˆCØ×'Ò'¨¬Ñ/Ô/ˆBØŒzð %Ø—]’]‘_”_�Ø�NŠN˜2ÑÔÐÐà×'Ò'¨Ñ.Ô.ˆåŒ˜v wÑ/Ô/ˆÝÔ+¨D°$¸Ñ=Ô=ˆð ˆØˆØˆØ!ð 		ð 		ˆCØŒzð å!Ô-¨gØ.5×.DÒ.DÀSÄVÑ.LÔ.LñNô N�à×"Ò" 7Ñ+Ô+Ð+Ø×#Ò# GÑ,Ô,Ð,Ð,à×"Ò" 4¨¤=Ñ1Ô1Ð1Ø˜1‘��à�lŠl˜2˜{Ñ+Ô+ˆð ˆ
Ø•E”JÒÐØ×Ò˜cÑ"Ô"Ð"Øð 	1ð 	1ˆCØ×Ò˜gŸlšl¨3Ñ/Ô/Ñ0Ô0Ð0Ð0å�h¥¤Ñ/Ô/ð 	<ÝÔ% g¨zÑ:Ô:Ð:åÔ& w°
Ñ;Ô;Ð;r   r%   )r   Úcreate_signatureÚreturn_typer)   r   r*   r   )r!   r#   rA   r   r$   r+   r@   s   ```   @r   Ú$libdevice_implement_multiple_returnsrD      s‰   øøøø€ Ý
Ô
)¨%°Ñ
@Ô
@€CØŒ€Hð,<ð ,<ð ,<ð ,<ð ,<ð ,<ð ,<ð ,<õ\ •)˜T ! " "œXÑ
&Ô
&€CØ…Eˆ#Ð�”ÐÐÐ˜$ÑÔÐÐÐr   c                 ó   — g | ]	}|j         ‘Œ
S r   )r'   r(   s     r   r   r   P   s   € Ð'Ð'Ð'˜3ˆCŒJÐ'Ð'Ð'r   N)Úllvmliter   Ú
numba.corer   r   Únumba.core.imputilsr   Ú
numba.cudar   r   Úregistryr*   r-   rD   Ú	functionsÚitemsr!   r#   r   Úanyr   r   r   ú<module>rN      s  ðØ Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø (Ð (Ð (Ð (Ð (Ð (Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0àˆ8‰:Œ:€ØŒ€ðð ð ð3 ð 3 ð 3 ðl *Ô3×9Ò9Ñ;Ô;ð /ð /Ñ€D‰-ˆ5�$Ø
€sÐ'Ð' $Ð'Ñ'Ô'Ñ(Ô(ð /Ø,Ð,¨T°5¸$Ñ?Ô?Ð?Ð?àÐ˜D %¨Ñ.Ô.Ð.Ð.ð	/ð /r   