§
    ƒÛgÊ  ã                   ó’  — d dl mZmZ d dlmZ d dlmZmZmZ d dl	Z
d„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$ eed¬ ¦  «        d!„ ¦   «         Z% eed"¬ ¦  «        d#„ ¦   «         Z& eed¬ ¦  «        d$„ ¦   «         Z' eed"¬ ¦  «        d%„ ¦   «         Z( eed¬ ¦  «        d&„ ¦   «         Z) eed¬ ¦  «        d'„ ¦   «         Z* eed"¬ ¦  «        d(„ ¦   «         Z+ eed"¬ ¦  «        d)„ ¦   «         Z, eed¬ ¦  «        d*„ ¦   «         Z- eed"¬ ¦  «        d+„ ¦   «         Z. eed¬ ¦  «        d,„ ¦   «         Z/ eed"¬ ¦  «        d-„ ¦   «         Z0 eed¬ ¦  «        d.„ ¦   «         Z1 eed"¬ ¦  «        d/„ ¦   «         Z2 ed0¦  «         G d1„ d2e¦  «        ¦   «         Z3e4d3k    r ej5        ¦   «          dS dS )4é    )ÚcudaÚnjit)Úoverload)ÚCUDATestCaseÚskip_on_cudasimÚunittestNc                  ó   — d S ©N© r   ó    ú[/granary/edev/quantum/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_overload.pyÚgeneric_func_1r   
   ó   € Ø€Dr   c                  ó   — d S r
   r   r   r   r   Úcuda_func_1r      r   r   c                  ó   — d S r
   r   r   r   r   Úgeneric_func_2r      r   r   c                  ó   — d S r
   r   r   r   r   Úcuda_func_2r      r   r   c                  ó   — d S r
   r   r   r   r   Úgeneric_calls_genericr      r   r   c                  ó   — d S r
   r   r   r   r   Úgeneric_calls_cudar      r   r   c                  ó   — d S r
   r   r   r   r   Úcuda_calls_genericr   "   r   r   c                  ó   — d S r
   r   r   r   r   Úcuda_calls_cudar   &   r   r   c                  ó   — d S r
   r   r   r   r   Útarget_overloadedr   *   r   r   c                  ó   — d S r
   r   r   r   r   Úgeneric_calls_target_overloadedr!   .   r   r   c                  ó   — d S r
   r   r   r   r   Úcuda_calls_target_overloadedr#   2   r   r   c                  ó   — d S r
   r   r   r   r   Ú)target_overloaded_calls_target_overloadedr%   6   r   r   é   é   é   é   é   é   é   é   é   é   é   é%   é)   é+   Úgeneric)Útargetc                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S ©Nr   )ÚGENERIC_FUNCTION_1©Úxs    r   Úimplzol_generic_func_1.<locals>.implS   ó   € Ø	ˆ!ˆˆŒÕ"Ñ"ˆˆ‰ˆˆr   r   ©r;   r<   s     r   Úol_generic_func_1r?   Q   ó   € ð#ð #ð #à€Kr   r   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r8   )ÚCUDA_FUNCTION_1r:   s    r   r<   zol_cuda_func_1.<locals>.implZ   ó   € Ø	ˆ!ˆˆŒ•Ñˆˆ‰ˆˆr   r   r>   s     r   Úol_cuda_func_1rE   X   ó   € ð ð  ð  à€Kr   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r8   )ÚGENERIC_FUNCTION_2r:   s    r   r<   zol_generic_func_2.<locals>.impla   r=   r   r   r>   s     r   Úol_generic_func_2rJ   _   r@   r   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r8   )ÚCUDA_FUNCTION_2r:   s    r   r<   zol_cuda_func.<locals>.implh   rD   r   r   r>   s     r   Úol_cuda_funcrN   f   rF   r   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r8   )ÚGENERIC_CALLS_GENERICr   r:   s    r   r<   z&ol_generic_calls_generic.<locals>.implo   s-   € Ø	ˆ!ˆˆŒÕ%Ñ%ˆˆ‰Ý�qÑÔÐÐÐr   r   r>   s     r   Úol_generic_calls_genericrR   m   ó   € ðð ð ð €Kr   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r8   )ÚGENERIC_CALLS_CUDAr   r:   s    r   r<   z#ol_generic_calls_cuda.<locals>.implw   s(   € Ø	ˆ!ˆˆŒÕ"Ñ"ˆˆ‰Ý�A‰Œˆˆˆr   r   r>   s     r   Úol_generic_calls_cudarW   u   ó   € ðð ð ð €Kr   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r8   )ÚCUDA_CALLS_GENERICr   r:   s    r   r<   z#ol_cuda_calls_generic.<locals>.impl   s-   € Ø	ˆ!ˆˆŒÕ"Ñ"ˆˆ‰Ý�qÑÔÐÐÐr   r   r>   s     r   Úol_cuda_calls_genericr\   }   rS   r   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r8   )ÚCUDA_CALLS_CUDAr   r:   s    r   r<   z ol_cuda_calls_cuda.<locals>.impl‡   s'   € Ø	ˆ!ˆˆŒ•Ñˆˆ‰Ý�A‰Œˆˆˆr   r   r>   s     r   Úol_cuda_calls_cudar`   …   rX   r   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r8   )ÚGENERIC_TARGET_OLr:   s    r   r<   z*ol_target_overloaded_generic.<locals>.impl�   s   € Ø	ˆ!ˆˆŒÕ!Ñ!ˆˆ‰ˆˆr   r   r>   s     r   Úol_target_overloaded_genericrd   �   s   € ð"ð "ð "à€Kr   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r8   )ÚCUDA_TARGET_OLr:   s    r   r<   z'ol_target_overloaded_cuda.<locals>.impl–   s   € Ø	ˆ!ˆˆŒ•Ñˆˆ‰ˆˆr   r   r>   s     r   Úol_target_overloaded_cudarh   ”   s   € ðð ð à€Kr   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r8   )ÚGENERIC_CALLS_TARGET_OLr   r:   s    r   r<   z0ol_generic_calls_target_overloaded.<locals>.impl�   s-   € Ø	ˆ!ˆˆŒÕ'Ñ'ˆˆ‰Ý˜!ÑÔÐÐÐr   r   r>   s     r   Ú"ol_generic_calls_target_overloadedrl   ›   ó   € ðð ð ð €Kr   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r8   )ÚCUDA_CALLS_TARGET_OLr   r:   s    r   r<   z-ol_cuda_calls_target_overloaded.<locals>.impl¥   s-   € Ø	ˆ!ˆˆŒÕ$Ñ$ˆˆ‰Ý˜!ÑÔÐÐÐr   r   r>   s     r   Úol_cuda_calls_target_overloadedrq   £   rm   r   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r8   )Ú!GENERIC_TARGET_OL_CALLS_TARGET_OLr   r:   s    r   r<   z8ol_generic_calls_target_overloaded_generic.<locals>.impl­   s-   € Ø	ˆ!ˆˆŒÕ1Ñ1ˆˆ‰Ý˜!ÑÔÐÐÐr   r   r>   s     r   Ú*ol_generic_calls_target_overloaded_genericru   «   rm   r   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r8   )ÚCUDA_TARGET_OL_CALLS_TARGET_OLr   r:   s    r   r<   z5ol_generic_calls_target_overloaded_cuda.<locals>.implµ   s-   € Ø	ˆ!ˆˆŒÕ.Ñ.ˆˆ‰Ý˜!ÑÔÐÐÐr   r   r>   s     r   Ú'ol_generic_calls_target_overloaded_cudary   ³   rm   r   z$Overloading not supported in cudasimc                   óh   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestOverloadc                 óÄ   — t          j        dt           j        ¬¦  «        } t          j        |¦  «        d         |¦  «         |                      |d         |¦  «         d S )Né   ©Údtype)r}   r}   r   )ÚnpÚonesÚint32r   ÚjitÚassertEqual©ÚselfÚkernelÚexpectedr;   s       r   Úcheck_overloadzTestOverload.check_overload½   sW   € ÝŒG�A�RœXÐ&Ñ&Ô&ˆØ�Œ�ÑÔ˜Ô˜qÑ!Ô!Ð!Ø×Ò˜˜1œ˜xÑ(Ô(Ð(Ð(Ð(r   c                 ó®   — t          j        dt           j        ¬¦  «        } t          |¦  «        |¦  «         |                      |d         |¦  «         d S )Nr}   r~   r   )r€   r�   r‚   r   r„   r…   s       r   Úcheck_overload_cpuzTestOverload.check_overload_cpuÂ   sK   € ÝŒG�A�RœXÐ&Ñ&Ô&ˆØ�ˆV‰Œ�Q‰ŒˆØ×Ò˜˜1œ˜xÑ(Ô(Ð(Ð(Ð(r   c                 óF   — d„ }t           }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r   r:   s    r   r‡   z)TestOverload.test_generic.<locals>.kernelÈ   s   € Ý˜1ÑÔÐÐÐr   )r9   r‰   ©r†   r‡   rˆ   s      r   Útest_genericzTestOverload.test_genericÇ   s4   € ð	ð 	ð 	õ &ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óF   — d„ }t           }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r   r:   s    r   r‡   z&TestOverload.test_cuda.<locals>.kernelÏ   s   € Ý˜‰NŒNˆNˆNˆNr   )rC   r‰   rŽ   s      r   Ú	test_cudazTestOverload.test_cudaÎ   s4   € ð	ð 	ð 	õ #ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óV   — d„ }t           t          z  }|                      ||¦  «         d S )Nc                 óB   — t          | ¦  «         t          | ¦  «         d S r
   )r   r   r:   s    r   r‡   z2TestOverload.test_generic_and_cuda.<locals>.kernelÖ   s   € Ý˜1ÑÔÐÝ˜‰NŒNˆNˆNˆNr   )r9   rC   r‰   rŽ   s      r   Útest_generic_and_cudaz"TestOverload.test_generic_and_cudaÕ   s9   € ð	ð 	ð 	õ &­Ñ7ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óV   — d„ }t           t          z  }|                      ||¦  «         d S )Nc                 óB   — t          | ¦  «         t          | ¦  «         d S r
   )r   r   r:   s    r   r‡   z8TestOverload.test_call_two_generic_calls.<locals>.kernelÞ   s$   € Ý˜1ÑÔÐÝ˜1ÑÔÐÐÐr   )r9   rI   r‰   rŽ   s      r   Útest_call_two_generic_callsz(TestOverload.test_call_two_generic_callsÝ   s:   € ð	ð 	ð 	õ &Õ(:Ñ:ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óV   — d„ }t           t          z  }|                      ||¦  «         d S )Nc                 óB   — t          | ¦  «         t          | ¦  «         d S r
   )r   r   r:   s    r   r‡   z5TestOverload.test_call_two_cuda_calls.<locals>.kernelæ   s   € Ý˜‰NŒNˆNÝ˜‰NŒNˆNˆNˆNr   )rC   rM   r‰   rŽ   s      r   Útest_call_two_cuda_callsz%TestOverload.test_call_two_cuda_callså   s9   € ð	ð 	ð 	õ #¥_Ñ4ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óV   — d„ }t           t          z  }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r   r:   s    r   r‡   z7TestOverload.test_generic_calls_generic.<locals>.kernelî   s   € Ý! !Ñ$Ô$Ð$Ð$Ð$r   )rQ   r9   r‰   rŽ   s      r   Útest_generic_calls_genericz'TestOverload.test_generic_calls_genericí   s:   € ð	%ð 	%ð 	%õ )Õ+=Ñ=ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óV   — d„ }t           t          z  }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r   r:   s    r   r‡   z4TestOverload.test_generic_calls_cuda.<locals>.kernelõ   ó   € Ý˜qÑ!Ô!Ð!Ð!Ð!r   )rV   rC   r‰   rŽ   s      r   Útest_generic_calls_cudaz$TestOverload.test_generic_calls_cudaô   s9   € ð	"ð 	"ð 	"õ &­Ñ7ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óV   — d„ }t           t          z  }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r   r:   s    r   r‡   z4TestOverload.test_cuda_calls_generic.<locals>.kernelü   r¡   r   )r[   r9   r‰   rŽ   s      r   Útest_cuda_calls_genericz$TestOverload.test_cuda_calls_genericû   s:   € ð	"ð 	"ð 	"õ &Õ(:Ñ:ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óV   — d„ }t           t          z  }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r   r:   s    r   r‡   z1TestOverload.test_cuda_calls_cuda.<locals>.kernel  s   € Ý˜AÑÔÐÐÐr   )r_   rC   r‰   rŽ   s      r   Útest_cuda_calls_cudaz!TestOverload.test_cuda_calls_cuda  s9   € ð	ð 	ð 	õ #¥_Ñ4ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óF   — d„ }t           }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r   r:   s    r   r‡   z8TestOverload.test_call_target_overloaded.<locals>.kernel
  s   € Ý˜aÑ Ô Ð Ð Ð r   )rg   r‰   rŽ   s      r   Útest_call_target_overloadedz(TestOverload.test_call_target_overloaded	  s4   € ð	!ð 	!ð 	!õ "ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óV   — d„ }t           t          z  }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r!   r:   s    r   r‡   zATestOverload.test_generic_calls_target_overloaded.<locals>.kernel  s   € Ý+¨AÑ.Ô.Ð.Ð.Ð.r   )rk   rg   r‰   rŽ   s      r   Ú$test_generic_calls_target_overloadedz1TestOverload.test_generic_calls_target_overloaded  s9   € ð	/ð 	/ð 	/õ +­^Ñ;ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 óV   — d„ }t           t          z  }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r#   r:   s    r   r‡   z>TestOverload.test_cuda_calls_target_overloaded.<locals>.kernel  s   € Ý(¨Ñ+Ô+Ð+Ð+Ð+r   )rp   rg   r‰   rŽ   s      r   Ú!test_cuda_calls_target_overloadedz.TestOverload.test_cuda_calls_target_overloaded  s9   € ð	,ð 	,ð 	,õ (­.Ñ8ˆØ×Ò˜F HÑ-Ô-Ð-Ð-Ð-r   c                 ó    — d„ }t           t          z  }|                      ||¦  «         t          t          z  }|                      ||¦  «         d S )Nc                 ó$   — t          | ¦  «         d S r
   )r%   r:   s    r   r‡   zKTestOverload.test_target_overloaded_calls_target_overloaded.<locals>.kernel  s   € Ý5°aÑ8Ô8Ð8Ð8Ð8r   )rx   rg   r‰   rt   rc   r‹   rŽ   s      r   Ú.test_target_overloaded_calls_target_overloadedz;TestOverload.test_target_overloaded_calls_target_overloaded  s\   € ð	9ð 	9ð 	9õ 2µNÑBˆØ×Ò˜F HÑ-Ô-Ð-õ 5Õ7HÑHˆØ×Ò ¨Ñ1Ô1Ð1Ð1Ð1r   N)Ú__name__Ú
__module__Ú__qualname__r‰   r‹   r�   r’   r•   r˜   r›   rž   r¢   r¥   r¨   r«   r®   r±   r´   r   r   r   r{   r{   »   sõ   € € € € € ð)ð )ð )ð
)ð )ð )ð
.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð
2ð 
2ð 
2ð 
2ð 
2r   r{   Ú__main__)6Únumbar   r   Únumba.core.extendingr   Únumba.cuda.testingr   r   r   Únumpyr€   r   r   r   r   r   r   r   r   r   r!   r#   r%   r9   rC   rI   rM   rQ   rV   r[   r_   rc   rg   rk   rp   rt   rx   r?   rE   rJ   rN   rR   rW   r\   r`   rd   rh   rl   rq   ru   ry   r{   rµ   Úmainr   r   r   ú<module>r¾      s5  ðØ Ð Ð Ð Ð Ð Ð Ð Ø )Ð )Ð )Ð )Ð )Ð )Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ Fà Ð Ð Ð ð
	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð	ð 	ð 	ð Ð Ø€ØÐ Ø€ØÐ ØÐ ØÐ Ø€ØÐ Ø€ØÐ ØÐ Ø$&Ð !Ø!#Ð ð
 
€ˆ. Ð+Ñ+Ô+ðð ñ ,Ô+ðð 
€ˆ+˜fÐ%Ñ%Ô%ðð ñ &Ô%ðð 
€ˆ. Ð+Ñ+Ô+ðð ñ ,Ô+ðð 
€ˆ+˜fÐ%Ñ%Ô%ðð ñ &Ô%ðð 
€Ð
¨	Ð2Ñ2Ô2ðð ñ 3Ô2ðð 
€Ð
 YÐ/Ñ/Ô/ðð ñ 0Ô/ðð 
€Ð
 VÐ,Ñ,Ô,ðð ñ -Ô,ðð 
€ˆ/ &Ð)Ñ)Ô)ðð ñ *Ô)ðð 
€Ð
 IÐ.Ñ.Ô.ðð ñ /Ô.ðð 
€Ð
 FÐ+Ñ+Ô+ðð ñ ,Ô+ðð 
€Ð
)°)Ð<Ñ<Ô<ðð ñ =Ô<ðð 
€Ð
&¨vÐ6Ñ6Ô6ðð ñ 7Ô6ðð 
€Ð
3¸IÐFÑFÔFðð ñ GÔFðð 
€Ð
3¸FÐCÑCÔCðð ñ DÔCðð €Ð7Ñ8Ô8ðl2ð l2ð l2ð l2ð l2�<ñ l2ô l2ñ 9Ô8ðl2ð^ ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   