§
    1@Äj‚!  ã                   ó²  — d dl mZmZmZ d dlmZ 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)„ ¦   «         Z0 eed$¬"¦  «        d*„ ¦   «         Z1 eed$¬"¦  «        d+„ ¦   «         Z2 eed!¬"¦  «        d,„ ¦   «         Z3 eed$¬"¦  «        d-„ ¦   «         Z4 eed!¬"¦  «        d.„ ¦   «         Z5 eed$¬"¦  «        d/„ ¦   «         Z6 eed!¬"¦  «        d0„ ¦   «         Z7 eed$¬"¦  «        d1„ ¦   «         Z8 ed2¦  «         G d3„ d4e¦  «        ¦   «         Z9e:d5k    r ej;        ¦   «          dS dS )6é    )ÚcudaÚnjitÚtypes)ÚTypingError)ÚoverloadÚoverload_attribute)Útypeof)ÚCUDATestCaseÚskip_on_cudasimÚunittestNc                  ó   — d S ©N© r   ó    úVC:\Projects\Historical\venv\Lib\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'   3   r   r   c                  ó   — d S r   r   r   r   r   Ú)target_overloaded_calls_target_overloadedr)   7   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>.implT   ó   € Ø	ˆ!ˆˆŒÕ"Ñ"ˆˆ‰ˆˆr   r   ©r@   rA   s     r   Úol_generic_func_1rD   R   ó   € ð#ð #ð #à€Kr   r   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r=   )ÚCUDA_FUNCTION_1r?   s    r   rA   zol_cuda_func_1.<locals>.impl[   ó   € Ø	ˆ!ˆˆŒ•Ñˆˆ‰ˆˆr   r   rC   s     r   Úol_cuda_func_1rJ   Y   ó   € ð ð  ð  à€Kr   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r=   )ÚGENERIC_FUNCTION_2r?   s    r   rA   zol_generic_func_2.<locals>.implb   rB   r   r   rC   s     r   Úol_generic_func_2rO   `   rE   r   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r=   )ÚCUDA_FUNCTION_2r?   s    r   rA   zol_cuda_func.<locals>.impli   rI   r   r   rC   s     r   Úol_cuda_funcrS   g   rK   r   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r=   )ÚGENERIC_CALLS_GENERICr   r?   s    r   rA   z&ol_generic_calls_generic.<locals>.implp   s-   € Ø	ˆ!ˆˆŒÕ%Ñ%ˆˆ‰Ý�qÑÔÐÐÐr   r   rC   s     r   Úol_generic_calls_genericrW   n   ó   € ðð ð ð €Kr   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r=   )ÚGENERIC_CALLS_CUDAr   r?   s    r   rA   z#ol_generic_calls_cuda.<locals>.implx   s(   € Ø	ˆ!ˆˆŒÕ"Ñ"ˆˆ‰Ý�A‰Œˆˆˆr   r   rC   s     r   Úol_generic_calls_cudar\   v   ó   € ðð ð ð €Kr   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r=   )ÚCUDA_CALLS_GENERICr   r?   s    r   rA   z#ol_cuda_calls_generic.<locals>.impl€   s-   € Ø	ˆ!ˆˆŒÕ"Ñ"ˆˆ‰Ý�qÑÔÐÐÐr   r   rC   s     r   Úol_cuda_calls_genericra   ~   rX   r   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r=   )ÚCUDA_CALLS_CUDAr   r?   s    r   rA   z ol_cuda_calls_cuda.<locals>.implˆ   s'   € Ø	ˆ!ˆˆŒ•Ñˆˆ‰Ý�A‰Œˆˆˆr   r   rC   s     r   Úol_cuda_calls_cudare   †   r]   r   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r=   )ÚGENERIC_TARGET_OLr?   s    r   rA   z*ol_target_overloaded_generic.<locals>.impl�   s   € Ø	ˆ!ˆˆŒÕ!Ñ!ˆˆ‰ˆˆr   r   rC   s     r   Úol_target_overloaded_genericri   Ž   s   € ð"ð "ð "à€Kr   c                 ó   — d„ }|S )Nc                 ó0   — | dxx         t           z  cc<   d S r=   )ÚCUDA_TARGET_OLr?   s    r   rA   z'ol_target_overloaded_cuda.<locals>.impl—   s   € Ø	ˆ!ˆˆŒ•Ñˆˆ‰ˆˆr   r   rC   s     r   Úol_target_overloaded_cudarm   •   s   € ðð ð à€Kr   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r=   )ÚGENERIC_CALLS_TARGET_OLr#   r?   s    r   rA   z0ol_generic_calls_target_overloaded.<locals>.implž   s-   € Ø	ˆ!ˆˆŒÕ'Ñ'ˆˆ‰Ý˜!ÑÔÐÐÐr   r   rC   s     r   Ú"ol_generic_calls_target_overloadedrq   œ   ó   € ðð ð ð €Kr   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r=   )ÚCUDA_CALLS_TARGET_OLr#   r?   s    r   rA   z-ol_cuda_calls_target_overloaded.<locals>.impl¦   s-   € Ø	ˆ!ˆˆŒÕ$Ñ$ˆˆ‰Ý˜!ÑÔÐÐÐr   r   rC   s     r   Úol_cuda_calls_target_overloadedrv   ¤   rr   r   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r=   )Ú!GENERIC_TARGET_OL_CALLS_TARGET_OLr#   r?   s    r   rA   z8ol_generic_calls_target_overloaded_generic.<locals>.impl®   s-   € Ø	ˆ!ˆˆŒÕ1Ñ1ˆˆ‰Ý˜!ÑÔÐÐÐr   r   rC   s     r   Ú*ol_generic_calls_target_overloaded_genericrz   ¬   rr   r   c                 ó   — d„ }|S )Nc                 óN   — | dxx         t           z  cc<   t          | ¦  «         d S r=   )ÚCUDA_TARGET_OL_CALLS_TARGET_OLr#   r?   s    r   rA   z5ol_generic_calls_target_overloaded_cuda.<locals>.impl¶   s-   € Ø	ˆ!ˆˆŒÕ.Ñ.ˆˆ‰Ý˜!ÑÔÐÐÐr   r   rC   s     r   Ú'ol_generic_calls_target_overloaded_cudar~   ´   rr   r   z$Overloading not supported in cudasimc                   ón   — 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„ 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   )r>   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   )rH   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   )r>   rH   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   )r>   rN   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   )rH   rR   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   )rV   r>   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   )r[   rH   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`   r>   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   )rd   rH   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   )rl   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   )rp   rl   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   )ru   rl   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   )r}   rl   rŽ   ry   rh   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   c                 óØ  — |                       ¦   «         \  }}t           |¦   «         ¦  «        }t          |dd¬¦  «        d„ ¦   «         }|                      t          d¦  «        5  t          t          j        |¦  «        ¦  «        d„ ¦   «         }d d d ¦  «         n# 1 swxY w Y   t          j	        t          j
        t          j        d d d…         |¦  «        ¦  «        d„ ¦   «         }d S )	NÚ	cuda_onlyr   r9   c                 ó   — d„ }|S )Nc                 ó   — dS )Né*   r   )Úobjs    r   ÚimpzTTestOverload.test_overload_attribute_target.<locals>.ov_dummy_cuda_attr.<locals>.imp1  s   € Ø�rr   r   )r¿   rÀ   s     r   Úov_dummy_cuda_attrzGTestOverload.test_overload_attribute_target.<locals>.ov_dummy_cuda_attr/  s   € ðð ð ð ˆJr   zUnknown attribute 'cuda_only'c                 ó   — | j         S r   ©r»   r?   s    r   Úillegal_target_attr_usezLTestOverload.test_overload_attribute_target.<locals>.illegal_target_attr_use:  s
   € à”{Ð"r   r‚   c                 ó   — |j         | d<   d S r=   rÃ   )ÚresÚdummys     r   Úcuda_target_attr_usezITestOverload.test_overload_attribute_target.<locals>.cuda_target_attr_useA  s   € à”_ˆC�‰FˆFˆFr   )Úmake_dummy_typer	   r   ÚassertRaisesRegexr   r   r   Úint64r   rˆ   Úvoid)r‹   ÚMyDummyÚMyDummyTypeÚmydummy_typerÁ   rÄ   rÈ   s          r   Útest_overload_attribute_targetz+TestOverload.test_overload_attribute_target+  s>  € Ø#×3Ò3Ñ5Ô5Ñˆ�Ý˜g˜g™iœiÑ(Ô(ˆå	˜K¨¸VÐ	DÑ	DÔ	Dð	ð 	ñ 
EÔ	Dð	ð ×#Ò#¥KØ$CñEô Eð 	#ð 	#å•%”+˜lÑ+Ô+Ñ,Ô,ð#ð #ñ -Ô,ð#ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ 
Œ•%”*�Uœ[¨¨¨1¨Ô-¨|Ñ<Ô<Ñ	=Ô	=ð	%ð 	%ñ 
>Ô	=ð	%ð 	%ð 	%s   Á%+BÂB Â#B N)Ú__name__Ú
__module__Ú__qualname__rŽ   r�   r”   r—   rš   r�   r    r£   r§   rª   r­   r°   r³   r¶   r¹   rÐ   r   r   r   r€   r€   ¼   s  € € € € € ð)ð )ð )ð
)ð )ð )ð
.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð.ð .ð .ð
2ð 
2ð 
2ð%ð %ð %ð %ð %r   r€   Ú__main__)<Únumbar   r   r   Únumba.core.errorsr   Únumba.core.extendingr   r   Únumba.core.typing.typeofr	   Únumba.cuda.testingr
   r   r   Únumpyr…   r   r   r   r   r   r   r   r!   r#   r%   r'   r)   r>   rH   rN   rR   rV   r[   r`   rd   rh   rl   rp   ru   ry   r}   rD   rJ   rO   rS   rW   r\   ra   re   ri   rm   rq   rv   rz   r~   r€   rÑ   Úmainr   r   r   ú<module>rÜ      se  ðØ #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø )Ð )Ð )Ð )Ð )Ð )Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø +Ð +Ð +Ð +Ð +Ð +Ø 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ðF%ð F%ð F%ð F%ð F%�<ñ F%ô F%ñ 9Ô8ðF%ðR ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   