
    xKg;                         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jv                          yy)6    )cudanjittypes)TypingError)overloadoverload_attribute)typeof)CUDATestCaseskip_on_cudasimunittestNc                       y N r       i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cuda/tests/cudapy/test_overload.pygeneric_func_1r          r   c                       y r   r   r   r   r   cuda_func_1r      r   r   c                       y r   r   r   r   r   generic_func_2r      r   r   c                       y r   r   r   r   r   cuda_func_2r      r   r   c                       y r   r   r   r   r   generic_calls_genericr      r   r   c                       y r   r   r   r   r   generic_calls_cudar      r   r   c                       y r   r   r   r   r   cuda_calls_genericr   #   r   r   c                       y r   r   r   r   r   cuda_calls_cudar!   '   r   r   c                       y r   r   r   r   r   target_overloadedr#   +   r   r   c                       y r   r   r   r   r   generic_calls_target_overloadedr%   /   r   r   c                       y r   r   r   r   r   cuda_calls_target_overloadedr'   3   r   r   c                       y r   r   r   r   r   )target_overloaded_calls_target_overloadedr)   7   r   r                                    %   )   +   generictargetc                     d }|S )Nc                 &    | dxx   t         z  cc<   y 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                 &    | dxx   t         z  cc<   y 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                 &    | dxx   t         z  cc<   y 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                 &    | dxx   t         z  cc<   y 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                 <    | dxx   t         z  cc<   t        |        y 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                 <    | dxx   t         z  cc<   t        |        y 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                 <    | dxx   t         z  cc<   t        |        y 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                 <    | dxx   t         z  cc<   t        |        y 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                 &    | dxx   t         z  cc<   y 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                 &    | dxx   t         z  cc<   y 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                 <    | dxx   t         z  cc<   t        |        y 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                 <    | dxx   t         z  cc<   t        |        y 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                 <    | dxx   t         z  cc<   t        |        y 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                 <    | dxx   t         z  cc<   t        |        y 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                   l    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y)TestOverloadc                     t        j                  dt         j                        } t        j                  |      d   |       | j                  |d   |       y )N   dtype)r   r   r   )nponesint32r   jitassertEqualselfkernelexpectedr@   s       r   check_overloadzTestOverload.check_overload   sB    GGARXX&q!1x(r   c                     t        j                  dt         j                        } t        |      |       | j	                  |d   |       y )Nr   r   r   )r   r   r   r   r   r   s       r   check_overload_cpuzTestOverload.check_overload_cpu   s7    GGARXX&VQ1x(r   c                 :    d }t         }| j                  ||       y )Nc                     t        |        y 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   s    	 &FH-r   c                 :    d }t         }| j                  ||       y )Nc                     t        |        y r   )r   r?   s    r   r   z&TestOverload.test_cuda.<locals>.kernel   s	    Nr   )rH   r   r   s      r   	test_cudazTestOverload.test_cuda   s    	 #FH-r   c                 H    d }t         t        z  }| j                  ||       y )Nc                 0    t        |        t        |        y r   )r   r   r?   s    r   r   z2TestOverload.test_generic_and_cuda.<locals>.kernel   s    1Nr   )r>   rH   r   r   s      r   test_generic_and_cudaz"TestOverload.test_generic_and_cuda   s#    	 &7FH-r   c                 H    d }t         t        z  }| j                  ||       y )Nc                 0    t        |        t        |        y 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$    	 &(::FH-r   c                 H    d }t         t        z  }| j                  ||       y )Nc                 0    t        |        t        |        y r   )r   r   r?   s    r   r   z5TestOverload.test_call_two_cuda_calls.<locals>.kernel   s    NNr   )rH   rR   r   r   s      r   test_call_two_cuda_callsz%TestOverload.test_call_two_cuda_calls   s#    	 #_4FH-r   c                 H    d }t         t        z  }| j                  ||       y )Nc                     t        |        y 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$    	% )+==FH-r   c                 H    d }t         t        z  }| j                  ||       y )Nc                     t        |        y 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   s#    	" &7FH-r   c                 H    d }t         t        z  }| j                  ||       y )Nc                     t        |        y 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$    	" &(::FH-r   c                 H    d }t         t        z  }| j                  ||       y )Nc                     t        |        y 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  s#    	 #_4FH-r   c                 :    d }t         }| j                  ||       y )Nc                     t        |        y 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
  s    	! "FH-r   c                 H    d }t         t        z  }| j                  ||       y )Nc                     t        |        y 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  s#    	/ +^;FH-r   c                 H    d }t         t        z  }| j                  ||       y )Nc                     t        |        y 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  s#    	, (.8FH-r   c                     d }t         t        z  }| j                  ||       t        t        z  }| j                  ||       y )Nc                     t        |        y r   )r)   r?   s    r   r   zKTestOverload.test_target_overloaded_calls_target_overloaded.<locals>.kernel   s
    5a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 2NBFH- 57HH1r   c                    | j                         \  }}t         |             }t        |dd      d        }| j                  t        d      5  t        t        j                  |            d        }d d d        t        j                  t        j                  t        j                  d d d   |            d        }y # 1 sw Y   MxY w)	N	cuda_onlyr   r9   c                     d }|S )Nc                      y)N*   r   )objs    r   impzTTestOverload.test_overload_attribute_target.<locals>.ov_dummy_cuda_attr.<locals>.imp1  s    r   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<   y r=   r   )resdummys     r   cuda_target_attr_usezITestOverload.test_overload_attribute_target.<locals>.cuda_target_attr_useA  s    __C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gi(	KV	D	 
E	 ##K$CE%++l+,# -#E 
%**U[[1-|<	=	% 
>	%E Es   %B??C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      sR    )
)
............
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      so   # # ) = + F F 
												         $& !!# 
 
.+ , 
+f% & 
.+ , 
+f% & 

	2 3 

Y/ 0 

V, - 
/&) * 

I. / 

F+ , 

))< = 

&v6 7 

3IF G 

3FC D 78F%< F% 9F%R zHMMO r   